Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
f529984
change output structure
jsign Jan 13, 2026
c857648
add execution payload definitions and utilities
jsign Jan 13, 2026
fe0f01a
add missing cargo toml changes
jsign Jan 13, 2026
7d35721
add reth adjustments
jsign Jan 13, 2026
472fb6e
add ethrex temporary changes
jsign Jan 13, 2026
f1e0dff
fix integration tests
jsign Jan 13, 2026
fdbbfaa
more integration test changes
jsign Jan 13, 2026
c72cd25
bin sp1 fixes
jsign Jan 13, 2026
d9eaf25
refactor, simplification and cleanup
jsign Jan 13, 2026
1129c05
stateless validator common polishing
jsign Jan 13, 2026
e8b533c
remove compat since we switched input type
jsign Jan 13, 2026
31bdd84
perf improvements and renames
jsign Jan 13, 2026
e46f7f8
avoid more allocations
jsign Jan 13, 2026
373d16a
add fulu support, and other improvements
jsign Jan 13, 2026
5c1bc9c
add missing patches
jsign Jan 13, 2026
8c8ee05
catch panics
jsign Jan 13, 2026
d4beb1f
user external source of truth in main integration test runs
jsign Jan 14, 2026
7e560fa
refactors
jsign Jan 14, 2026
c336955
use same tree as guest
jsign Jan 14, 2026
c7c5319
fix request decoding algorithm
jsign Jan 14, 2026
55512b9
fix
jsign Jan 14, 2026
84d67d0
star ethrex progress
jsign Jan 14, 2026
78954f4
progress
jsign Jan 14, 2026
e690b2a
more ethrex progress
jsign Jan 14, 2026
92f16b1
more ethrex progress
jsign Jan 14, 2026
c1a37be
extract ehtrex ExecutionPayload struct since it lives in an RPC crate…
jsign Jan 14, 2026
0183423
more ethrex progress
jsign Jan 14, 2026
3560cbb
fix
jsign Jan 14, 2026
821b420
add ethrex payload validation checks
jsign Jan 15, 2026
5445238
make serde conditional for common
jsign Jan 15, 2026
d2246d0
nit
jsign Jan 15, 2026
9f0d16d
lints
jsign Jan 15, 2026
f6f9d4a
ci check
jsign Jan 15, 2026
036fc79
refactors
jsign Jan 15, 2026
e6d3157
add block payload validity checks for ethrex
jsign Jan 15, 2026
f59f960
cleanup
jsign Jan 15, 2026
7ad6c5e
add panic handler in ethrex guest too
jsign Jan 15, 2026
2304828
ethereum_hashing patch cleanup
jsign Jan 15, 2026
9d88fdd
fix ci
jsign Jan 16, 2026
43f4e91
Merge branch 'main' into jsign-eip-8025
jsign Jan 16, 2026
590a815
fix assertion and add payload/block check
jsign Jan 18, 2026
00a7957
use same prep as reth
jsign Jan 18, 2026
bfba2ff
change deps
jsign Jan 18, 2026
02b04d6
remove not needed struct
jsign Jan 18, 2026
af4b9a7
remove l2 feature fields from ethrex input
jsign Jan 18, 2026
f2e8c3a
cleanup
jsign Jan 19, 2026
9b56f57
Merge branch 'main' into jsign-eip-8025
jsign Jan 19, 2026
edfb526
bump v0.4.0
jsign Jan 19, 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
2 changes: 2 additions & 0 deletions .github/workflows/integration-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ jobs:
exclude:
- guest: stateless-validator-ethrex
zkvm: airbender
- guest: stateless-validator-reth

@jsign jsign Jan 16, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As mentioned in the PR description, ethereum_ssz has some chain of crates dependencies which aren't no_std. Went into that rabbit hole a bit, and got pretty far but required at least these patches:

