Skip to content

eth_estimateGas result may not be enough #61

Open
@davidmurdoch

Description

@davidmurdoch

Gas estimation is tricky.

  1. A transactions gasUsed amount is not the same as the amount of gas required for a transaction.
  2. Gas refunds are deducted from the gasUsed amount, but the refunded amount must be available when running the transactions
  3. For some OPCODES (like CALL) 1/64th of the current gasLeft is withheld from the CALL. This has a strange side effect that can cause the CALL (et al) opcode's internal context to run out of gas, even if the transaction itself DOES have enough gas (i.e., gasLeft - gasUsed >= 0).
  4. Since istanbul, some opcodes, under certain circumstances, actually require more gas to run than they actually spend.
  5. The gasLimit of a transaction can cause the transaction's gasUsed as well as the required gas to vary.

@nicholasjpaterno, did I miss any other tricky cases?

Take a look at ganache-core's gas estimation algorithm for implementation details.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions