Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
343 commits
Select commit Hold shift + click to select a range
e7e4141
Merge pull request #2453 from kevaundray/kw/fix-caching-mpt
jsign Mar 9, 2026
b77d555
doc test
kevaundray Mar 9, 2026
36f33a3
Merge pull request #2460 from kevaundray/kw/doc-behaviour-on-hashed-node
jsign Mar 9, 2026
ea590dd
zkevm: add execution witness bytecode assertions and mutation support
jsign Mar 10, 2026
0982703
Merge pull request #2469 from jsign/jsign-zkevm-bytecode-assertions
jsign Mar 10, 2026
d440097
tests/zkevm: add bytecodes check for empty blocks checking for strict…
jsign Mar 10, 2026
31e6d05
tests/zkevm: add tests cases for bytecode execution witness for call …
jsign Mar 10, 2026
230614a
tests/zkevm: add tests cases for bytecode execution witness for contr…
jsign Mar 10, 2026
f3fca6e
tests/zkevm: lints
jsign Mar 10, 2026
1a6fc08
Merge pull request #2472 from jsign/jsign-tests-bytecodes
jsign Mar 11, 2026
d72a4d8
zkevm: optimize further bytecode in witness
jsign Mar 11, 2026
1d98b55
Merge pull request #2479 from jsign/jsign-bytecode-impr
jsign Mar 11, 2026
7bd7d65
zkevm/tests: extract system contract helpers
jsign Mar 11, 2026
d320025
zkevm/tests: add non-delegated EOA and precompile tests reg bytecode …
jsign Mar 11, 2026
3d216de
zkevm/tests: add bytecode tracking tests for EXTCODE(SIZE|COPY)
jsign Mar 11, 2026
057072c
lint
jsign Mar 11, 2026
dc108d8
zkevm/tests: add 7702 bytecode witness tests
jsign Mar 11, 2026
c74ab2f
more 7702 tests
jsign Mar 11, 2026
b8d532a
refactor
jsign Mar 11, 2026
45dba7a
refactor
jsign Mar 11, 2026
bfff990
zkevm/tests: add empty code target for extcodecopy with target size n…
jsign Mar 11, 2026
31b9c3e
Merge pull request #2484 from jsign/jsign-zkevm-more-bytecode-tests
jsign Mar 11, 2026
64592b0
zkevm/tests: bytecode call variants dedup and revert
jsign Mar 12, 2026
21a0ea2
zkevm/tests: bytecode selfdestruct
jsign Mar 12, 2026
ca752d0
tighter post state check
jsign Mar 12, 2026
b237c05
tighter witness and post-state checks
jsign Mar 12, 2026
c96a21b
zkevm/tests: more selfdestruct tests and tighter checks
jsign Mar 12, 2026
40fa480
lints
jsign Mar 12, 2026
c8093f7
Merge pull request #2491 from jsign/jsign-zkevm-bytecode-selfdestr
jsign Mar 12, 2026
bad7187
zkevm/tests: add ExecutionWitnessHeadersExpectation for headers asser…
jsign Mar 12, 2026
6694e66
zkevm/tests: add tests for ancestor field in execution witness
jsign Mar 12, 2026
61e20bb
lints
jsign Mar 12, 2026
23e9765
Merge pull request #2492 from jsign/jsign-witness-ancestor-tests
jsign Mar 12, 2026
84d525f
zkevm/tests: add ExecutionWitnessStateExpectation component
jsign Mar 12, 2026
c430099
zkevm/tests: add state helpers so tests are less verbose
jsign Mar 12, 2026
96e4aef
lints
jsign Mar 12, 2026
9afc49f
simplify and add extra helper
jsign Mar 12, 2026
ed8ce91
zkevm/tests: add execution witness state tests
jsign Mar 12, 2026
c9bd422
Merge branch 'projects/zkevm' into jsign-zkevm-state-tests
jsign Mar 12, 2026
e768151
add witnesses for invalid blocks
kevaundray Mar 13, 2026
6283b9f
add more state tests and fix spec bug
jsign Mar 13, 2026
d905f4c
add more tests
jsign Mar 13, 2026
b95ec3b
zkevm/tests: add state test invariants enforced by the expectation co…
jsign Mar 13, 2026
8e69149
cleanup
jsign Mar 13, 2026
50fd066
add helper
jsign Mar 13, 2026
f8cd25d
zkevm/tests: add state coverage for mpt branch compresion
jsign Mar 13, 2026
0e4455c
zkevm/tests: add state coverage tests for read operations
jsign Mar 13, 2026
970ae90
zkevm/tests: add state coverage for testing the correct post-state ro…
jsign Mar 13, 2026
f831eee
zkevm/tests: add state coverage for writes in the tries
jsign Mar 13, 2026
c061ed4
improve comment
jsign Mar 13, 2026
36e799b
lints
jsign Mar 13, 2026
5460646
cleanup
jsign Mar 13, 2026
71130af
clarify a bit better comments
jsign Mar 13, 2026
d71e4b6
lint
jsign Mar 13, 2026
bb5d8b6
add test for the bug scenario
jsign Mar 13, 2026
d749083
Merge pull request #2504 from jsign/jsign-zkevm-state-tests
jsign Mar 13, 2026
7a7ddb3
Merge pull request #2505 from jsign/jsign-scroll-bug-test
jsign Mar 13, 2026
67a9eec
Merge pull request #2495 from kevaundray/kw/include-invalid-blocks
jsign Mar 16, 2026
7959bd0
zkevm/tests: make execution witness bytecode expectation strict and a…
jsign Mar 16, 2026
a360b2c
clarify things a bit more
jsign Mar 16, 2026
d530d42
fix all test reg prior changes
jsign Mar 16, 2026
7385f83
lints
jsign Mar 16, 2026
3e2e716
Merge pull request #2518 from jsign/jsign-bytecode-remove-unexpected
jsign Mar 16, 2026
0df8ffa
zkevm: add machinery for invalid execution witness tests
jsign Mar 18, 2026
c3a1102
zkevm: add basic invalid execution witness tests
jsign Mar 18, 2026
02257b8
zkevm: add more helpers
jsign Mar 19, 2026
e383cd9
zkevm/spec: increase scope of try catch
jsign Mar 19, 2026
7b64cf2
zkevm/tests: codes and headers tests
jsign Mar 19, 2026
258c3c1
lints
jsign Mar 19, 2026
33aa038
Merge pull request #2533 from jsign/jsign-invalid-guest-machinery
jsign Mar 19, 2026
d2dfd50
Merge branch 'projects/zkevm' into jsign-invalid-guest-tests
jsign Mar 19, 2026
a5e6ea3
add helpers and tests
jsign Mar 23, 2026
53774a6
add extra witness headers tests
jsign Mar 23, 2026
84ded05
more header tests
jsign Mar 24, 2026
5b15533
more tests
jsign Mar 24, 2026
fd53de1
lints
jsign Mar 24, 2026
81cb6cf
refactor
jsign Mar 24, 2026
ca6bdde
lint
jsign Mar 24, 2026
717421a
Merge pull request #2549 from jsign/jsign-invalid-guest-tests
jsign Mar 24, 2026
821bf9b
add extra helpers
jsign Mar 24, 2026
a198b46
improve stateless trie checks
jsign Mar 25, 2026
f379dce
add more helpers
jsign Mar 25, 2026
9c9d6fd
add more mpt unit tests
jsign Mar 25, 2026
09df009
json infra tests about invalid mpt node constructions
jsign Mar 27, 2026
24586ad
add missing completenes test
jsign Mar 27, 2026
bd193b8
add extra helpers
jsign Mar 27, 2026
2a25a76
add reverted CALL execution witness state completeness test
jsign Mar 27, 2026
194cd54
add invalid execution witness state tests
jsign Mar 27, 2026
c18e120
lints
jsign Mar 27, 2026
9011300
simplify
jsign Mar 30, 2026
ce24b36
improve assertion message
jsign Mar 30, 2026
b0c4bed
remove case since previous if for extension node make this impossible
jsign Mar 30, 2026
4e9549e
better naming
jsign Mar 30, 2026
792c7fe
lint
jsign Mar 30, 2026
eba127e
improve comment
jsign Mar 30, 2026
6f143cb
use better selector of node to remove
jsign Mar 30, 2026
29f0668
improve test setup
jsign Mar 30, 2026
9a67939
remove test since doesn't strictly create a new failure case
jsign Mar 30, 2026
17e69ce
lint
jsign Mar 30, 2026
1d51863
Merge pull request #2589 from jsign/jsign-invalid-guests-state
jsign Mar 31, 2026
63cfc54
Merge commit '1e49423c5' into projects/zkevm
jsign Apr 3, 2026
e2ff4cc
lints
jsign Apr 3, 2026
1b731e3
feat(tests): add execution witness support to rest of formats
jsign Apr 13, 2026
3ffbe59
lints
jsign Apr 13, 2026
713d1ee
Merge pull request #2667 from jsign/jsign-support-blockchain-test-engine
jsign Apr 13, 2026
cf4416c
fix: fix execution request representation in NewPayloadRequest to be …
jsign Apr 27, 2026
3644637
fix: update MAX_BYTES_PER_PUBLIC_KEY to comply with specification
jsign Apr 27, 2026
fe7e68f
Merge pull request #2761 from jsign/jsign-fix-execution-requests
jsign Apr 27, 2026
dff46d9
fix withdrawal.amount type
jsign Apr 27, 2026
bf6b494
Merge pull request #2764 from jsign/jsign-fix-withrawals-type
jsign Apr 27, 2026
8496634
properly handle invalid txs in the guest ssz input bytes
jsign Apr 27, 2026
9a3706b
lint
jsign Apr 27, 2026
ec23140
Merge pull request #2768 from jsign/jsign-fix-invalid-txs-ssz-input
jsign Apr 27, 2026
5ec2f6b
add fork schedule fields to stateless ChainConfig
jsign May 4, 2026
091e9db
include Amsterdam fork config in stateless inputs
jsign May 4, 2026
08bb71c
validate stateless chain config activations
jsign May 4, 2026
1231e04
nit
jsign May 4, 2026
7d8275c
lints
jsign May 4, 2026
c90d969
always check the ssz output bytes contain the new chainconfig struct
jsign May 4, 2026
7a7472c
lints
jsign May 4, 2026
56235ce
use 64 as max forks ssz limit
jsign May 4, 2026
73427c2
allow blockchain tests to skip stateless validation
jsign May 5, 2026
f27244b
Merge pull request #2805 from jsign/jsign-allow-skipping-tests-stateless
jsign May 6, 2026
6a741aa
switch to single fork chain config given we validate a single block
jsign May 6, 2026
4732f34
Merge branch 'projects/zkevm' into jsign-extended-chainconfig
jsign May 6, 2026
e477e83
lints
jsign May 6, 2026
23d0665
implement pubkey stateless input field generation and validation
jsign May 6, 2026
c95252e
lints
jsign May 6, 2026
fc9acb2
add basic tests for valid and invalid cases
jsign May 7, 2026
2d774bf
improvement
jsign May 7, 2026
29a9bb4
lint and simplification of redundant checks
jsign May 7, 2026
f9e5611
lints
jsign May 7, 2026
f83e1e2
lints
jsign May 7, 2026
ffcef22
add stateless input schema-id prefix to signal encoding and struct de…
jsign May 7, 2026
224df69
test(filler): parse witness fixtures with typed model
jsign May 8, 2026
0951b85
lints
jsign May 8, 2026
e1eb780
refactor: update stateless input schema handling to use byte represen…
jsign May 8, 2026
4d63eb6
fix test
jsign May 8, 2026
4efa59d
Merge pull request #2826 from jsign/jsign-stateless-input-schema-id
jsign May 9, 2026
8b14b3d
Merge branch 'projects/zkevm' into jsign-extended-chainconfig
jsign May 9, 2026
3f8dab9
Merge pull request #2797 from jsign/jsign-extended-chainconfig
jsign May 9, 2026
ef07b7e
Merge branch 'projects/zkevm' into jsign-execution-witness-pubkeys
jsign May 11, 2026
85fc20c
Merge pull request #2825 from jsign/jsign-execution-witness-pubkeys
jsign May 11, 2026
ab9d81e
Merge commit '6333758e404889469abfed22a3028fa0eb459520' into projects…
jsign May 11, 2026
11d16c8
Skip stateless artifacts for rlp_modifier blocks
jsign May 11, 2026
8203653
lint from rebase
jsign May 11, 2026
1e823f4
more lints from rebase
jsign May 11, 2026
4778245
doc fixes
jsign May 11, 2026
ac1af8e
Merge pull request #2835 from jsign/jsign-rlp-mutation-fixtures
jsign May 11, 2026
e473332
feat(consume): add engine-witness simulator for witness verification
spencer-tb Apr 20, 2026
c314388
add support for 'eels/consume-engine-witness' in check_live_port fixture
jsign May 15, 2026
f65cd1f
refactor(witness): enhance strictness in witness comparison tests and…
jsign May 15, 2026
be07570
feat(execution): add executionWitnessMutated metadata for stateless v…
jsign May 15, 2026
21075df
feat(hive): handle skipped tests in hive_test results
jsign May 15, 2026
dcb52d6
lints
jsign May 18, 2026
e9ed2de
improve comments to be more precise
jsign May 18, 2026
d9b5819
tighten a bit more witness diff tests
jsign May 18, 2026
88312de
improve witness diff helpers
jsign May 18, 2026
91e402f
refactor engine-witness logic and cleanups
jsign May 18, 2026
b9df13e
comments cleanup
jsign May 18, 2026
f1dc325
improve comments
jsign May 18, 2026
b93bcd1
tighten up strictness in rpc types
jsign May 18, 2026
8d7cefc
Merge pull request #2872 from jsign/jsign-consume-engine
jsign May 18, 2026
72945f4
Merge commit 'c6b7f1704' into projects/zkevm
jsign May 18, 2026
8e8e3e6
rebase fixes
jsign May 18, 2026
dcf6a81
include in releases blockchain_test_engine format
jsign May 18, 2026
251d8e3
lint
jsign May 18, 2026
8d7e68f
Merge pull request #2874 from jsign/jsign-release-engine-format
jsign May 18, 2026
1ebc77f
support external t8n stateless input/output generation
jsign May 20, 2026
d7fe16a
Merge pull request #2889 from jsign/jsign-fill-with-geth
jsign May 21, 2026
45583d6
stateless: properly handle invalid ssz-bytes input with sentinel value
jsign May 26, 2026
ac9961f
add support for stateless bytes input modifier
jsign May 26, 2026
09fbf03
add invalid stateless input tests
jsign May 26, 2026
85f779b
refactor: update SSZ max-length constants and improve comments for cl…
jsign May 26, 2026
044a515
Merge pull request #2918 from jsign/jsign-reject-invalid-ssz
jsign May 26, 2026
8fe04a5
Merge pull request #2919 from jsign/jsign-revisit-max-consts
jsign May 27, 2026
049f416
prune protocol fork variants
jsign May 27, 2026
215249b
Update src/ethereum/forks/amsterdam/stateless.py
jsign May 27, 2026
5b4aae0
blockchain stateless refactor
jsign May 27, 2026
cb4980c
lints
jsign May 27, 2026
0aae7ce
Merge pull request #2926 from jsign/jsign-protocol-fork-pruning
jsign May 27, 2026
579898f
refactor: simplify stateless input handling and update function names…
jsign May 27, 2026
0fba7a3
Merge pull request #2928 from jsign/jsign-blockchain-stateless-refactor
jsign May 27, 2026
8942aec
add chain config test cases
jsign May 28, 2026
3b3b31d
Merge pull request #2937 from jsign/jsign-chainconfig-tests
jsign May 28, 2026
531b922
add test pubkey check on wrong parity case
jsign May 29, 2026
351b4c6
add extra assertions to check that we are testing the twisted situation
jsign May 29, 2026
1904537
lint
jsign May 29, 2026
a456712
Merge pull request #2938 from jsign/jsign-test-pubkey-check-parity-case
jsign May 29, 2026
c7b5d47
add empty-trie sentinel to witness state tests and update documentation
jsign Jun 11, 2026
02c6c25
Merge pull request #2981 from jsign/jsign-tighten-empty-trie-pre-node…
jsign Jun 11, 2026
655cd27
fix(consume): handle witness negative tests
iovoid Jun 22, 2026
6e98f10
Merge pull request #3041 from iovoid/projects/zkevm
jsign Jun 23, 2026
56170bf
Merge commit 'ab00b3c48b17c0cfe344796e972741819ac77d0f' into projects…
jsign Jun 24, 2026
7549d3b
fix(generators): skip tests that use system contracts violating max-b…
jsign Jun 24, 2026
f03c2e0
fix(zkevm): update evm-type from develop to eels for consistency in f…
jsign Jun 24, 2026
7a87881
Merge commit '695e5ef1540d63c8d8c24aa1687911811c66a90b' into projects…
jsign Jul 9, 2026
5657bd9
fix 8025 tests from recent amsterdam changes
jsign Jul 9, 2026
7aac954
remove BlobSchedule
jsign Jul 9, 2026
b2daa2f
fix(schema): update stateless input schema ID for Amsterdam revision
jsign Jul 9, 2026
98b97c1
fix(tests): rename unsupported_schema_id to unsupported_schema_revisi…
jsign Jul 9, 2026
8427d0e
remove `fork` redundant field
jsign Jul 10, 2026
ae8bec5
Merge pull request #3138 from jsign/jsign-simplify-chainconfig
jsign Jul 10, 2026
24e65da
fix(tests): add test for rejected transactions omitting public keys
jsign Jul 10, 2026
3f2859d
fill stateless output bytes always with python spec. remain to find w…
jsign Jul 11, 2026
36eaf03
feat: add builder deposit and exit request types with encoding/decodi…
jsign Jul 13, 2026
c9ae136
test: skip stateless validation for extra builder deposit and exit re…
jsign Jul 13, 2026
1399cbe
fix: remove trailing whitespace in docstring of requests.py
jsign Jul 13, 2026
f5f4c5e
Merge pull request #3157 from jsign/jsign-fix-8282
jsign Jul 13, 2026
db3cfcd
feat: implement temporary trust path for external benchmark filling i…
jsign Jul 15, 2026
b6ba019
fix: update default Geth branch in benchmark workflow to match curren…
jsign Jul 15, 2026
8093f58
fix: update benchmark fork from Osaka to Amsterdam in feature.yaml
jsign Jul 15, 2026
48247ea
Merge pull request #3179 from jsign/jsign-refix-externalt8n-benchmark
jsign Jul 15, 2026
ace3eef
test: add stateless input blob versioned-hash validation tests
jsign Jul 25, 2026
332b22d
Merge pull request #3234 from jsign/jsign-versioned-hashes
jsign Jul 26, 2026
19f7bde
feat: change StatelessInput SSZ serialization to be EIP-7688 aligned
jsign Jul 28, 2026
1d1b610
Merge pull request #3248 from jsign/jsign-7688
jsign Jul 29, 2026
4975436
feat: update stateless validation to include schema fork index and re…
jsign Jul 31, 2026
52ecc58
feat: remove ForkActivation and indirectly ChainConfig leaving only c…
jsign Jul 31, 2026
8668e31
lints
jsign Jul 31, 2026
5d3c30e
feat: update stateless validation to use schema_id instead of schema_…
jsign Aug 3, 2026
3c3b6f4
Merge pull request #3278 from jsign/jsign-tie-fork-id
jsign Aug 3, 2026
8441669
Merge commit 'a2571e49287644debf6bcaaad35aa8bb0f084de9' into projects…
jsign Aug 3, 2026
8efd3ac
feat: preserve extra data in environment and update block artifact co…
jsign Aug 4, 2026
82d5630
lints
jsign Aug 4, 2026
ecd8e61
fix old stateless unit tests
jsign Aug 4, 2026
fed8cc5
fix
jsign Aug 4, 2026
64dc0f0
Merge pull request #3292 from jsign/jsign-extra-data-fix
jsign Aug 4, 2026
f940303
Merge commit '4b4415c952b6ac1e341bcc46b0441327675a2f6e' into projects…
jsign Aug 5, 2026
4e7a717
fix lints
jsign Aug 5, 2026
c053640
refactor(stateless_ssz): replace SszList with ProgressiveList for sta…
jsign Aug 11, 2026
becc692
lints
jsign Aug 11, 2026
57d9170
Merge pull request #3356 from jsign/jsign-more-progressive
jsign Aug 11, 2026
6485ec5
update geth branch for bench filling comparison
jsign Aug 12, 2026
bc9180a
Merge pull request #3366 from jsign/jsign-update-geth-devnet-8
jsign Aug 12, 2026
f041364
capitalize SSZ
jsign Aug 13, 2026
3f042e0
Merge pull request #3372 from jsign/jsign-align-capital
jsign Aug 14, 2026
ca2ccf4
automate zkevm benchmark filling releases
jsign Aug 17, 2026
1cfc721
Merge pull request #3389 from jsign/jsign-release-benchmarks-from-ci
jsign Aug 17, 2026
80c19ba
refine zkevm benchmark handling in action.yaml and update releasing_t…
jsign Aug 17, 2026
c120088
use annotated ssz to avoid type duplication
jsign Aug 26, 2026
e2b55dc
lints
jsign Aug 26, 2026
2de71c8
Merge pull request #3455 from jsign/jsign-annotated-ssz
jsign Aug 26, 2026
5fc6390
Merge commit '50f3df9ece9b3c448146c39e08dfadeaf21c7351' into projects…
jsign Sep 1, 2026
7445084
Merge commit '6a2a98b761d08cbe4107a6e00c07d21d965e473e' into projects…
jsign Sep 1, 2026
1cc2947
cleanup 7610 code
jsign Sep 1, 2026
00c8a48
Merge commit 'b462ba26e94f743511ec749754352d374838769b' into projects…
jsign Sep 3, 2026
e414822
feat(tests): enforce canonicality of input bytes
jsign Sep 4, 2026
d5f9429
feat(tests): add shifted_ssz_offsets modifier for input byte validation
jsign Sep 4, 2026
386250b
Merge pull request #3531 from jsign/jsign-canonical-input
jsign Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .github/actions/build-evm-client/geth/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ inputs:
required: true
default: 'ethereum/go-ethereum'
ref:
description: 'Reference to branch, commit, or tag to use to build the EVM binary'
description: 'Branch or full commit SHA to use to build the EVM binary'
required: true
default: 'master'
golang:
Expand All @@ -16,13 +16,16 @@ inputs:
runs:
using: "composite"
steps:
- name: Get latest geth commit
- name: Resolve geth commit
id: geth-sha
shell: bash
env:
GETH_REPOSITORY: ${{ inputs.repo }}
GETH_REF: ${{ inputs.ref }}
run: |
SHA=$(git ls-remote https://github.com/${{ inputs.repo }}.git refs/heads/${{ inputs.ref }} | cut -f1)
echo "sha=$SHA" >> $GITHUB_OUTPUT
echo "Latest geth commit: $SHA"
SHA=$(python3 .github/scripts/resolve_git_ref.py "$GETH_REPOSITORY" "$GETH_REF")
echo "sha=$SHA" >> "$GITHUB_OUTPUT"
echo "Resolved geth commit: $SHA"
- name: Prepare cache target dir
shell: bash
run: mkdir -p "$GITHUB_WORKSPACE/go-ethereum/cmd/evm"
Expand Down
10 changes: 8 additions & 2 deletions .github/actions/build-fixtures/action.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,19 @@ runs:
if [ "$EXIT_CODE" -ne 0 ] && [ "$EXIT_CODE" -ne 5 ]; then
exit "$EXIT_CODE"
fi
- name: Validate zkEVM Benchmark Fixtures
if: inputs.split_label == '' && inputs.release_name == 'zkevm-benchmark'
shell: bash
run: |
uv run -q .github/scripts/validate_zkevm_benchmark_fixtures.py \
fixtures_${{ inputs.release_name }}.tar.gz
- name: Generate Benchmark Genesis Files
if: inputs.split_label == '' && contains(inputs.release_name, 'benchmark')
if: inputs.split_label == '' && inputs.release_name != 'zkevm-benchmark' && contains(inputs.release_name, 'benchmark')
uses: ./.github/actions/build-benchmark-genesis
with:
fixtures_path: fixtures_${{ inputs.release_name }}.tar.gz
- name: Upload Benchmark Genesis Artifact
if: inputs.split_label == '' && contains(inputs.release_name, 'benchmark')
if: inputs.split_label == '' && inputs.release_name != 'zkevm-benchmark' && contains(inputs.release_name, 'benchmark')
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: benchmark_genesis_${{ inputs.release_name }}
Expand Down
6 changes: 6 additions & 0 deletions .github/configs/evm.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ benchmark:
ref: glamsterdam-devnet-7
evm-bin: evm
xdist: auto
zkevm-benchmark:
impl: geth
repo: jsign/go-ethereum
ref: df17b59f9dfd731f0b7da0a85c30548f3db45b0b
evm-bin: evm
xdist: auto
eels:
impl: eels
repo: null
Expand Down
10 changes: 10 additions & 0 deletions .github/configs/feature.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,17 @@ benchmark_fast:
fill-params: --fork=Amsterdam --generate-all-formats --gas-benchmark-values 100 ./tests/benchmark/compute
feature_only: true

zkevm-benchmark:
evm-type: zkevm-benchmark
fill-params: --fork=Amsterdam --gas-benchmark-values=10,30,60 -m blockchain_test ./tests/benchmark/compute --maxprocesses=30 --dist=worksteal
feature_only: true

# Shared entry for all `<feat>-devnet` releases; matched by `-devnet` suffix.
devnet:
evm-type: eels
fill-params: --until=Amsterdam --generate-all-formats

zkevm:
evm-type: eels
fill-params: -m "blockchain_test or blockchain_test_engine" --fork=Amsterdam ./tests/
feature_only: true
98 changes: 98 additions & 0 deletions .github/scripts/check_zkevm_benchmark_release.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#!/usr/bin/env -S uv run --script
"""Check a zkEVM benchmark release request against GitHub state."""

import json
import os
import subprocess
import sys
from typing import Any, NoReturn


def fail(message: str) -> NoReturn:
"""Print an error and stop the request."""
print(f"Error: {message}", file=sys.stderr)
sys.exit(1)


def github_api(path: str) -> Any:
"""Return all pages from a GitHub API request."""
result = subprocess.run(
["gh", "api", "--paginate", "--slurp", path],
capture_output=True,
text=True,
)
if result.returncode != 0:
fail(f"gh api failed for {path}: {result.stderr.strip()}")
try:
return json.loads(result.stdout)
except json.JSONDecodeError as error:
fail(f"gh api returned invalid JSON for {path}: {error}")


def flatten_pages(response: Any) -> list[dict[str, Any]]:
"""Flatten the page list returned by ``gh api --slurp``."""
if not isinstance(response, list):
fail("gh api returned an invalid paginated response")
items: list[dict[str, Any]] = []
for page in response:
if not isinstance(page, list):
fail("gh api returned an invalid page")
for item in page:
if not isinstance(item, dict):
fail("gh api returned an invalid item")
items.append(item)
return items


def matching_refs(repository: str, tag: str) -> list[dict[str, Any]]:
"""Return refs that match *tag*."""
path = f"repos/{repository}/git/matching-refs/tags/{tag}"
return flatten_pages(github_api(path))


def check_release(version: str, source_ref: str) -> None:
"""Check the source input and destination release state."""
repository = os.environ.get("GITHUB_REPOSITORY", "")
if not repository:
fail("GITHUB_REPOSITORY is empty")

source_tag = f"tests-zkevm@{version}"
destination_tag = f"tests-zkevm-benchmark@{version}"
if source_ref != source_tag:
fail(
f"source ref must be '{source_tag}' for version '{version}', "
f"got '{source_ref}'"
)

destination_refs = matching_refs(repository, destination_tag)
if any(
ref.get("ref") == f"refs/tags/{destination_tag}"
for ref in destination_refs
):
fail(f"destination tag '{destination_tag}' already exists")

releases = flatten_pages(
github_api(f"repos/{repository}/releases?per_page=100")
)
if any(release.get("tag_name") == destination_tag for release in releases):
fail(
f"destination release or draft '{destination_tag}' already exists"
)

print(f"Source tag: {source_tag}")
print(f"Destination release: {destination_tag}")


def main() -> None:
"""Check the command-line release request."""
if len(sys.argv) != 3:
print(
"Usage: check_zkevm_benchmark_release.py <version> <source-ref>",
file=sys.stderr,
)
sys.exit(1)
check_release(sys.argv[1], sys.argv[2])


if __name__ == "__main__":
main()
68 changes: 68 additions & 0 deletions .github/scripts/resolve_git_ref.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/usr/bin/env -S uv run --script
"""Resolve a GitHub repository branch or full commit SHA."""

import re
import subprocess
import sys

FULL_COMMIT_RE = re.compile(r"^[0-9a-fA-F]{40}$")


def resolve_git_ref(repository: str, ref: str) -> str:
"""Return the commit SHA for a branch name or full commit SHA."""
if not repository:
raise ValueError("repository is empty")
if not ref:
raise ValueError("ref is empty")
if FULL_COMMIT_RE.fullmatch(ref):
return ref.lower()

branch_ref = ref if ref.startswith("refs/heads/") else f"refs/heads/{ref}"
result = subprocess.run(
[
"git",
"ls-remote",
"--exit-code",
f"https://github.com/{repository}.git",
branch_ref,
],
capture_output=True,
text=True,
)
if result.returncode != 0:
raise ValueError(
f"could not resolve branch '{ref}' in repository '{repository}'"
)

lines = [line for line in result.stdout.splitlines() if line.strip()]
if len(lines) != 1:
raise ValueError(
f"branch '{ref}' in repository '{repository}' resolved to "
f"{len(lines)} commits"
)
sha = lines[0].split(maxsplit=1)[0]
if not FULL_COMMIT_RE.fullmatch(sha):
raise ValueError(
f"branch '{ref}' in repository '{repository}' returned an "
"invalid commit SHA"
)
return sha.lower()


def main() -> None:
"""Resolve the command-line repository and ref."""
if len(sys.argv) != 3:
print(
"Usage: resolve_git_ref.py <owner/repository> <branch-or-sha>",
file=sys.stderr,
)
sys.exit(1)
try:
print(resolve_git_ref(sys.argv[1], sys.argv[2]))
except ValueError as error:
print(f"Error: {error}", file=sys.stderr)
sys.exit(1)


if __name__ == "__main__":
main()
Loading
Loading