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-07-31 15:51:06Z · fork osaka · anchor_rate 75 Mgas/s
Summary: 12 parameters proposed — 9 increased, 3 decreased, 0 new, 0 unresolved · 4 warnings · 1 poor-fit selection
Proposed gas parameters
| Gas param | Current gas | Proposed gas | Δ% |
|---|---|---|---|
| COLD_STORAGE_ACCESS | 2100 | 1634 | -22% |
| COLD_STORAGE_WRITE | 5000 | 17102 | +242% |
| WARM_ACCESS | 100 | 36 | -64% |
| COLD_ACCOUNT_NOCODE_ACCESS | 2600 | 7920 | +205% |
| COLD_ACCOUNT_NOCODE_WRITE | 9300 | 20422 | +120% |
| COLD_ACCOUNT_CODE_ACCESS | 2600 | 11034 | +324% |
| COLD_ACCOUNT_CODE_WRITE | 9300 | 20637 | +122% |
| STORAGE_WRITE | 2800 | 15468 | +452% |
| ACCOUNT_WRITE | 6700 | 12502 | +87% |
| REFUND_STORAGE_CLEAR | 4800 | 16418 | +242% |
| TX_ACCESS_LIST_STORAGE_KEY | 1900 | 1634 | -14% |
| TX_ACCESS_LIST_ADDRESS | 2400 | 11034 | +360% |
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 | geth | 1634 | besu | 1331 | 1.23× |
| COLD_STORAGE_WRITE | erigon | 17102 | geth | 10355 | 1.65× |
| WARM_ACCESS | nethermind | 36 | besu | 34 | 1.06× |
| COLD_ACCOUNT_NOCODE_ACCESS | erigon | 7920 | besu | 2526 | 3.14× |
| COLD_ACCOUNT_NOCODE_WRITE | erigon | 20422 | besu | 13187 | 1.55× |
| COLD_ACCOUNT_CODE_ACCESS | erigon | 11034 | ethrex | 7606 | 1.45× |
| COLD_ACCOUNT_CODE_WRITE | erigon | 20637 | besu | 13187 | 1.56× |
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 | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| COLD_STORAGE_ACCESS | 1,331 | 494 | 990 | 1,634 | 673 | 311 |
| COLD_STORAGE_WRITE | 10,234 | 17,102 | 686 | 10,355 | 5,601 | 3,090 |
| WARM_ACCESS | 34 | 8 | 8 | 14 | 36 | 5 |
| COLD_ACCOUNT_NOCODE_ACCESS | 2,526 | 7,920 | 1,386 | 1,605 | 830 | 363 |
| COLD_ACCOUNT_NOCODE_WRITE | 13,187 | 20,422 | 3,897 | 11,791 | 7,509 | 4,015 |
| COLD_ACCOUNT_CODE_ACCESS | 3,509 | 11,034 | 7,606 | 3,155 | 2,837 | 1,803 |
| COLD_ACCOUNT_CODE_WRITE | 13,187 | 20,637 | 10,062 | 11,791 | 7,509 | 4,305 |
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 × 6 clients
| besu | erigon | ethrex | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| test_sload_bloated · SLOAD · slots=False | 1,217 | 483 | 640 | 1,630 | 646 | 306 |
| test_sload_bloated · SLOAD · slots=True | 1,207 | 472 | 990 | 1,553 | 660 | 304 |
| test_sstore_bloated · SSTORE · slots=False | 1,238 | 494 | 631 | 1,634 | 656 | 310 |
| test_sstore_bloated · SSTORE · slots=True | 1,331 | 479 | 980 | 1,557 | 673 | 311 |
COLD_STORAGE_WRITE — 2 combos × 6 clients
| besu | erigon | ethrex | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| slots=False | 10,234 | 17,102 | 0 | 10,355 | 5,601 | 3,090 |
| slots=True | 6,991 | 10,504 | 686 | 6,904 | 4,449 | 2,063 |
WARM_ACCESS — 8 combos × 6 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_sload_same_key_benchmark / target_opcode=SLOAD / model_coef_name=target_coef |
| besu | erigon | ethrex | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| M1 | 7 | 4 | 2 | 2 | 12 | 1 |
| M2 | 31 | 24 | 8 | 11 | 27 | 5 |
| M3 | 34 | 8 | 8 | 14 | 15 | 5 |
| M4 | 31 | 8 | 8 | 12 | 36 | 4 |
| M5 | 6 | 22 | 2 | 3 | 18 | 2 |
| M6 | 8 | 4 | 2 | 1 | 19 | 1 |
| M7 | 30 | 23 | 8 | 14 | 28 | 4 |
| M8 | 5 | 4 | 2 | 4 | 10 | 1 |
COLD_ACCOUNT_NOCODE_ACCESS — 16 combos × 6 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.EXISTING_EOA / 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_EOA / 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_EOA / 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_EOA / 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 | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| M1 | 2,374 | 705 | 1,373 | 1,561 | 779 | 342 |
| M2 | 2,327 | 623 | 181 | 1,508 | 755 | 336 |
| M3 | 2,464 | 778 | 1,383 | 1,577 | 799 | 363 |
| M4 | 2,471 | 687 | 190 | 1,570 | 807 | 347 |
| M5 | 2,460 | 712 | 1,375 | 1,579 | 800 | 350 |
| M6 | 2,418 | 632 | 192 | 1,595 | 790 | 321 |
| M7 | 2,483 | 715 | 1,377 | 1,584 | 783 | 352 |
| M8 | 2,424 | 633 | 190 | 1,598 | 792 | 344 |
| M9 | 2,357 | 695 | 1,372 | 1,605 | 789 | 351 |
| M10 | 2,365 | 614 | 185 | 1,541 | 769 | 344 |
| M11 | 2,348 | 679 | 1,366 | 1,547 | 768 | 344 |
| M12 | 2,328 | 604 | 182 | 1,504 | 782 | 335 |
| M13 | 2,378 | 692 | 1,370 | 1,562 | 773 | 348 |
| M14 | 2,320 | 612 | 180 | 1,512 | 777 | 329 |
| M15 | 2,463 | 729 | 1,386 | 1,573 | 830 | 357 |
| M16 | 2,526 | 7,920 | 192 | 1,600 | 823 | 346 |
COLD_ACCOUNT_NOCODE_WRITE — 4 combos × 6 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 | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| M1 | 8,636 | 10,983 | 2,720 | 7,714 | 5,017 | 2,681 |
| M2 | 13,187 | 20,422 | 3,897 | 11,791 | 7,509 | 4,015 |
| M3 | 2,808 | 653 | 1,403 | 2,362 | 1,068 | 489 |
| M4 | 2,783 | 588 | 200 | 2,363 | 1,007 | 487 |
COLD_ACCOUNT_CODE_ACCESS — 32 combos × 6 clients
| Label | Combo |
|---|---|
M1 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=BALANCE |
M2 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=BALANCE |
M3 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=BALANCE |
M4 |
test_name=test_account_access / target_opcode=BALANCE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=BALANCE |
M5 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=CALL |
M6 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=CALL |
M7 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=CALL |
M8 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALL |
M9 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=CALLCODE |
M10 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=CALLCODE |
M11 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=CALLCODE |
M12 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=CALLCODE |
M13 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=DELEGATECALL |
M14 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=DELEGATECALL |
M15 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=DELEGATECALL |
M16 |
test_name=test_account_access / target_opcode=DELEGATECALL / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=DELEGATECALL |
M17 |
test_name=test_account_access / target_opcode=EXTCODECOPY / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=EXTCODECOPY |
M18 |
test_name=test_account_access / target_opcode=EXTCODECOPY / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=EXTCODECOPY |
M19 |
test_name=test_account_access / target_opcode=EXTCODECOPY / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=EXTCODECOPY |
M20 |
test_name=test_account_access / target_opcode=EXTCODECOPY / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODECOPY |
M21 |
test_name=test_account_access / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=EXTCODEHASH |
M22 |
test_name=test_account_access / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=EXTCODEHASH |
M23 |
test_name=test_account_access / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=EXTCODEHASH |
M24 |
test_name=test_account_access / target_opcode=EXTCODEHASH / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODEHASH |
M25 |
test_name=test_account_access / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=EXTCODESIZE |
M26 |
test_name=test_account_access / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=EXTCODESIZE |
M27 |
test_name=test_account_access / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=EXTCODESIZE |
M28 |
test_name=test_account_access / target_opcode=EXTCODESIZE / model_coef_name=target_coef / param_account_mode=AccountMode.NON_EXISTING_ACCOUNT / param_opcode=EXTCODESIZE |
M29 |
test_name=test_account_access / target_opcode=STATICCALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=STATICCALL |
M30 |
test_name=test_account_access / target_opcode=STATICCALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=STATICCALL |
M31 |
test_name=test_account_access / target_opcode=STATICCALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=STATICCALL |
M32 |
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 | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| M1 | 3,308 | 1,862 | 1,391 | 1,580 | 857 | 1,565 |
| M2 | 1,965 | 1,790 | 1,396 | 1,483 | 882 | 371 |
| M3 | 1,960 | 1,802 | 1,398 | 1,492 | 834 | 375 |
| M4 | 2,327 | 623 | 181 | 1,508 | 755 | 336 |
| M5 | 3,509 | 11,034 | 7,550 | 3,126 | 2,837 | 1,800 |
| M6 | 2,039 | 1,872 | 1,416 | 1,529 | 914 | 410 |
| M7 | 2,042 | 2,031 | 1,406 | 1,526 | 931 | 401 |
| M8 | 2,471 | 687 | 190 | 1,570 | 807 | 347 |
| M9 | 3,461 | 10,991 | 7,560 | 3,113 | 2,836 | 1,732 |
| M10 | 2,062 | 1,835 | 1,414 | 1,525 | 940 | 360 |
| M11 | 2,070 | 1,979 | 1,411 | 1,501 | 930 | 382 |
| M12 | 2,418 | 632 | 192 | 1,595 | 790 | 321 |
| M13 | 3,440 | 11,014 | 7,577 | 3,099 | 2,798 | 1,713 |
| M14 | 2,070 | 1,824 | 1,407 | 1,519 | 943 | 373 |
| M15 | 2,075 | 1,990 | 1,413 | 1,500 | 920 | 379 |
| M16 | 2,424 | 633 | 190 | 1,598 | 792 | 344 |
| M17 | 3,403 | 10,803 | 7,579 | 3,155 | 2,781 | 1,730 |
| M18 | 1,970 | 1,815 | 1,405 | 1,526 | 873 | 375 |
| M19 | 1,997 | 1,813 | 1,397 | 1,505 | 856 | 376 |
| M20 | 2,365 | 614 | 185 | 1,541 | 769 | 344 |
| M21 | 3,304 | 1,829 | 1,391 | 1,473 | 874 | 1,524 |
| M22 | 1,960 | 1,785 | 1,399 | 1,483 | 883 | 368 |
| M23 | 1,919 | 1,773 | 1,397 | 1,475 | 894 | 365 |
| M24 | 2,328 | 604 | 182 | 1,504 | 782 | 335 |
| M25 | 3,316 | 10,767 | 7,598 | 3,119 | 2,789 | 1,736 |
| M26 | 1,946 | 1,816 | 1,405 | 1,491 | 836 | 367 |
| M27 | 1,957 | 1,807 | 1,398 | 1,486 | 867 | 372 |
| M28 | 2,320 | 612 | 180 | 1,512 | 777 | 329 |
| M29 | 3,490 | 11,000 | 7,606 | 3,108 | 2,783 | 1,803 |
| M30 | 1,985 | 1,841 | 1,414 | 1,500 | 924 | 401 |
| M31 | 2,032 | 1,991 | 1,409 | 1,532 | 924 | 405 |
| M32 | 2,526 | 7,920 | 192 | 1,600 | 823 | 346 |
COLD_ACCOUNT_CODE_WRITE — 8 combos × 6 clients
| Label | Combo |
|---|---|
M1 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_DIFF_MAX / param_opcode=CALL |
M2 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=CALL |
M3 |
test_name=test_account_access / target_opcode=CALL / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / 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_DIFF_MAX / param_opcode=CALLCODE |
M6 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_MINIMAL / param_opcode=CALLCODE |
M7 |
test_name=test_account_access / target_opcode=CALLCODE / model_coef_name=target_coef / param_account_mode=AccountMode.EXISTING_CONTRACT_SAME_MAX / param_opcode=CALLCODE |
M8 |
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 | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| M1 | 10,815 | 20,637 | 10,062 | 9,773 | 6,838 | 4,305 |
| M2 | 8,485 | 12,113 | 2,706 | 7,722 | 5,407 | 2,647 |
| M3 | 8,495 | 12,197 | 2,704 | 7,706 | 5,298 | 2,785 |
| M4 | 13,187 | 20,422 | 3,897 | 11,791 | 7,509 | 4,015 |
| M5 | 4,243 | 10,924 | 8,351 | 4,594 | 3,327 | 1,857 |
| M6 | 2,619 | 1,835 | 1,406 | 2,273 | 1,173 | 504 |
| M7 | 2,678 | 1,985 | 1,431 | 2,312 | 1,142 | 496 |
| M8 | 2,783 | 588 | 200 | 2,363 | 1,007 | 487 |
Warnings
Missing parameters
None.
Incomplete client coverage
None.
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 |
SHA3 |
Priced glue opcodes with a poor fit — 149 (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 |
|---|---|---|
ADD |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
AND |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
— |
CALLDATACOPY |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
— |
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 |
erigon (both), geth (R²), nethermind (R²), reth (R²) |
— |
DIV |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
— |
DUP |
besu (p-value), erigon (both), ethrex (p-value), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
EXP |
geth (R²), nethermind (both) |
— |
GAS |
erigon (both), 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, WARM_ACCESS |
GT |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS |
ISZERO |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
— |
JUMP |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
— |
JUMPDEST |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
JUMPI |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
LT |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
MLOAD |
erigon (both), geth (R²), nethermind (R²), reth (R²) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, WARM_ACCESS |
MSTORE |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE |
MSTORE8 |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE |
MUL |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
— |
PC |
besu (R²), 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 |
PUSH |
besu (p-value), erigon (both), ethrex (p-value), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE, WARM_ACCESS |
PUSH0 |
besu (p-value), erigon (both), geth (both), nethermind (R²), reth (R²) |
— |
RETURNDATASIZE |
besu (R²), erigon (R²), ethrex (R²), geth (R²), nethermind (R²), reth (R²) |
— |
SELFBALANCE |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
— |
STATICCALL |
erigon (R²), geth (R²), nethermind (R²), reth (R²) |
— |
SUB |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS |
SWAP |
besu (both), erigon (both), ethrex (both), geth (both), nethermind (both), reth (both) |
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
| Gas param | Client | Test | Target opcode | Coef | runtime_ms | pvalue | rsquared | Failed |
|---|---|---|---|---|---|---|---|---|
COLD_STORAGE_WRITE |
ethrex |
test_sstore_bloated |
SSTORE |
target_coef |
0.00914 | 0.001 | 0.2141 | R² |
Other weak candidates
COLD_STORAGE_WRITE — 1 weak combo
| Test | Target opcode | Coef | Combo | Failing clients |
|---|---|---|---|---|
test_sstore_bloated |
SSTORE |
target_coef |
— | ethrex (both) |
WARM_ACCESS — 6 weak combos
| Test | Target opcode | Coef | Combo | Failing clients |
|---|---|---|---|---|
test_ext_account_query_warm |
BALANCE |
target_coef |
param_opcode=BALANCE |
besu (R²) |
test_ext_account_query_warm |
CALL |
target_coef |
param_opcode=CALL |
erigon (R²) |
test_ext_account_query_warm |
EXTCODEHASH |
target_coef |
param_opcode=EXTCODEHASH |
besu (R²), erigon (R²), reth (R²) |
test_ext_account_query_warm |
EXTCODESIZE |
target_coef |
param_opcode=EXTCODESIZE |
besu (R²), geth (both), reth (R²) |
test_ext_account_query_warm |
STATICCALL |
target_coef |
param_opcode=STATICCALL |
erigon (R²) |
test_sload_same_key_benchmark |
SLOAD |
target_coef |
— | besu (R²) |