ERC-4337:如何预测用户操作的 Gas 消耗
币界网报道:
本文重点探讨在预测 Gas 的过程我们会遇到哪些问题以及对应的解决方案。
撰文:Dongxi,Particle Network 工程师
Introduction
对于一个 ERC4337 的 Bundler 来说,核心职能有两个:
- 预测 UserOperation 的 Gas,即 eth_estimateUserOperationGas
- 打包并提交 UserOperation 到链上,即 eth_sendUserOperation
其中预测 UserOperation 的 Gas 可谓是 Bundler 中最具有挑战性的部分。因此本文重点探讨在预测 Gas 的过程我们会遇到哪些问题以及对应的解决方案。除此之外,本文还将讨论 Gas Fee 的预测的实现,这虽然不在 ERC4337 的协议范畴内,但是却是 Bundler 实现中无法绕过的话题。
Gas Estimation
首先,用户的 Account 是个合约,EVM 在执行交易时遇到合约会有一笔加载合约的 Gas 消耗。另外用户的 UserOp 会被封装到交易里发到链上,具体由一个统一的 EntryPoint 合约执行。所以在 AA 中哪怕是最普通的转账,消耗的 Gas 也是普通 EOA 地址转账的好几倍。
理论上,你可以设置一个很大的 GasLimit 去规避很多复杂的情况,这很简单。但是这要求用户的 Account 能够有相当大的余额去提前扣除这笔费用,这并不现实。如果能够准确的预估 Gas 的消耗,可以让用户在合理的范围内去正常交易,这对于提高用户体验和降低交易门槛有很大的帮助。
根据 ERC4337 的官方文档,跟 Gas 估算有关的字段如下:
- preVerificationGas
- verificationGasLimit
- callGasLimit
让我们来一一讲解这几个字段并提供一个预测方法。
preVerificationGas
首先我们需要明白,UserOperation 是一个结构,由 Bundler 中的 Signer 将其打包成交易,并发送到链上去执行,而在执行的过程中消耗的是 Signer 的 Gas,在执行结束后计算产生的 GasCost,并返还给 Signer。
在以太坊的模型中,执行一个交易前会预先扣除一定的 Gas,这里简单归纳为两点:
- 如果是创建合约会扣除 53000,调用合约则扣除 21000
- 根据合约长度以及合约代码的字节类型扣除一定的 Gas
推荐专栏
热门币种
更多
币种
美元价格
24H涨跌幅
热搜币种
更多
币种
美元价格
24H涨跌幅
最新快讯
更多
2024-05-24 04:13:41
2024-05-24 04:09:24
2024-05-24 04:08:50
2024-05-24 04:07:55
2024-05-24 04:06:55
2024-05-24 04:06:38
2024-05-24 04:05:54