Spec v1.7.0 alpha.3 (#8988)

Update spec code for compliance with spec v1.7.0-alpha.3: https://github.com/ethereum/consensus-specs/releases/tag/v1.7.0-alpha.3

The actual consensus changes are minimal. There are few more changes that are only relevant to fork choice or P2P validation that we will pick up in future PRs.

The change "Ignore beacon block if parent payload unknown" is currently covered in a hacky way by `load_parent` and can be improved once we have fork choice.

The change "Add parent_block_root to bid filtering key" is relevant to bid gossip validation, which we don't have at all in unstable yet.


Co-Authored-By: Michael Sproul <michael@sigmaprime.io>
This commit is contained in:
Michael Sproul
2026-03-16 22:40:22 +11:00
committed by GitHub
parent 4eecca6da7
commit 95b99ee724
8 changed files with 151 additions and 20 deletions

View File

@@ -1,6 +1,6 @@
# To download/extract nightly tests, run:
# CONSENSUS_SPECS_TEST_VERSION=nightly make
CONSENSUS_SPECS_TEST_VERSION ?= v1.7.0-alpha.2
CONSENSUS_SPECS_TEST_VERSION ?= v1.7.0-alpha.3
REPO_NAME := consensus-spec-tests
OUTPUT_DIR := ./$(REPO_NAME)

View File

@@ -47,6 +47,8 @@ excluded_paths = [
"bls12-381-tests/hash_to_G2",
"tests/.*/eip7732",
"tests/.*/eip7805",
# Heze fork is not implemented
"tests/.*/heze/.*",
# TODO(gloas): remove these ignores as Gloas consensus is implemented
"tests/.*/gloas/fork_choice/.*",
# Ignore MatrixEntry SSZ tests for now.

View File

@@ -10,7 +10,7 @@ if [[ "$version" == "nightly" || "$version" =~ ^nightly-[0-9]+$ ]]; then
exit 1
fi
for cmd in unzip jq; do
for cmd in jq; do
if ! command -v "${cmd}" >/dev/null 2>&1; then
echo "Error ${cmd} is not installed"
exit 1
@@ -48,13 +48,10 @@ if [[ "$version" == "nightly" || "$version" =~ ^nightly-[0-9]+$ ]]; then
echo "Downloading artifact: ${name}"
curl --progress-bar --location --show-error --retry 3 --retry-all-errors --fail \
-H "${auth_header}" -H "Accept: application/vnd.github+json" \
--output "${name}.zip" "${url}" || {
--output "${name}" "${url}" || {
echo "Failed to download ${name}"
exit 1
}
unzip -qo "${name}.zip"
rm -f "${name}.zip"
done
else
for test in "${TESTS[@]}"; do

View File

@@ -716,8 +716,13 @@ impl<E: EthSpec, O: Operation<E>> LoadCase for Operations<E, O> {
// Check BLS setting here before SSZ deserialization, as most types require signatures
// to be valid.
let (operation, bls_error) = if metadata.bls_setting.unwrap_or_default().check().is_ok() {
match O::decode(&path.join(O::filename()), fork_name, spec) {
let operation_path = path.join(O::filename());
let (operation, bls_error) = if !operation_path.is_file() {
// Some test cases (e.g. builder_voluntary_exit__success) have no operation file.
// TODO(gloas): remove this once the test vectors are fixed
(None, None)
} else if metadata.bls_setting.unwrap_or_default().check().is_ok() {
match O::decode(&operation_path, fork_name, spec) {
Ok(op) => (Some(op), None),
Err(Error::InvalidBLSInput(error)) => (None, Some(error)),
Err(e) => return Err(e),

View File

@@ -537,11 +537,6 @@ impl<E: EthSpec + TypeName> Handler for RandomHandler<E> {
fn handler_name(&self) -> String {
"random".into()
}
fn disabled_forks(&self) -> Vec<ForkName> {
// TODO(gloas): remove once we have Gloas random tests
vec![ForkName::Gloas]
}
}
#[derive(Educe)]