Tracking PR for projects/zkEVM - #2268
Draft
kevaundray wants to merge 343 commits into
Draft
Conversation
7 tasks
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## forks/amsterdam #2268 +/- ##
===================================================
- Coverage 94.01% 93.90% -0.12%
===================================================
Files 624 638 +14
Lines 36905 38168 +1263
Branches 3326 3546 +220
===================================================
+ Hits 34695 35840 +1145
- Misses 1533 1603 +70
- Partials 677 725 +48
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
jsign
force-pushed
the
projects/zkevm
branch
from
February 23, 2026 18:21
4ff802d to
e6322c4
Compare
projects/zkEVMprojects/zkEVM
fix(zkevm): Cache RLP and hash in `_encode_mutable_node_to_extended`
chore(zkevm): Document HashedNode collapse behaviour with test
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
feat(zkevm): Add execution witness bytecode assertions and mutation support
… system contracts inclusion Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
…variants Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
…act creations Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
feat(zkevm): add test for execution witness bytecodes for contract creation, CALL-variants and empty block
Signed-off-by: jsign <jsign.uy@gmail.com>
fix(zkevm): optimize further bytecode in witness
feat(zkevm): add execution witness bytecode test coverage for EXTCODE* opcodes, 7702 and eoa/precompile targets
feat: update stateless validation to include schema fork index and refactor chain config handling
fix(zkevm): preserve extra data in environment and update block artifact construction
…te and codes in SszExecutionWitness and SszStatelessInput
feat(zkevm): replace SszList with ProgressiveList for state, codes, and public keys
Signed-off-by: jsign <jsign.uy@gmail.com>
feat(zkevm): update geth branch for bench filling comparison
refactor(zkevm): align SSZ capitalization
feat(zkevm): automate zkevm benchmark filling releases
feat(zkevm): use annotated ssz to avoid type duplication
2 tasks
feat(zkevm): Reject noncanonical SSZ and catch guest validation errors
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds end-to-end Amsterdam stateless validation support for EIP-8025 optional proofs. It introduces the fork-level stateless input/output model, execution witness handling (
state,codes,headers), SSZ serialization, host-side witness/input construction, and guest-side replay through a witness-backed pre-state.It also extends the EEST filling and consumption pipeline so generated fixtures can assert, mutate, serialize, and consume execution witnesses. The Amsterdam test suite now covers witness generation and validation for state proofs, bytecode reads, ancestor headers, transaction public keys, chain config, and malformed stateless inputs.
Spec Changes
ExecutionPayload,NewPayloadRequest, typedExecutionRequests, payload-to-header conversion, versioned-hash validation, andnewPayloadexecution.ExecutionWitness,StatelessInput,ChainConfig, andStatelessValidationResult, plus an SSZ schema with a stateless input schema prefix.WitnessStateso account/storage/code reads and post-state-root recomputation can be performed from witness material.PreStateprotocol, returnBlockDiff, track code reads and ancestor header accesses, and optionally use supplied transaction public keys during stateless replay.Test Changes
eip8025_optional_proofssuite covering roughly 100 witness/stateless tests.EXTCODE*,SELFDESTRUCT, EIP-7702 delegation cases, EOAs/precompiles, and implicit system-contract code.BLOCKHASHoffsets and boundaries, reverted paths, malformed headers, missing ancestors, and non-contiguous chains.Testing Framework / Tooling Changes
t8ncan now emitexecutionWitness,statelessInputBytes, andstatelessOutputBytes, and has a--no-statelessescape hatch for cases where stateless artifacts should not be generated.expected_execution_witness_codes,expected_execution_witness_state, andexpected_execution_witness_headers, plus witness/public-key/raw-input modifiers for negative stateless validation tests.executionWitnessMutated, so consume tests can skip fixture witnesses that are intentionally not client-reproducible.engine-witnessconsume simulator that drives payloads throughengine_newPayloadWithWitnessV*or RESTPOST /new-payload-with-witness --ssz, then strictly diffs client-emitted witnesses against fixture witnesses.