# New gas proposal _Generated 2026-06-10 07:09:53Z · fork `osaka` · anchor_rate 100 Mgas/s_ > Note: this is a bundled snapshot of the analysis output. The accompanying figures (heatmaps and per-parameter provenance plots) are omitted here; the figure-rich version is published on the live analysis site linked from the EIP's discussions-to thread. **Summary:** 18 parameters proposed — 1 increased, 16 decreased, 0 new, 0 unresolved · 0 warnings · 3 poor-fit selections ## Contents - [Proposed parameters](#proposed-gas-parameters) - [Client comparison](#client-comparison) - [Worst-case provenance](#worst-case-provenance-per-gas-param) - [Warnings](#warnings) - [Poor-fit selections](#poor-fit-selections) ## Proposed gas parameters | Gas param | Current gas | Proposed gas | Diff | Diff % | | --- | --- | --- | --- | --- | | OPCODE_DIV | 5 | 2 | -3 | -60% | | OPCODE_SDIV | 5 | 2 | -3 | -60% | | OPCODE_MOD | 5 | 2 | -3 | -60% | | OPCODE_SMOD | 5 | 3 | -2 | -40% | | OPCODE_ADDMOD | 8 | 3 | -5 | -62% | | OPCODE_MULMOD | 8 | 4 | -4 | -50% | | OPCODE_KECCAK256_BASE | 30 | 12 | -18 | -60% | | OPCODE_KECCAK256_PER_WORD | 6 | 3 | -3 | -50% | | PRECOMPILE_ECRECOVER | 3000 | 841 | -2159 | -72% | | PRECOMPILE_BLAKE2F_BASE | 0 | 94 | +94 | n/a | | PRECOMPILE_BLAKE2F_PER_ROUND | 1 | 1 | 0 | 0% | | PRECOMPILE_BLS_G1ADD | 375 | 236 | -139 | -37% | | PRECOMPILE_BLS_G2ADD | 600 | 277 | -323 | -54% | | PRECOMPILE_ECADD | 150 | 108 | -42 | -28% | | PRECOMPILE_ECPAIRING_BASE | 45000 | 8247 | -36753 | -82% | | PRECOMPILE_ECPAIRING_PER_POINT | 34000 | 11712 | -22288 | -66% | | PRECOMPILE_POINT_EVALUATION | 50000 | 23825 | -26175 | -52% | | PRECOMPILE_P256VERIFY | 6900 | 3814 | -3086 | -45% | ## 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 | | --- | --- | --- | --- | --- | --- | | OPCODE_DIV | besu | 2 | erigon | 2 | 1.00× | | OPCODE_SDIV | besu | 2 | erigon | 2 | 1.00× | | OPCODE_MOD | besu | 2 | erigon | 2 | 1.00× | | OPCODE_SMOD | besu | 3 | erigon | 2 | 1.50× | | OPCODE_ADDMOD | besu | 3 | erigon | 2 | 1.50× | | OPCODE_MULMOD | besu | 4 | nethermind | 4 | 1.00× | | OPCODE_KECCAK256_BASE | besu | 12 | geth | 9 | 1.33× | | OPCODE_KECCAK256_PER_WORD | nethermind | 3 | besu | 2 | 1.50× | | PRECOMPILE_ECRECOVER | erigon | 841 | geth | 781 | 1.08× | | PRECOMPILE_BLAKE2F_BASE | erigon | 94 | besu | 41 | 2.29× | | PRECOMPILE_BLAKE2F_PER_ROUND | besu | 1 | erigon | 1 | 1.00× | | PRECOMPILE_BLS_G1ADD | ethrex | 236 | besu | 175 | 1.35× | | PRECOMPILE_BLS_G2ADD | ethrex | 277 | besu | 212 | 1.31× | | PRECOMPILE_ECADD | erigon | 108 | reth | 96 | 1.12× | | PRECOMPILE_ECPAIRING_BASE | reth | 8247 | ethrex | 8182 | 1.01× | | PRECOMPILE_ECPAIRING_PER_POINT | nethermind | 11712 | ethrex | 6162 | 1.90× | | PRECOMPILE_POINT_EVALUATION | ethrex | 23825 | nethermind | 23399 | 1.02× | | PRECOMPILE_P256VERIFY | ethrex | 3814 | erigon | 1411 | 2.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). ## 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. _Single-combo parameters omitted (see proposal table for the sole estimation): `OPCODE_DIV`, `OPCODE_SDIV`, `OPCODE_ADDMOD`, `OPCODE_MULMOD`, `PRECOMPILE_ECRECOVER`, `PRECOMPILE_BLS_G1ADD`, `PRECOMPILE_BLS_G2ADD`._
OPCODE_MOD — 4 combos × 6 clients
OPCODE_SMOD — 4 combos × 6 clients
OPCODE_KECCAK256_BASE — 4 combos × 6 clients
OPCODE_KECCAK256_PER_WORD — 4 combos × 6 clients
PRECOMPILE_BLAKE2F_BASE — 2 combos × 6 clients
PRECOMPILE_BLAKE2F_PER_ROUND — 2 combos × 6 clients
PRECOMPILE_ECADD — 5 combos × 6 clients
PRECOMPILE_ECPAIRING_BASE — 2 combos × 6 clients
PRECOMPILE_ECPAIRING_PER_POINT — 2 combos × 6 clients
PRECOMPILE_POINT_EVALUATION — 2 combos × 6 clients
PRECOMPILE_P256VERIFY — 2 combos × 6 clients
## Warnings ### Missing parameters _None._ ### Incomplete client coverage _None._ ### Missing glue adjustments
Priced glue opcodes with a poor fit — 28 (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` | `erigon` (R²), `ethrex` (R²) | — | | `CALLDATALOAD` | `besu` (both), `erigon` (R²), `ethrex` (R²), `geth` (R²), `nethermind` (R²), `reth` (R²) | `OPCODE_ADDMOD`, `OPCODE_MOD`, `OPCODE_MULMOD`, `OPCODE_SMOD` | | `EXP` | `erigon` (R²), `nethermind` (both) | — | | `GT` | `besu` (R²) | `PRECOMPILE_BLAKE2F_BASE`, `PRECOMPILE_ECADD`, `PRECOMPILE_ECPAIRING_BASE`, `PRECOMPILE_P256VERIFY`, `PRECOMPILE_POINT_EVALUATION` | | `JUMP` | `besu` (R²) | `OPCODE_ADDMOD`, `OPCODE_MULMOD` | | `JUMPDEST` | `besu` (R²) | `OPCODE_ADDMOD`, `OPCODE_MULMOD`, `PRECOMPILE_BLAKE2F_BASE`, `PRECOMPILE_ECADD`, `PRECOMPILE_ECPAIRING_BASE`, `PRECOMPILE_ECRECOVER`, `PRECOMPILE_P256VERIFY`, `PRECOMPILE_POINT_EVALUATION` | | `JUMPI` | `besu` (R²), `erigon` (R²) | `PRECOMPILE_BLAKE2F_BASE`, `PRECOMPILE_ECADD`, `PRECOMPILE_ECPAIRING_BASE`, `PRECOMPILE_P256VERIFY`, `PRECOMPILE_POINT_EVALUATION` | | `KECCAK256` | `besu` (R²), `erigon` (R²), `ethrex` (both), `geth` (R²), `nethermind` (both), `reth` (both) | — | | `LT` | `besu` (R²) | — | | `MSTORE` | `reth` (R²) | `OPCODE_KECCAK256_BASE`, `PRECOMPILE_ECPAIRING_BASE`, `PRECOMPILE_ECRECOVER`, `PRECOMPILE_P256VERIFY`, `PRECOMPILE_POINT_EVALUATION` | | `RETURNDATASIZE` | `besu` (R²), `erigon` (R²) | — | | `SELFBALANCE` | `besu` (R²), `nethermind` (R²) | — | | `SWAP` | `besu` (R²) | — |
## 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 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `PRECOMPILE_BLAKE2F_PER_ROUND` | `reth` | `test_blake2f_benchmark` | `BLAKE2F` | `num_rounds` | 0 | 1 | 0.9896 | p-value | | `PRECOMPILE_BLS_G1ADD` | `ethrex` | `test_bls12_381` | `BLS12_G1ADD` | `target_coef` | 0.002351 | 0.001 | 0.05318 | R² | | `PRECOMPILE_BLS_G2ADD` | `ethrex` | `test_bls12_381` | `BLS12_G2ADD` | `target_coef` | 0.00277 | 0.001 | 0.06885 | R² | ### Other weak candidates
PRECOMPILE_BLAKE2F_PER_ROUND — 1 weak combo | Test | Target opcode | Coef | Combo | Failing clients | | --- | --- | --- | --- | --- | | `test_blake2f_uncachable` | `BLAKE2F` | `num_rounds` | — | `erigon` (p-value), `reth` (p-value) |