dethcrypto / dethcrypto/deth

`eth_estimateGas` result may not be enough

Open
#61 0 comments 4 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
123
Forks
14
PR merge metrics
No merged PRs in 30d

Description

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.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.