多链账户抽象技术详解:加密钱包安全与便利迎来革新

多链账户抽象技术解析:加密基础设施的未来发展方向

2024年7月8日至11日,以太坊社区年度盛会EthCC在比利时布鲁塞尔举行。作为欧洲规模最大的以太坊技术与社区交流活动,本届EthCC邀请了350多位区块链行业一线专家发表演讲。其中,一位区块链开发者就"多链账户抽象"这一主题做了深入阐述。

演讲要点概括如下:

  • 账户抽象(AA)的核心在于签名抽象和支付抽象。前者让用户可灵活选择验证机制,后者则提供多种交易支付选项,从而带来更安全便捷的用户体验。

  • ERC-4337和原生AA在验证和执行阶段的入口函数设计上存在差异。各自的实现方式对验证交易和执行步骤都有不同的限制。

  • 在EVM兼容链上实施ERC-4337时,需要特别注意Rollup协议差异和地址计算方式差异这两个关键点,它们会导致L1和L2之间实现细节的不同。

以下是演讲的详细内容:

账户抽象技术简介

1. 账户抽象的定义

账户抽象(AA)主要包含两个核心概念:签名抽象和支付抽象。

签名抽象允许用户自由选择验证机制,不再局限于特定的数字签名算法。这意味着用户可以使用更多样化的方式来验证自己的身份和交易,比如生物识别、多重签名等。支付抽象则提供多样化的交易支付方式,如使用ERC-20代币支付或由第三方赞助交易费用。ERC-20代币是以太坊上最常见的代币标准,允许创建可互换的数字资产。这种灵活性可以大幅提升安全性和用户体验。

2. ERC-4337标准解析

目前以太坊的外部拥有账户(EOA)在签名方法和支付设计上存在一些局限性。EOA是由私钥控制的普通用户账户,只能使用固定的签名算法和支付方式。ERC-4337通过引入更灵活的账户管理和交易处理机制来解决这些问题。

ERC-4337的主要特点:

  • userOp结构:用户将userOp发送给Bundler,后者汇总多个userOp并调用EntryPoint合约的handleOps函数进行处理。userOp是用户操作的缩写,包含了用户想要执行的交易信息。Bundler是一个中间服务,负责收集和打包用户操作。

  • EntryPoint合约:作为交易处理的"操作系统",主要功能包括:

    1. 调用账户合约的validate函数,验证userOp的授权
    2. 收取费用
    3. 调用账户合约的execute函数,执行userOp的目标操作

EntryPoint合约是ERC-4337的核心,它统一了所有账户抽象操作的入口点。

3. 原生AA简介

在原生AA中,每个账户都是一个合约,交易处理机制直接嵌入区块链协议。这意味着账户抽象功能被内置到区块链的底层设计中,而不是作为附加层实现。

目前各区块链网络的AA实现方式:

  • 采用ERC-4337的网络:以太坊、Arbitrum、Optimism、Base、Linea、Scroll、Polygon PoS
  • 遵循ERC-4337的原生AA:StarkNet和zkSync Era
  • 具有隐私设计的原生AA:Aztec

这些网络中,Arbitrum、Optimism、Base、Linea、Scroll都是以太坊的Layer 2扩展解决方案,旨在提高交易处理速度和降低费用。Polygon PoS是一个侧链网络,为以太坊提供扩展性支持。StarkNet和zkSync Era是使用零知识证明技术的Layer 2解决方案,而Aztec则专注于提供隐私保护功能。

加密基础设施的未来?多链账户抽象解析

ERC-4337与原生AA的对比分析

1. 系统角色设计

AA系统需要解决以下关键问题:

  • Gas价格的决定机制
  • 交易顺序和内存池的管理
  • 入口点函数的触发方式
  • 交易处理流程的定义

Gas是以太坊网络中的计算单位,用于衡量执行操作所需的计算资源。内存池是存储待处理交易的临时区域。

ERC-4337通过Bundler和EntryPoint合约协同完成这些功能。而在原生AA中,用户直接将userOps发送给官方服务器的操作员/排序器。

以StarkNet为例,Sequencer负责处理所有这些任务。zkSync Era则由Operator与bootloader(系统合约)配合完成相关工作。Sequencer和Operator都是负责交易排序和执行的节点。

