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-08-03 08:22:26Z · fork osaka · anchor_rate 75 Mgas/s
Summary: 12 parameters proposed — 8 increased, 4 decreased, 0 new, 0 unresolved · 4 warnings · 1 poor-fit selection
Proposed gas parameters
| Gas param | Current gas | Proposed gas | Δ% |
|---|---|---|---|
| COLD_STORAGE_ACCESS | 2100 | 1615 | -23% |
| COLD_STORAGE_WRITE | 5000 | 17371 | +247% |
| WARM_ACCESS | 100 | 37 | -63% |
| COLD_ACCOUNT_NOCODE_ACCESS | 2600 | 2544 | -2% |
| COLD_ACCOUNT_NOCODE_WRITE | 9300 | 20589 | +121% |
| COLD_ACCOUNT_CODE_ACCESS | 2600 | 11682 | +349% |
| COLD_ACCOUNT_CODE_WRITE | 9300 | 21555 | +132% |
| STORAGE_WRITE | 2800 | 15756 | +463% |
| ACCOUNT_WRITE | 6700 | 18045 | +169% |
| REFUND_STORAGE_CLEAR | 4800 | 16677 | +247% |
| TX_ACCESS_LIST_STORAGE_KEY | 1900 | 1615 | -15% |
| TX_ACCESS_LIST_ADDRESS | 2400 | 11682 | +387% |
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 | 1615 | besu | 1489 | 1.08× |
| COLD_STORAGE_WRITE | erigon | 17371 | besu | 10354 | 1.68× |
| WARM_ACCESS | nethermind | 37 | besu | 34 | 1.09× |
| COLD_ACCOUNT_NOCODE_ACCESS | besu | 2544 | geth | 1621 | 1.57× |
| COLD_ACCOUNT_NOCODE_WRITE | erigon | 20589 | besu | 13426 | 1.53× |
| COLD_ACCOUNT_CODE_ACCESS | erigon | 11682 | ethrex | 7680 | 1.52× |
| COLD_ACCOUNT_CODE_WRITE | erigon | 21555 | besu | 13426 | 1.61× |
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,489 | 471 | 988 | 1,615 | 686 | 305 |
| COLD_STORAGE_WRITE | 10,354 | 17,371 | 753 | 10,106 | 5,662 | 3,090 |
| WARM_ACCESS | 34 | 9 | 8 | 14 | 37 | 5 |
| COLD_ACCOUNT_NOCODE_ACCESS | 2,544 | 655 | 1,380 | 1,621 | 831 | 357 |
| COLD_ACCOUNT_NOCODE_WRITE | 13,426 | 20,589 | 3,616 | 11,923 | 7,434 | 4,079 |
| COLD_ACCOUNT_CODE_ACCESS | 3,564 | 11,682 | 7,680 | 3,164 | 2,843 | 1,777 |
| COLD_ACCOUNT_CODE_WRITE | 13,426 | 21,555 | 9,986 | 11,923 | 7,434 | 4,315 |
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,218 | 471 | 638 | 1,606 | 672 | 295 |
| test_sload_bloated · SLOAD · slots=True | 1,191 | 457 | 988 | 1,555 | 677 | 305 |
| test_sstore_bloated · SSTORE · slots=False | 1,197 | 470 | 631 | 1,615 | 650 | 298 |
| test_sstore_bloated · SSTORE · slots=True | 1,489 | 455 | 983 | 1,551 | 686 | 305 |
COLD_STORAGE_WRITE — 2 combos × 6 clients
| besu | erigon | ethrex | geth | nethermind | reth | |
|---|---|---|---|---|---|---|
| slots=False | 10,354 | 17,371 | 0 | 10,106 | 5,662 | 3,090 |
| slots=True | 6,991 | 10,639 | 753 | 6,937 | 4,386 | 2,032 |
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 | 2 | 2 | 2 | 10 | 1 |
| M2 | 32 | 9 | 8 | 10 | 27 | 5 |
| M3 | 31 | 5 | 8 | 14 | 16 | 5 |
| M4 | 34 | 5 | 8 | 12 | 37 | 5 |
| M5 | 6 | 3 | 2 | 3 | 19 | 2 |
| M6 | 11 | 2 | 2 | 1 | 16 | 1 |
| M7 | 29 | 6 | 8 | 14 | 27 | 4 |
| M8 | 6 | 2 | 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,406 | 631 | 1,368 | 1,561 | 808 | 334 |
| M2 | 2,391 | 598 | 171 | 1,497 | 780 | 330 |
| M3 | 2,544 | 652 | 1,377 | 1,576 | 821 | 357 |
| M4 | 2,506 | 624 | 185 | 1,552 | 815 | 337 |
| M5 | 2,508 | 613 | 1,372 | 1,595 | 831 | 337 |
| M6 | 2,454 | 600 | 196 | 1,599 | 796 | 332 |
| M7 | 2,514 | 616 | 1,374 | 1,586 | 827 | 337 |
| M8 | 2,452 | 603 | 190 | 1,577 | 786 | 340 |
| M9 | 2,437 | 602 | 1,366 | 1,601 | 809 | 342 |
| M10 | 2,394 | 585 | 187 | 1,547 | 808 | 337 |
| M11 | 2,413 | 652 | 1,362 | 1,564 | 796 | 338 |
| M12 | 2,382 | 586 | 182 | 1,512 | 806 | 330 |
| M13 | 2,430 | 600 | 1,373 | 1,565 | 805 | 338 |
| M14 | 2,367 | 584 | 182 | 1,523 | 793 | 331 |
| M15 | 2,527 | 646 | 1,380 | 1,586 | 818 | 349 |
| M16 | 2,512 | 655 | 197 | 1,621 | 807 | 335 |
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,774 | 11,149 | 2,707 | 7,704 | 4,901 | 2,573 |
| M2 | 13,426 | 20,589 | 3,616 | 11,923 | 7,434 | 4,079 |
| M3 | 2,867 | 575 | 1,411 | 2,344 | 1,033 | 471 |
| M4 | 2,851 | 555 | 158 | 2,457 | 1,021 | 471 |
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,331 | 1,811 | 1,391 | 1,578 | 882 | 1,525 |
| M2 | 1,977 | 1,786 | 1,391 | 1,498 | 835 | 365 |
| M3 | 1,986 | 1,789 | 1,391 | 1,495 | 873 | 362 |
| M4 | 2,391 | 598 | 171 | 1,497 | 780 | 330 |
| M5 | 3,530 | 11,682 | 7,548 | 3,147 | 2,761 | 1,771 |
| M6 | 2,084 | 1,851 | 1,404 | 1,519 | 968 | 397 |
| M7 | 2,091 | 2,619 | 1,404 | 1,532 | 952 | 395 |
| M8 | 2,506 | 624 | 185 | 1,552 | 815 | 337 |
| M9 | 3,457 | 11,651 | 7,568 | 3,144 | 2,714 | 1,699 |
| M10 | 2,110 | 1,833 | 1,408 | 1,535 | 956 | 364 |
| M11 | 2,106 | 2,615 | 1,408 | 1,535 | 935 | 372 |
| M12 | 2,454 | 600 | 196 | 1,599 | 796 | 332 |
| M13 | 3,473 | 11,624 | 7,680 | 3,125 | 2,843 | 1,687 |
| M14 | 2,086 | 1,817 | 1,404 | 1,528 | 943 | 368 |
| M15 | 2,098 | 2,593 | 1,407 | 1,509 | 943 | 371 |
| M16 | 2,452 | 603 | 190 | 1,577 | 786 | 340 |
| M17 | 3,400 | 10,858 | 7,601 | 3,164 | 2,784 | 1,699 |
| M18 | 2,038 | 1,786 | 1,399 | 1,535 | 870 | 369 |
| M19 | 2,002 | 1,798 | 1,394 | 1,511 | 900 | 374 |
| M20 | 2,394 | 585 | 187 | 1,547 | 808 | 337 |
| M21 | 3,367 | 1,833 | 1,391 | 1,475 | 879 | 1,497 |
| M22 | 1,994 | 1,807 | 1,389 | 1,492 | 868 | 359 |
| M23 | 1,971 | 1,793 | 1,392 | 1,484 | 884 | 360 |
| M24 | 2,382 | 586 | 182 | 1,512 | 806 | 330 |
| M25 | 3,358 | 10,805 | 7,500 | 3,138 | 2,699 | 1,686 |
| M26 | 1,981 | 1,781 | 1,395 | 1,493 | 878 | 365 |
| M27 | 2,007 | 1,787 | 1,390 | 1,498 | 872 | 358 |
| M28 | 2,367 | 584 | 182 | 1,523 | 793 | 331 |
| M29 | 3,564 | 11,665 | 7,578 | 3,124 | 2,771 | 1,777 |
| M30 | 2,099 | 1,843 | 1,405 | 1,517 | 949 | 390 |
| M31 | 2,084 | 2,631 | 1,409 | 1,523 | 930 | 388 |
| M32 | 2,512 | 655 | 197 | 1,621 | 807 | 335 |
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,878 | 21,555 | 9,986 | 9,813 | 6,726 | 4,315 |
| M2 | 8,641 | 12,257 | 2,715 | 7,760 | 5,245 | 2,623 |
| M3 | 8,651 | 12,896 | 2,693 | 7,747 | 5,156 | 2,679 |
| M4 | 13,426 | 20,589 | 3,616 | 11,923 | 7,434 | 4,079 |
| M5 | 4,344 | 11,533 | 8,144 | 4,700 | 3,449 | 1,859 |
| M6 | 2,754 | 1,793 | 1,409 | 2,271 | 1,146 | 487 |
| M7 | 2,697 | 2,581 | 1,411 | 2,290 | 1,138 | 503 |
| M8 | 2,851 | 555 | 158 | 2,457 | 1,021 | 471 |
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 — 142 (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 (both) |
COLD_ACCOUNT_CODE_ACCESS, COLD_ACCOUNT_CODE_WRITE, COLD_ACCOUNT_NOCODE_ACCESS, COLD_ACCOUNT_NOCODE_WRITE, COLD_STORAGE_ACCESS, COLD_STORAGE_WRITE |
CALLDATASIZE |
erigon (R²), geth (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 (p-value), 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 |
nethermind (both) |
— |
GAS |
erigon (R²), geth (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 (R²), geth (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²), 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 (p-value), 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), 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 (both), geth (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.01003 | 0.001 | 0.2401 | 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 — 4 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 |
EXTCODEHASH |
target_coef |
param_opcode=EXTCODEHASH |
besu (R²) |
test_ext_account_query_warm |
EXTCODESIZE |
target_coef |
param_opcode=EXTCODESIZE |
besu (R²), geth (R²), reth (R²) |
test_sload_same_key_benchmark |
SLOAD |
target_coef |
— | besu (R²), reth (R²) |