木星链 木星链
Ctrl+D收藏木星链

GAS:开发者指南:详解账户抽象提案EIP-4337工作流程

作者:

时间:1900/1/1 0:00:00

原文标题:《EIP-4337 详细工作流程》

原文作者:Ben Law

本文不会从头介绍 EIP-4337,仅介绍 4337 的主要合约是如何实现的。适合对 4337 有一定了解的开发者,由其是钱包开发者,以及爱好者或研究员阅读。

主要内容位于流程图中:

需要配合 4337 源码阅读 GitHub—eth-infinitism/account-abstraction at main。

4337 Spec 中有更多详细细节 EIP-4337: Account Abstraction using alt mempool。  

请注意:

本流程图只画出了普通类型的交易,未涉及 Aggregator。掌握普通流程后才方便掌握聚合型的交易。

以太坊核心开发者会议:讨论EIP-4844和L2 EIP,预计接下来会议确定坎昆升级范围:5月12日消息,以太坊核心开发者 Tim Beiko 发推总结最新一次的执行层会议讨论内容,本次会议讨论大部分都集中在 EIP-4844 上,并对 L2 EIP 进行了一些简要讨论,以及 Cancun 整体计划。

MarioVega.eth 提出了一个关于区块有效性条件的问题,该条件由某些客户端隐式实现,但不是全部。我们同意将此作为明确的有效性条件。此外,Geth 团队正在增加对 c-kzg 和 go-kzg 的支持,以允许用户在遇到错误时轻松切换。会议还讨论了两个 EIP,其中一个包括 EIP-6969(在以太坊 L2 上引入 / 标准化 CSR 的提议)。Tim Beiko表示,希望在接下来的一两次会议中可以最终确定升级的范围。[2023/5/12 14:58:42]

流程图中箭头不代表程序的调用栈或输入输出,仅代表相关角色、函数、事件的发生的先后顺序。

Tezos举办开发者大会TezDev,计划通过Rollups升级达到100万TPS:7月26日消息,Tezos 举办为期三天的开发者活动 TezDev,Nomadic Labs 的软件工程师 Yann Regis-Gianas 和 TriliTech 的 Hans Hoglund 宣布 Tezos 将能够使用 Optimistic Rollups 和数据可用性层方案扩展至 100 万 TPS,并计划在 2023 年中期前通过协议升级实现这一目标。此前,Tezos 核心开发者宣布将推出 WASM 和 EVM Optimistic Rollups。[2022/7/26 2:38:28]

为方便读者对宏观架构的快速理解,流程图中省略了一部分函数调用和逻辑。被省略的部分有可能对你研究的问题或疑惑有很大意义,具体看你想了解什么内容,所以还是需要你必要时仔细阅读源码。

研究 4337 需要掌握以下核心概念:

以太坊核心开发者:含 EIP-4345 的箭形冰川升级将于 12 月 8 日进行,难度炸弹计划推迟至明年 6 月:10月16日消息,以太坊核心开发者 Tim Beiko 发推表示,根据最新的以太坊电话会议讨论,包含改进提案 EIP-4345 的以太坊箭形冰川(Arrow Glacier)网络升级将在区块高度 13773000 处(约 12 月 8 日)进行,难度炸弹计划推迟至明年 6 月。同时 Tim Beiko 表示,如果合并(The Merge)之前已经准备好,那可在此之前进行,且明年 2 月将会再次通过电话会议做出决定。此外难度炸弹基于当前的网络算力,如果算力在合并前迅速下降,则可能会加速难度炸弹的出现。[2021/10/16 20:34:16]

UserOperation 的内容 EntryPoint 实现 Wallet 实现 Paymaster 实现验证阶段、执行阶段的执行流程与错误处理 Gas 的支付流程与计算

动态 | 以太坊社区核心开发者发起提高透明度的行动 纷纷列明收入来源和持币情况:据reddit消息,以太坊核心开发者 Afri Schoedon 因参与以太坊且就职波卡开发公司 Parity Technologies 而被质疑存在利益冲突,进而愤然宣布退出社交网络之后,以太坊社区核心开发者发起提高透明度的行动,希望通过澄清自己和多个项目的关系,以更高的透明度减少猜疑,增加以太坊社区的凝聚力。以太坊创始人 Vitalik Buterin 通过 reddit 表明了自己和各项目的关系:除了 ETH 之外,他还持有 BCH、BTC、DOGE、ZEC 等非以太坊生态的密码货币,这些密码货币的价值不足其持有 ETH 价值的 10%;他还持有以太坊生态内 KNC、MKR、OMG、REP 的代币, 这些代币的价值也不足其持有 ETH 价值的 10%;他个人还投资了 Clearmatics 和 Starkware 两个初创公司;此外,他除了从以太坊基金会获得工资收入之外,因个别项目的顾问角色获得一些收入。除了 Vitalik Buterin 之外,Justin Drake、Martin Swende 等以太坊核心开发者也纷纷仔细列明了自己的收入来源、持币状况等信息,借此提高透明度,减少利益冲突。[2019/2/20]

一种内容类似 transaction 的伪交易对象,通过新的 RPC 方法 eth_sendUserOperation 提交给节点。

动态 | Fomo3D核心开发者Inventor因健康原因离开:Team Just团队声明:核心成员Inventor因健康原因离开团队。此后,Inventor将不再担任Fomo3D项目的Solidity开发,并不再参与Team Just团队的项目。[2018/12/6]

UO 中的字段含义大部分是显然的,仅挑选几个容易误解的进行分析:

sender,此处指的是要交互的 wallet,而非 msg.sender 或 tx.origin 等其他任何概念 verificationGasLimit,验证交易时的 gasLimitcallGasLimit,执行交易时的gasLimitpreVerificationGas,补偿 bundler 调用 handleOps () 时会一部分未计算在内的 gas 成本(如提交交易的 calldata 成本)。

这个并非 UO 中的一个字段,而是由上面三个 gas 参数计算而出。代表了该 UO 在 验证阶段 预先支付给 EntryPoint 的总成本。Prefund 虽然是在验证阶段支付的,但包含了 preVerificationGas,验证和执行三部分的成本。之后不会再向 EntryPoint 进行支付 gas。

具体计算参见 EntryPoint 中的 _getRequiredPrefund。

EntryPoint 是所有功能的核心入口。每个项目自行部署自己的 EntryPoint。Bundler,Wallet 和 Paymaster 都需要围绕 EntryPoint 工作。

链下验证 UO,剔除不符合要求和有问题的 UO。链下验证一是防止 DoS,二是避免 bundler 在链上损失 gas。

打包合规的 UO,提交上链。

向 EntryPoint 支付 gas 费

只响应来自 EntryPoint 的消息

执行来自 EntryPoint 的具体交易内容

注意,EntryPoint 不是 Wallet 的 factory。官方给出的图片容易给人造成这种误解,但官方实现并非如此。

向 EntryPoint 确认自己的为某 UO 服务的意愿

在 EntryPoint 内质押才能成为 paymaster

我们可以看到 Wallet 与 Paymaster 都有可能向 EntryPoint 支付 gas。gas 余额会存储在 deposits 这个 mapping 中。

注意,虽然 deposits 字面意思为充值,但并非必须一个需要预先手动完成的动作,也可以在每一笔 UO 发生时,计算缺少多少 gas 并自动充值。

最终,若所有操作的 actualGasCost 小于 prefund, EntryPoint 会将多余额度退款至你的 deposit。  

注意, validationActualCost & callActualCost 仅仅是为了说明而作的标记,并非真实存在的变量。它们是由 gasPrice() 累加的。  

代表用户最终使用的钱包。需要开发者至少实现以下两个自定义方法:

签名验证:你可以使用任何密码学手段来实现签名验证,比如,为了配合使用苹果的 Security Enclave 而实现 NIST P-256 的 ECDSA。如果没有特殊需求可直接使用以太坊的 ECDSA。

处理交易:EntryPoint 通过 address (sender).call (callData) 来调用 wallet 中的具体的交易功能。那么 call 需要有至少一个可执行的函数,如 transferEther (),callAnotherContrat () 等。

开发者还需要自行实现 wallet factory,需要创建钱包时,工厂会被 SenderCreator 合约调用。新建钱包应使用 CREATE2 方法以保障生成地址的确定性。

Paymaster 可以为用户支付 gas,因此可以实现:

免费交易:用户激励,让用户免费使用钱包 

gasless 交易:不直接用 ether 支付 gas,而使用其他 token 或 nft 等

等等其他类似的赞助交易功能

Paymaster 需要开发者实现:

validatePaymasterUserOp ():由于 paymaster 的开放性,验证逻辑需要开发者完全自己定义。验证后有可能需要实现类似 wallet 中 payPrefund () 的功能。

postOp:必须重写此方法,否则会被 revert。此方法可以定义在 paymaster 赞助完交易后需要做什么,如在验证时为用户支付了 ether,则此处要求用户支付等价的 ERC-20。

区块律动BlockBeats

媒体专栏

阅读更多

金色早8点

金色财经

去中心化金融社区

CertiK中文社区

虎嗅科技

念青

深潮TechFlow

Odaily星球日报

腾讯研究院

标签:GASENT以太坊NTRTOGASHI币litentry币投资人people币对标以太坊Centrality

币赢交易所热门资讯
比特币:比特币钱包地址格式有哪几种?哪种可以节省手续费?

在加密世界里,钱包地址就像 “银行卡账号”、“收件地址”一样重要,任何操作都离不开它,随着Ordinals 协议的诞生,推动了比特币基于隔离见证、Taproot升级的采用.

1900/1/1 0:00:00
比特币:金色早报 | 美国总统拜登呼吁实施更严格的全球加密货币监管

金色财经报道,在FTX崩溃之后,全球监管机构正在就实施全球加密货币监管进行谈判。为防止再次发生类似FTX的事件并保护投资者和其他实体,美国拜登总统已经就加密货币领域发表了他的看法.

1900/1/1 0:00:00
BRC:币安入局ORC-20 BRC-20或迎来终局

作者:比推Asher ZhangBinance Academy发推介绍ORC-20,市场认为币安有意布局ORC-20,那目前ORC-20到底表现如何?比特币协议叙事此起彼伏.

1900/1/1 0:00:00
NFT:NFT历史的黑暗面:盘点5大蓝筹的至暗时刻

撰文:Lamboland 编译:Luffy,Foresight NewsNFT 失去了它的辉煌,回顾 NFT 历史.

1900/1/1 0:00:00
CER:去中心化数据库对Web3而言意味着什么?

1. 为什么需要去中心化数据库?Web2应用的数据存储有两种基本方式,文件系统(File System)和数据库(Database).

1900/1/1 0:00:00
NBS:无聊猿暴跌 是FTX余震还是NFT市场暴雷前兆

FTX事件堪称加密世界的“雷曼时刻”。事件的发展速度和影响范围已经远远超出了此前的想象。不论是从传统的中心化交易所(CEX),还是各类投资基金,均受到了此次FTX事件的连续暴击,危机已经开始蔓延.

1900/1/1 0:00:00