2. 合约接口设计

不同实现中,账户合约接口存在相似之处,均包含以下步骤的入口函数:

  • ERC-4337:验证用户操作
  • zkSync:验证交易、交易支付、执行交易
  • StarkNet:execute、validate、validate_declare、validate_deploy

ERC-4337和原生AA在"验证"阶段的入口函数是固定的,而"执行"阶段只有原生AA的入口点是固定的。

3. 验证阶段的限制

由于验证交易没有成本限制,可能导致内存池遭受DoS攻击。DoS攻击是指通过大量无效请求来耗尽系统资源,使正常请求无法得到处理。因此各实现对验证阶段都设置了一些限制。

ERC-4337定义了禁用的操作码和存储访问限制。操作码是区块链虚拟机中的指令,用于执行特定操作。zkSync Era则放宽了部分OpCode的使用,但仍限制合约逻辑只能访问自身存储槽,且无法访问全局变量。StarkNet同样不允许外部合约调用。

4. 执行阶段的限制

zkSync要求执行系统调用时确认系统标志,以确保账户开发者有意识地与系统合约交互。系统调用是指请求操作系统核心服务的过程。ERC-4337和StarkNet在执行阶段则没有特殊限制。

5. 随机数处理

各实现在随机数设计上也有差异:

  • ERC-4337区分了192位密钥值和64位随机数值
  • zkSync由NonceHolder系统合约管理nonce,确保严格递增
  • StarkNet的nonce也是严格递增,但没有专门的合约管理

随机数(nonce)在区块链中用于防止交易重放攻击,每次交易都会使用一个新的nonce值。

6. 首次交易部署

  • ERC-4337在userOp结构中包含initcode字段,可在首个userOp中部署账户合约
  • StarkNet和zkSync则要求用户将首笔交易发送给操作员/排序器来部署账户合约

部署账户合约是指在区块链上创建一个新的智能合约实例,作为用户的账户。

7. zkSync的特殊设计

zkSync允许用户直接将ETH从以太坊EOA转移到zkSync,无需部署自定义账户合约就能获得一个默认账户。该账户与以太坊EOA地址相同,可像EOA一样运作,由相应的以太坊EOA私钥控制。

加密基础设施的未来?多链账户抽象解析

L1与L2上ERC-4337实现的差异

在EVM兼容链上实施ERC-4337时,主要存在两个关键差异:

1. 协议差异

Rollup设计中,L2需要将数据上传到L1以保证安全性和结算。L1指主链(如以太坊主网),L2是在L1之上构建的扩展层。在ERC-4337中,与此相关的费用(如L1安全费和blob费用)应包含在预验证Gas中。blob是二进制大对象的缩写,用于存储大量数据。如何在预验证Gas中准确计入这些上传费用是一个重大挑战。

2. 地址差异

zkSync ERA的create函数中地址编码方式与以太坊和OP汇总不同。StarkNet则使用独特的哈希函数计算地址。

在EVM兼容链上,ERC-4337通常假设地址计算在各链上是一致的。然而,硬分叉中新增的操作码可能导致字节码变化,进而引起以太坊和L2中ERC-4337实现的账户合约地址不一致。硬分叉是区块链协议的重大更新,可能导致不兼容的变化。例如,如果L2链不支持上海硬分叉,且编译时未指定EVM版本,push0的引入就会改变字节码。字节码是智能合约的机器级代码,直接被区块链虚拟机执行。

加密基础设施的未来?多链账户抽象解析

加密基础设施的未来?多链账户抽象解析

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 6
  • 分享
评论
0/400
gas_fee_traumavip
· 6小时前
签名抽象是啥? 讲了等于没讲
回复0
空投舔狗vip
· 15小时前
数字货币就是命咯~天选打工人!
回复0
倒霉的矿工vip
· 15小时前
挖过ETH,矿机炸了,现在专业社群吹水
回复0
WenMoon42vip
· 15小时前
区块链炒币老韭菜 EthCC咋还吹?
回复0
资深老韭当家vip
· 15小时前
eth党永远不会倒
回复0
养老金毁灭者vip
· 15小时前
啥时候能把钱包用起来像支付宝一样简单?
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)