📢 Gate广场 #NERO发帖挑战# 秀观点赢大奖活动火热开启!
Gate NERO生态周来袭!发帖秀出NERO项目洞察和活动实用攻略,瓜分30,000NERO!
💰️ 15位优质发帖用户 * 2,000枚NERO每人
如何参与:
1️⃣ 调研NERO项目
对NERO的基本面、社区治理、发展目标、代币经济模型等方面进行研究,分享你对项目的深度研究。
2️⃣ 参与并分享真实体验
参与NERO生态周相关活动,并晒出你的参与截图、收益图或实用教程。可以是收益展示、简明易懂的新手攻略、小窍门,也可以是行情点位分析,内容详实优先。
3️⃣ 鼓励带新互动
如果你的帖子吸引到他人参与活动,或者有好友评论“已参与/已交易”,将大幅提升你的获奖概率!
NERO热门活动(帖文需附以下活动链接):
NERO Chain (NERO) 生态周:Gate 已上线 NERO 现货交易,为回馈平台用户,HODLer Airdrop、Launchpool、CandyDrop、余币宝已上线 NERO,邀您体验。参与攻略见公告:https://www.gate.com/announcements/article/46284
高质量帖子Tips:
教程越详细、图片越直观、互动量越高,获奖几率越大!
市场见解独到、真实参与经历、有带新互动者,评选将优先考虑。
帖子需原创,字数不少于250字,且需获得至少3条有效互动
从历史到未来:EIP-7702引领以太坊账户抽象新时代
深入解析以太坊账户抽象赛道的历史与未来
前言
本文分为两大部分:
上半部分从2015年第一个AA提案开始,系统梳理了迄今为止的主要EIP提案内容,希望通过历史回顾挖掘AA提案的发展历程,并全面评估各方案的优缺点。
下半部分重点对比EIP4337提出后面临的市场冷淡反应,并深入分析即将纳入以太坊下一版本升级的EIP7702。该提案一旦合并,将全面改变链上应用形态。
EIP-7702具有划时代意义,让我们一起来深入了解。
1. 账户抽象的背景
1.1 账户抽象的意义定位
以太坊创始人Vitalik在2023年底再次更新ETH发展路线图,但对账户抽象的设定并未改变。目前主流模式正从EIP-4337过渡到下一阶段的自愿EOA转换。
在EIP4337推出一年多以来(2023年3月1日在丹佛WalletCon上,以太坊基金会开发人员设计的ERC-4337核心合约通过OpenZeppelin审计,被视为正式推出),一直处于用户广泛认可但并未广泛使用的矛盾状态。这种市场环境促使EIP-7702的进度大幅提前,甚至已确定将在下次升级中合并。
1.2 账户抽象的市场现状
经过一年半发展,EIP4337在主流链上的账户总数仅1200万。其中以太坊主网上活跃地址只有6,764个,与EOA和CA地址数相差悬殊。以太坊主网独立地址数已达2.7亿,可以说EIP4337在主网上几乎没有实质性发展。
不过,这并不影响AA的本质价值。EIP4337的设计决定了它在主网上难以很好地解决向前兼容性问题。随着各类L2原生集成AA,EIP4337地址数在L2上出现爆发,其中Base和Polygon链7月月活分别达到100万和300万,表现不俗。
因此,并非EIP4337设计有误,它有诸多优点。目前状况源于主网与L2之间的差异,它们需要各自适合的方案。
2. 什么是账户抽象?
账户抽象本质上解决的是产权分离问题。
EVM架构中有两种账户:外部账户(EOA)和合约账户(Contract Account)。外部账户的所有权和签名权实际上由同一实体持有。持有私钥的人不仅拥有账户"所有权",还有权"签名转移所有资产"。
这由以太坊账户交易结构决定。从交易结构可以看出,标准交易实际上没有From字段。资金转账时,具体消费哪个地址的资金是通过VRS参数(用户签名)反解析出From地址的。
这涉及ECDSA等非对称加密和单向门限函数等概念,我们不做展开。总之这里由密码学保障安全性,也造成了目前EOA地址产权合并的困境。
EIP4337的核心效果是在交易字段中增加Sender Address,从而实现私钥与被操作地址的分离。
产权分离如此重要的原因在于外部账户(EOA)设计会衍生出更多问题:
私钥难以保护:用户丢失私钥(遗失、黑客攻击、密码学破解)意味着失去所有资产。
签名算法单一:原生协议验证交易只能使用ECDSA签名和验签算法。
签名权限过大:无原生多签(多签只能通过智能合约实现),单签即可执行任意操作。
交易手续费只能用ETH支付,不支持批量交易。
交易隐私泄露:一对一交易容易分析账户持有者隐私信息。
这些限制让普通用户难以使用以太坊:
首先,使用以太坊上的任何应用,用户都必须持有以太(并承担价格波动风险)。
其次,用户需要处理复杂的费用逻辑,Gas price、Gas limit、事务阻塞(Nonce顺序)等概念对用户来说过于复杂。
最后,虽然许多区块链钱包或应用试图通过产品优化提升用户体验,但效果有限。
因此,突破口在于实现账户抽象,将所有权(Owner)和签名权(Signer)解耦,从而逐步解决上述问题。
历史上有多种方案,最终汇聚为两条路线。
3. AA历史提案脉络梳理
问题的解决方案看似有许多EIP提案,但归根结底就是两种核心思路。过去每个未通过的EIP考虑的问题,也汇聚成了现在方案的突破点。
3.1 第一种路线:将EOA地址转为CA地址
早在2015年11月15日,围绕EIP-101,Vitalik就提出以合约作为账户的新结构。将地址改为只有代码和存储空间,改变手续费支持由ERC20支付,通过预编译合约将原生代币改为类ERC20来存余额(可具备代扣授权等功能),将交易字段精简到只有to、startgas、data和code。
如今看来,这是一次大跃进式变革,会大幅改动底层设计,让每个账户地址都拥有自己的"代码"逻辑(这正是现在EIP-7702要实现的效果)。
还能衍生出其他功能,比如:
让交易使用更多加密算法,可由各地址内部Code指定验签鉴权方法。
具备抗量子攻击特性,因为代码可升级。
让以太币具备与ERC20合约一致的功能特性,核心效果有了代扣授权,从而无需原生币损耗。
提升账户自定义空间,兼容社交恢复、SBT支持、密钥找回等。
未能继续推进的原因很简单,显然步子迈得太大,对当前交易哈希冲突问题、安全性隐患考虑不周,所以一直搁置。但每个优点的理念都成为后续EIP4337和EIP7702的核心功能之一。
之后还有一系列EIP试图完善这种逻辑:
EIP-859:主链账户抽象--2018-01-30
试图解决Code部署问题,核心作用是,如果出现交易方合约未部署,则使用交易附带code参数执行合约钱包部署。其次还提出新的PAYGAS操作码,除支付gas外,也成为交易参数中验证部分与执行部分的分隔符。
虽然当时无疾而终,但这也成了现在EIP7702的核心逻辑之一。EIP7702的每笔交易结合特殊交易结构,可附带一定代码,从而在本次交易中让EOA地址拥有合约能力。
EIP-7702:设置EOA账户代码 2024-05-07
这也是本文后续讨论机制的核心EIP,由Vitalik发表作为EIP-3074的替代方案(2024-05-07)。因此EIP-3074被弃用,EIP-7702确定将在即将到来的ETH Prague/Electra(Pectra)硬分叉中纳入,具体内容我们稍后展开。
3.2 第二种路线:让EOA地址驱动CA地址
EIP-3074:增加AUTH和AUTHCALL操作码--2020-10-15
在EVM中加入两个新的OpCodes AUTH和AUTHCALL,让EOA能通过这两个opcode授权合约代替EOA身份调用其他合约。
概括来说,EOA能将一则已签的消息(交易)发送至自己信任的合约(称作Invoker)上,此Invoker合约可利用AUTH和AUTHCALL操作码代替这个EOA发出交易。
EIP-4337:用交易内存池实现账户抽象--2021-09-29
受到MEV启发进行设计,其核心价值是可以完全避免共识层协议更改。
EIP4337提出新的事务对象UserOperation,用户将此对象发送到内存池中,由bundlers从矿工角度批量打包交付合约执行交易事务,本质上是把底层交易与账户运作拉到合约层面执行。
EIP-5189:通过背书人操作抽象账户---2022-06-29
这是对EIP4337逻辑的优化,面对恶意Bundler通过建立资金罚款背书endorser机制来防止DoS阻塞攻击。
3.3 其他用于支持AA的提案
EIP-2718:新交易类型的包装信封--2020-06-13
这是一个已经Final的提案,定义了新的交易类型,作为未来新增交易类型的信封。
最终效果是,引入新交易类型时,通过特定编码区分是哪种交易,让其只需向后兼容,而无需向前兼容。最常见的例子是EIP1559,区分了交易手续费,使用新的交易类型编码,又不影响最初的legacy交易类型。
EIP-3607:让EOA地址不可部署合约--2021-06-10
这是AA路径上的补充方案,用于防止合约部署地址与EOA地址冲突。它会控制合约生成方法,不允许系统将代码部署到已经是EOA地址的地址上。这个风险很小,毕竟以太坊地址有160位长,虽然存在用私钥碰撞出指定合约地址私钥的方法,但以比特币全算力投入估计,也还需要一年时间。
3.4 如何理解账号抽象发展历程?
首先需要理解转为CA后的价值
基本上就是EIP-4337的实际效果,它可以实现:
但是,EIP-4337的核心缺点是违背人性动机原则。
它看起来更好了,但陷入了市场发展的死循环。很多Dapp还不兼容,用户就不愿意使用CA地址,甚至使用CA有更高的交易成本(普通转账场景,交易费用会翻倍),也太依赖Dapp本身的兼容性。
所以在以太坊主网上迄今为止始终没有得到普及。
成本是用户最重要的衡量标准,必须降低成本。
但要真正降低GAS,就必须以太坊本身做软分叉升级,修改GAS计算或操作码的GAS消耗等模块。然而既然要软分叉,何不直接考虑EIP-7702呢?
4. 全面解析EIP-7702
4.1 EIP-7702是什么
它通过新的交易类型区分,允许EOA在单笔交易中临时具备智能合约功能,进而支持业务上进行批量交易、无Gas交易和自定义权限管理等,且无需引入新的EVM opCode(影响向前兼容性)。
它可以让用户在不部署智能合约的情况下,就获得大部分AA能力,甚至可以提供第三方代用户发起交易的能力,且不需要用户提供私钥,只需签名授权信息。
4.2 数据结构
它定义了新的交易类型0x04,该交易类型的TransactionPayload是以下内容的RLP编码序列化结果:
rlp([ chain_id, //链ID,用于防止重放攻击 nonce, //交易计数器,确保交易唯一性 max_priority_fee_per_gas, //1559交易费用 max_fee_per_gas, //1559交易费用 gas_limit, destination, //交易目标地址 value, data, access_list, //访问列表,用于EIP-2929中的Gas优化 authorization_list, signature_y_parity, //3个签名参数,用于验证交易签名 signature_r, signature_s ])
重要