🎉 Gate xStocks 交易开启啦,现货、合约、Alpha齐上线!
📝 在Gate广场发帖,晒出你的交易体验或精彩截图,瓜分$1,000大奖池!
🎁 广场优质创作者5名,每人独享$100合约体验券!
🎉 帖文同步分享到X(推特),浏览量前十再得$50奖励!
参与方式:
1️⃣ 关注 @Gate广场_Official
2️⃣ 带 #Gate xStocks 交易体验# ,原创发帖(不少于20字,仅用活动标签)
3️⃣ 若分享到推特,请将链接提交表单:https://www.gate.com/questionnaire/6854
注:表单可多次提交,发布更多帖文可提升获奖机会!
📅 7月3日16:00—7月9日24:00(UTC+8)
详情:https://www.gate.com/announcements/article/45926
每一条体验,都有机会赢取大奖!快在Gate广场show出你的操作吧!
EIP-7702:以太坊账户抽象的终局之战
账户抽象10年演进终局之战,透过EIP-7702看过去与未来
Pectra 是以太坊 Dencun 后的首次重大升级,涵盖布拉格执行层硬分叉和 Electra 共识层更新,集成史上最多的11项EIP,显著提升验证者灵活性、网络扩展性和执行效率。随着以太坊主网 Pectra 硬分叉预计于 2025年5月7日 正式激活,账户抽象(Account Abstraction)的"终极形态"------ EIP-7702,也正式走入大众视野!
如果还有什么 EVM 系的 Web3 钱包不支持 EIP-7702,那么毫无疑问,等于他放弃了以太坊整个生态与用户。这就是 Vitalik 与EF 的决心,也是潘多拉魔盒即将揭开的序幕!
请跟随本文,全面了解账户抽象的演进历史、EIP-7702带来的用户价值与市场改变、以及其中潜藏暗处的危险。
概述
EIP-7702 新增了一种交易类型,让普通EOA可以设置某个合约地址为其逻辑代理合约。
EIP-7702 会由于"成本优势"以及"灵活性"而全面继承并超越 ERC-4337 多年构建的生态。
EIP-7702 对普通用户也是隐形风险,即使用户不做升级,在特定场景也会引发交易失败或者安全资损风险。
EIP-7702 将带来全新的用户体验,当用户主体发生合约化迁移,市场应用也会随之演进,Gas 抽象、家庭分级账户等等期盼已久的丝滑体验将引领十亿人,低成本进入Web3世界。
对于交易所、DApp 而言,应用上 EIP-7702 的特性将带来50%以上的成本缩减,进而全面拥抱合约账户时代。
账户为什么要抽象?
很难想象,账号抽象的愿景甚至要早于以太坊本身。
在这次 HK Web3 嘉年华中,Vitalik多次强调现在通过多签(Multi-sig)、账户抽象、ZK Email 等一系列方案,以太坊已完成"iPhone时刻"目标的50%。
是快是慢,是乐观还是局限?且让我们深入底层,看看AA为什么会有这样的影响力!毕竟,经过10年的长跑,Vitalik 终于迎来了AA领域他梦寐以求的终局,为23年绘制的以太坊路线图进度条,添上浓墨重彩的一笔。
账户抽象,到底是为了什么?
其实,本质解决的是产权分离的问题,因为目前 EOA(Externally Owned Account 外部账户)的所有权 和签名权其实上是同一个体单位持有的(都依赖私钥进行任何指令的控制),其根源来自以太坊的交易结构,其实以太坊的标准交易里是没有 From 方的,执行时是通过其 VRS 参数(即用户签名)反解析出 From 地址。
而且以太坊作为"世界级状态机"的设计,完全依赖交易去实现链上状态的变更,结合由于无法指定 From 方,则让交易的执行权限与最高所有权耦合在一起。
这就是 EOA 虽然简单易懂,但使用不便的一系列问题之根源:
私钥难保护:用户失去私钥(遗失、黑客攻击、量子破解)就意味着失去所有资产。
签名算法少,不同签名算法带来不同的性能损耗,乃至于链上存储的成本。
签名权限高,EOA 原生的私钥有这一切的权利。
复杂交易的手续费高,手续费只能通过 ETH 支付,任意交易,单一的操作都需要至少 21000 的基础费用。
交易无隐私,即使曾经有Circle提出的机密 ERC-20 协议,但并未成为主流。
归根究底,如今的区块链世界,对出入其中的用户太过于复杂了,用户需要理解Gas price、Gas limit、事务阻塞(Nonce 顺序)这些概念,对常规用户隐藏掉复杂的信息,这就是 EIP-7702 最终要解决的问题。
ERC-4337以及EIP-7702的核心区别?
围绕AA为目标,其实有十余种不同提案,笔者此前已有探究。其实整体梳理下来,本质是两种路线:
路线一:让 EOA 地址驱动 CA 地址
ERC-4337 就是这方面的典型,一句话总结是:提出新的事务对象 UserOperation,用户将此对象发送到内存池中,以 bundlers 的形式,批量打包指令,通过交付合约来逐个执行交易事务。本质上是把底层的交易与账户运作拉到合约层面执行。
执行原理如下图:
通过 bundler 这个角色,可以说这套方案对于批量交易、免gas、签名算法少等等问题,都可以得到解决。但是他解决不了的是复杂度与用户交易成本,以及bundler 和 EntryPoint 的单点故障风险。
因为一旦用户迁移到了 ERC-4337 ,那么即使是上图中 user2 的需求,只是做一笔 Transfer 的交易,那么用户交易手续费也对比 EOA 而言是翻了一倍。
从 CA 以及 EOA 的最新用户量数据可以看出来,就算有的用户是个高端玩家,非常依赖于链上 CA 为主体的各类操作,批量 Call 等,但是如果这样为何不直接用普通CA呢?
源于 bundler 的设计,让他可以避免硬分叉级别的升级,直接在应用层上推出,但 ERC-4337 也带来了翻倍的成本支出单点故障风险,以及用户也失去了 EOA 原有的灵活性。所以面对多元的用户需求,显然当前市场的用户并不那么青睐于ERC-4337 的方案,发展2年以来整体趋势下跌显著,即使巅峰用户数量面对以太坊 300M 的独立地址地址数而言,相隔甚远。
当然我们不是在苛责ERC-4337的不足,而是伴随其发展,在其上发展的 Paymaster、Gas 抽象等角色和概念,其实也在 EIP-7702 中再一次得到应用。
笔者认为,任何行业的发展,不会是一蹴而就的,重要的是从过往的兴衰中,能够发现规律与总结经验。
路线二:让 EOA 地址变为 CA 地址
其实早在2015年11月,Vitalik 就提出 EIP-101,以合约作为账户的新结构。将地址改为只有代码和存储空间,改变手续费支持由 ERC20 支付,通过预编译合约将原生代币改为类 ERC20 来存余额(可具备代扣授权等功能)。在2018年01月,又有 EIP-859 方案,核心作用是如果出现了若交易方合约未部署,则使用交易附带 code 参数执行合约钱包部署。最终,从 EIP-3074 的方案中,进一步推演出的 EIP-7702 ,最终纳入以太坊主网!
EIP-7702 的理念与效果其实很简单,它通过新的交易类型来完成初始化,在后续用户可以允许 EOA 在单笔交易中临时的、可选的具备智能合约的功能,进而支持业务上进行批量交易、无 Gas 交易和自定义权限管理等,其中最关键的能力,就是让用户具有了临时与可选的空间。
并且多人可以共享同一个逻辑合约,进而大幅度降低用户迁移的成本,用户要完成 EIP-7702 的设置,只需要 8W的 Gas,大概是 0.06 美金,而要再次设置新的合约或者取消设置逻辑合约,则只需要 4W Gas。
完成设置后,就可以显著会在批量交易的时候,带来用户大幅度的 gas 优化,看下表格:
当然你可能会觉得,有必要做两次,甚至六次 Token Transfer 吗?
常规用户已经习惯一次交易做一件事情的情况下,看似场景不多,但是在类似 Web3 Game、Web3 Pay 此类多元化应用场景中,其实会很经常出现,比如同时用铜币(游戏内产生货币)和银币(用户充值货币)一起消费的情况。或者说参加某种活动,同时消耗 NFT 门票以及入场费。
就算我们不去遐想复杂的场景,回归如今链上最主流的 Swap 需求,同样也有 approve 与 Transfer 批量的需求。甚至,如今可以做一个小工具,简单的帮用户快速的删除其已经无用的 approve 授权。效果很容易对比出来,显然,成本可以直接减少 40%左右。
EIP-7702的核心原理
要探究为何有这样效果,就要回归他的原理,其实他的核心就是2个逻辑,分为用户设置环节 以及日常使用环节
设置逻辑合约环节
核心流程如下:
第一步:签名授权,通过原始EOA的私钥,签署一个特殊的哈希字符串,内容是通过编码了 chain_id, address, nonce 构成的,这里 Address 就是最终要设置的逻辑合约的地址,而 Nonce 则是确保交易不被重放的策略。
第二步:签名交易,有了第一步的授权信息后,任何人均可以再构建出一笔类型为4 的交易,可以包含多个授权信息,一次性为多个地址统一进行授权设置。
第三步:广播上链,那么在交易处理完内部 Authorization 的时候,逻辑合约就已然生效。
这里还有更多技术上细节的地方,可以参考:okx 开源js sdk的实现,来看到底层数据编码的过程。当然,这套方案,其实亦有隐藏一些安全的隐患和复杂性,我们下文会详细的讲述。
执行逻辑合约环节
当你完成了设置,那么当任何交易 To 地址指向你的时候,那将会和调用智能合约一样,系统会将你原本设置的逻辑合约的代码,"加载"到你当前 EOA 的状态中去执行其逻辑。
同样我们用2个场景来查看:
第一种,你自己来调用你自己
假如你设置的是如 OKX 7702 Smart Contract 合约一样具有高度安全以及自定义控制能力,那么你可以通过提前编写好的calldata指定,让你当前的操作一次性完成多重指令。比如你可以同时完成 Approve+Transfer,也可以同时完成Approve+Swap。
千万别小瞧,在目前总计 27 亿笔以太坊交易中,Approve 大概为 75 M 笔,按每笔 8W Gas计算,则有 46W 个ETH消耗,按1700美金的 ETH 市价计算,则是接近8亿美金。
第二种,别人来调用你
曾经以太坊不存在别人调用 EOA 地址的情况,但是现在你就是一个万能的合约,完全可以自定义,你可以开辟子账户分权限,也可以给与少数 Paymaster 设置白名单,许可 DApp 的指定账户,来代替你发起一些交易,从而完全免除传统区块链应用中需要反复弹出签名的窗境。
多么强大的能力啊!所以这也是几乎全