ethereum_ssz = { git = "https://github.com/han0110/ethereum_ssz", branch = "feature/no-std" }
ethereum_ssz_derive = { git = "https://github.com/han0110/ethereum_ssz", branch = "feature/no-std" }
ethereum_serde_utils = { git = "https://github.com/han0110/ethereum_serde_utils", branch = "feature/no-std" }
tree_hash = { git = "https://github.com/jsign/tree_hash", rev = "2263d501c0765837ef099796f153ba323939e614" }
tree_hash_derive = { git = "https://github.com/jsign/tree_hash", rev = "2263d501c0765837ef099796f153ba323939e614" }
ssz_types = { git = "https://github.com/jsign/ssz_types", rev = "679b7ba3e7402df8f8441af2242a6117c91fc84a" }

The first three are ones that we already did before for similar reasons, and bottom three are ones I had to do because of new needs. I got pretty close -- but there is still some extra things to do potentially. I prefered to stop and not include it in this PR since it was already quite big; but I think we can revisit this to see if we need to continue patching or there is other way.

#8

zkvm: airbender
- guest: stateless-validator-ethrex
zkvm: openvm
- guest: stateless-validator-ethrex
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,4 +89,6 @@ jobs:
--target riscv32imac-unknown-none-elf \
--exclude integration-tests \
--exclude block-encoding-length \
--exclude stateless-validator-ethrex
--exclude stateless-validator-ethrex \
--exclude stateless-validator-reth \
--exclude stateless-validator-common
127 changes: 111 additions & 16 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 12 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ resolver = "2"
edition = "2024"
license = "MIT OR Apache-2.0"
rust-version = "1.88"
version = "0.3.0"
version = "0.4.0"

[workspace.lints.rust]
missing_debug_implementations = "warn"
Expand All @@ -43,6 +43,8 @@ serde = { version = "1.0", default-features = false }
serde_json = { version = "*", default-features = false }
serde_with = { version = "3", default-features = false }
sha2 = { version = "0.10.9", default-features = false }
tempfile = { version = "3.6.0", default-features = false }
bytes = { version = "1.6.0", default-features = false }

# test
flate2 = "1.1.5"
Expand All @@ -55,16 +57,19 @@ tracing-subscriber = "0.3.22"
alloy-consensus = { version = "1.1.2", default-features = false }
alloy-eips = { version = "1.1.2", default-features = false }
alloy-genesis = { version = "1.1.2", default-features = false }
alloy-rpc-types-engine = { version = "1.1.2", default-features = false }
alloy-primitives = { version = "1.4.1", default-features = false }
alloy-rlp = { version = "0.3.10", default-features = false }
alloy-trie = { version = "0.9.1", default-features = false }

# reth
reth-chainspec = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false }
reth-ethereum-payload-builder = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false }
reth-ethereum-primitives = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false }
reth-evm-ethereum = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false }
reth-primitives-traits = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false }
reth-stateless = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false }
reth-payload-validator = { git = "https://github.com/paradigmxyz/reth", rev = "cfde951976bfa9100a6d9f806e06fb539ae25241", default-features = false }

# ethrex
ethrex-common = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false }
Expand All @@ -73,6 +78,12 @@ ethrex-rlp = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d7085
ethrex-rpc = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false }
ethrex-vm = { git = "https://github.com/lambdaclass/ethrex.git", rev = "e6d70854d0fe3b0f29ed8961e5cbfc5de7bdd7d1", default-features = false }

# lighthouse
tree_hash = "0.10.0"
tree_hash_derive = "0.10.0"
ssz_types = { version = "0.11", default-features = false }
typenum = { version = "1.18", default-features = false }
Comment on lines +82 to +85

@jsign jsign Jan 16, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only rely on ssz and tree hash from Lighthouse, not on their types crates. All the types to be used are in stateless-validator-common.


# ssz
ethereum_ssz = "0.9"
ethereum_ssz_derive = "0.9"
Expand Down
4 changes: 2 additions & 2 deletions bin/block-encoding-length/airbender/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions bin/block-encoding-length/openvm/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading