我有一个私有的以太坊网络并使用 Geth,为了加快速度,我想修改气体估算的完成方式。
当涉及多个并发操作时,对 eth_estimateGas 使用 RPC 调用太慢了。我看到这是在 internal/ethapi/api.go 的函数 EstimateGas 中完成的:
func (ec *Client) EstimateGas(ctx context.Context, msg ethereum.CallMsg) (uint64, error)
这在内存中执行,不会影响区块链并计算使用了多少气体,通常与实际使用的气体有 20-30% 的差异。
有没有办法构建一个函数,可能直接在 EVM 中,从其他 Go 源调用它,它基本上使用与矿工在计算所需的确切气体时所使用的代码相同的代码?
可能无法得出确切的金额(由于其他块条件,在执行交易时),但至少我需要通过不使用 RPC 调用来进行接近真实价值的估计。
非常感谢任何帮助。