ERC4337 EntryPoint v0.7.0:账户抽象的新纪元

本文深入探讨了以太坊账户抽象的关键组成部分——EntryPoint合约,特别是v0.6和v0.7版本的演进。文章详细解读了EntryPoint合约在简化交易、增强安全性和提升开发者自由度方面的作用,并着重介绍了v0.7版本中优化的数据结构、gas管理、安全措施以及开发者工具的改进,旨在推动以太坊生态系统向更易用、安全和功能丰富的方向发展。

图片

Entrypoint v0.7.0 — 智能账户

介绍

除非你隐居在洞穴里,否则你可能在 2023 年或更早的时候就已听说过账户抽象(AA)的热潮。它正在重塑我们与基于以太坊的区块链(基于 EVM)的交互方式,使其更简单、更直观。这种转变的核心是 Entrypoint 合约,它是使 AA 成为现实的关键元素。

了解账户抽象

在以太坊中,有两种类型的账户:

  • 外部拥有账户(EOA),由私钥控制。
  • 合约账户,根据智能合约代码运行。

虽然功能强大,但这种设置存在缺点,尤其是在用户体验和安全性方面。

账户抽象旨在模糊这些界限,将每个账户都视为智能合约。这种改变意味着更大的灵活性和可编程安全性,简化了与 dApp 的交互并提高了安全性,所有这些都无需管理私钥的传统麻烦。

Entrypoint 的作用

Entrypoint 是这种新的交易范例的网关,充当 UserOperations(UserOps)的通用处理器。这个智能合约以一致的方式部署在每个链上的相同地址,简化了交易的执行方式,体现了账户抽象的本质。

Entrypoint 的主要特点:

  • 简化交易:Entrypoint 允许使用智能合约级别的逻辑执行交易,从而增强用户体验。
  • 增强安全性:它引入了额外的验证层和条件,以实现更安全的区块链交互。
  • 开发者自由:借助 Entrypoint,开发者可以构建将复杂的交易逻辑直接融入用户账户的 dApp。

图片

v0.6 之前的 Entrypoint 之旅

在我们深入研究 Entrypoint 0.6 和 0.7 版本的细节之前,重要的是要了解其前身奠定的基础。Entrypoint 的早期版本对于塑造以太坊生态系统中账户抽象(AA)的未来至关重要,重点是为区块链交易创建一个无缝、安全和用户友好的环境。

v0.6 之前的关键发展:

  • 智能合约钱包集成: 已采取纳入智能合约钱包(SCW)的初始步骤。与传统的智能合约一样,SCW 对于允许用户执行具有复杂逻辑和增强安全性的交易至关重要。
  • 交易处理原型设计: 这些版本为 Entrypoint 在管理交易中的作用奠定了基础。目标是使执行交易像执行智能合约一样简单和安全,从而为更好的用户体验和更高的安全性铺平道路。
  • 构建 Gas 管理和安全性: 早期的 Entrypoint 版本探索了有效的 gas 管理方法,并引入了安全功能来保护交易。这些努力旨在降低成本并提高区块链交互的安全性。

这些基础版本对于理解和改进账户抽象概念至关重要,从而为 Entrypoint v0.6 中引入的重大改进奠定了基础。它们解决了集成智能合约钱包以实现更灵活和安全的交易,为 Entrypoint 的交易管理功能奠定了基础,并探索了基础 gas 管理和安全方面。

Entrypoint v0.6:简化以太坊交易

Entrypoint v0.6 升级了交易,以提高安全性和更流畅的处理,重点关注 SCW 和管理交易。

Entrypoint v0.6 的主要亮点:

  • 改进的 SCW 集成:此版本增强了 SCW 与区块链的交互方式,为用户提供对其交易的更多控制和灵活性。
  • 升级的 UserOperation 结构体:Entrypoint v0.6 扩展了 UserOperation 结构体,以包含关键字段,如 noncecallDatasignature。这使得交易更有效率,并与以太坊的 gas 费用更新保持一致。
  • 增强的 Paymaster 支持:此更新为 Paymaster 提供了更丰富的功能,从而能够以各种方式处理交易费用并促进无 gas 交易。
  • Nonce 管理转变:在 v0.6 之前,管理 nonce(用于防止重放攻击的交易计数器)主要由智能合约账户负责。此版本引入了对 nonce 管理的改进,从而提高了交易安全性。
  • 安全性和效率提升:Entrypoint v0.6 专注于安全增强和高效 gas 管理,确保更安全且具有成本效益的交易。

