本文介绍了EIP-3074提案,该提案允许EOA(外部拥有账户)委托账户控制权给智能合约,从而使EOA能够享受如gas赞助和自定义交易逻辑等智能合约账户的功能。文章还讨论了EIP-3074的优势、劣势以及与ERC-4337和EIP-5003的比较,并提到了替代方案EIP-7702,后者允许EOA在交易期间转变为智能合约钱包并在交易后恢复。
EIP-3074 是一个提案,由于其优点和缺点,在账户抽象社区中引起了轰动。该提案允许外部拥有的账户(EOA)授权智能合约代表钱包进行交易调用。但是,这是一个可逆的授权,并且在此过程中 EOA 私钥的控制权永远不会失效。
该 EIP 为 EOA 持有者带来了有趣的好处,例如享受 gas 赞助、自定义交易逻辑以及 ERC-4337 中智能合约账户可以做的更多事情,同时仍然可以选择恢复为 EOA。
但是,需要谨慎,因为一次错误的授权可能会耗尽钱包资产。这些操作码也给 EVM 带来了技术债务,因为 AUTH
和 AUTHCALL
操作码会增加其实现的复杂性,即使在所有钱包都已经变成智能账户之后很久也是如此。为了防止这种情况发生,包括 Vitalik 在内的知名以太坊开发人员提出了 EIP-7702 中的“闪存智能账户”。
EIP 3074 是一项新的以太坊提案,允许(EOA)将账户控制权委托给智能合约。这使得任何用户拥有的钱包都可以享受新功能,例如自定义账户逻辑和 gas 赞助。
为了实现这一点,该提案引入了两个新的操作码,即 AUTH
和 AUTHCALL
。
AUTH
的工作原理是从用户那里获取 ECDSA 签名,并将用户的地址作为上下文存储在 EVM 中。此签名表示 EOA 允许调用者合约代表钱包进行交易调用的意图。这是一个可撤销的操作,用户可以随时撤销。一旦 EOA 发送了 AUTH
消息,调用者合约就可以使用 AUTH
从消息中恢复签名者。
一旦 EOA 提交了带有调用者地址的有效签名,合约现在就可以使用 AUTHCALL
操作码代表 EOA 执行交易。这允许广泛的用例,因为智能合约更加灵活和可编程。它可以:
Gas 一直是 Web3 中用户入职的一个长期存在的 UX 问题。已经出现了解决方案,其中最突出的是 ERC-2771,这是一种标准,它使一个名为 relayer 的链下第三方能够代表 EOA 支付 gas 费用。这是通过 metatransactions 实现的,metatransactions 是 EOA 签署的一种类型化消息,用于表示其触发交易的意图。
但是 ERC-2771 有 一些问题,其中之一是它要求 dApp 升级其智能合约才能支持 metatransactions。采用率一直很低,因此引入了 ERC-4337,作为一种无需对现有 dApp 智能合约进行任何更改即可引入 gas 赞助的方式。
ERC-2771 中的 relayer 被 ERC-4337 中的 paymaster 取代,因此交易的执行者与 gas 支付者分离。这允许智能账户成为 msg.sender 或交易的调用者,同时获得 gas 费用的赞助。
然而..
在 ERC-4337 中,现有钱包账户仍然无法转换为智能账户,因此 EIP-3074 的作者提出了一个解决方案,允许 EOA 将交易委托给智能合约。
现在我们了解了 3074 为 EOA 用户解锁了各种功能,重要的是还要注意其具体优势:
完全的用户控制 - 用户不需要信任调用者合约的好与坏,而是可以在出现漏洞时决定删除其授权。
更快的采用 - 拥有一种 gas 效率高且可逆的方式来试用 ERC4337 账户降低了用户想要在不做重大承诺的情况下测试它的门槛。这加快了账户抽象的路线图,并最终改善了 web3 UX。
聚合接口 - 因为 EOA 只是将特定的交易控制委托给智能合约,所以 EOA 和原生智能账户只有一个账户抽象接口。这意味着开发流程得到简化,并且不需要复杂的迁移过程或针对开发人员的单独标准。
EIP-3074 vs ERC-4337 vs EIP-5003
你可能想知道:我们已经有 EIP-4337 来进行 gas 赞助和更轻松的账户可恢复性。为什么我们需要另一个标准来做到这一点?
乍一看,EIP-3074 似乎是 ERC-4337 的竞争者,但仔细观察后可以清楚地看出,两者旨在针对外部钱包的情况进行组合。虽然 ERC-4337 主要关注交易赞助和中继,但 EIP-3074 还使已经拥有钱包的数百万用户能够获得智能账户从账户抽象中获得的好处。这样,只能用 4337 完成的功能不限于新创建的智能账户。钱包所有者现在还可以选择将其交易调用委托给智能合约。
EIP-5003 怎么样?
你可能听说过一个类似的 EIP,它提议将钱包永久转换为智能合约账户。这是通过另一个名为 AUTHUSURP
的操作码实现的。EIP-5003 的假设是,EOA 无论如何都应该迁移到智能账户,因此必须有一个选项可以永远放弃常规钱包的灵活性。
它与 EIP-3074 的不同之处在于,它引入了一种完全撤销对先前钱包地址的控制权的方法。虽然 3074 中的交易最终由 EOA 控制,但 5003 删除了对原始 EOA 私钥的访问权限,从而可以实现更多通用的签名方案。
账户抽象社区中的许多开发人员呼吁将 AUTHUSURP
操作码作为 EIP-3074 的扩展或作为单独的 ERC 包含在内,因为它具有安全性以及与账户抽象路线图的向前兼容性。
EIP 3074 的缺点
虽然 3074 通常对 web3 UX 来说很棒,但同样重要的是要注意它也是新的,并且可能带来一些缺点:
非多链 - 如果 EOA 将交易委托给一条链中的智能合约账户,则不能假定其他链和更多新链也是如此。这使得在跨链的钱包中实现一致的逻辑变得更加困难。
功能有限 - 在 3074 的情况下,永远不会撤销对私钥的访问权限。这意味着,即使它已经委托给智能合约,仍然可以使用它进行交易。这意味着,某些只能通过纯 ERC-4337 账户实现的功能无法在使用 3074 的账户中完成。多重签名智能合约,仲裁和回退处理程序很容易被任何有权访问 EOA 私钥的人绕过。
不灵活的签名和恢复方案 - 该帐户仍然是一个 EOA(它只有一个授权智能合约可以代表它执行),因此签名和密钥恢复无法升级到量子抗性选项,就像使用智能帐户可以实现的那样。
安全问题- 一次错误的授权可能会耗尽你所有的钱包资产。因此,用户不仅必须检查他们是否授权安全合约为他们进行调用,而且开发人员还必须确保智能合约是安全的且不可升级。
Twitter :
"一个错误的签名将能够在 EIP-3074 之后耗尽你在以太坊上的账户。"
是的; 这是真的。这是 3074 的合作者!在我失控之前,让我稍微消除一下这种担忧。
— ً (@lightclients) 2024 年 4 月 12 日
更新:EIP-7702 取代 EIP-3704
但是,如果每个人最终都将使用智能账户(如计划的那样),则 AUTH
和 AUTHCALL
操作码可能会成为巨大的技术负担,并增加 EVM 的复杂性。因此,以太坊开发人员提出 一个新的 EIP,而不是使用两个操作码将交易执行委托给智能合约并过度神化钱包,该 EIP 将允许 EOA 在创建交易时成为智能合约钱包,然后在交易执行后立即恢复原状。
EIP-7702 引入了一种新的交易类型,其中包含 contract_code 字段,并将其与其他交易详细信息一起发送。查看 ERC-7702 中的有效负载是什么样的:
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, data, access_list, [[contract_code, y_parity, r, s], ...], signature_y_parity, signature_r, signature_s])
此 contract_code 可以是 ERC-4337 中现有的智能合约钱包代码。EOA 仅在交易期间变为智能合约钱包,然后恢复为 EOA,从而防止智能合约执行任何意外操作。
现在怎么办?
加密货币领域的主流观点是,用户最终将从将其钱包过渡到智能合约中受益。随着账户抽象的普及,至关重要的是不要忽视外部拥有账户 (EOA) 用户的需求,这些用户可能会切换到更用户友好的智能合约账户。虽然外部钱包目前在 Web3 使用中占主导地位,但 EIP-3074 或 EIP-7702 可能是更广泛的账户抽象战略中的重要一环。
但是,由于该技术仍在不断发展,因此使用 AUTH
操作码需要仔细考虑。它提供了一个宝贵的机会来试验和理解智能合约钱包,但用户必须保持警惕并确保其账户安全。
- 原文链接: blog.web3auth.io/eip-307...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!