Commit 176d0a9
committed
fix(common): charge EIP-8141 intrinsic gas over payload bytes only
FrameTransaction::total_gas_limit previously RLP-encoded the whole
frames and signatures lists and charged calldata gas over every byte,
including RLP length prefixes and structural fields (frame gas_limit,
value, to, etc.). EIP-8141 defines the intrinsic calldata cost over the
payload byte-set only: each frame's data plus each signature's signer,
msg, and signature bytes.
This over-charging surfaced in cross-client interop replay against
Nethermind: for the reference 162-byte low-s type-0x06 transaction ethrex
computed intrinsic 20662 vs the spec-correct 19778 (delta 884), causing
exact-gas block rejection.
Replace whole-RLP charging with per-field charging over the payload byte
arrays, preserving saturating arithmetic. Add regression tests pinning
the exact reference-tx intrinsic and asserting insensitivity to
structural frame fields (gas_limit, value).
Verified: 2/2 focused, 80/80 EIP-8141 regression, cargo fmt --check,
cargo clippy -D warnings, git diff --check.1 parent cee872d commit 176d0a9
2 files changed
Lines changed: 91 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2038 | 2038 | | |
2039 | 2039 | | |
2040 | 2040 | | |
2041 | | - | |
2042 | | - | |
| 2041 | + | |
2043 | 2042 | | |
| 2043 | + | |
| 2044 | + | |
| 2045 | + | |
| 2046 | + | |
| 2047 | + | |
| 2048 | + | |
2044 | 2049 | | |
2045 | | - | |
2046 | | - | |
2047 | | - | |
2048 | | - | |
2049 | | - | |
| 2050 | + | |
| 2051 | + | |
2050 | 2052 | | |
2051 | | - | |
2052 | | - | |
2053 | | - | |
2054 | | - | |
2055 | | - | |
| 2053 | + | |
| 2054 | + | |
| 2055 | + | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
2056 | 2059 | | |
2057 | 2060 | | |
2058 | 2061 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3193 | 3193 | | |
3194 | 3194 | | |
3195 | 3195 | | |
| 3196 | + | |
| 3197 | + | |
| 3198 | + | |
| 3199 | + | |
| 3200 | + | |
| 3201 | + | |
| 3202 | + | |
| 3203 | + | |
| 3204 | + | |
| 3205 | + | |
| 3206 | + | |
| 3207 | + | |
| 3208 | + | |
| 3209 | + | |
| 3210 | + | |
| 3211 | + | |
| 3212 | + | |
| 3213 | + | |
| 3214 | + | |
| 3215 | + | |
| 3216 | + | |
| 3217 | + | |
| 3218 | + | |
| 3219 | + | |
| 3220 | + | |
| 3221 | + | |
| 3222 | + | |
| 3223 | + | |
| 3224 | + | |
| 3225 | + | |
| 3226 | + | |
| 3227 | + | |
| 3228 | + | |
| 3229 | + | |
| 3230 | + | |
| 3231 | + | |
| 3232 | + | |
| 3233 | + | |
| 3234 | + | |
| 3235 | + | |
| 3236 | + | |
| 3237 | + | |
| 3238 | + | |
| 3239 | + | |
| 3240 | + | |
| 3241 | + | |
| 3242 | + | |
| 3243 | + | |
| 3244 | + | |
| 3245 | + | |
| 3246 | + | |
| 3247 | + | |
| 3248 | + | |
| 3249 | + | |
| 3250 | + | |
| 3251 | + | |
| 3252 | + | |
| 3253 | + | |
| 3254 | + | |
| 3255 | + | |
| 3256 | + | |
| 3257 | + | |
| 3258 | + | |
| 3259 | + | |
| 3260 | + | |
| 3261 | + | |
| 3262 | + | |
| 3263 | + | |
| 3264 | + | |
| 3265 | + | |
| 3266 | + | |
| 3267 | + | |
| 3268 | + | |
| 3269 | + | |
| 3270 | + | |
| 3271 | + | |
0 commit comments