EIP-2780 repricing: updating the cost of ETH transfers
Today every transfer pays a flat 21,000 gas, value or not.
We measure the end-to-end cost of each: ZERO_VALUE_TRANSFER for a
plain transfer and VALUE_TRANSFER for one that moves value, plus the
marginal TX_VALUE_COST between them. Each is a separate per-client,
per-case non-negative least squares fit on the runtime of
test_ether_transfers_onchain_receivers,
converted to proposed gas at the
100 Mgas/s anchor. Each
parameter's worst case is the most expensive driver across all clients and cases.
Preliminary results. Clients are still working on their block-access-list (BAL) optimizations, so these gas values are expected to change as that work lands.
Summary
Each row is a gas budget EIP-2780 allots to one parameter over the receiver
cases listed
(TX_BASE_COST = 12,000, COLD_ACCOUNT_ACCESS = 3,000, TX_VALUE_COST = 6,000).
Each cell is that client's worst proposed gas across those
cases: green clears the goal, amber is up to 25% over,
red is further over. Hover a goal name for the component sum behind it, its
parameter(s), and the cases it covers.
| Goal | Target | besu | erigon | ethrex | geth | nethermind | reth |
|---|---|---|---|---|---|---|---|
| No-value transfer | 15,000 | 13,447 | 25,733 | 2,781 | 10,165 | 7,856 | 4,420 |
| Transfer | 21,000 | 20,540 | 55,404 | 4,916 | 19,313 | 12,054 | 7,061 |
The goals are EIP-2780's own component sums, so they differ by how many accounts
a transfer touches: a self-transfer touches no second account, an ordinary
receiver one (COLD_ACCOUNT_ACCESS) and a delegated receiver two
(the delegating account and the one it points at). Away from self, a
VALUE_TRANSFER goal is the matching no-value goal plus
TX_VALUE_COST; a self-transfer moves value nowhere, so it is
charged the bare base cost either way and its row covers both parameters. A
client with no fit for a goal's cases shows —.
R² caveats: none — all worst-case drivers have R² > 0.5.
p-value caveats: none — all worst-case drivers have p ≤ 0.05.
Charts
No-value transfer — proposed gas per case vs. goal (15,000) (95% CI)
Transfer — proposed gas per case vs. goal (21,000) (95% CI)
Model fit quality (R², worse of the two regime fits) per (client, case)
Jumpdest cost
Contract (jumpdest) is excluded from the charts above, but
still fit every run. This chart shows its proposed-gas diff against
Contract — the case it's otherwise
closest to in shape — for both parameters, so the cost of the extra
JUMP is visible on its own.