原文标题:《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。掌握普通流程后才方便掌握聚合型的交易。
以太坊开发者:Shapella提款测试出现问题,但不会影响Shapella升级时间:金色财经报道,以太坊核心开发者Tim Beiko发推称,开发者Marius Van Der Wijden发现了一个公共测试网Shapellabug,该bug在空块(没有交易或取款)的完全同步期间出现,其他几个客户端也遇到了这个问题,不过,这个问题很容易测试,可以快速修补。团队认为这不会影响Sepolia升级的时间表,仍计划在2月28日12:00点进行。另外,Barnabas Busa更新了最新的对Shapella进行压力测试的提款Devnet。该Devnet有60万验证者,其中36万验证者在分叉时执行取款凭证更新。客户端看到RAM+CPU使用率激增的情况,devops团队将在未来几天监控开发网络,以查看有多少凭证更新消息被包含和丢失。该测试还揭示了Prysm<>Besu问题,其中Besu限制了它通过RPC发送的响应数量以防止DoS,但Prysm预期的响应数量高于Besu的当前限制。Besu团队目前正在调查此事。此外,开发者还计划进行另一次主网影子分叉,将在上面做一些Mev-Boost测试。2月10日以太坊基金会表示,Shanghai+Capella(Shapella)主网升级正在进入最后的预发布序列——公共测试网。Shapella包含许多功能,但对质押者和共识层来说最重要的是支持提款。退出的验证者可以全额取款,而活跃验证者余额超过32ETH的可以部分取款。另外,第一个长期存在的公共测试网Sepolia计划于2月28日进行升级。[2023/2/17 12:12:44]
流程图中箭头不代表程序的调用栈或输入输出,仅代表相关角色、函数、事件的发生的先后顺序。
ICP孵化器ICPL官网上线,包含NNS治理、开发者库等模块:6月6日消息,ICP孵化器ICPL官网上线,官网包括了以类Snapshot的UI/UX呈现的NNS治理模块、ICPL研究院与博客、IC开发文档以及IC生态DApp信息展示四个主要模块。ICPL是专注于互联网计算机协议和Web3的社区孵化器。ICPL成立于2017年,支持了多个IC生态项目的发展,旨在建立一个基于IC技术的孵化器DAO。[2022/6/6 4:06:09]
为方便读者对宏观架构的快速理解,流程图中省略了一部分函数调用和逻辑。被省略的部分有可能对你研究的问题或疑惑有很大意义,具体看你想了解什么内容,所以还是需要你必要时仔细阅读源码。
研究 4337 需要掌握以下核心概念:
UserOperation 的内容 EntryPoint 实现 Wallet 实现 Paymaster 实现验证阶段、执行阶段的执行流程与错误处理 Gas 的支付流程与计算
YFII核心开发者:YFII未增发也没有被攻击:5月25日消息,对于今日YFII暴跌一事,YFII核心开发者高师傅(高金)今日在微博上表示,(YFII)没有被攻击,也没有增发,也不是用于发工资;YFII早已没有增发权限,所有的代币都是挖出来的,团队没有(增发权限),也没任何办法给自己法币;团队之前确实有50多个YFII以及几个ETH,YFII是回购来的,ETH是uniswap空投UNI时卖的,所有操作记录都在链上。
行情显示,YFII今日暴跌,最低跌至320美元,现报645美元,24小时跌幅45.52%。[2022/5/25 3:40:29]
一种内容类似 transaction 的伪交易对象,通过新的 RPC 方法 eth_sendUserOperation 提交给节点。
UO 中的字段含义大部分是显然的,仅挑选几个容易误解的进行分析:
sender,此处指的是要交互的 wallet,而非 msg.sender 或 tx.origin 等其他任何概念 verificationGasLimit,验证交易时的 gasLimitcallGasLimit,执行交易时的gasLimitpreVerificationGas,补偿 bundler 调用 handleOps () 时会一部分未计算在内的 gas 成本(如提交交易的 calldata 成本)。
Web3开发者Wesley van Heije推出协议参与证明PoC框架,通过链上验证生成分数:10月27日消息,Web3开发者Wesley van Heije推出协议参与证明(Proof of Competence)框架,该框架可以帮助协议建立一个任务系统来验证用户对协议的了解度,用户每完成一个任务都会获得一定的积分,这意味着该用户对该协议更加熟悉和了解。此外,协议还可以利用该框架改变以代币权重进行治理的方式,通过用户积分的高低来设置治理权重。目前利用该框架的协议有Aave、Rarible Protocol、The Graph、useWeb3。[2021/10/27 6:14:56]
这个并非 UO 中的一个字段,而是由上面三个 gas 参数计算而出。代表了该 UO 在 验证阶段 预先支付给 EntryPoint 的总成本。Prefund 虽然是在验证阶段支付的,但包含了 preVerificationGas,验证和执行三部分的成本。之后不会再向 EntryPoint 进行支付 gas。
Blockstream首席战略官:并没有人在故意攻击比特币核心开发者:9月8日早间,Blockstream首席战略官Samson Mow发推称,不认为有人在攻击、故意围攻或忘恩负义地对待比特币的核心开发者。他们只是在表达自己的观点,即任何形式的在比特币中都没有位置。当然,有些人的声音可以更冷静一些。随后,Samson Mow又发推称,我们需要更多像ZmnSCPxj(匿名比特币开发者)这样的比特币开发者。与此同时,就在今日早间,Bitcoin.org网站共同所有者Cobra发推称,Chaincode Labs挖走了Blockstream最好的开发人员Pieter Wuille,并透露称,Blockstream正通过Twitter攻击Chaincode Labs的关联开发人员以作为回应。[2020/9/8]
具体计算参见 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星球日报
腾讯研究院
在加密世界里,钱包地址就像 “银行卡账号”、“收件地址”一样重要,任何操作都离不开它,随着Ordinals 协议的诞生,推动了比特币基于隔离见证、Taproot升级的采用,这让很多人第一次使用“bc1p”等特殊抬头的地址格式.
1900/1/1 0:00:00网易在元宇宙方面是身体力行的典范。丁磊曾表示:“网易在元宇宙技术、规划各个层面上,都做好了准备。响一下,网易可能跑得比谁都快.
1900/1/1 0:00:0011月28日当地时间周一,成立于 2017 年的加密借贷平台 BlockFi 正式在美国申请第 11 章破产保护,成为 FTX 崩盘冲击波中最新破产的加密公司.
1900/1/1 0:00:00电子游戏,科技发展的隐藏发动机估计很多瓜友一看到这个标题,就咧嘴一笑:瓜哥,你不能因为自己喜欢玩游戏,就把电子游戏拔高到这个高度啊.
1900/1/1 0:00:00DeFi数据 1、DeFi代币总市值:366.67亿美元 DeFi总市值及前十代币 数据来源:coingecko2、过去24小时去中心化交易所的交易量33.
1900/1/1 0:00:00DeFi数据 1、DeFi代币总市值:471.01亿美元 DeFi总市值及前十代币 数据来源:coingecko2、过去24小时去中心化交易所的交易量15.
1900/1/1 0:00:00