本文深入探讨了以太坊EIP-7702提案,该提案引入了一种新的交易类型0x04,允许外部账户(EOA)像智能合约一样直接执行代码,从而实现交易批量处理、受限访问权限委托和余额恢复等新功能。文章还讨论了如何设置这些功能,解答了关于委托合约、预部署、存储使用等问题,并分享了一个收集了delegate合约实现的仓库。
这里我们将更仔细地研究新的交易类型 0x04。它允许 EOA 像智能合约一样直接执行代码。
这开启了新的可能性,例如:
附言:互联网上已经有很多关于此类的文章和资源,所以为了不浪费时间重复造轮子,我只会概述最重要和最有趣的几点。我会在所有地方留下我用来理解该技术及其实现的资源链接。
https://mapleblock.capital/blog/may-2024-eips-and-the-state-of-the-ethereum-ecosystem/
这里有一个通过 EIP-7702 进行 EOA 授权的快速摘要:https://learnblockchain.cn/article/18810 逐步说明:
签署授权
客户端钱包调用 signAuthorization({ contractAddress }),接收一个签名 [chain_id, address, nonce, y_parity, r, s],该签名保证只有指定的合约可以成为 EOA 代码。
将 bytecode 写入 EOA (Set-Code Transaction)
发送一个类型为 0x04 的交易,其中包含 authorizationList 字段,并将接收到的签名放置在该字段中。在协议层面,委托指示器 0xef0100||delegateAddress 被写入 EOA 代码中。
形成和发送操作
现在 EOA 的行为类似于智能合约:所有对其地址的 CALL 都会执行委托代码。
你可以像 EIP-1559 一样调用 execute(calls) 方法,或者生成一个 ERC-4337 UserOp(具有相同的 authorizationList)并将其发送到 EntryPoint,EntryPoint 可以为你或使用你的 ERC 代币支付交易费用,并在你的 EOA 上调用 execute。
当然,始终可以选择取消委托
要将 EOA 返回到其原始“空”状态,可以发送另一个 tx 0x04,其中包含相同的签名,但 address = 0x00…00。这会清除 codeHash 并重置 EOA 代码。
在 EIP-7702 中,我们可以通过授权机制(交易类型 0x04 中的 `authorizationList`)将任何智能合约指定为我们的 EOA(外部账户)的委托。这意味着如果已经部署,则可以在每个新交易中指定一个新的智能合约进行委托。
委托保持活动状态,直到我们更改它(通过指定一个新的合约)或撤销它(通过指定一个空地址,就像 `revokeDelegation` 函数中那样)。
2. 合约需要预先部署吗?
该标准不提供智能合约的自动部署。为了将 EOA 执行委托给一个合约,该合约必须已经存在于网络上(即,已部署并具有有效的地址)。
这意味着在使用 EIP-7702 之前,你(或其他人)必须部署一个将执行委托操作的智能合约。
3. 任何地址都可以连接到已部署的合约吗?
任何 EOA 都可以发送 Type 4 交易,指定一个已部署的智能合约的地址作为委托。该合约不限制谁可以将执行委托给它,只要授权是正确的(例如,签名对于赞助交易有效)。
任何 EOA 都可以使用一个已经部署的合约进行委托,只要该合约支持 EIP-7702(例如,它具有 `execute` 函数并正确处理授权)。
但是,该合约可能包含额外的检查(例如,签名验证或访问限制)以防止未经授权的使用。
在这里处理存储将像在 Proxy 合约中一样安排。也就是说,所有数据都将存储在你的 EOA 的存储中,而不是存储在调用委托到的合约中。因此,在划分存储和更改委托时,你需要小心谨慎。
但是在这里,一切都已经为我们考虑好了。 为了保护自己(不完全,但尽可能多地)免受存储问题的影响,你需要依赖以下标准:
在一个聊天中,开发者分享了仓库 “Awesome EIP-7702 Delegations”,他在其中收集了委托合约的可能实现:https://github.com/Arvolear/awesome-eip-7702-delegations
即使我想在下一篇文章中考虑使用新标准的实际方法,我们也可以简要地看看现在提供给我们的内容。
为什么这很重要: 为了不“从头开始”编写你自己的自定义委托,而是立即采用经过验证的合约来完成所需的任务。这可能有助于轻松理解新事物。
该存储库还包含一个指向钱包列表的链接,该列表跟踪特定钱包是否已切换到 EIP-7702 标准。
- 原文链接: coinsbench.com/eip-7702-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!