本文深入探讨了以太坊账户抽象的关键组成部分——EntryPoint合约,特别是v0.6和v0.7版本的演进。文章详细解读了EntryPoint合约在简化交易、增强安全性和提升开发者自由度方面的作用,并着重介绍了v0.7版本中优化的数据结构、gas管理、安全措施以及开发者工具的改进,旨在推动以太坊生态系统向更易用、安全和功能丰富的方向发展。
Entrypoint v0.7.0 — 智能账户
除非你隐居在洞穴里,否则你可能在 2023 年或更早的时候就已听说过账户抽象(AA)的热潮。它正在重塑我们与基于以太坊的区块链(基于 EVM)的交互方式,使其更简单、更直观。这种转变的核心是 Entrypoint 合约,它是使 AA 成为现实的关键元素。
在以太坊中,有两种类型的账户:
虽然功能强大,但这种设置存在缺点,尤其是在用户体验和安全性方面。
账户抽象旨在模糊这些界限,将每个账户都视为智能合约。这种改变意味着更大的灵活性和可编程安全性,简化了与 dApp 的交互并提高了安全性,所有这些都无需管理私钥的传统麻烦。
Entrypoint 是这种新的交易范例的网关,充当 UserOperations(UserOps)的通用处理器。这个智能合约以一致的方式部署在每个链上的相同地址,简化了交易的执行方式,体现了账户抽象的本质。
在我们深入研究 Entrypoint 0.6 和 0.7 版本的细节之前,重要的是要了解其前身奠定的基础。Entrypoint 的早期版本对于塑造以太坊生态系统中账户抽象(AA)的未来至关重要,重点是为区块链交易创建一个无缝、安全和用户友好的环境。
v0.6 之前的关键发展:
这些基础版本对于理解和改进账户抽象概念至关重要,从而为 Entrypoint v0.6 中引入的重大改进奠定了基础。它们解决了集成智能合约钱包以实现更灵活和安全的交易,为 Entrypoint 的交易管理功能奠定了基础,并探索了基础 gas 管理和安全方面。
Entrypoint v0.6 升级了交易,以提高安全性和更流畅的处理,重点关注 SCW 和管理交易。
UserOperation
结构体:Entrypoint v0.6 扩展了 UserOperation
结构体,以包含关键字段,如 nonce
、callData
和 signature
。这使得交易更有效率,并与以太坊的 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 的早期版本为账户抽象奠定了基础,重点是安全高效的交易处理。到 0.7 版本的演进反映了以太坊致力于增强可用性和功能。
最新进展 0.7 版本带来了社区反馈和不断变化的需求所驱动的重大更新和优化:
Entrypoint v0.7 引入了几个关键功能和改进,以进一步简化账户抽象:
delegateAndRevert()
助手:此添加项可帮助没有状态覆盖的网络,从而确保可靠的验证和 gas 估算。为了最大程度地提高效率,Entrypoint v0.7.0 引入了优化的数据结构,可以显着降低交易成本并提高合约性能。此更新尤其值得关注的是其对 UserOperation
结构的重新构想方法,该结构在账户抽象过程中至关重要。
重组包括引入 PackedUserOperation
结构,该结构将多个字段合并为单个 bytes32
值,从而优化了交易所需的 gas。
delegateAndRevert()
助手eth_call
和 eth_estimateGas
)允许更灵活的测试和 gas 估算。但是,并非所有网络都支持此功能。delegateAndRevert()
函数作为缺少状态覆盖的网络的一种变通方法而引入。它通过模拟条件而不永久更改区块链来帮助验证和估算事务的 gas。supportsInterface
方法,EntryPoint 现在使其他合约和应用程序能够以编程方式检测其支持的功能和接口,从而增强以太坊生态系统中的交互和集成。这些更新共同旨在增强 Entrypoint 合约的效率、可用性和安全性,从而进一步实现通过账户抽象使以太坊更易于访问和开发者友好的目标。
账户抽象和 Entrypoint 象征着以太坊朝着更易于访问、安全和通用的区块链生态系统迈进。这些进步有望为开发者和用户释放新的可能性,从而引领创新和更广泛的应用。
Biconomy 仍然致力于这些创新,推动以太坊走向区块链交互像传统 Web 体验一样直接的未来。当我们进入这个新篇章时,变革性应用程序和用户友好型解决方案的潜力是无限的。账户抽象和 Entrypoint 的发展才刚刚开始,未来一片光明。
特别感谢 Biconomy 和 Sachin Tomar (@schin_tomar) 提供本文中使用的富有洞察力的插图。他们对阐明账户抽象和 Entrypoint v0.7.0 的概念做出了宝贵的贡献。
通过以下重要资源了解有关 Entrypoint v0.7.0 和账户抽象的更多信息:
有关区块链创新和开发的更多见解,请关注我并探索我的作品:
- 原文链接: blog.smart-contracts-dev...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!