📢 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条有效互动
多链账户抽象技术解析:ERC-4337与原生AA对比
揭示未来:多链账户抽象解析
7月8日至11日,以太坊社区会议在布鲁塞尔举行,这是欧洲规模最大的以太坊年度活动,聚焦技术和社区。
本届会议共有350多名区块链行业一线的意见领袖发表演讲,其中包括一场题为"揭示未来:多链账户抽象解析"的演讲。
演讲要点:
账户抽象(AA)的两个关键点:签名抽象和支付抽象。签名抽象允许用户选择任意验证机制,支付抽象则支持多种交易支付选项。这种灵活性提升了安全性和用户体验。
ERC-4337和原生AA在"验证"阶段的入口点函数是固定的,而在"执行"阶段,只有原生AA的入口点是固定的。不同实现中验证交易的限制和执行交易的步骤各有特点。
在EVM兼容链上实施ERC-4337时,Rollup设计中的协议差异和地址计算方式的差异是两个关键区别,这导致在L1和L2之间实现ERC-4337时会出现一些细微的开发细节。
以下是演讲全文:
大家好,今天我将介绍ERC-4337和原生AA的概念,讨论它们之间的差异,并重点分析L1和L2的4337标准的主要区别。
账户抽象介绍
1. 账户抽象的定义
账户抽象(AA)主要包括两个关键点:签名抽象和支付抽象。
这种灵活性提供了更安全、更优的用户体验。账户抽象的目标是通过多种方式实现这两个关键点。
2. ERC-4337简介
目前,以太坊协议中的外部拥有账户(EOA)存在一些限制,例如固定的签名方法和支付设计。ERC-4337通过引入更灵活的账户管理和交易处理方法来解决这些问题。
3. 原生AA简介
在以太坊中,账户分为EOA和合约账户。然而,在原生AA中,每个账户都是一个合约,且交易处理机制直接嵌入到区块链协议中。
各区块链网络中的AA设计:
ERC-4337和原生AA的区别
1. 操作系统角色
AA OS需要解决以下问题:
在ERC-4337中,这些角色通过Bundler和EntryPoint Contract协同完成。
在原生AA中,用户将其userOps发送给官方服务器的操作员/排序器,而不是Bundler和EntryPoint Contract。
在StarkNet中,Sequencer负责处理所有这些任务。
在zkSync中,Era与其他AA实现的主要区别在于Operator需要与bootloader(系统合约)配合工作。Bootloader打开新块,定义其参数(包括块参数和其他Gas参数),并接收来自Operator的交易以进行验证。
2. 合约接口
由于三个步骤的存在,账户合约接口在不同实现中是相似的,这些入口点函数只能由AA OS调用:
在ERC-4337和原生AA中,"验证"阶段的入口点函数是固定的,而在"执行"阶段,只有原生AA中的入口点是固定的。
3. 验证步骤的限制
由于验证交易没有成本限制(本质上,验证交易是调用视图函数),攻击者可以对内存池进行DoS攻击,从而破坏捆绑器(EIP-4337)或运算符/排序器(原生AA)。
EIP-4337定义了禁止哪些操作码以及如何限制存储访问。zkSync Era放宽了一些OpCode的使用:
合约逻辑只能访问自己的存储槽。如果账户合约的地址是地址A,它可以访问:
合约逻辑无法访问全局变量,例如区块号。StarkNet也不允许外部合约调用。
4. 执行步骤的限制
在zkSync中,执行系统调用需要确认系统标志的存在。例如,增加nonce的唯一方法是与NonceHolder交互,而部署合约则需要与ContractDeployer交互。系统标志确保账户开发人员有意识地与系统合约进行交互。
在ERC-4337和StarkNet中,执行阶段没有特殊限制。
5. 随机数
6. 使用第一个事务进行部署
7. zkSync中的特殊设计
如果你直接将ETH从以太坊EOA转移到zkSync,无需部署定制账户合约,你将收到一个具有相同地址的默认账户。该账户可以像以太坊EOA一样工作,并且也由相应的以太坊EOA的私钥控制。
这账户类型是版本None而不是version1。你不能调用DefaultAccount的函数,因为它没有在内核空间部署任何代码。
L1的4337和L2的4337的区别
在EVM兼容链上实施ERC-4337有两个关键区别:协议差异和地址差异。
1. 协议差异
Rollup设计中,L2需要将数据上传到L1以进行安全和结算。在ERC-4337的背景下,与此上传过程相关的费用,例如L1安全费和blob费用,应该被包括在预验证Gas中。确定预验证Gas中适当的上传费用是一个重大挑战。
2. 地址差异
zkSync ERA的create函数中的地址编码方式与以太坊和OP汇总不同。此外,StarkNet使用独特的哈希函数进行地址计算。在EVM兼容链上的ERC-4337背景下,我们通常假设地址计算在各链上是一致的。然而,有一个难以注意的细节可能会导致以太坊和L2中的ERC-4337实现之间的账户合约地址不同。
关键问题是在硬分叉中添加新的操作码。例如,如果L2链不支持上海硬分叉,并且在编译时未指定EVM版本,push0的引入会导致字节码改变,即使Solidity代码是相同的。
结语
以上是关于账户抽象的一些信息。如果你有任何疑问,欢迎在Twitter上与我联系。