处理操作:handleOps

handleOps 函数是 Entrypoint 运行的核心,用于处理 UserOperation 结构体的数组。此函数说明了 Entrypoint 如何处理交易、管理 gas 费用以及与智能合约钱包和 paymaster 交互。

struct UserOperation {
    address sender;
    uint256 nonce;
    bytes initCode;
    bytes callData;
    uint256 callGasLimit;
    uint256 verificationGasLimit;
    uint256 preVerificationGas;
    uint256 maxFeePerGas;
    uint256 maxPriorityFeePerGas;
    bytes paymasterAndData;
    bytes signature;
}
function handleOps(UserOperation[] calldata ops, address payable beneficiary) external {
    // 遍历每个 UserOperation
    for (uint i = 0; i < ops.length; i++) {
        // 处理每个操作,包括验证、执行和后操作处理
        processUserOp(ops[i]);
    }
    // 成功处理所有操作后,补偿交易发起者
    _compensate(beneficiary);
}

注意: 实际的 handleOps 函数涉及复杂的交互,包括 nonce 管理、签名验证和 stake 管理。我在下面分享的代码片段显示了概念流程。

影响:

Entrypoint v0.6 对于推进以太坊的账户抽象至关重要,特别是通过改进交易的执行和管理方式。这些改进为进一步的创新奠定了基础,从而导致了 Entrypoint v0.7 的开发。

Entrypoint 的演进:跃升到 v0.7

从基础到 v0.7

Entrypoint 的早期版本为账户抽象奠定了基础,重点是安全高效的交易处理。到 0.7 版本的演进反映了以太坊致力于增强可用性和功能。

Entrypoint v0.7:账户抽象的一个里程碑

最新进展 0.7 版本带来了社区反馈和不断变化的需求所驱动的重大更新和优化:

  • 优化的 Gas 管理:使交易更具成本效益。
  • 高级安全性:引入严格的安全措施,以更好地保护帐户和交易。
  • 增强的开发者工具:提供改进的资源来创建支持 AA 的 dApp。

Entrypoint v0.7 中的新增功能

Entrypoint v0.7 引入了几个关键功能和改进,以进一步简化账户抽象:

  • 优化的数据结构:优化交易数据结构,以提高性能并降低 gas 成本。
  • 模拟函数和部署大修:0.7 版本删除了链上模拟函数,将它们定向到链下以供 bundler 使用,从而优化了合约效率。
  • delegateAndRevert() 助手:此添加项可帮助没有状态覆盖的网络,从而确保可靠的验证和 gas 估算。
  • ERC-165 “supportsInterface”:增强互操作性。
  • Token Paymaster 模板:说明如何实施可以赞助交易费用的 paymaster。
  • 未使用 Gas 的罚款:对未使用的 gas 限制引入费用,以鼓励有效使用 gas。
  • 简化的后操作调用:通过删除冗余的 postOp 调用来简化事务处理。
  • Gas 限制规范:提供更清晰的 gas 估算指南并增强安全性。
  • 结构调整:分离链下和链上 UserOperation 表示,以提高效率和清晰度。

优化数据结构

为了最大程度地提高效率,Entrypoint v0.7.0 引入了优化的数据结构,可以显着降低交易成本并提高合约性能。此更新尤其值得关注的是其对 UserOperation 结构的重新构想方法,该结构在账户抽象过程中至关重要。

图片

重组包括引入 PackedUserOperation 结构,该结构将多个字段合并为单个 bytes32 值,从而优化了交易所需的 gas。

模拟函数和部署大修

  • 背景:以前,EntryPoint 合约包含直接在区块链上模拟交易的功能。这些主要由 bundler 用于在执行之前测试交易。
  • v0.7.0 中的更新:这些模拟函数已移至链下。这样做的理由是通过删除对于链上操作不是必不可少的功能来简化 EntryPoint 合约,从而减小合约大小并优化其效率。

delegateAndRevert() 助手

  • 背景:在区块链网络中,事务调用期间的状态覆盖(例如,eth_calleth_estimateGas)允许更灵活的测试和 gas 估算。但是,并非所有网络都支持此功能。
  • v0.7.0 中的更新delegateAndRevert() 函数作为缺少状态覆盖的网络的一种变通方法而引入。它通过模拟条件而不永久更改区块链来帮助验证和估算事务的 gas。

