Skip to content

Transactions with maxFeePerGas or gasPrice less than baseFeePerGas rejected only when gas is missing #24661

Description

@MicaiahReid

Thanks for all the work you do! Hopefully this issue is clear.

System information

Geth version: 1.10.18-unstable, also tested with 1.10.15-stable
OS & Version: Linux Ubuntu 20.04
Commit hash : (if develop) 763b3f8d1f93b57795dd33b35e8b97ef9b9da99f

Expected behaviour

When sending a transaction with maxFeePerGas / gasPrice < baseFeePerGas and omitting gas, error in a way that points to the problem of the missing gas field.

Or don't require a gas field to be specified in cases where maxFeePerGas or gasPrice are lower than baseFeePerGas.

Actual behaviour

Sending a transaction with no maxFeePerGas / gasPrice and no gas field, the transaction is accepted.

Sending a transaction with maxFeePerGas / gasPrice < baseFeePerGas and no gas field, the transaction is rejected with an error suggesting that the effective gas price being lower than baseFeePerGas is the reason for the failure.

Sending a transaction with maxFeePerGas / gasPrice < baseFeePerGas and the gas field specified, the transaction is accepted.

Steps to reproduce the behaviour

const [from, to] = eth.accounts;

// fails with error below
eth.sendTransaction({from, to, gasPrice: "0x1"});
// Error: err: max fee per gas less than block base fee: 
// address 0x9ccab4d0Af2363835bEdc09b66Ac9130635e63f7, maxFeePerGas: 1 baseFee: 765625000 (supplied gas 6004776)

// tx successfully added to pending queue
eth.sendTransaction({from, to, gasPrice: "0x1", gas: 21000}); 

// fails with error below
eth.sendTransaction({from, to, maxFeePerGas: "0x1", maxPriorityFeePerGas: "0x0"});
//Error: err: max fee per gas less than block base fee: 
// address 0x9ccab4d0Af2363835bEdc09b66Ac9130635e63f7, maxFeePerGas: 1 baseFee: 765625000 (supplied gas 6004776)

// tx successfully added to pending queue
eth.sendTransaction({from, to, maxFeePerGas: "0x1", maxPriorityFeePerGas: "0x0", gas: 21000}); 

// tx successfully added to pending queue
eth.sendTransaction({from, to}); 

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions