Try   HackMD

EIP-1559 JSON RPC Changes

The eth1.0-apis repository is not versioned (yet!) and hence it can be hard to track the various changes introduced by EIP-1559. Here is a list to make this easier.

General Comments

EIP-1559 introduces a new transaction type (0x02) and adds a field to the block header (baseFeePerGas). At a high level, anything which either returns a transaction or a block will be affected post-1559.

API Changes

The following APIs calls are changed with the introduction of EIP-1559:

  • eth_call
    • This API has the most substantial behavior modifications. They are described here.
  • eth_getBlockBy* endpoints
    • A new field baseFeePerGas is added on post-London blocks
  • eth_getRawTransaction* endpoints
    • RLP encoded EIP-1559 transactions may be returned post-London
  • eth_getTransactionBy* endpoints
    • gasPrice now interpreted as maxFeePerGas before the tx is mined and effectiveGasPrice after it's mined (for EIP-1559 txs). This field is deprecated (no EOL set yet) for EIP-1559 transactions.
    • EIP-1559 transactions will have two new fields, maxPriorityFeePerGas and maxFeePerGas
  • eth_getTransactionReceipt
    • A new field effectiveGasPrice is added to the receipt. Pre-London, it is equal to the transaction's gasPrice. Post-London, it is equal to the actual gas price paid for inclusion. This calculation differs depending if the transaction is an EIP-1559 transaction or not.
  • eth_getUncleBy* endpoints
    • A new field baseFeePerGas is added on post-London blocks
  • eth_sendTransaction
    • EIP-1559 transaction fields maxPriorityFeePergas and maxFeePerGas are now supported. Clients will calculate reasonable values for these fields if they're omitted. Legacy transactions can still be sent by specifying a gasPrice
  • eth_estimateGas
    • Either gasPrice or maxFeePerGas and maxPriorityFeePerGas are now required. Before, it was okay to omit gasPrice because it could be filled with 0. Now the baseFeePerGas must be taken into account, and the fee payment must be large enough to cover the base fee.
  • eth_sendRawTransaction
    • This method now supports RLP encoded EIP-1559 transactions

Note:* at the end of a name refers to all variations of this API call.

Additionally, the following JSON RPC endpoint was introduced:

  • eth_feeHistory, which returns historical data about transaction fees. More information on it can be found here.