受EIP-1159影响的JSON RPC API

EIP-1159升级了以太坊的交易定价机制,将gasPrice分为base和tip两部分。EIP-1159 不能兼容之前的版本,因此将导致硬分叉。包含EIP-1159升级的分叉被称为伦敦分叉, 大约在8月4日发生。在这篇文章中,我们将介绍EIP-1159造成的以太坊JSON RPC API变化。

用自己熟悉的语言学习 以太坊开发Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart

eth1.0-apis仓库 没有版本号,因此很难跟踪 EIP-1159引发的JSON RPC API变化。下面是我们找出的API变化清单。

EIP-1559引入了一种新的交易类型(0x02)并在区块头加入一个新的字段(baseFeePerGas)。 总体来说,任何返回交易或区块的RPC API都会在EIP-1159生效后受到影响。

下面的API调用受到EIP-1159的影响,标记*的表明该API及其变化形式都受到影响:

eth_call

eth_call涉及到显著的修改,具体描述参见这里

eth_getBlockBy*

在伦敦分叉后的区块中会增加一个新的字段 baseFeePerGas

eth_getRawTransaction*

在伦敦分叉后可能反馈RPL编码的EIP-1159交易。

eth_getTransactionBy*

gasPrice now interpreted as XXX (update after infra call)

EIP-1559交易将添加两个新的字段:maxPriorityFeePerGasmaxFeePerGas

eth_getTransactionReceipt

在交易收据中将添加一个新的字段 effectiveGasPrice 。在伦敦分叉前,该字段 的值与 gasPrice相等;在伦敦分叉后,该字段的值等于实际的gas价格。计算过程 根据交易是否为EIP-1159交易而有所不同。

eth_getUncleBy*

在伦敦分叉后的区块中将增加一个新的字段 baseFeePerGas

eth_sendTransaction

支持EIP-1559交易字段 maxPriorityFeePerGasmaxFeePerGas 。节点软件需要计算这两个 字段的合理值,如果在输入数据中不包含的话。旧式交易依然还可以通过设置gasPrice来发送。

eth_estimateGas

伦敦分叉后,需要指定 gasPricemaxFeePerGasmaxPriorityFeePerGas 。在伦敦分叉前, 可以省略 gasPrice,因为可以设置为0。但EIP-1559生效后,需要考虑baseFeePerGas,手续费 必须要能够支付基准手续费。

eth_sendRawTransaction

这个API目前支持RLP编码的EIP-1159交易。

eth_feeHistory

这个API是EIP-1559引入的,它返回交易手续费的历史数据。关于此API的更多信息可以查看这里

需要指出的是,GETH为了此API支持hex编码值与整数的转换,会引入不兼容的更新。具体参见这里


原文链接:EIP-1559 JSON RPC Changes

汇智网翻译整理,转载请标明出处