Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
171 commits
Select commit Hold shift + click to select a range
4714700
refactor(testing): Refactor `Initcode` to allign `gas_cost` behavior …
marioevz Feb 12, 2026
8d6abe4
fix: update ethrex exception mapper for gas limit errors (#2209)
edg-l Feb 13, 2026
b9713e7
feat(test-benchmark): add worst-case depth attack benchmarks for Ethe…
marioevz Feb 13, 2026
4b7a663
refactor(test-benchmark): compute benchmark via gas cost calculator (…
LouisTsai-Csie Feb 13, 2026
83852d6
refactor(test-benchmark): add bytecode gas cost calculator (#2122)
LouisTsai-Csie Feb 13, 2026
1fb898e
fix(tests): fix stubs point to fully implemented ERC20 contract (near…
jochem-brouwer Feb 16, 2026
d0a3751
fix: correct codespell skip patterns for fixture directories (#2218)
danceratopz Feb 16, 2026
9b05a04
feat(test-benchmark): support eip-2780 benchmark (#2171)
LouisTsai-Csie Feb 16, 2026
8bb1340
feat(tests): add benchmark for transfers to non-existent receivers (#…
MariusVanDerWijden Feb 16, 2026
fce7a9a
fix(test-benchmark): tests/benchmark/compute/instruction/test_system.…
marioevz Feb 17, 2026
4914e58
feat(tests): EIP-198 modexp cases with truncated inputs (#2180)
pdobacz Feb 17, 2026
10fb59d
feat(test-consume): Add consume direct support for Besu (#2219)
raxhvl Feb 17, 2026
9fd0e2e
chore(test-benchmark): add repricing pytest marker to unchunkified te…
kamilchodola Feb 17, 2026
d22139b
feat(tests): EIP-7928 tests for EIP 2935 (#2113)
raxhvl Feb 18, 2026
6e60088
chore(ci): use sudo for apt (#2232)
SamWilsn Feb 18, 2026
e271298
chore(specs): update bpo2 fork table (#2231)
SamWilsn Feb 18, 2026
38e40be
refactor(tests): leftover manual gas calculation/hard-coded gas costs…
marioevz Feb 18, 2026
fc58fdd
chore: add missing bpo forks to pyproject (#2233)
SamWilsn Feb 18, 2026
834e482
feat(test-client-clis): add stream-mode opcode count support for geth…
spencer-tb Feb 18, 2026
d6ef5cf
fix(test-specs): Exclude full post-state/setup-tx receipts on benchma…
marioevz Feb 19, 2026
076a90e
feat(tests): port EXTCODEHASH empty account static tests (#2237)
chfast Feb 19, 2026
6cd7db5
remove old witness generation (#2240)
jsign Feb 19, 2026
c708ab6
feat(test-fixtures): add BlockchainEngineStatefulFixture format (#2169)
danceratopz Feb 20, 2026
16d5041
chore(test-client-clis): update erigon exceptions mapping (#2236)
shohamc1 Feb 20, 2026
4e9ec28
feat(tests): port EXTCODEHASH self-reference static test (#2249)
chfast Feb 20, 2026
b3d9be1
feat(test-fill,test-specs): add t8n call caching to test specs (#2084)
danceratopz Feb 20, 2026
08148b2
chore(specs): cleanup BALs implementation (#2254)
SamWilsn Feb 20, 2026
983390d
chore(ci): switch benchmark fill from evmone to geth (#2172)
spencer-tb Feb 20, 2026
a78af5e
chore(spec): remove duplicated set_authority_code; use set_code (#2257)
fselmo Feb 20, 2026
78d4baa
chore(docs): Recommend avoiding get_/compute_ prefixes
SamWilsn Feb 20, 2026
eb72019
refactor(testing): Refactor specs to allow reusing logic for benchmar…
marioevz Feb 20, 2026
c8e583b
feat(amsterdam): add PreState protocol and DictPreState implementatio…
gurukamath Feb 20, 2026
7b8b308
test: Add more invalid bal tests (#2261)
fselmo Feb 20, 2026
fa39bdc
feat(test-execute): Batch RPC requests (#2243)
marioevz Feb 20, 2026
ec322bc
chore(specs): track account and storage reads automatically for BALs …
kevaundray Feb 21, 2026
d1c9ff5
chore(specs): refactor BALs into one file; document it (#2263)
SamWilsn Feb 22, 2026
6f4d72a
chore: updated reth error mapping (#2277)
Rimeeeeee Feb 23, 2026
916d723
chore(test-tests): Fix EIP-7934 and EIP-7623 for Amsterdam (#2252)
felix314159 Feb 23, 2026
fe54c2e
chore(test-tests): Fix EIP-7825 gas-cap test (#2250)
felix314159 Feb 23, 2026
461dce9
feat(specs): replace `code` with `code_hash` in `Account` (#2244)
kevaundray Feb 23, 2026
b5e62de
chore(tests): EIP-7825 test fix to avoid 3 failures on EIP-7976 ci ru…
felix314159 Feb 23, 2026
bd5d03f
bug(tooling): add cmake dependency and bump pillow for python 3.14 su…
spencer-tb Feb 23, 2026
a7b458a
docs: add Osaka fork to README version table (#2288)
rakita Feb 23, 2026
7c41a14
chore(ci): make codecov project check informational (#2280)
spencer-tb Feb 23, 2026
7add493
chore: expand docstring guide (#2195)
SamWilsn Feb 23, 2026
04fb242
feat(tests): port EXTCODEHASH codeless account with storage test (#2291)
chfast Feb 23, 2026
6f80f72
refactor(test-benchmarks): ensure `SSTORE` N->N writes nonzero key/va…
jochem-brouwer Feb 24, 2026
9bd111a
fix: failing test in ci for 7981 (#2297)
felix314159 Feb 24, 2026
cdf9add
feat(tests): port EXTCODEHASH dynamicAccountOverwriteEmpty (#2032)
chfast Feb 24, 2026
7329095
refactor(test): rename/align gas cost constants (#2094)
Carsons-Eels Feb 24, 2026
4fff5eb
feat(test-execute): Support `testing_buildBlockV1` (#2295)
marioevz Feb 24, 2026
84025b7
chore: bump docc version (#2303)
SamWilsn Feb 24, 2026
7ca499e
feat(test-fill,test-benchmark): organize fixtures into fork and gas-l…
danceratopz Feb 24, 2026
5034aa2
chore(ci): Skip diffs if not on default branch (#2304)
kevaundray Feb 24, 2026
9460f93
fix: return False instead of raising AssertionError in FixedSizeBytes…
mandeepmourya007 Feb 24, 2026
c8f26eb
feat(tests): port EXTCODEHASH precompile addresses static test (#2302)
chfast Feb 25, 2026
03d6943
fix(test-consume): add missing London fork to `BPO2ToAmsterdamAtTime1…
shohamc1 Feb 25, 2026
0e8f000
chore(tests): cache calibration functions in EIP-7934 tests (#2332)
danceratopz Feb 26, 2026
01c5e90
chore(ci): add setup-uv action, bump default ci python to 3.14 (#2310)
kevaundray Feb 26, 2026
6015b16
chore(ci,deps): remove `setup-env` from jobs that don't need it. (#2335)
danceratopz Feb 26, 2026
835fe0a
feat(test-cli): Stack as callargs for evm_bytes (#2329)
marioevz Feb 26, 2026
fa5ec8c
refactor: optimize execute remote with pooling (#2330)
LouisTsai-Csie Feb 26, 2026
77519e9
feat(benchmarks): SLOAD/SSTORE tests for ERC20 bloated contracts cach…
jochem-brouwer Feb 27, 2026
0d8f215
feat(specs): add max bal item check (#2109)
nerolation Feb 27, 2026
c68a266
feat(tests): port EXTCODEHASH new account static test (#2326)
chfast Feb 27, 2026
1831deb
feat(tests): add more SELFDESTRUCT scenarios (#2075)
felix314159 Feb 27, 2026
f342a53
fix(consume): map geth "bal validation failure" to GAS_USED_OVERFLOW …
danceratopz Feb 27, 2026
e2491cc
feat(clients): update ethrex exception mapper for Amsterdam BAL excep…
edg-l Feb 27, 2026
561ce74
fix(clients): extend ethrex mapper to cover all BAL ordering error me…
edg-l Feb 27, 2026
5267769
feat(stubs): target contract (#2357)
jochem-brouwer Feb 27, 2026
38af3a7
fix(ci): don't cancel in-progress runs on the default branch (#2323)
danceratopz Feb 27, 2026
5e60b71
feat(tests): port EXTCODEHASH via call type tests (#2348)
chfast Feb 27, 2026
83d978e
ci: allow phase1 not fail if collected tests are zero (#2360)
jsign Feb 27, 2026
57e7e73
feat(hasher compare): add --ignore-missing flag (#2361)
jsign Feb 27, 2026
4f20148
chore(ci): make py3.13 default, split setup-env (#2354)
kevaundray Feb 28, 2026
47ae746
chore(ci): add setup-env to build-fixtures for coincurve build deps (…
spencer-tb Feb 28, 2026
4d85f1f
chore(spec): backport `code_hash` in `Account` change to previous for…
kevaundray Mar 2, 2026
8cb6576
chore(test-client-clis): add BAL BlockExceptions for Erigon (#2319)
shohamc1 Mar 2, 2026
7219c3b
chore(deps,ci): bump action-lint version to support `case` (#2308)
kevaundray Mar 2, 2026
09d15a2
feat(tests): port EXTCODEHASH after SELFDESTRUCT tests (#2366)
chfast Mar 2, 2026
a7880f3
feat(tests,test-execute): add `getBlobsV3` support and test cases (#2…
felix314159 Mar 2, 2026
65ff243
feat(test-benchmark): add worst-case bloatnet benchmark tests (#2220)
CPerezz Mar 3, 2026
21f777c
fix(benchs): fix names and switch to similarly sized IMT -> ARB contr…
jochem-brouwer Mar 3, 2026
4e768ab
chore(tests): remove ported static eip-1153 transient storage tests (…
chfast Mar 3, 2026
9b18a2b
feat(tests): port EXTCODEHASH dynamic argument test (#2379)
chfast Mar 3, 2026
32c97d5
refactor(test-exceptions): remove duplicate exception definitions (#2…
mandeepmourya007 Mar 3, 2026
6af5e29
fix(ethrex): update BAL exception mapper for EIP-7928 tests (#2389)
edg-l Mar 3, 2026
1f65290
feat(test-benchmarks): add dynamic `EXP` byte tests (#1884)
jochem-brouwer Mar 3, 2026
c3e70a5
fix(spec): Accept RLP encoded legacy transactions in `decode_transact…
kevaundray Mar 3, 2026
c2457e1
add Block access list validation failed for block message (#2393)
matkt Mar 3, 2026
63d810f
feat(bench): parametrize SLOAD before SSTORE in ERC20 approve (#2334)
CPerezz Mar 3, 2026
c497b85
feat(specs): Partially decouple `state_transition` from `BlockChain` …
kevaundray Mar 3, 2026
1ff6d00
feat(tests): port EXTCODEHASH changed account test (#2394)
chfast Mar 3, 2026
4b86c59
feat(tests): add EIP-2357 BLS infinity flag field validation tests (#…
qu0b Mar 3, 2026
b0e24c2
feat(test-vm): implement create address calculation helper (#2353)
LouisTsai-Csie Mar 3, 2026
1b2b2b9
chore(spec): use `bytes.count` instead of for loop for counting zeroe…
kevaundray Mar 3, 2026
8709604
chore: cache repeated calls to `git rev-parse HEAD` on a test run (#2…
kevaundray Mar 3, 2026
c74dfbe
feat(tests): port EXTCODEHASH max code size test (#2397)
chfast Mar 3, 2026
1832cd6
feat(tests): port EXTCODEHASH in init code test (#2398)
chfast Mar 4, 2026
3c1b009
feat(tests): add v=29 to EIP-7702 invalid auth signature test (#2402)
chfast Mar 4, 2026
b7c7731
fix: restore != nonce comparison to handle chain reverts (#2406)
kamilchodola Mar 4, 2026
3f507fa
feat(benchmarks): add sequential address generator + add eoa query te…
jochem-brouwer Mar 4, 2026
cd219ae
feat(ci): Mark stale issues/PRs workflow (#2408)
marioevz Mar 4, 2026
15daf2d
feat(benchmarks): switch mint test to gas test to prevent OOGs (#2400)
jochem-brouwer Mar 4, 2026
5e29e54
feat(tests): port EXTCODEHASH self in init code test (#2401)
chfast Mar 4, 2026
6b17fe1
feat(tests): port EXTCODEHASH call to non-existent test (#2410)
chfast Mar 4, 2026
a34f5cd
chore(docs): Update README to use more distinguishable terms
Carsons-Eels Jan 20, 2026
0a2c2d5
refactor: add all meta-eips, fix formatting, align style
Carsons-Eels Mar 4, 2026
299de15
refactor: add missing backfill meta-EIPs, add dencun meta-EIP
Carsons-Eels Mar 4, 2026
40a3e53
refactor: clarify column name
Carsons-Eels Mar 4, 2026
22b324e
refactor(test-benchmark): Remove repricing marker from `unchunkified`…
kamilchodola Mar 5, 2026
dbe5c3a
fix(ethrex): update exception mapper for BAL validation errors (#2414)
edg-l Mar 5, 2026
16657e8
feat(tests): port EXTCODEHASH call to selfdestruct test (#2412)
chfast Mar 5, 2026
000fc1b
refactor(test-execute): split function + add unit test for nonce comp…
felix314159 Mar 5, 2026
53fe6fe
chore(test-client-clis): map ethrex BAL validation errors to INVALID_…
edg-l Mar 5, 2026
452e5f5
feat(tests): add basic ecmul precompile tests (#2403)
chfast Mar 5, 2026
d95c86e
feat(bench): add bloatnet ERC20 stubs for 50GB, 9.39GB, 1GB, 4.23MB (…
CPerezz Mar 5, 2026
a517953
refactor(spec-specs): use kwargs for message call output collision re…
spencer-tb Mar 5, 2026
5aff974
chore(test-client-clis): fix mapping missing for Block access list te…
matkt Mar 5, 2026
9baeae2
feat(tests): port EXTCODEHASH created and deleted account test (#2416)
chfast Mar 5, 2026
f63449c
feat(tests): add ECMUL scalar coverage for EIP-196 (#2424)
chfast Mar 5, 2026
a0f6c80
feat(tests): add basic ecpairing precompile tests (#2422)
chfast Mar 6, 2026
4baa94f
fix(benchmarks): move account_query test from compute to stateful (#2…
jochem-brouwer Mar 6, 2026
b822879
fix(benchmarks): fix fill issues with mint/approve erc20 updates (#2413)
jochem-brouwer Mar 6, 2026
e275279
fix(bench): fix solidity input check on balanceof sload bench (#2432)
jochem-brouwer Mar 6, 2026
de5e83d
feat(tests-static): Port rest of ecmul tests (#2425)
marioevz Mar 6, 2026
5fe1813
fix: perform more actions before aborting and prio oldest prs/issues …
felix314159 Mar 6, 2026
20d79d6
feat(tests): port EXTCODECOPY bounds test to frontier (#2417)
chfast Mar 6, 2026
446eabf
fix(benchmarks): fix mint test (#2435)
jochem-brouwer Mar 6, 2026
0a59524
feat(tests): port EXTCODEHASH created-and-deleted recheck in outer ca…
chfast Mar 6, 2026
ffb354b
feat(tests): add ecpairing coordinate validation tests for BN254 (#2438)
chfast Mar 6, 2026
ea4b6df
feat(tests): add ecrecover tests for combined invalid r and s values …
chfast Mar 7, 2026
3e80173
feat(tests): port EXTCODEHASH subcall CALLCODE selfdestruct test (#2418)
chfast Mar 9, 2026
68fae57
chore(tests-static): Port remaining EC Pairing static tests (#2443)
marioevz Mar 9, 2026
7ec6751
fix(consume): delay client stop on test failure to flush logs (#2445)
spencer-tb Mar 9, 2026
d1929c5
feat(tests): add ecpairing test for fq2 multiplicative inverse bug (#…
spencer-tb Mar 9, 2026
2aaa46f
feat(tests): add gas consumption test for invalid ecadd/ecmul/ecpairi…
chfast Mar 9, 2026
4583530
chore(tooling): add PR template instruction to CLAUDE.md (#2454)
chfast Mar 9, 2026
595ea5c
docs(specs, tests): fixed comments with values related to gas limits …
SamueleA Mar 9, 2026
1363db6
refactor(json_loader): json_loader to use the fill workflow (#2369)
gurukamath Mar 9, 2026
5052ee8
fix(test-execute): stop inserting empty Account in execute empty_acco…
chfast Mar 9, 2026
ae78d8a
feat(tests): port EXTCODEHASH subcall CREATE2 OOG test (#2458)
chfast Mar 10, 2026
3975d16
feat(ci): update inputs for ci rebase/merge workflows (#2072)
spencer-tb Mar 10, 2026
5258106
chore(tests): delete already-ported extCodeHash static file (#2463)
chfast Mar 10, 2026
46aa934
refactor(testing): rename empty_account() to nonexistent_account() (#…
chfast Mar 10, 2026
212389a
feat(test-consume): initial implementation of the enginex simulator (…
danceratopz Mar 10, 2026
d581f26
feat(tests): add missing legacy modexp cases with oversized lengths (…
spencer-tb Mar 10, 2026
6df036c
feat(tests): port codeCopyZero and delete stExtCodeHash static tests …
chfast Mar 10, 2026
8a0fc69
feat(tests): add tests for address not warmed on aborted create (#2452)
spencer-tb Mar 10, 2026
7671116
feat(t8n): handle pre-fork typed txs via `supports_tx_type` (#2466)
felix314159 Mar 11, 2026
7dbe198
fix(test-fill): fix `PytestUnknownMarkWarning: Unknown pytest.mark.js…
danceratopz Mar 11, 2026
3aefc00
chore(ci): don't close pull requests (#2470)
SamWilsn Mar 11, 2026
b481448
feat(tests): port goevmlab regression tests for EELS consensus bugs …
spencer-tb Mar 11, 2026
227d12d
feat(tests): port stChainId static tests and delete originals (#2478)
chfast Mar 11, 2026
844eed6
chore(ci): reduce pypy test set (#2482)
SamWilsn Mar 12, 2026
348a423
feat(tests): port stZeroKnowledge ECADD static tests (#2477)
chfast Mar 12, 2026
e287faf
feat(fill): Customize fill with `--chain-id` (#2016)
pdobacz Mar 12, 2026
cbcf700
feat(tests): port stSLoadTest static test and delete original (#2489)
chfast Mar 12, 2026
26c9d41
feat(tests): port MCOPY_memory_hashFiller repeated copy test (#2490)
chfast Mar 12, 2026
8c50cf2
refactor(test-benchmark): update account access benchmark (#2493)
jochem-brouwer Mar 12, 2026
8b6f6ea
fix(specs): remove redundant `destroy_storage` call within `process_c…
EperezOk Mar 13, 2026
8bdfb46
feat(test-execute): Defer pre-alloc methods remote checks to batch th…
marioevz Mar 13, 2026
1309512
feat(tests): Port static tests with script
leolara Mar 9, 2026
365433e
feat(tests): Remove static test sources
marioevz Mar 13, 2026
424c4f4
chore(ci,deps): bump pinned action SHAs & golang, markdownlint-cli2 v…
fselmo Mar 16, 2026
62cfc21
fix(test-benchmark): update `approve` function for `SSTORE` benchmark…
LouisTsai-Csie Mar 16, 2026
6c68d09
chore(tests): Add test for exponent padding in modexp precompile (#2508)
kevaundray Mar 16, 2026
43fe810
Merge remote-tracking branch 'origin/forks/amsterdam' into upstream
pdobacz Mar 17, 2026
ea8659a
Backport osaka changes to monad_eight and monad_nine
pdobacz Mar 19, 2026
3848b12
fix(tests): EIP-3860 & 1153 - parametrize max_code_size
pdobacz Apr 29, 2026
44c2165
Merge branch 'forks/monad_nine' into upstream
pdobacz Apr 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
6 changes: 5 additions & 1 deletion .claude/commands/write-test.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Conventions and patterns for writing consensus tests. Run this skill before writ
## Fork-Aware Logic

- `fork >= Cancun` for conditional behavior based on fork
- `fork.gas_costs()` returns `GasCosts` dataclass with constants like `G_WARM_SLOAD`, `G_COLD_ACCOUNT_ACCESS`, `G_BASE`, etc.
- `fork.gas_costs()` returns `GasCosts` dataclass with constants like `G_WARM_SLOAD`, `GAS_COLD_ACCOUNT_ACCESS`, `G_BASE`, etc.
- `fork.transaction_intrinsic_cost_calculator()` for computing tx intrinsic gas

## Exception Testing
Expand All @@ -61,6 +61,10 @@ Conventions and patterns for writing consensus tests. Run this skill before writ
- `@pytest.mark.parametrize("name", [pytest.param(val, id="label"), ...])` with descriptive `id=` strings
- Stack parametrize decorators for multiple dimensions

## After Writing Tests

After writing or modifying tests, ask the user: "Would you like me to load the `/fill-tests` skill to verify the new tests fill correctly? (This loads an additional skill into context.)" If they agree, run `/fill-tests`, fill the new tests, then inspect the generated fixture JSON to verify the fixture contents match what the test intends.

## References

See `docs/writing_tests/` and `docs/writing_tests/opcode_metadata.md` for detailed documentation.
16 changes: 16 additions & 0 deletions .codecov.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# The project check compares overall repo coverage against the base branch.
# When the base branch moves ahead (new merges), the comparison becomes stale
# and causes false failures on PRs — this is why we've been seeing codecov/project
# failures across multiple PRs despite all modified lines being fully covered.
#
# Tradeoff: making project informational means we won't block on indirect coverage
# loss (e.g. control flow changes that make existing covered lines unreachable).
# The patch check still enforces that all new/modified lines are covered.
coverage:
status:
project:
default:
informational: true
patch:
default:
target: auto
16 changes: 4 additions & 12 deletions .github/actions/build-fixtures/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,13 @@ inputs:
release_name:
description: "Name of the fixture release"
required: true
uv_version:
description: "Version of UV to install"
required: true
python_version:
description: "Version of Python to install"
required: true
runs:
using: "composite"
steps:
- name: Install uv ${{ inputs.uv_version }} and python ${{ inputs.python_version }}
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182
- uses: ./.github/actions/setup-uv
with:
enable-cache: false
version: ${{ inputs.uv_version }}
python-version: ${{ inputs.python_version }}
enable-cache: "false"
- uses: ./.github/actions/setup-env
- name: Install EEST
shell: bash
run: uv sync --no-progress
Expand All @@ -43,7 +35,7 @@ runs:
else
uv run fill -n ${{ steps.evm-builder.outputs.x-dist }} --evm-bin=${{ steps.evm-builder.outputs.evm-bin }} ${{ steps.properties.outputs.fill-params }} --output=fixtures_${{ inputs.release_name }}.tar.gz --build-name ${{ inputs.release_name }} --no-html --durations=100 --log-level=DEBUG
fi
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: fixtures_${{ inputs.release_name }}
path: fixtures_${{ inputs.release_name }}.tar.gz
6 changes: 2 additions & 4 deletions .github/actions/setup-env/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@ runs:
using: "composite"
steps:

- name: Install Tox and any other packages
- name: Install build dependencies
shell: bash
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes build-essential pkg-config
pip install 'tox>=4.11,<5' requests
run: sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes build-essential pkg-config libsecp256k1-dev
11 changes: 11 additions & 0 deletions .github/actions/setup-geth/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Setup Geth
description: Download Geth and add to $PATH
runs:
using: "composite"
steps:
- name: Download Geth and add to $PATH
shell: bash
run: |
mkdir -p $GITHUB_WORKSPACE/bin
$GITHUB_WORKSPACE/scripts/download_geth_linux.py --dir $GITHUB_WORKSPACE/bin
echo $GITHUB_WORKSPACE/bin >> $GITHUB_PATH
28 changes: 28 additions & 0 deletions .github/actions/setup-uv/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Setup uv and tox
description: Install uv, Python, and tox for CI jobs
inputs:
python-version:
description: Python version to install (e.g. "3.14", "pypy3.11")
default: "3.13"
enable-cache:
description: Enable uv dependency cache
default: "true"
cache-dependency-glob:
description: Glob for cache invalidation
default: "uv.lock"
runs:
using: "composite"
steps:
- name: Install uv and python ${{ inputs.python-version }}
uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
with:
enable-cache: ${{ inputs.enable-cache }}
cache-dependency-glob: ${{ inputs.cache-dependency-glob }}
version: "0.10.4"
python-version: ${{ inputs.python-version }}
- name: Prefer uv-managed Python over system Python
shell: bash
run: echo "UV_PYTHON_PREFERENCE=only-managed" >> "$GITHUB_ENV"
- name: Install tox
shell: bash
run: uv tool install tox
9 changes: 1 addition & 8 deletions .github/configs/feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,4 @@ monad:
# --suppress-no-test-exit-code works around a problem where multi-phase fill
# (triggered by tarball output) fails to proceed on no tests processed
# in 1st phase (exit code 5)
fill-params: --suppress-no-test-exit-code -m blockchain_test --from=MONAD_EIGHT --until=MONAD_NINE --chain-id=143 -k "not eip4844 and not eip7002 and not eip7251 and not eip7685 and not eip6110 and not eip7594 and not eip7918 and not eip7610 and not eip7934 and not invalid_header"

mip3:
evm-type: develop
# --suppress-no-test-exit-code works around a problem where multi-phase fill
# (triggered by tarball output) fails to proceed on no tests processed
# in 1st phase (exit code 5)
fill-params: --suppress-no-test-exit-code -m blockchain_test --from=MONAD_EIGHT --until=MONAD_NINE --chain-id=143 -k "not eip4844 and not eip7002 and not eip7251 and not eip7685 and not eip6110 and not eip7594 and not eip7918 and not eip7610 and not eip7934 and not invalid_header"
fill-params: --suppress-no-test-exit-code -m blockchain_test --from=MONAD_EIGHT --until=MONAD_NINE --chain-id=143 -k "not eip4844 and not eip7002 and not eip7251 and not eip7685 and not eip6110 and not eip7594 and not eip7918 and not eip7610 and not eip7934 and not invalid_header and not ported_static"
8 changes: 3 additions & 5 deletions .github/workflows/release_fixture_feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
outputs:
names: ${{ steps.feature-name.outputs.names }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: false

Expand All @@ -34,22 +34,20 @@ jobs:
matrix:
feature: ${{ fromJSON(needs.feature-names.outputs.names) }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true

- uses: ./.github/actions/build-fixtures
with:
release_name: ${{ matrix.feature }}
uv_version: ${{ vars.UV_VERSION }}
python_version: ${{ vars.DEFAULT_PYTHON_VERSION }}

release:
runs-on: ubuntu-24.04
needs: build
if: startsWith(github.ref, 'refs/tags/tests-')
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: false

Expand Down
30 changes: 30 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Manage stale issues and PRs
on:
schedule:
- cron: '0 0 * * *' # runs daily

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
# --- Stale settings ---
days-before-stale: 60

# raise this from the default 30
operations-per-run: 200

# process oldest first
ascending: true

# --- PR settings ---
days-before-pr-close: -1 # Never auto-close PRs
stale-pr-label: 'stale'
stale-pr-message: 'This PR has had no recent activity and has been marked as stale.'
close-pr-message: 'Closing this PR due to inactivity.'

# --- Issue settings ---
days-before-issue-close: -1 # Never auto-close issues
stale-issue-label: 'stale'
stale-issue-message: 'This issue has had no recent activity and has been marked as stale.'
80 changes: 59 additions & 21 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,30 +27,23 @@ on:

concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch }}

jobs:
static:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: recursive
- name: Ensure SHA pinned actions
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@6124774845927d14c601359ab8138699fa5b70c3 # v4.0.1
- name: Setup Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
with:
python-version: "3.11"
- name: Install Tox and any other packages
uses: zgosalvez/github-actions-ensure-sha-pinned-actions@70c4af2ed5282c51ba40566d026d6647852ffa3e # v5.0.1
- uses: ./.github/actions/setup-uv
- name: Install build dependencies
shell: bash
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes build-essential pkg-config
pip install 'tox>=4.11,<5' requests
run: sudo DEBIAN_FRONTEND=noninteractive apt-get install --yes --force-yes build-essential pkg-config
- name: Run static checks
run: tox -e static
- name: Setup uv
uses: astral-sh/setup-uv@0c5e2b8115b80b4c7c5ddf6ffdd634974642d182 # v5.4.1
- name: Validate workflow config variables
run: |
cat >> .github/actionlint.yaml << 'EOF'
Expand All @@ -68,20 +61,19 @@ jobs:
# runs-on: ubuntu-24.04
# needs: static
# steps:
# - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# with:
# submodules: recursive
# - name: Setup Python
# uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
# - uses: ./.github/actions/setup-uv
# with:
# python-version: "3.11"
# python-version: "3.14"
# - uses: ./.github/actions/setup-env
# - name: Run py3 tests
# run: tox -e py3
# env:
# PYTEST_XDIST_AUTO_NUM_WORKERS: auto
# - name: Upload coverage reports to Codecov
# uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7
# uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
# with:
# files: .tox/coverage.xml
# flags: unittests
Expand All @@ -91,11 +83,10 @@ jobs:
# runs-on: ubuntu-24.04
# needs: static
# steps:
# - uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# with:
# submodules: recursive
# - name: Setup Python
# uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065
# - uses: ./.github/actions/setup-uv
# with:
# python-version: "pypy3.11"
# - uses: ./.github/actions/setup-env
Expand All @@ -104,3 +95,50 @@ jobs:
# env:
# PYPY_GC_MAX: "2G"
# PYPY_GC_MIN: "1G"

# json_loader:
# runs-on: ubuntu-24.04
# needs: static
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# with:
# submodules: recursive
# - uses: ./.github/actions/setup-uv
# - uses: ./.github/actions/setup-env
# - name: Fill and run json_loader tests
# run: tox -e json_loader
# env:
# PYTEST_XDIST_AUTO_NUM_WORKERS: auto

# tests_pytest_py3:
# runs-on: ubuntu-24.04
# needs: static
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# with:
# submodules: recursive
# - uses: ./.github/actions/setup-uv
# - uses: ./.github/actions/setup-env
# - uses: ./.github/actions/build-evmone
# - name: Run py3 tests
# run: tox -e tests_pytest_py3
# env:
# PYTEST_XDIST_AUTO_NUM_WORKERS: auto

# tests_pytest_pypy3:
# runs-on: ubuntu-24.04
# needs: static
# steps:
# - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
# with:
# submodules: recursive
# - uses: ./.github/actions/setup-uv
# with:
# python-version: "pypy3.11"
# - uses: ./.github/actions/setup-env
# - uses: ./.github/actions/build-evmone
# - name: Run pypy3 tests
# run: tox -e tests_pytest_pypy3
# env:
# PYPY_GC_MAX: "2G"
# PYPY_GC_MIN: "1G"
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[submodule "tests/benchmark/stateful/bloatnet/depth_benchmarks/.worst_case_miner"]
path = tests/benchmark/stateful/bloatnet/depth_benchmarks/.worst_case_miner
url = https://github.com/CPerezz/worst_case_miner
branch = master
1 change: 1 addition & 0 deletions .markdownlint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ MD034: false # no-bare-urls - We use pymdownx.magiclink which allows bare urls
MD046: false # code-block-style - This doesn't play well with material's admonitions)
MD024: false # no-duplicate-heading - We use duplicate headings in the changelog.
MD033: false # no-inline-html - Too strict.
MD060: false # table-column-style - New in markdownlint v0.40.0; too strict for existing tables.
ul-indent:
indent: 4
start_indent: 4
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ When done with changes, ask the user if they'd like to run `/lint` before commit
- **There is no `main` branch.** Default branch = most active fork (currently `forks/amsterdam`). Run `git remote show origin | grep HEAD` to check.
- `mainnet` = stable specs for forks live on mainnet
- PRs target the default branch
- PRs strictly follow the template in `.github/PULL_REQUEST_TEMPLATE.md`. In the Checklist section, include unchecked items that don't apply — only remove them if they are truly irrelevant to the PR type.

## PR Reviews

Expand Down
Loading