From 86f8c2e642310ecab8cf6e39756e2e5d2ca95496 Mon Sep 17 00:00:00 2001 From: Michael Sproul Date: Mon, 1 Dec 2025 12:23:39 +1100 Subject: [PATCH] EIP-7916: ProgressiveList and tests --- Cargo.lock | 3 +-- Cargo.toml | 3 +++ consensus/types/src/lib.rs | 2 +- testing/ef_tests/Makefile | 2 +- testing/ef_tests/check_all_files_accessed.py | 1 - testing/ef_tests/src/cases/ssz_generic.rs | 13 ++++++++++++- testing/ef_tests/src/handler.rs | 2 ++ testing/ef_tests/tests/tests.rs | 5 +++++ 8 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e3730f132b..e78cd10205 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5859,8 +5859,7 @@ dependencies = [ [[package]] name = "milhouse" version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "259dd9da2ae5e0278b95da0b7ecef9c18c309d0a2d9e6db57ed33b9e8910c5e7" +source = "git+https://github.com/sigp/milhouse?branch=progressive-list#52bae1f50da93519cfb4ec31f7dab19659be4d14" dependencies = [ "alloy-primitives", "arbitrary", diff --git a/Cargo.toml b/Cargo.toml index 6ccf429b6c..4fb72987bf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -285,3 +285,6 @@ debug = true [patch.crates-io] quick-protobuf = { git = "https://github.com/sigp/quick-protobuf.git", rev = "681f413312404ab6e51f0b46f39b0075c6f4ebfd" } +# FIXME(sproul): REMOVE patch +# milhouse = { path = "../milhouse" } +milhouse = { git = "https://github.com/sigp/milhouse", branch = "progressive-list" } diff --git a/consensus/types/src/lib.rs b/consensus/types/src/lib.rs index 8e83fed1d9..35ef299ff7 100644 --- a/consensus/types/src/lib.rs +++ b/consensus/types/src/lib.rs @@ -293,6 +293,6 @@ pub use bls::{ }; pub use context_deserialize::{ContextDeserialize, context_deserialize}; pub use kzg::{KzgCommitment, KzgProof, VERSIONED_HASH_VERSION_KZG}; -pub use milhouse::{self, List, Vector}; +pub use milhouse::{self, List, ProgressiveList, Vector}; pub use ssz_types::{BitList, BitVector, FixedVector, VariableList, typenum, typenum::Unsigned}; pub use superstruct::superstruct; diff --git a/testing/ef_tests/Makefile b/testing/ef_tests/Makefile index 0ead9d0047..724990cbec 100644 --- a/testing/ef_tests/Makefile +++ b/testing/ef_tests/Makefile @@ -1,6 +1,6 @@ # To download/extract nightly tests, run: # CONSENSUS_SPECS_TEST_VERSION=nightly make -CONSENSUS_SPECS_TEST_VERSION ?= v1.6.0-beta.1 +CONSENSUS_SPECS_TEST_VERSION ?= v1.6.1 REPO_NAME := consensus-spec-tests OUTPUT_DIR := ./$(REPO_NAME) diff --git a/testing/ef_tests/check_all_files_accessed.py b/testing/ef_tests/check_all_files_accessed.py index 1f70881a88..4f278916db 100755 --- a/testing/ef_tests/check_all_files_accessed.py +++ b/testing/ef_tests/check_all_files_accessed.py @@ -51,7 +51,6 @@ excluded_paths = [ "tests/.*/fulu/ssz_static/MatrixEntry/.*", # EIP-7916 is still in draft and hasn't been implemented yet https://eips.ethereum.org/EIPS/eip-7916 "tests/general/phase0/ssz_generic/progressive_bitlist", - "tests/general/phase0/ssz_generic/basic_progressive_list", "tests/general/phase0/ssz_generic/containers/.*/ProgressiveBitsStruct.*", "tests/general/phase0/ssz_generic/containers/.*/ProgressiveTestStruct.*", "tests/general/phase0/ssz_generic/progressive_containers/.*", diff --git a/testing/ef_tests/src/cases/ssz_generic.rs b/testing/ef_tests/src/cases/ssz_generic.rs index 8742f8a140..a4c6dd24b9 100644 --- a/testing/ef_tests/src/cases/ssz_generic.rs +++ b/testing/ef_tests/src/cases/ssz_generic.rs @@ -10,7 +10,7 @@ use ssz_derive::{Decode, Encode}; use tree_hash::TreeHash; use tree_hash_derive::TreeHash; use types::typenum::*; -use types::{BitList, BitVector, FixedVector, ForkName, VariableList, Vector}; +use types::{BitList, BitVector, FixedVector, ForkName, ProgressiveList, VariableList, Vector}; #[derive(Debug, Clone, Deserialize)] #[context_deserialize(ForkName)] @@ -157,6 +157,17 @@ impl Case for SszGeneric { [length => typenum] )?; } + "basic_progressive_list" => { + let elem_ty = parts[1]; + + type_dispatch!( + ssz_generic_test, + (&self.path, fork_name), + ProgressiveList, + <>, + [elem_ty => primitive_type] + )?; + } "bitlist" => { let mut limit = parts[1]; diff --git a/testing/ef_tests/src/handler.rs b/testing/ef_tests/src/handler.rs index a5b2ffada3..46eb61d7a3 100644 --- a/testing/ef_tests/src/handler.rs +++ b/testing/ef_tests/src/handler.rs @@ -1135,6 +1135,8 @@ impl Handler for SszGenericHandler { // Supported SSZ generic handlers pub struct BasicVector; type_name!(BasicVector, "basic_vector"); +pub struct BasicProgressiveList; +type_name!(BasicProgressiveList, "basic_progressive_list"); pub struct Bitlist; type_name!(Bitlist, "bitlist"); pub struct Bitvector; diff --git a/testing/ef_tests/tests/tests.rs b/testing/ef_tests/tests/tests.rs index 089e4464cd..6ccb906c72 100644 --- a/testing/ef_tests/tests/tests.rs +++ b/testing/ef_tests/tests/tests.rs @@ -733,6 +733,11 @@ fn ssz_generic() { SszGenericHandler::::default().run(); } +#[test] +fn ssz_generic_progressive() { + SszGenericHandler::::default().run(); +} + #[test] fn epoch_processing_justification_and_finalization() { EpochProcessingHandler::::default().run();