-
Notifications
You must be signed in to change notification settings - Fork 206
chore(l1): bump zkevm fixtures to tests-zkevm@v0.4.1 #6715
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| https://github.com/ethereum/execution-spec-tests/releases/download/zkevm%40v0.3.3/fixtures_zkevm.tar.gz | ||
| https://github.com/ethereum/execution-specs/releases/download/tests-zkevm%40v0.4.1/fixtures_zkevm.tar.gz |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -16,10 +16,9 @@ AMSTERDAM_FIXTURES_FILE := .fixtures_url_amsterdam | |
| AMSTERDAM_ARTIFACT := amsterdam-tests.tar.gz | ||
| AMSTERDAM_URL := $(shell cat $(AMSTERDAM_FIXTURES_FILE)) | ||
|
|
||
| # zkevm@v0.3.3 ships fixtures filled against an older Amsterdam base | ||
| # (bal@v5.6.1). Extracting them on top of the bal-devnet-7 tree would | ||
| # clobber the newer fixtures with stale gas-accounting expectations, so we | ||
| # keep them in a separate root and only the stateless harness reads from it. | ||
| # Keep the zkevm bundle in a separate root. The zkevm release cadence trails | ||
| # the bal cadence, so during a divergence window extracting it over the | ||
| # bal-devnet tree would clobber the newer fixtures with stale expectations. | ||
| ZKEVM_VECTORS_ROOT := vectors_zkevm | ||
| ZKEVM_VECTORS_DIR := $(ZKEVM_VECTORS_ROOT)/eest | ||
| ZKEVM_FIXTURES_FILE := .fixtures_url_zkevm | ||
|
|
@@ -79,16 +78,6 @@ test-sp1: $(VECTORS_TARGETS) amsterdam-vectors | |
| test-stateless: zkevm-vectors | ||
| cargo test --profile release-with-debug --features stateless | ||
|
|
||
| test-stateless-zkevm: zkevm-vectors | ||
| cargo test --profile release-with-debug --features stateless -- eip8025_optional_proofs | ||
|
|
||
| test: ## 🧪 Run blockchain tests with LEVM both with state and stateless | ||
| $(MAKE) test-levm | ||
| # Narrow stateless coverage to the EIP-8025 optional-proofs suite. The | ||
| # zkevm@v0.3.3 fixtures are filled against bal@v5.6.1, which is out of | ||
| # sync with this branch's bal-devnet-6+ (and bal-devnet-7-prep) gas | ||
| # accounting; the broader `test-stateless` invocation introduced by | ||
| # #6527 trips ~549 of those fixtures with `GasUsedMismatch` / | ||
| # `ReceiptsRootMismatch` / `BlockAccessListHashMismatch`. Re-broaden | ||
| # once the zkevm bundle is regenerated against the current bal spec. | ||
| $(MAKE) test-stateless-zkevm | ||
| $(MAKE) test-stateless | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This (correctly) re-broadens |
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -6,10 +6,11 @@ use std::path::Path; | |
| #[cfg(all(feature = "sp1", feature = "stateless"))] | ||
| compile_error!("Only one of `sp1` and `stateless` can be enabled at a time."); | ||
|
|
||
| // test-levm / test-sp1 read snobal-devnet-6 + legacy from `vectors/`. | ||
| // test-stateless reads zkevm@v0.3.3 (the only bundle that ships executionWitness) | ||
| // from a separate `vectors_zkevm/` so its older bal@v5.6.1 base never overlays | ||
| // the snobal fixtures used by the other suites. | ||
| // test-levm / test-sp1 read bal-devnet-N + legacy from `vectors/`. | ||
| // test-stateless reads the zkevm bundle (the only one that ships | ||
| // executionWitness) from a separate `vectors_zkevm/`. The zkevm cadence trails | ||
| // the bal cadence, so keeping the trees isolated prevents a stale zkvm bundle | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Line 12 reads "stale zkvm bundle" but the consistent name used throughout the codebase (and in the removed make target) is "zkevm". Prompt To Fix With AIThis is a comment left during a code review.
Path: tooling/ef_tests/blockchain/tests/all.rs
Line: 12
Comment:
**Typo in comment: "zkvm" should be "zkevm"**
Line 12 reads "stale zkvm bundle" but the consistent name used throughout the codebase (and in the removed make target) is "zkevm".
How can I resolve this? If you propose a fix, please make it concise. |
||
| // from overlaying current bal fixtures during the gap. | ||
| #[cfg(feature = "stateless")] | ||
| const TEST_FOLDER: &str = "vectors_zkevm/"; | ||
| #[cfg(not(feature = "stateless"))] | ||
|
|
@@ -25,46 +26,6 @@ const SKIPPED_BASE: &[&str] = &[ | |
| "ValueOverflowParis", | ||
| // Skip because it's a "Create" Blob Transaction, which doesn't actually exist. It never reaches the EVM because we can't even parse it as an actual Transaction. | ||
| "createBlobhashTx", | ||
| // EIP-8025 optional-proofs fixtures filled against bal@v5.6.1 (devnets/bal/3), | ||
| // which predates EELS PR #2711 "immutable intrinsic_state_gas for EIP-7702". | ||
| // Expected gas assumes the auth refund still deducts from block-accounted state | ||
| // gas; our devnet-4 (bal@v5.7.0) impl correctly keeps intrinsic_state_gas | ||
| // immutable and routes the refund to the reservoir only. Re-enable once the | ||
| // zkevm@v0.4.x release ships fixtures regenerated against devnet-4. | ||
| "witness_codes_redelegation_old_marker_included_new_marker_excluded", | ||
| "witness_codes_reset_delegation", | ||
| "witness_codes_reverted_transaction", | ||
| "witness_codes_failed_create_includes_factory", | ||
| "witness_codes_reverted_create_same_hash_then_read", | ||
| "witness_codes_create_then_selfdestruct_same_tx", | ||
| // Additional EIP-8025 optional-proofs fixtures whose expected gas magnitudes | ||
| // disagree with bal-devnet-7 (bal@v7.1.1) state-gas accounting. Same root | ||
| // cause as the block above: zkevm@v0.3.3 bundle is pinned at an older bal | ||
| // spec (storage_set / new_account / cpsb constants pre-recalibration plus | ||
| // earlier refund-channel semantics) and the broader fork.py changes from | ||
| // EELS PRs #2815/#2816/#2823/#2827/#2828. Re-enable once the zkevm bundle | ||
| // is regenerated against bal-7. | ||
| "witness_codes_delegation_set_in_same_block", | ||
| "witness_codes_auth_nonce_mismatch", | ||
| "witness_codes_dedup_identical_bytecode", | ||
| "witness_codes_create2_excludes_new_bytecode", | ||
| "witness_codes_reverted_inner_call", | ||
| "witness_codes_create_same_hash_then_read", | ||
| "witness_codes_create_then_call_same_block", | ||
| "witness_codes_create_then_call_same_tx", | ||
| "witness_codes_failed_create_after_initcode_read", | ||
| "witness_codes_initcode_calls_existing_contract", | ||
| "witness_excludes_bytecode_created_in_same_block", | ||
| "witness_keeps_prestate_code_read_even_if_later_created_with_same_hash", | ||
| "witness_codes_selfdestruct_in_initcode", | ||
| "witness_codes_selfdestruct_beneficiary_no_code", | ||
| "witness_state_delete_with_new_dirty_sibling_omits_post_state_node", | ||
| "witness_state_block_diff_delete_insert_before_delete_order", | ||
| "witness_state_delete_then_insert_uses_insert_before_delete_order", | ||
| "witness_state_sstore_into_empty_storage_omits_post_state_nodes", | ||
| "witness_state_sstore_new_slot_omits_post_state_nodes", | ||
| "validation_state_missing_absent_slot_proof_leaf_node", | ||
| "validation_state_missing_storage_proof_node", | ||
| ]; | ||
|
|
||
| // Extra skips added only for prover backends. | ||
|
|
@@ -77,31 +38,39 @@ const EXTRA_SKIPS: &[&str] = &[ | |
| ]; | ||
| #[cfg(feature = "stateless")] | ||
| const EXTRA_SKIPS: &[&str] = &[ | ||
| // zkevm@v0.3.3 tolerance tests: the fixture's `statelessOutputBytes` declares `valid = 1` | ||
| // because the executed path does not actually consume the malformed/extra/missing witness | ||
| // entry, but our RpcExecutionWitness conversion eagerly validates the full witness and | ||
| // rejects it. Re-enable once the witness conversion is lazy per EIP-8025 §Tolerance. | ||
| // tolerance tests: the fixture's `statelessOutputBytes` declares `valid = 1` | ||
| // because the executed path does not actually consume the malformed/extra/missing | ||
| // witness entry, but our RpcExecutionWitness conversion eagerly validates the | ||
| // full witness and rejects it. Re-enable once the witness conversion is lazy per | ||
| // EIP-8025 §Tolerance. | ||
| "validation_headers_malformed_rlp_header", | ||
| "validation_headers_missing_oldest_blockhash_ancestor", | ||
| "validation_headers_missing_parent_header", | ||
| "validation_state_extra_unused_trie_node", | ||
| // zkevm@v0.3.3 rejection tests: `statelessOutputBytes` declares `valid = 0` so the guest | ||
| // program must reject the deliberately-incomplete witness, but our stateless path runs | ||
| // to completion instead of detecting the missing entry. Re-enable once the witness | ||
| // completeness checks land (missing delegation/external-code bytecodes, non-contiguous | ||
| // header chain detection). | ||
| // rejection tests: `statelessOutputBytes` declares `valid = 0` so the guest | ||
| // program must reject the deliberately-incomplete witness, but our stateless | ||
| // path runs to completion instead of detecting the missing entry. Re-enable | ||
| // once the witness completeness checks land (missing delegation/external-code | ||
| // bytecodes, non-contiguous header chain detection). | ||
| "validation_codes_missing_delegated_code_on_insufficient_balance_call", | ||
| "validation_codes_missing_external_code_read_target", | ||
| "validation_codes_missing_redelegation_old_marker", | ||
| "validation_codes_missing_sender_delegation_marker", | ||
| "validation_headers_non_contiguous_chain", | ||
| // zkevm@v0.3.3 conversion-time rejection: `statelessOutputBytes` declares `valid = 0` and | ||
| // our `into_execution_witness` correctly rejects the witness because it can't extract the | ||
| // initial state root without the parent header. Since 5a597e67d the runner treats | ||
| // conversion errors as unconditional regressions, so this correct-rejection-at-the-wrong- | ||
| // stage trips the test. Re-enable once conversion is lazy enough to defer the parent- | ||
| // header check to execution. | ||
| // conversion-time rejection: `statelessOutputBytes` declares `valid = 0` and | ||
| // our `into_execution_witness` correctly rejects the witness because it can't | ||
| // extract the initial state root without the parent header. The runner treats | ||
| // conversion errors as unconditional regressions, so this correct-rejection- | ||
| // at-the-wrong-stage trips the test. Re-enable once conversion is lazy enough | ||
| // to defer the parent-header check to execution. | ||
| "validation_headers_empty_block_missing_mandatory_parent", | ||
| // zkevm@v0.4.x introduces a filled `public_keys` field on the canonical | ||
| // StatelessInput. The test runner consumes JSON `executionWitness` and never | ||
| // decodes `statelessInputBytes`, so the wrong-pubkey rejection is invisible | ||
| // and execution completes successfully. Re-enable once the runner exercises | ||
| // the canonical SSZ path (which also requires updating decode_eip8025 for the | ||
| // v0.4 schema-id wire format). | ||
| "stateless_input_invalid_public_key_is_rejected", | ||
| ]; | ||
| #[cfg(not(any(feature = "sp1", feature = "stateless")))] | ||
| const EXTRA_SKIPS: &[&str] = &[]; | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
test-stateless-zkevmtargetdocs/known_issues.md(lines 9 and 24) anddocs/eip-8025.md(line 561) still mention thetest-stateless-zkevmtarget that this PR removes. Readers following those docs will get amakeerror. Theknown_issues.mdentry in particular describes the narrow EIP-8025-only filtering that no longer applies — the context has changed enough that both files likely need a prose update.Prompt To Fix With AI