ERC-165 “supportsInterface”

  • 背景:ERC-165 是用于合约接口检测的标准,允许以太坊合约公开声明它们实现的接口,从而提高互操作性。
  • v0.7.0 中的更新:通过集成 ERC-165 的 supportsInterface 方法,EntryPoint 现在使其他合约和应用程序能够以编程方式检测其支持的功能和接口,从而增强以太坊生态系统中的交互和集成。

Token Paymaster 模板

  • 背景:Paymaster 是赞助用户交易费用的合约,以分散方式促进无 gas 交易。
  • v0.7.0 中的更新:提供了一个示例 Token Paymaster 实现,演示了开发者如何创建使用 ERC-20 token 来支付交易费用的 paymaster,从而扩大了用户友好型无 gas 交易的可能性。

未使用 Gas 的罚款

  • 背景:gas 限制不必要地高的事务可能会阻塞网络带宽,从而降低区块链的吞吐量。
  • v0.7.0 中的更新:为了激励有效使用 gas,对事务设置的 gas 限制的未使用部分收取 10% 的罚款。这鼓励用户和开发者准确估算 gas 使用量,从而优化网络资源。

简化的后操作调用

  • 背景:EntryPoint 在事务执行后进行后操作调用以处理任务,例如退还 gas 费用。以前,可能会发生冗余调用,从而使过程复杂化。
  • v0.7.0 中的更新:已消除冗余的 postOp 调用。现在,后操作逻辑更加简单,只需进行一次调用即可处理必要的事务后任务,从而简化了执行流程并减少了潜在的错误。

Gas 限制规范

  • 背景:正确的 Gas 估算对于事务执行至关重要,可确保操作在不耗尽 gas 的情况下完成,并通过防止某些类型的攻击来增强安全性。
  • v0.7.0 中的更新:Gas 限制的新规范,包括 validatePaymasterUserOp 和 postOp,为开发者提供了更清晰的指南。这有助于更好地估算 gas 并加强围绕事务的安全框架。

结构调整

  • 背景:UserOperation(通过 EntryPoint 处理的事务)在链上执行和链下处理之间的表示形式几乎没有差异,有时会导致效率低下。
  • v0.7.0 中的更新:Entrypoint v0.7.0 引入了 UserOperation 的链下和链上表示形式之间的分离。此更改旨在优化链上数据处理,通过根据其特定上下文和使用要求定制每个表示形式来降低交易成本并提高清晰度。

这些更新共同旨在增强 Entrypoint 合约的效率、可用性和安全性,从而进一步实现通过账户抽象使以太坊更易于访问和开发者友好的目标。

结论

账户抽象和 Entrypoint 象征着以太坊朝着更易于访问、安全和通用的区块链生态系统迈进。这些进步有望为开发者和用户释放新的可能性,从而引领创新和更广泛的应用。

Biconomy 仍然致力于这些创新,推动以太坊走向区块链交互像传统 Web 体验一样直接的未来。当我们进入这个新篇章时,变革性应用程序和用户友好型解决方案的潜力是无限的。账户抽象和 Entrypoint 的发展才刚刚开始,未来一片光明。

特别感谢 Biconomy Sachin Tomar (@schin_tomar) 提供本文中使用的富有洞察力的插图。他们对阐明账户抽象和 Entrypoint v0.7.0 的概念做出了宝贵的贡献。

进一步阅读和资源

通过以下重要资源了解有关 Entrypoint v0.7.0 和账户抽象的更多信息:

  • Twitter Insight:通过 @schin_tomar 的 Twitter 帖子 深入了解有关 Entrypoint v0.7.0 功能和影响的详细讨论。
  • 发行说明:访问 官方发行说明,以获取 Entrypoint v0.7.0 的更新和增强功能的概述。
  • GitHub 存储库:要获取代码和贡献机会,请访问 Entrypoint GitHub 存储库
  • Biconomy 博客:通过 Biconomy 的解释性系列文章深入了解 Entrypoint 的工作原理:第 1 部分第 2 部分

联系以获取更多见解

有关区块链创新和开发的更多见解,请关注我并探索我的作品:

  • Twitter:在此处了解最新想法和更新 here
  • LinkedIn:在 LinkedIn 上与我进行专业联系。
  • GitHub:在 GitHub 上探索我的项目和贡献。
  • 博客:在 smart-contracts-developer.com 上阅读有关区块链开发的更多信息。
  • Solichain:在 solichain.com 上发现区块链解决方案。
  • 原文链接: blog.smart-contracts-dev...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
blog_smart-contracts-developer
blog_smart-contracts-developer
江湖只有他的大名,没有他的介绍。