New gas proposal
Worst-case-across-clients gas costs derived from the runtime fits, compared against
the current Osaka cost table. Rendered from the generated proposal report; see the
runtime and glue pages for the
underlying per-fit detail.
Generated 2026-06-12 14:35:04Z · fork osaka · anchor_rate 100 Mgas/s
Summary: 12 parameters proposed — 11 increased, 1 decreased, 0 new, 0 unresolved · 4 warnings · 0 poor-fit selections
Proposed gas parameters
| Gas param | Current gas | Proposed gas | Δ% |
| COLD_STORAGE_ACCESS |
2100 |
3358 |
+60% |
| COLD_STORAGE_WRITE |
5000 |
103774 |
+1975% |
| COLD_ACCOUNT_NOCODE_ACCESS |
2600 |
2480 |
-5% |
| COLD_ACCOUNT_CODE_ACCESS |
2600 |
8828 |
+240% |
| COLD_ACCOUNT_NOCODE_WRITE |
9300 |
167318 |
+1699% |
| COLD_ACCOUNT_CODE_WRITE |
9300 |
167318 |
+1699% |
| WARM_ACCESS |
100 |
124 |
+24% |
| STORAGE_WRITE |
2800 |
100416 |
+3486% |
| ACCOUNT_WRITE |
6700 |
164838 |
+2360% |
| REFUND_STORAGE_CLEAR |
4800 |
99624 |
+1976% |
| TX_ACCESS_LIST_STORAGE_KEY |
1900 |
3358 |
+77% |
| TX_ACCESS_LIST_ADDRESS |
2400 |
8828 |
+268% |
Client comparison
Worst client vs. second-worst client per gas parameter. The Ratio column is worst gas / second-worst gas — values close to 1× mean the worst case sits next to the rest of the field, while large ratios flag the worst client as an outlier.
| Gas param |
Worst client |
Worst gas |
Second-worst client |
Second-worst gas |
Ratio |
| COLD_STORAGE_ACCESS |
ethrex |
3358 |
nethermind |
2553 |
1.32× |
| COLD_STORAGE_WRITE |
erigon |
103774 |
ethrex |
33394 |
3.11× |
| COLD_ACCOUNT_NOCODE_ACCESS |
ethrex |
2480 |
erigon |
1187 |
2.09× |
| COLD_ACCOUNT_CODE_ACCESS |
erigon |
8828 |
reth |
3755 |
2.35× |
| COLD_ACCOUNT_NOCODE_WRITE |
erigon |
167318 |
reth |
14729 |
11.36× |
| COLD_ACCOUNT_CODE_WRITE |
erigon |
167318 |
reth |
15145 |
11.05× |
| WARM_ACCESS |
besu |
124 |
nethermind |
73 |
1.70× |
Per-client proposed gas for each parameter. Cells are colored by log2(proposed / current) — red means the proposal is more expensive than the current gas cost, green means cheaper, and white sits at unchanged. Annotations show the absolute proposed gas value; blank rows are parameters with no prior baseline (see warnings below).
| besu | erigon | ethrex | nethermind | reth |
|---|
| COLD_STORAGE_ACCESS | 1,724 | 626 | 3,358 | 2,553 | 148 |
|---|
| COLD_STORAGE_WRITE | 10,220 | 103,774 | 33,394 | 7,108 | 14,771 |
|---|
| COLD_ACCOUNT_NOCODE_ACCESS | 1,170 | 1,187 | 2,480 | 476 | 114 |
|---|
| COLD_ACCOUNT_CODE_ACCESS | 2,991 | 8,828 | 2,607 | 2,497 | 3,755 |
|---|
| COLD_ACCOUNT_NOCODE_WRITE | 7,262 | 167,318 | 3,453 | 5,929 | 14,729 |
|---|
| COLD_ACCOUNT_CODE_WRITE | 9,915 | 167,318 | 3,616 | 5,929 | 15,145 |
|---|
| WARM_ACCESS | 124 | 51 | 8 | 73 | 5 |
|---|
Worst-case provenance per gas param
One collapsible block per gas parameter showing every per-client candidate that the worst-case selector saw. Rows are model combos (the source regression's test_name, target_opcode, model_coef_name, and any model_by factors — components constant within a parameter are dropped from the label). Cells carry each candidate's proposed gas; the cell the per-client selector picked is outlined in black. Colors are log2(proposed / current) against that parameter's baseline on a per-parameter symmetric scale.
COLD_STORAGE_ACCESS — 4 combos × 5 clients
| besu | erigon | ethrex | nethermind | reth |
|---|
| test_sload_bloated · SLOAD · slots=False | 713 | 626 | 757 | 362 | 131 |
|---|
| test_sload_bloated · SLOAD · slots=True | 1,587 | 583 | 3,358 | 2,468 | 144 |
|---|
| test_sstore_bloated · SSTORE · slots=False | 724 | 622 | 735 | 348 | 132 |
|---|
| test_sstore_bloated · SSTORE · slots=True | 1,724 | 570 | 3,309 | 2,553 | 148 |
|---|
COLD_STORAGE_WRITE — 2 combos × 5 clients
| besu | erigon | ethrex | nethermind | reth |
|---|
| slots=False | 10,506 | 103,774 | 33,394 | 7,108 | 934 |
|---|
| slots=True | 10,220 | 56,555 | 26,522 | 5,540 | 14,771 |
|---|
COLD_ACCOUNT_NOCODE_ACCESS — 13 combos × 5 clients
| Label |
Combo |
M1 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_EOA / param_opcode=BALANCE |
M2 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=BALANCE |
M3 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_EOA / param_opcode=CALL |
M4 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALL |
M5 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_EOA / param_opcode=CALLCODE |
M6 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALLCODE |
M7 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_EOA / param_opcode=DELEGATECALL |
M8 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=DELEGATECALL |
M9 |
test_name=test_account_access / target_opcode=EXTCODECOPY / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODECOPY |
M10 |
test_name=test_account_access / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODEHASH |
M11 |
test_name=test_account_access / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODESIZE |
M12 |
test_name=test_account_access / target_opcode=STATICCALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_EOA / param_opcode=STATICCALL |
M13 |
test_name=test_account_access / target_opcode=STATICCALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=STATICCALL |
| besu | erigon | ethrex | nethermind | reth |
|---|
| M1 | 946 | 990 | 2,425 | 370 | 110 |
|---|
| M2 | 952 | 907 | 264 | 353 | 93 |
|---|
| M3 | 1,102 | 1,104 | 2,447 | 461 | 114 |
|---|
| M4 | 1,168 | 1,008 | 266 | 469 | 97 |
|---|
| M5 | 1,023 | 1,029 | 2,436 | 476 | 113 |
|---|
| M6 | 1,038 | 949 | 267 | 465 | 97 |
|---|
| M7 | 981 | 1,014 | 2,480 | 469 | 112 |
|---|
| M8 | 1,056 | 956 | 269 | 460 | 96 |
|---|
| M9 | 44 | 7 | 3 | 37 | 2 |
|---|
| M10 | 927 | 863 | 264 | 385 | 92 |
|---|
| M11 | 938 | 881 | 263 | 384 | 93 |
|---|
| M12 | 1,075 | 1,032 | 2,476 | 468 | 113 |
|---|
| M13 | 1,170 | 1,187 | 266 | 467 | 98 |
|---|
COLD_ACCOUNT_CODE_ACCESS — 16 combos × 5 clients
| Label |
Combo |
M1 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=BALANCE |
M2 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=BALANCE |
M3 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=CALL |
M4 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALL |
M5 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=CALLCODE |
M6 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALLCODE |
M7 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=DELEGATECALL |
M8 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=DELEGATECALL |
M9 |
test_name=test_account_access / target_opcode=EXTCODECOPY / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=EXTCODECOPY |
M10 |
test_name=test_account_access / target_opcode=EXTCODECOPY / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODECOPY |
M11 |
test_name=test_account_access / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=EXTCODEHASH |
M12 |
test_name=test_account_access / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODEHASH |
M13 |
test_name=test_account_access / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=EXTCODESIZE |
M14 |
test_name=test_account_access / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODESIZE |
M15 |
test_name=test_account_access / target_opcode=STATICCALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=STATICCALL |
M16 |
test_name=test_account_access / target_opcode=STATICCALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=STATICCALL |
| besu | erigon | ethrex | nethermind | reth |
|---|
| M1 | 2,578 | 3,676 | 2,492 | 2,443 | 3,109 |
|---|
| M2 | 952 | 907 | 264 | 353 | 93 |
|---|
| M3 | 2,991 | 8,809 | 2,605 | 2,443 | 3,529 |
|---|
| M4 | 1,168 | 1,008 | 266 | 469 | 97 |
|---|
| M5 | 2,810 | 8,828 | 2,579 | 2,470 | 2,875 |
|---|
| M6 | 1,038 | 949 | 267 | 465 | 97 |
|---|
| M7 | 2,950 | 8,781 | 2,581 | 2,497 | 3,755 |
|---|
| M8 | 1,056 | 956 | 269 | 460 | 96 |
|---|
| M9 | 189 | 32 | 17 | 139 | 8 |
|---|
| M10 | 44 | 7 | 3 | 37 | 2 |
|---|
| M11 | 2,635 | 3,632 | 2,497 | 2,416 | 3,500 |
|---|
| M12 | 927 | 863 | 264 | 385 | 92 |
|---|
| M13 | 2,645 | 8,654 | 2,558 | 2,400 | 3,600 |
|---|
| M14 | 938 | 881 | 263 | 384 | 93 |
|---|
| M15 | 2,949 | 8,818 | 2,607 | 2,490 | 3,500 |
|---|
| M16 | 1,170 | 1,187 | 266 | 467 | 98 |
|---|
COLD_ACCOUNT_NOCODE_WRITE — 4 combos × 5 clients
| Label |
Combo |
M1 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_EOA / param_opcode=CALL |
M2 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALL |
M3 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_EOA / param_opcode=CALLCODE |
M4 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALLCODE |
| besu | erigon | ethrex | nethermind | reth |
|---|
| M1 | 7,262 | 23,242 | 3,453 | 3,297 | 14,729 |
|---|
| M2 | 5,773 | 167,318 | 1,706 | 5,929 | 677 |
|---|
| M3 | 1,376 | 817 | 2,420 | 536 | 119 |
|---|
| M4 | 345 | 184 | 33 | 250 | 24 |
|---|
COLD_ACCOUNT_CODE_WRITE — 4 combos × 5 clients
| Label |
Combo |
M1 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=CALL |
M2 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALL |
M3 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=CALLCODE |
M4 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALLCODE |
| besu | erigon | ethrex | nethermind | reth |
|---|
| M1 | 9,915 | 114,412 | 3,616 | 5,665 | 15,145 |
|---|
| M2 | 5,773 | 167,318 | 1,706 | 5,929 | 677 |
|---|
| M3 | 2,244 | 8,289 | 2,440 | 2,790 | 1,321 |
|---|
| M4 | 345 | 184 | 33 | 250 | 24 |
|---|
WARM_ACCESS — 8 combos × 5 clients
| Label |
Combo |
M1 |
test_name=test_ext_account_query_warm / target_opcode=BALANCE / model_coef_name=target_coef / param_opcode=BALANCE |
M2 |
test_name=test_ext_account_query_warm / target_opcode=CALL / model_coef_name=target_coef / param_opcode=CALL |
M3 |
test_name=test_ext_account_query_warm / target_opcode=CALLCODE / model_coef_name=target_coef / param_opcode=CALLCODE |
M4 |
test_name=test_ext_account_query_warm / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_opcode=DELEGATECALL |
M5 |
test_name=test_ext_account_query_warm / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_opcode=EXTCODEHASH |
M6 |
test_name=test_ext_account_query_warm / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_opcode=EXTCODESIZE |
M7 |
test_name=test_ext_account_query_warm / target_opcode=STATICCALL / model_coef_name=target_coef / param_opcode=STATICCALL |
M8 |
test_name=test_storage_sload_same_key_benchmark / target_opcode=SLOAD / model_coef_name=target_coef |
| besu | erigon | ethrex | nethermind | reth |
|---|
| M1 | 17 | 6 | 2 | 17 | 1 |
|---|
| M2 | 124 | 51 | 8 | 67 | 5 |
|---|
| M3 | 124 | 30 | 8 | 70 | 5 |
|---|
| M4 | 121 | 29 | 8 | 67 | 5 |
|---|
| M5 | 16 | 27 | 1 | 29 | 1 |
|---|
| M6 | 17 | 4 | 2 | 22 | 1 |
|---|
| M7 | 120 | 51 | 8 | 73 | 5 |
|---|
| M8 | 14 | 5 | 2 | 19 | 1 |
|---|
Warnings
Missing parameters
None.
Incomplete client coverage
Clients with no estimations at all: geth. These configured clients produced no fits for any gas parameter — check that the runtimes CSV contains their rows and that the fixture-name conventions match. Inspect the evm_gasfit warnings in meta.json for the cause.
Missing glue adjustments
Non-priced opcodes correlated with the target opcount — 1 test affected
The target coefficient was left unadjusted for these. Consider adding them to the glue model or re-designing the test to isolate the target opcode.
| Test name |
Non-priced opcodes |
test_account_access |
CLZ |
Priced glue opcodes with a poor fit — 30 (glue_opcode, client) fits skipped
p_value >= glue_contribution_p_value_threshold (0.05) or rsquared < glue_contribution_rsquared_threshold (0.5) — the contribution of these (glue_opcode, client) fits was skipped when computing the glue adjustment, so the listed gas params carry a target coefficient that is not net of this glue opcode's runtime on the affected clients. See glue_opcodes_autogenerated_report.md for per-fit metrics.
| Glue opcode |
Affected clients |
Affected gas params |
AND |
ethrex (R²), reth (R²) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE |
CALLDATALOAD |
besu (both), erigon (R²), ethrex (R²), geth (R²), nethermind (R²), reth (R²) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
CALLDATASIZE |
nethermind (p-value) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE |
DUP |
nethermind (p-value) |
COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
EXP |
nethermind (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE |
GAS |
nethermind (p-value) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, WARM_ACCESS |
GT |
nethermind (R²) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS |
ISZERO |
erigon (R²), nethermind (R²) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE |
JUMPI |
nethermind (R²) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
KECCAK256 |
besu (R²), erigon (R²), ethrex (R²), geth (R²), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE |
LT |
erigon (R²), nethermind (R²) |
COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
MSTORE |
reth (R²) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE |
PUSH0 |
nethermind (p-value) |
— |
RETURNDATASIZE |
nethermind (R²) |
— |
SELFBALANCE |
besu (R²) |
— |
STATICCALL |
geth (p-value) |
— |
SWAP |
nethermind (R²) |
COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
Other
- derived: 'REFUND_STORAGE_CLEAR' shadows a raw fork field on 'osaka'
- derived: 'TX_ACCESS_LIST_STORAGE_KEY' shadows a raw fork field on 'osaka'
- derived: 'TX_ACCESS_LIST_ADDRESS' shadows a raw fork field on 'osaka'
Poor-fit selections
Rows where the winning fit's p-value exceeded modeling.poor_fit_p_value_threshold (0.05) or its R² fell below modeling.poor_fit_rsquared_threshold (0.5). The failing threshold(s) are noted alongside each row; selections in ### Winners with poor fit still drive the proposal, while ### Other weak candidates lists losing candidates that the selector dropped in favor of a qualified alternative. See runtime_estimation_autogenerated_report.md for per-fit runtime_ms, pvalue, and rsquared metrics.
Winners with poor fit
None.
Other weak candidates
COLD_STORAGE_WRITE — 1 weak combo
| Test |
Target opcode |
Coef |
Combo |
Failing clients |
test_sstore_bloated |
SSTORE |
target_coef |
— |
besu (R²), reth (both) |
COLD_ACCOUNT_NOCODE_WRITE — 2 weak combos
| Test |
Target opcode |
Coef |
Combo |
Failing clients |
test_account_access |
CALL |
target_coef |
param_opcode=CALL |
besu (R²), reth (both) |
test_account_access |
CALLCODE |
target_coef |
param_opcode=CALLCODE |
besu (R²) |
COLD_ACCOUNT_CODE_WRITE — 3 weak combos
| Test |
Target opcode |
Coef |
Combo |
Failing clients |
test_account_access |
CALL |
target_coef |
param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALL |
besu (R²), reth (both) |
test_account_access |
CALLCODE |
target_coef |
param_account_mode=AccountMode.EXISTING_CONTRACT / param_opcode=CALLCODE |
reth (R²) |
test_account_access |
CALLCODE |
target_coef |
param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALLCODE |
besu (R²) |