以太坊治理战争:EIP3074、ERC42025年全球Top加密货币交易所权威推荐337与EIP7702

日期: 栏目:火币交易所 浏览:

  交易所,交易所排名,交易所排行,加密货币交易所排行榜,加密货币是什么,加密货币交易平台,加密货币平台,币安交易所,HTX火币交易所,欧意交易所,Bybit交易所,Coinbase交易所,Bitget交易所,Kraken交易所,交易所权威推荐,全球交易所排名,虚拟货币交易所排名,加密货币,加密货币是什么

以太坊治理战争:EIP3074、ERC42025年全球Top加密货币交易所权威推荐337与EIP7702

  EIP3074 是一个执行层提案,执行该提案需要节点软件升级。EIP3074 的核心目的是实现 gas sponsoring 和批量交易的功能。所谓的 gas sponsoring 是指用户可以使用任意代币缴纳 gas 费用,或者用户可以在线下缴纳 gas 费用。但需要注意的,相比于其他账户抽象提案允许更改签名校验算法,EIP3074 并不允许用户使用 secp256k1 以外的任何签名算法。换言之,EIP3074 并不是一个满足所有账户抽象功能的提案。这也是 EIP3074 备受诟病的一点。

  为了实现预期目标,EIP3074 引入了两个操作码,分别是 AUTH 和 AUTHCALL。其中 AUTH 操作码可以通过校验签名,当签名校验通过后,该操作码就会配置当前 EVM 上下文中的 authorized 为签名人的地址。当配置上下文中的 authorized 后,AUTHCALL 可以使用 authorized 的地址作为调用交易的 msg.sender 发起交易。从某种程度上来说,用户可以通过签名将自己的账户在一笔交易中委托给一个智能合约使用。我们一般称这个被用户委托的智能合约为 invoker 合约。

  而 nonce 是一个防止交易重放的标识。但是需要注意的时,AUTH 操作码会校验签名中的 nonce 与当前签名的 EOA 的 nonce 是否一致,理论上只要用户不使用 EOA 账户发起交易增加 nonce 数值,那么用户发出的 AUTH 签名可以一直被 invoker 合约使用。这是一个巨大的安全漏洞,意味着使用 EIP3074 的用户必须信任获得签名的中继服务商。假如获得用户签名的中继服务商是恶意的,该服务商可能在某一个时刻重放用户的 AUTH 签名盗取用户资产。

  另一个具有安全问题的是 commit 字段。commit 字段用于保证某些操作,用户可以在 commit 内精细化控制自己的签名权限,比如在 commit 内写入一些内容避免自己的签名内容被用于 ETH 转账。在 EIP3074 文档 内,提案人给出了一系列的利用 commit 字段的例子。但是问题是 commit 的作用完全依靠智能合约定义,本质是一个可选内容。不同的智能合约对 commit 中内容的解析可能完全不一致,甚至可能某些合约完全不读取 commit 中的内容。假如用户希望安全使用 EIP3074 必须自己简单审查智能合约。

  最后,我们介绍一个 EIP3074 对目前以太坊交易内存池的影响。引入 EIP3074 后可能会出现一种对于内存池的攻击方法,黑客可以使用大量的账户发起交易,然后在交易即将被打包时,使用 EIP3074 交易一次性抽空这些账户内的 ETH,这会导致之前发起的交易全部失败。这种攻击方式会对执行层节点造成相当大的影响,本质上就是一种 DoS 攻击。但需要注意的,用于替代 EIP3074 的 EIP7702 也出现了这种问题,但 EIP7702 引入了一些限制避免此问题出现,我们会在后文讨论。

  EIP7702 是由 Vitalik 提出的一个用于替换 EIP3074 的提案。该提案没有引入新的 EVM 操作码,而是引入了一个新的交易类型,该交易类型被称为 SET_CODE_TX_TYPE。一旦用户发起 EIP7702 类型的交易,用户可以将自己的 EOA 在保留 EOA 基础功能的前提下增加智能合约的功能。简单来说,用户既可以继续使用 MetaMask 等钱包发起交易,也可以由其他用户以智能合约的形式调用 EOA 地址。

  EIP7702 的优点非常明显,其中最核心的优点是 EIP7702 本质上就是允许 EOA 拥有智能合约的功能。这与 ERC4337 等账户抽象的基本规则是一致的,这意味着 EIP7702 可以利用目前账户抽象领域内的所有探索和复用已有基础设施,比如 EIP7702 可以直接使用 ERC4337 的基础设施。目前 ERC4337 已经推出了支持 EIP7702 调用的 EntryPoint v0.8。从复用已有的基础设施角度来看,EIP7702 与 ERC4337 具有同等的去中戏化程度。

  当然,EIP7702 实际上也没有完全修复 EIP3074 中出现的问题。大部分 EIP3074 中存在的问题依旧存在。EIP7702 要求账户合约拥有安全实现,而协议自身不对任何安全进行保证。在 EIP7702 提出的早期,存在某些开发者提出将签名 nonce 标准化以避免可能的重放攻击,但是 EIP7702 最后也没有接受这些建议。所以假如用户希望安全使用 EIP7702,那么用户就需要自己审查合约安全性。

  当然,还有部分讨论关于有一些合约使用 msg.sender == tx.origin 进行了调用地址是否是 EOA 判断,当 EIP3074 被引入了,这些判断都会失效,但结论是这部分判断失效不会产生严重的安全问题。简而言之,该次会议主要是 EIP3074 提出者向核心开发者介绍 3074 的安全审计结果。会议最终的结论是 3074 还需要考虑 invoker 合约问题,建议不要在 London 硬分叉内加入。

  在 2023 年 8 月 3 日的 Meeting #167 内,核心开发者在讨论另一个 EIP5806 时提及了 EIP3074。EIP5806 是一个允许 EOA 在交易过程中使用 delegate call 的方式调用外界合约。该方案在某种程度上类似 EIP7702。但核心开发者对此方案的安全性也提出了质疑,Ansgar 指出过去 EIP3074 因为可能存在的安全问题一直无法被纳入硬分叉,而 EIP5806 是一个更加激进的方案。

  Vitalik 对 指出 EIP5806 可能是一个优于 EIP3074 的选择。Andrew 认为 EIP3074 相比于 EIP5806 更加通用,建议使用 EIP3074。Vitalik 对 Andrew 进行了反驳,Vitalik 认为未来所有的钱包可能都是智能合约钱包,一旦此情况发生,EIP3074 引入的预汇编操作码就会失效。Yoav 作为 ERC4337 的作者在此次会议中进行了篇幅较长的发言,其发言内容主要包括:

  在 2024 年 3 月 14 日的 Meeting #183 会议内部,核心开发者邀请 MetaMask 的 Dan Finlay 讨论关于钱包对 EIP3074 的看法。Dan 对 EIP3074 持赞成态度,同时指出 MetaMask 也会为 EIP3074 的测试提供支持。MetaMask 认为 EIP3074 在功能上可以使得 EOA 享受账户抽象的全部功能。在安全上,EIP3074 为钱包服务商提供了一种方案,即冷热密钥分离。钱包服务商可以持有 EOA 的 EIP3074 签名发起交易,用户在正常交易中都可以使用热私钥,但冷私钥可以保存在用户的硬件钱包内,当发现紧急情况时,用户可以使用冷钱包内的冷私钥发起交易撤销 EIP3074 的签名。这种冷热私钥分离的方案为钱包提供商带来了灵活性。

  在 2024 年 4 月 11 日的 Meeting #185 会议内部大部分的客户端实现都同意 EIP3074 加入 Pectra 硬分叉中,但 Geth 表示反对,原因是 EIP3074 可能导致 Verkle 树方面的问题。Danno 仍表示反对,因为 EIP3074 可能出现签名复用的情况。Yoav 也表示反对,Yoav 给出了一种使用 EIP3074 和 Blob 交易对内存池进行攻击的方案。简单来说,攻击者可以发起大量的 Blob 交易,这些 Blob 交易都包含大量的数据,然后使用 EIP3074 使这些 Blob 交易全部失效。

  在 2024 年 5 月 9 日的 Meeting #187 内,核心开发者第一次讨论 EIP7702 替代 EIP3074 的问题。而 EIP7702 是在 Vitalik 在核心开发者会议 开始前前 90 分钟 内完成的。在会议中,核心开发者认可 EIP7702 是一种更加优于 EIP3074 的标准。此次会议没有出现对 EIP7702 的反对声音,只是存在部分研究员认为 EIP7702 也存在类似 EIP3074 的不可撤销属性,可能导致资金安全问题。

  而 ERC4337 社区则认为 EIP3074 应该对治理失败负主要责任。ERC4337 社区成员认为 Yova 作为 ERC4337 的核心开发者在多次核心开发者会议中对 EIP3074 表达对反对意见,但核心开发者似乎并没有听取意见。ERC4337 中大部分社区成员没有关注 EIP3074 的治理动态,大部成员都认为 EIP3074 是一个死掉的标准。ERC4337 社区也认为核心开发者没有积极与 ERC4337 社区积极沟通。

标签: