🎉 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出你的操作吧!
EthCC大会探讨多链账户抽象:ERC-4337与原生AA的技术对比
多链账户抽象:探索加密基础设施的未来
2024年7月8日至11日,以太坊社区会议(EthCC)在比利时布鲁塞尔举行。作为欧洲规模最大的以太坊年度活动,本次会议重点关注技术和社区发展。
在本届以太坊社区会议(EthCC 7)上,超过350名区块链行业一线的意见领袖发表了演讲。其中,一位区块链开发者受邀参与,并就"揭示未来:多链账户抽象解析"这一主题发表了演讲。
演讲要点概述
账户抽象(AA)的核心包括签名抽象和支付抽象。前者允许用户选择任意验证机制,后者则提供多种交易支付选项。这种灵活性大大提升了安全性和用户体验。
ERC-4337和原生AA在验证阶段的入口点函数是固定的,但在执行阶段,只有原生AA保持固定入口点。不同实现方式在验证交易限制和执行交易步骤上各有特点。
在EVM兼容链上实施ERC-4337时,主要面临两大挑战:Rollup设计中的协议差异,以及地址计算方式的差异。这些差异导致在L1和L2之间实现ERC-4337时出现一些难以察觉的开发细节。
账户抽象简介
账户抽象的定义
账户抽象(AA)主要包含两个关键概念:
签名抽象:用户可以自由选择任何喜欢的验证机制,不再局限于特定的数字签名算法(如ECDSA)。
支付抽象:用户可以使用多种方式支付交易费用,例如使用ERC-20代币代替原生代币,或由第三方赞助交易。
这种灵活性不仅提高了安全性,还优化了用户体验。账户抽象的目标是通过多种方式实现这两个核心概念。
ERC-4337解析
目前,以太坊协议中的外部拥有账户(EOA)存在一些限制,如固定的签名方法和支付设计。ERC-4337通过引入更灵活的账户管理和交易处理方法来解决这些问题。
userOp结构:在ERC-4337中,用户将userOp结构发送到Bundler。Bundler收集多个userOp,并通过调用handleOps函数将它们发送到EntryPoint合约。
EntryPoint合约:该合约像操作系统一样处理交易,主要功能包括:
原生AA简介
在以太坊中,账户分为EOA和合约账户。然而,在原生AA中,每个账户都是一个合约,且交易处理机制直接嵌入到区块链协议中。
各区块链网络中的AA设计:
ERC-4337与原生AA的差异
操作系统角色
AA操作系统需要解决以下问题:
在ERC-4337中,这些角色由Bundler和EntryPoint Contract协同完成。
在原生AA中,用户将其userOps发送给官方服务器的操作员/排序器,而不是Bundler和EntryPoint Contract。
StarkNet中,Sequencer负责处理所有这些任务。
zkSync Era的主要特点是Operator需要与bootloader(系统合约)配合工作。Bootloader负责开启新块,定义块参数和Gas参数,并接收来自Operator的交易进行验证。
合约接口
由于存在三个步骤,账户合约接口在不同实现中相似,这些入口点函数只能由AA OS调用:
在ERC-4337和原生AA中,"验证"阶段的入口点函数是固定的,而在"执行"阶段,只有原生AA中的入口点是固定的。
验证步骤的限制
由于验证交易没有成本限制,攻击者可能对内存池进行DoS攻击,从而影响捆绑器(EIP-4337)或运算符/排序器(原生AA)。
EIP-4337定义了禁止的操作码以及存储访问限制。zkSync Era放宽了一些OpCode的使用:
执行步骤的限制
zkSync中,执行系统调用需要确认系统标志的存在。例如,增加nonce需要与NonceHolder交互,部署合约则需要与ContractDeployer交互。
ERC-4337和StarkNet在执行阶段没有特殊限制。
随机数处理
首次交易部署
zkSync特殊设计
在zkSync中,如果直接将ETH从以太坊EOA转移,无需部署定制账户合约,用户将收到一个具有相同地址的默认账户。该账户可以像以太坊EOA一样工作,并由相应的以太坊EOA私钥控制。
这种账户类型是version None而非version1。用户无法调用DefaultAccount的函数,因为它没有在内核空间部署任何代码。
L1与L2的4337差异
在EVM兼容链上实施ERC-4337主要存在两个关键差异:协议差异和地址差异。
协议差异
Rollup设计中,L2需要将数据上传到L1以确保安全和结算。在ERC-4337中,与此上传过程相关的费用(如L1安全费和blob费用)应包括在预验证Gas中。确定预验证Gas中适当的上传费用是一个重大挑战。
地址差异
zkSync ERA的create函数中的地址编码方式与以太坊和OP汇总不同。此外,StarkNet使用独特的哈希函数进行地址计算。
在EVM兼容链上的ERC-4337背景下,我们通常假设地址计算在各链上是一致的。然而,一个容易被忽视的细节可能导致以太坊和L2中的ERC-4337实现之间的账户合约地址不同。
关键问题在于硬分叉中添加新的操作码。例如,如果L2链不支持上海硬分叉,且编译时未指定EVM版本,push0的引入会导致字节码变化,即使Solidity代码相同。