From 182228e9f06fe0c0be20ecba6a37371487502f67 Mon Sep 17 00:00:00 2001 From: Eugene Kabanov Date: Thu, 13 Feb 2025 14:46:16 +0200 Subject: [PATCH 01/46] Fix percent value goes bigger than 100%. (#6922) --- beacon_chain/sync/sync_manager.nim | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/beacon_chain/sync/sync_manager.nim b/beacon_chain/sync/sync_manager.nim index b63ddaeae8..fbc4dccb63 100644 --- a/beacon_chain/sync/sync_manager.nim +++ b/beacon_chain/sync/sync_manager.nim @@ -891,13 +891,15 @@ proc syncLoop[A, B]( progress = case man.queue.kind of SyncQueueKind.Forward: - if man.queue.outSlot >= pivot: - man.queue.outSlot - pivot + let outSlot = min(man.queue.finalSlot, man.queue.outSlot) + if outSlot >= pivot: + outSlot - pivot else: 0'u64 of SyncQueueKind.Backward: - if pivot >= man.queue.outSlot: - pivot - man.queue.outSlot + let outSlot = max(man.queue.finalSlot, man.queue.outSlot) + if pivot >= outSlot: + pivot - outSlot else: 0'u64 total = From 59ca968bfdc401a71f68ee3ceeb285ea80dc8f08 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Thu, 13 Feb 2025 15:04:46 +0100 Subject: [PATCH 02/46] Bump nim-blscurve to `52ae4332c749d89fa05226f5493decae568f682c` (#6920) - Bump blst to `v0.3.14` - bench: add serial MSM benchmark --- vendor/nim-blscurve | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/nim-blscurve b/vendor/nim-blscurve index 3737c9663d..52ae4332c7 160000 --- a/vendor/nim-blscurve +++ b/vendor/nim-blscurve @@ -1 +1 @@ -Subproject commit 3737c9663d26076ed89f011c2688c1b9ee1eb73a +Subproject commit 52ae4332c749d89fa05226f5493decae568f682c From 0e3ba6f461e8651334b6a9733259afeaf65c354c Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Thu, 13 Feb 2025 15:04:56 +0100 Subject: [PATCH 03/46] Bump nim-libbacktrace to `616e5f4a6e2c751b85487e2e855c6b7f90848503` (#6919) - Remove patches for `libunwind` and use upstream build system - Re-root `libunwind` CMake invocation at `/runtimes` - Bump libunwind to `llvmorg-19.1.7` - Compile libunwind in release mode --- vendor/nim-libbacktrace | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/nim-libbacktrace b/vendor/nim-libbacktrace index 0a438d7031..616e5f4a6e 160000 --- a/vendor/nim-libbacktrace +++ b/vendor/nim-libbacktrace @@ -1 +1 @@ -Subproject commit 0a438d70312de253694748346e002418bd127829 +Subproject commit 616e5f4a6e2c751b85487e2e855c6b7f90848503 From 7e5da0b7ce2f931d4678aaa7327df6b493bfbffa Mon Sep 17 00:00:00 2001 From: tersec Date: Thu, 13 Feb 2025 21:17:10 +0000 Subject: [PATCH 04/46] update to Geth v1.15.1 in local testnet (#6923) --- scripts/geth_binaries.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/geth_binaries.sh b/scripts/geth_binaries.sh index 9b796f31a9..1f6c7201ae 100644 --- a/scripts/geth_binaries.sh +++ b/scripts/geth_binaries.sh @@ -20,7 +20,7 @@ source "${SCRIPTS_DIR}/bash_utils.sh" download_geth_stable() { if [[ ! -e "${STABLE_GETH_BINARY}" ]]; then - GETH_VERSION="1.15.0-756cca7c" # https://geth.ethereum.org/downloads + GETH_VERSION="1.15.1-b027a90a" # https://geth.ethereum.org/downloads GETH_URL="https://gethstore.blob.core.windows.net/builds/" case "${OS}-${ARCH}" in From 7767d45a3a651a32ded264d519f20b4af9131a66 Mon Sep 17 00:00:00 2001 From: tersec Date: Thu, 13 Feb 2025 22:41:58 +0000 Subject: [PATCH 05/46] update block_sim to start at Electra (#6924) --- research/block_sim.nim | 102 ++++---------------------------- research/simutils.nim | 13 ++-- scripts/geth_binaries.sh | 5 -- scripts/launch_local_testnet.sh | 4 +- 4 files changed, 20 insertions(+), 104 deletions(-) diff --git a/research/block_sim.nim b/research/block_sim.nim index 94529e5265..0f5af2e552 100644 --- a/research/block_sim.nim +++ b/research/block_sim.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2019-2024 Status Research & Development GmbH +# Copyright (c) 2019-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -16,12 +16,10 @@ import confutils, chronicles, eth/db/kvstore_sqlite3, - chronos/timer, taskpools, + chronos, chronos/timer, taskpools, ../tests/testblockutil, - ../beacon_chain/el/eth1_chain, ../beacon_chain/spec/[forks, state_transition], ../beacon_chain/beacon_chain_db, - ../beacon_chain/validators/validator_pool, ../beacon_chain/gossip_processing/[batch_validation, gossip_validation], ../beacon_chain/consensus_object_pools/[blockchain_dag, block_clearance], ./simutils @@ -29,13 +27,16 @@ import from std/random import Rand, gauss, initRand, rand from std/stats import RunningStat from ../beacon_chain/consensus_object_pools/attestation_pool import - AttestationPool, addAttestation, addForkChoice, getAttestationsForBlock, + AttestationPool, addAttestation, addForkChoice, getElectraAttestationsForBlock, init, prune from ../beacon_chain/consensus_object_pools/block_quarantine import Quarantine, init from ../beacon_chain/consensus_object_pools/sync_committee_msg_pool import SyncCommitteeMsgPool, addContribution, addSyncCommitteeMessage, init, produceContribution, produceSyncAggregate, pruneData +from ../beacon_chain/el/eth1_chain import + Eth1Block, Eth1BlockNumber, Eth1BlockTimestamp, Eth1Chain, addBlock, + getBlockProposalData, init from ../beacon_chain/spec/beaconstate import get_beacon_committee, get_beacon_proposer_index, get_committee_count_per_slot, get_committee_indices @@ -51,55 +52,6 @@ type Timers = enum tSyncCommittees = "Produce sync committee actions" tReplay = "Replay all produced blocks" -# TODO The rest of nimbus-eth2 uses only the forked version of these, and in -# general it's better for the validator_duties caller to use the forkedstate -# version, so isolate these here pending refactoring of block_sim to prefer, -# when possible, to also use the forked version. It'll be worth keeping some -# example of the non-forked version because it enables fork bootstrapping. -proc makeSimulationBlock( - cfg: RuntimeConfig, - state: var deneb.HashedBeaconState, - proposer_index: ValidatorIndex, - randao_reveal: ValidatorSig, - eth1_data: Eth1Data, - graffiti: GraffitiBytes, - attestations: seq[phase0.Attestation], - deposits: seq[Deposit], - exits: BeaconBlockValidatorChanges, - sync_aggregate: SyncAggregate, - execution_payload: deneb.ExecutionPayloadForSigning, - bls_to_execution_changes: SignedBLSToExecutionChangeList, - rollback: RollbackHashedProc[deneb.HashedBeaconState], - cache: var StateCache, - # TODO: - # `verificationFlags` is needed only in tests and can be - # removed if we don't use invalid signatures there - verificationFlags: UpdateFlags = {}): Result[deneb.BeaconBlock, cstring] = - ## Create a block for the given state. The latest block applied to it will - ## be used for the parent_root value, and the slot will be take from - ## state.slot meaning process_slots must be called up to the slot for which - ## the block is to be created. - - # To create a block, we'll first apply a partial block to the state, skipping - # some validations. - - var blck = partialBeaconBlock( - cfg, state, proposer_index, randao_reveal, eth1_data, graffiti, - attestations, deposits, exits, sync_aggregate, execution_payload, - default(ExecutionRequests)) - - let res = process_block( - cfg, state.data, blck.asSigVerified(), verificationFlags, cache) - - if res.isErr: - rollback(state) - return err(res.error()) - - state.root = hash_tree_root(state.data) - blck.state_root = state.root - - ok(blck) - proc makeSimulationBlock( cfg: RuntimeConfig, state: var electra.HashedBeaconState, @@ -402,9 +354,7 @@ cli do(slots = SLOTS_PER_EPOCH * 7, sync_aggregate = syncCommitteePool[].produceSyncAggregate(dag.head.bid, slot) hashedState = - when T is deneb.SignedBeaconBlock: - addr state.denebData - elif T is electra.SignedBeaconBlock: + when T is electra.SignedBeaconBlock: addr state.electraData elif T is fulu.SignedBeaconBlock: addr state.fuluData @@ -420,12 +370,7 @@ cli do(slots = SLOTS_PER_EPOCH * 7, slot.epoch, privKey).toValidatorSig(), eth1ProposalData.vote, default(GraffitiBytes), - when T is electra.SignedBeaconBlock: - attPool.getElectraAttestationsForBlock(state, cache) - elif T is fulu.SignedBeaconBlock: - attPool.getElectraAttestationsForBlock(state, cache) - else: - attPool.getAttestationsForBlock(state, cache), + attPool.getElectraAttestationsForBlock(state, cache), eth1ProposalData.deposits, BeaconBlockValidatorChanges(), sync_aggregate, @@ -433,8 +378,6 @@ cli do(slots = SLOTS_PER_EPOCH * 7, default(electra.ExecutionPayloadForSigning) elif T is fulu.SignedBeaconBlock: default(fulu.ExecutionPayloadForSigning) - elif T is deneb.SignedBeaconBlock: - default(deneb.ExecutionPayloadForSigning) else: static: doAssert false), static(default(SignedBLSToExecutionChangeList)), @@ -460,28 +403,6 @@ cli do(slots = SLOTS_PER_EPOCH * 7, # HTTP server's state function, combine all proposeForkBlock functions into a # single generic function. Until https://github.com/nim-lang/Nim/issues/20811 # is fixed, that generic function must take `blockRatio` as a parameter. - proc proposeDenebBlock(slot: Slot) = - if rand(r, 1.0) > blockRatio: - return - - dag.withUpdatedState(tmpState[], dag.getBlockIdAtSlot(slot).expect("block")) do: - let - newBlock = getNewBlock[deneb.SignedBeaconBlock](updatedState, slot, cache) - added = dag.addHeadBlock(verifier, newBlock) do ( - blckRef: BlockRef, signedBlock: deneb.TrustedSignedBeaconBlock, - epochRef: EpochRef, unrealized: FinalityCheckpoints): - # Callback add to fork choice if valid - attPool.addForkChoice( - epochRef, blckRef, unrealized, signedBlock.message, - blckRef.slot.start_beacon_time) - - dag.updateHead(added[], quarantine[], []) - if dag.needStateCachesAndForkChoicePruning(): - dag.pruneStateCachesDAG() - attPool.prune() - do: - raiseAssert "withUpdatedState failed" - proc proposeElectraBlock(slot: Slot) = if rand(r, 1.0) > blockRatio: return @@ -566,10 +487,9 @@ cli do(slots = SLOTS_PER_EPOCH * 7, if blockRatio > 0.0: withTimer(timers[t]): case dag.cfg.consensusForkAtEpoch(slot.epoch) - of ConsensusFork.Fulu: proposeFuluBlock(slot) - of ConsensusFork.Electra: proposeElectraBlock(slot) - of ConsensusFork.Deneb: proposeDenebBlock(slot) - of ConsensusFork.Phase0 .. ConsensusFork.Capella: + of ConsensusFork.Fulu: proposeFuluBlock(slot) + of ConsensusFork.Electra: proposeElectraBlock(slot) + of ConsensusFork.Phase0 .. ConsensusFork.Deneb: doAssert false if attesterRatio > 0.0: withTimer(timers[tAttest]): diff --git a/research/simutils.nim b/research/simutils.nim index ed268559a0..fd85ae6a32 100644 --- a/research/simutils.nim +++ b/research/simutils.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2020-2024 Status Research & Development GmbH +# Copyright (c) 2020-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -61,7 +61,8 @@ func getSimulationConfig*(): RuntimeConfig {.compileTime.} = cfg.BELLATRIX_FORK_EPOCH = 0.Epoch cfg.CAPELLA_FORK_EPOCH = 0.Epoch cfg.DENEB_FORK_EPOCH = 0.Epoch - cfg.ELECTRA_FORK_EPOCH = 3.Epoch + cfg.ELECTRA_FORK_EPOCH = 0.Epoch + cfg.FULU_FORK_EPOCH = 3.Epoch cfg proc loadGenesis*( @@ -139,15 +140,15 @@ proc loadGenesis*( depositContractState: merkleizer.toDepositContractState) let res = (ref ForkedHashedBeaconState)( - kind: ConsensusFork.Deneb, - denebData: deneb.HashedBeaconState( + kind: ConsensusFork.Electra, + electraData: electra.HashedBeaconState( data: initialize_beacon_state_from_eth1( cfg, ZERO_HASH, 0, deposits, - default(deneb.ExecutionPayloadHeader), {skipBlsValidation}))) + default(electra.ExecutionPayloadHeader), {skipBlsValidation}))) info "Saving genesis file", fileName = genesisFn try: - SSZ.saveFile(genesisFn, res.denebData.data) + SSZ.saveFile(genesisFn, res.electraData.data) except IOError as exc: fatal "Genesis file failed to save", fileName = genesisFn, exc = exc.msg diff --git a/scripts/geth_binaries.sh b/scripts/geth_binaries.sh index 1f6c7201ae..ca9900b178 100644 --- a/scripts/geth_binaries.sh +++ b/scripts/geth_binaries.sh @@ -16,7 +16,6 @@ source "${SCRIPTS_DIR}/bash_utils.sh" : ${CURL_BINARY:="curl"} : ${STABLE_GETH_BINARY:="${BUILD_DIR}/downloads/geth$EXE_EXTENSION"} -: ${GETH_DENEB_BINARY:="$STABLE_GETH_BINARY"} download_geth_stable() { if [[ ! -e "${STABLE_GETH_BINARY}" ]]; then @@ -105,8 +104,4 @@ download_status_geth_binary() { fi } -download_geth_deneb() { - download_geth_stable -} - fi diff --git a/scripts/launch_local_testnet.sh b/scripts/launch_local_testnet.sh index e8043a1cfe..c423eba69b 100755 --- a/scripts/launch_local_testnet.sh +++ b/scripts/launch_local_testnet.sh @@ -443,8 +443,8 @@ LAST_SIGNER_NODE_IDX=$(( SIGNER_NODES - 1 )) if [[ "${RUN_GETH}" == "1" ]]; then source "${SCRIPTS_DIR}/geth_binaries.sh" - download_geth_deneb - GETH_BINARY="$GETH_DENEB_BINARY" + download_geth_stable + GETH_BINARY="$STABLE_GETH_BINARY" source ./scripts/geth_vars.sh fi From a629d6bd89eddef49d28f545d5ec7d516afe90b1 Mon Sep 17 00:00:00 2001 From: tersec Date: Fri, 14 Feb 2025 02:50:35 +0000 Subject: [PATCH 06/46] mostly automated consensus spec URL updating to v1.5.0-beta.2 (#6925) * mostly automated consensus spec URL updating to v1.5.0-beta.2 * copyright year linting --- beacon_chain/beacon_chain_db_immutable.nim | 2 +- .../consensus_object_pools/spec_cache.nim | 2 +- beacon_chain/el/eth1_chain.nim | 8 +++---- beacon_chain/el/merkle_minimal.nim | 2 +- beacon_chain/fork_choice/fork_choice.nim | 1 - .../gossip_processing/gossip_validation.nim | 2 +- .../light_client_processor.nim | 4 ++-- beacon_chain/libnimbus_lc/libnimbus_lc.h | 6 ++--- beacon_chain/libnimbus_lc/libnimbus_lc.nim | 4 ++-- beacon_chain/networking/eth2_network.nim | 4 ++-- beacon_chain/nimbus_beacon_node.nim | 6 ++--- beacon_chain/rpc/rest_config_api.nim | 6 ++--- beacon_chain/spec/beacon_time.nim | 4 ++-- beacon_chain/spec/beaconstate.nim | 24 +++++++++---------- beacon_chain/spec/datatypes/altair.nim | 6 ++--- beacon_chain/spec/datatypes/base.nim | 2 +- beacon_chain/spec/datatypes/capella.nim | 14 +++++------ beacon_chain/spec/datatypes/constants.nim | 4 ++-- beacon_chain/spec/datatypes/deneb.nim | 4 ++-- beacon_chain/spec/datatypes/electra.nim | 8 +++---- beacon_chain/spec/datatypes/fulu.nim | 2 +- beacon_chain/spec/datatypes/phase0.nim | 4 ++-- beacon_chain/spec/forks.nim | 2 +- beacon_chain/spec/helpers.nim | 6 ++--- beacon_chain/spec/keystore.nim | 2 +- beacon_chain/spec/light_client_sync.nim | 2 +- beacon_chain/spec/network.nim | 8 +++---- beacon_chain/spec/peerdas_helpers.nim | 2 +- .../spec/presets/mainnet/altair_preset.nim | 2 +- .../spec/presets/mainnet/bellatrix_preset.nim | 2 +- .../spec/presets/mainnet/capella_preset.nim | 2 +- .../spec/presets/minimal/altair_preset.nim | 2 +- .../spec/presets/minimal/bellatrix_preset.nim | 2 +- .../spec/presets/minimal/capella_preset.nim | 2 +- beacon_chain/spec/signatures.nim | 6 ++--- beacon_chain/spec/state_transition.nim | 4 ++-- beacon_chain/spec/state_transition_block.nim | 8 +++---- beacon_chain/spec/state_transition_epoch.nim | 24 +++++++++---------- beacon_chain/validators/beacon_validators.nim | 6 ++--- .../validators/slashing_protection_v2.nim | 4 ++-- beacon_chain/validators/validator_pool.nim | 6 ++--- ...est_fixture_light_client_sync_protocol.nim | 2 +- tests/consensus_spec/fixtures_utils.nim | 2 +- tests/consensus_spec/test_fixture_kzg.nim | 4 ++-- tests/testblockutil.nim | 4 ++-- 45 files changed, 111 insertions(+), 112 deletions(-) diff --git a/beacon_chain/beacon_chain_db_immutable.nim b/beacon_chain/beacon_chain_db_immutable.nim index e2cbfe451b..6a6cd3d3d6 100644 --- a/beacon_chain/beacon_chain_db_immutable.nim +++ b/beacon_chain/beacon_chain_db_immutable.nim @@ -132,7 +132,7 @@ type current_sync_committee*: SyncCommittee # [New in Altair] next_sync_committee*: SyncCommittee # [New in Altair] - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/bellatrix/beacon-chain.md#beaconstate + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/bellatrix/beacon-chain.md#beaconstate # Memory-representation-equivalent to a Bellatrix BeaconState for in-place SSZ # reading and writing BellatrixBeaconStateNoImmutableValidators* = object diff --git a/beacon_chain/consensus_object_pools/spec_cache.nim b/beacon_chain/consensus_object_pools/spec_cache.nim index c0935fe759..9706119d93 100644 --- a/beacon_chain/consensus_object_pools/spec_cache.nim +++ b/beacon_chain/consensus_object_pools/spec_cache.nim @@ -293,7 +293,7 @@ func makeAttestationData*( doAssert current_epoch == epochRef.epoch - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#attestation-data + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#attestation-data AttestationData( slot: slot, index: committee_index.asUInt64, diff --git a/beacon_chain/el/eth1_chain.nim b/beacon_chain/el/eth1_chain.nim index 4d408a9bd3..42cc56d6a0 100644 --- a/beacon_chain/el/eth1_chain.nim +++ b/beacon_chain/el/eth1_chain.nim @@ -82,11 +82,11 @@ type deposits*: seq[Deposit] hasMissingDeposits*: bool -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#get_eth1_data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#get_eth1_data func compute_time_at_slot(genesis_time: uint64, slot: Slot): uint64 = genesis_time + slot * SECONDS_PER_SLOT -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#get_eth1_data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#get_eth1_data func voting_period_start_time(state: ForkedHashedBeaconState): uint64 = let eth1_voting_period_start_slot = getStateField(state, slot) - getStateField(state, slot) mod @@ -94,7 +94,7 @@ func voting_period_start_time(state: ForkedHashedBeaconState): uint64 = compute_time_at_slot( getStateField(state, genesis_time), eth1_voting_period_start_slot) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#get_eth1_data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#get_eth1_data func is_candidate_block(cfg: RuntimeConfig, blk: Eth1Block, period_start: uint64): bool = @@ -274,7 +274,7 @@ proc trackFinalizedState*(chain: var Eth1Chain, if result: chain.pruneOldBlocks(finalizedStateDepositIndex) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#get_eth1_data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#get_eth1_data proc getBlockProposalData*(chain: var Eth1Chain, state: ForkedHashedBeaconState, finalizedEth1Data: Eth1Data, diff --git a/beacon_chain/el/merkle_minimal.nim b/beacon_chain/el/merkle_minimal.nim index 9a196556aa..48c54b2228 100644 --- a/beacon_chain/el/merkle_minimal.nim +++ b/beacon_chain/el/merkle_minimal.nim @@ -7,7 +7,7 @@ {.push raises: [].} -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/tests/core/pyspec/eth2spec/utils/merkle_minimal.py +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/tests/core/pyspec/eth2spec/utils/merkle_minimal.py # Merkle tree helpers # --------------------------------------------------------------- diff --git a/beacon_chain/fork_choice/fork_choice.nim b/beacon_chain/fork_choice/fork_choice.nim index 73c88fedd0..338e6fdcbc 100644 --- a/beacon_chain/fork_choice/fork_choice.nim +++ b/beacon_chain/fork_choice/fork_choice.nim @@ -22,7 +22,6 @@ import export results, fork_choice_types export proto_array.len -# https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/phase0/fork-choice.md # This is a port of https://github.com/sigp/lighthouse/pull/804 # which is a port of "Proto-Array": https://github.com/protolambda/lmd-ghost # See also: diff --git a/beacon_chain/gossip_processing/gossip_validation.nim b/beacon_chain/gossip_processing/gossip_validation.nim index 43dd686464..fab3bd0225 100644 --- a/beacon_chain/gossip_processing/gossip_validation.nim +++ b/beacon_chain/gossip_processing/gossip_validation.nim @@ -1556,7 +1556,7 @@ proc validateVoluntaryExit*( ok() -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/p2p-interface.md#sync_committee_subnet_id +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/p2p-interface.md#sync_committee_subnet_id proc validateSyncCommitteeMessage*( dag: ChainDAGRef, quarantine: ref Quarantine, diff --git a/beacon_chain/gossip_processing/light_client_processor.nim b/beacon_chain/gossip_processing/light_client_processor.nim index f70e437037..666c3bc1e4 100644 --- a/beacon_chain/gossip_processing/light_client_processor.nim +++ b/beacon_chain/gossip_processing/light_client_processor.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2022-2024 Status Research & Development GmbH +# Copyright (c) 2022-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -564,7 +564,7 @@ proc processLightClientFinalityUpdate*( self.latestFinalityUpdate = finality_update.toOptimistic v -# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/altair/light-client/sync-protocol.md#process_light_client_finality_update +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/light-client/sync-protocol.md#process_light_client_finality_update proc processLightClientOptimisticUpdate*( self: var LightClientProcessor, src: MsgSource, optimistic_update: ForkedLightClientOptimisticUpdate diff --git a/beacon_chain/libnimbus_lc/libnimbus_lc.h b/beacon_chain/libnimbus_lc/libnimbus_lc.h index 43f6f9bd37..9b6d878016 100644 --- a/beacon_chain/libnimbus_lc/libnimbus_lc.h +++ b/beacon_chain/libnimbus_lc/libnimbus_lc.h @@ -94,7 +94,7 @@ typedef struct ETHConsensusConfig ETHConsensusConfig; * based on the given `config.yaml` file content - If successful. * @return `NULL` - If the given `config.yaml` is malformed or incompatible. * - * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/configs/README.md + * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/configs/README.md */ ETH_RESULT_USE_CHECK ETHConsensusConfig *_Nullable ETHConsensusConfigCreateFromYaml(const char *configFileContent); @@ -150,9 +150,9 @@ typedef struct ETHBeaconState ETHBeaconState; * @return `NULL` - If the given `sszBytes` is malformed. * * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/phase0/beacon-chain.md#beaconstate - * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#beaconstate + * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#beaconstate * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/bellatrix/beacon-chain.md#beaconstate - * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/beacon-chain.md#beaconstate + * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/beacon-chain.md#beaconstate * @see https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.9/configs/README.md */ ETH_RESULT_USE_CHECK diff --git a/beacon_chain/libnimbus_lc/libnimbus_lc.nim b/beacon_chain/libnimbus_lc/libnimbus_lc.nim index 5f53a11213..a77de39dbd 100644 --- a/beacon_chain/libnimbus_lc/libnimbus_lc.nim +++ b/beacon_chain/libnimbus_lc/libnimbus_lc.nim @@ -142,10 +142,10 @@ proc ETHBeaconStateCreateFromSsz( ## ## See: ## * https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#beaconstate - ## * https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#beaconstate + ## * https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#beaconstate ## * https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/bellatrix/beacon-chain.md#beaconstate ## * https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/capella/beacon-chain.md#beaconstate - ## * https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/configs/README.md + ## * https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/configs/README.md let consensusFork = ConsensusFork.decodeString($consensusVersion).valueOr: return nil diff --git a/beacon_chain/networking/eth2_network.nim b/beacon_chain/networking/eth2_network.nim index f521b5d40e..de4571bfa6 100644 --- a/beacon_chain/networking/eth2_network.nim +++ b/beacon_chain/networking/eth2_network.nim @@ -2267,7 +2267,7 @@ proc getPersistentNetKeys*( func gossipId( data: openArray[byte], phase0Prefix, topic: string): seq[byte] = # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/phase0/p2p-interface.md#topics-and-messages - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/p2p-interface.md#topics-and-messages + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/p2p-interface.md#topics-and-messages const MESSAGE_DOMAIN_VALID_SNAPPY = [0x01'u8, 0x00, 0x00, 0x00] let messageDigest = withEth2Hash: h.update(MESSAGE_DOMAIN_VALID_SNAPPY) @@ -2635,7 +2635,7 @@ proc loadCgcnetMetadataAndEnr*(node: Eth2Node, cgcnets: CgcCount) = debug "Updated ENR cgc", cgcnets proc updateSyncnetsMetadata*(node: Eth2Node, syncnets: SyncnetBits) = - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/validator.md#sync-committee-subnet-stability + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/validator.md#sync-committee-subnet-stability if node.metadata.syncnets == syncnets: return diff --git a/beacon_chain/nimbus_beacon_node.nim b/beacon_chain/nimbus_beacon_node.nim index d5c274c6a0..69b5ab58c6 100644 --- a/beacon_chain/nimbus_beacon_node.nim +++ b/beacon_chain/nimbus_beacon_node.nim @@ -2006,7 +2006,7 @@ proc installMessageValidators(node: BeaconNode) = MsgSource.gossip, signedAggregateAndProof))) # attester_slashing - # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/phase0/p2p-interface.md#attester_slashing + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/p2p-interface.md#attester_slashing # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.6/specs/electra/p2p-interface.md#modifications-in-electra when consensusFork >= ConsensusFork.Electra: node.network.addValidator( @@ -2060,7 +2060,7 @@ proc installMessageValidators(node: BeaconNode) = MsgSource.gossip, msg, idx))) # sync_committee_contribution_and_proof - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/p2p-interface.md#sync_committee_contribution_and_proof + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/p2p-interface.md#sync_committee_contribution_and_proof node.network.addAsyncValidator( getSyncCommitteeContributionAndProofTopic(digest), proc ( msg: SignedContributionAndProof @@ -2070,7 +2070,7 @@ proc installMessageValidators(node: BeaconNode) = MsgSource.gossip, msg))) when consensusFork >= ConsensusFork.Capella: - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/p2p-interface.md#bls_to_execution_change + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/p2p-interface.md#bls_to_execution_change node.network.addAsyncValidator( getBlsToExecutionChangeTopic(digest), proc ( msg: SignedBLSToExecutionChange diff --git a/beacon_chain/rpc/rest_config_api.nim b/beacon_chain/rpc/rest_config_api.nim index 9c5d4ebd41..ec1a009115 100644 --- a/beacon_chain/rpc/rest_config_api.nim +++ b/beacon_chain/rpc/rest_config_api.nim @@ -90,7 +90,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = MAX_VOLUNTARY_EXITS: Base10.toString(MAX_VOLUNTARY_EXITS), - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/mainnet/altair.yaml + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/altair.yaml INACTIVITY_PENALTY_QUOTIENT_ALTAIR: Base10.toString(INACTIVITY_PENALTY_QUOTIENT_ALTAIR), MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR: @@ -106,7 +106,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = UPDATE_TIMEOUT: Base10.toString(UPDATE_TIMEOUT), - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/mainnet/bellatrix.yaml + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/bellatrix.yaml INACTIVITY_PENALTY_QUOTIENT_BELLATRIX: Base10.toString(INACTIVITY_PENALTY_QUOTIENT_BELLATRIX), MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX: @@ -122,7 +122,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = MAX_EXTRA_DATA_BYTES: Base10.toString(uint64(MAX_EXTRA_DATA_BYTES)), - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/mainnet/capella.yaml + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/capella.yaml MAX_BLS_TO_EXECUTION_CHANGES: Base10.toString(uint64(MAX_BLS_TO_EXECUTION_CHANGES)), MAX_WITHDRAWALS_PER_PAYLOAD: diff --git a/beacon_chain/spec/beacon_time.nim b/beacon_chain/spec/beacon_time.nim index 5d6a317951..19a919f776 100644 --- a/beacon_chain/spec/beacon_time.nim +++ b/beacon_chain/spec/beacon_time.nim @@ -135,10 +135,10 @@ template `+`*(a: TimeDiff, b: Duration): TimeDiff = const # Offsets from the start of the slot to when the corresponding message should # be sent - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#attesting + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#attesting attestationSlotOffset* = TimeDiff(nanoseconds: NANOSECONDS_PER_SLOT.int64 div INTERVALS_PER_SLOT) - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#broadcast-aggregate + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#broadcast-aggregate aggregateSlotOffset* = TimeDiff(nanoseconds: NANOSECONDS_PER_SLOT.int64 * 2 div INTERVALS_PER_SLOT) # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/altair/validator.md#prepare-sync-committee-message diff --git a/beacon_chain/spec/beaconstate.nim b/beacon_chain/spec/beaconstate.nim index f28f9408a7..5d43c89ed6 100644 --- a/beacon_chain/spec/beaconstate.nim +++ b/beacon_chain/spec/beaconstate.nim @@ -54,7 +54,7 @@ func has_compounding_withdrawal_credential*(validator: Validator): bool = ## credential. is_compounding_withdrawal_credential(validator.withdrawal_credentials) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.7/specs/electra/beacon-chain.md#new-get_max_effective_balance +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/electra/beacon-chain.md#new-get_max_effective_balance func get_max_effective_balance*(validator: Validator): Gwei = ## Get max effective balance for ``validator``. if has_compounding_withdrawal_credential(validator): @@ -370,8 +370,8 @@ func get_slashing_penalty*( else: {.fatal: "invalid BeaconState type".} -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/phase0/beacon-chain.md#slash_validator -# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#modified-slash_validator +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#slash_validator +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#modified-slash_validator # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/bellatrix/beacon-chain.md#modified-slash_validator func get_whistleblower_reward*( state: phase0.BeaconState | altair.BeaconState | bellatrix.BeaconState | @@ -385,8 +385,8 @@ func get_whistleblower_reward*( validator_effective_balance: Gwei): Gwei = validator_effective_balance div WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA -# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#slash_validator -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.9/specs/altair/beacon-chain.md#modified-slash_validator +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#slash_validator +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#modified-slash_validator # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/bellatrix/beacon-chain.md#modified-slash_validator func get_proposer_reward(state: ForkyBeaconState, whistleblower_reward: Gwei): Gwei = when state is phase0.BeaconState: @@ -398,9 +398,9 @@ func get_proposer_reward(state: ForkyBeaconState, whistleblower_reward: Gwei): G else: {.fatal: "invalid BeaconState type".} -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/phase0/beacon-chain.md#slash_validator -# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/altair/beacon-chain.md#modified-slash_validator -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/bellatrix/beacon-chain.md#modified-slash_validator +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#slash_validator +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#modified-slash_validator +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/bellatrix/beacon-chain.md#modified-slash_validator proc slash_validator*( cfg: RuntimeConfig, state: var ForkyBeaconState, slashed_index: ValidatorIndex, pre_exit_queue_info: ExitQueueInfo, @@ -908,7 +908,7 @@ func get_attestation_participation_flag_indices( # TODO these duplicate some stuff in state_transition_epoch which uses TotalBalances # better to centralize around that if feasible -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/phase0/beacon-chain.md#get_total_active_balance +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#get_total_active_balance func get_total_active_balance*(state: ForkyBeaconState, cache: var StateCache): Gwei = ## Return the combined effective balance of the active validators. ## Note: ``get_total_balance`` returns ``EFFECTIVE_BALANCE_INCREMENT`` Gwei @@ -935,7 +935,7 @@ func get_base_reward_per_increment*( get_base_reward_per_increment_sqrt( integer_squareroot(distinctBase(total_active_balance))) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#get_base_reward +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#get_base_reward func get_base_reward( state: altair.BeaconState | bellatrix.BeaconState | capella.BeaconState | deneb.BeaconState | electra.BeaconState | fulu.BeaconState, @@ -1050,7 +1050,7 @@ proc check_attestation*( ok() -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/beacon-chain.md#new-process_bls_to_execution_change +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/beacon-chain.md#new-process_bls_to_execution_change proc check_bls_to_execution_change*( genesisFork: Fork, state: capella.BeaconState | deneb.BeaconState | electra.BeaconState | @@ -2034,7 +2034,7 @@ func upgrade_to_capella*(cfg: RuntimeConfig, pre: bellatrix.BeaconState): # historical_summaries initialized to correct default automatically ) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/deneb/fork.md#upgrading-the-state +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/deneb/fork.md#upgrading-the-state func upgrade_to_deneb*(cfg: RuntimeConfig, pre: capella.BeaconState): ref deneb.BeaconState = let diff --git a/beacon_chain/spec/datatypes/altair.nim b/beacon_chain/spec/datatypes/altair.nim index a3d5174744..166b8d2059 100644 --- a/beacon_chain/spec/datatypes/altair.nim +++ b/beacon_chain/spec/datatypes/altair.nim @@ -40,7 +40,7 @@ static: doAssert ord(TIMELY_HEAD_FLAG_INDEX) == 2 const - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#incentivization-weights + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#incentivization-weights TIMELY_SOURCE_WEIGHT* = 14 TIMELY_TARGET_WEIGHT* = 26 TIMELY_HEAD_WEIGHT* = 14 @@ -96,7 +96,7 @@ type sync_committee_bits*: BitArray[SYNC_COMMITTEE_SIZE] sync_committee_signature*: TrustedSig - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#synccommittee + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#synccommittee SyncCommittee* = object pubkeys*: HashArray[Limit SYNC_COMMITTEE_SIZE, ValidatorPubKey] aggregate_pubkey*: ValidatorPubKey @@ -668,7 +668,7 @@ chronicles.formatIt SyncCommitteeContribution: shortLog(it) chronicles.formatIt ContributionAndProof: shortLog(it) chronicles.formatIt SignedContributionAndProof: shortLog(it) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/altair/light-client/sync-protocol.md#is_valid_light_client_header +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/light-client/sync-protocol.md#is_valid_light_client_header func is_valid_light_client_header*( header: LightClientHeader, cfg: RuntimeConfig): bool = true diff --git a/beacon_chain/spec/datatypes/base.nim b/beacon_chain/spec/datatypes/base.nim index 4e121b39be..a4bcf6940e 100644 --- a/beacon_chain/spec/datatypes/base.nim +++ b/beacon_chain/spec/datatypes/base.nim @@ -400,7 +400,7 @@ type sync_committees*: Table[SyncCommitteePeriod, SyncCommitteeCache] # This matches the mutable state of the Solidity deposit contract - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/solidity_deposit_contract/deposit_contract.sol + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/solidity_deposit_contract/deposit_contract.sol DepositContractState* = object branch*: array[DEPOSIT_CONTRACT_TREE_DEPTH, Eth2Digest] deposit_count*: array[32, byte] # Uint256 diff --git a/beacon_chain/spec/datatypes/capella.nim b/beacon_chain/spec/datatypes/capella.nim index 75e114c699..e97c6db450 100644 --- a/beacon_chain/spec/datatypes/capella.nim +++ b/beacon_chain/spec/datatypes/capella.nim @@ -53,7 +53,7 @@ type from_bls_pubkey*: ValidatorPubKey to_execution_address*: ExecutionAddress - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/beacon-chain.md#signedblstoexecutionchange + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/beacon-chain.md#signedblstoexecutionchange SignedBLSToExecutionChange* = object message*: BLSToExecutionChange signature*: ValidatorSig @@ -133,7 +133,7 @@ type ## Execution payload header corresponding to `beacon.body_root` (from Capella onward) execution_branch*: ExecutionBranch - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/specs/altair/light-client/sync-protocol.md#lightclientbootstrap + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/light-client/sync-protocol.md#lightclientbootstrap LightClientBootstrap* = object header*: LightClientHeader ## Header matching the requested beacon block root @@ -676,13 +676,13 @@ func is_valid_light_client_header*( get_subtree_index(EXECUTION_PAYLOAD_GINDEX), header.beacon.body_root) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/light-client/fork.md#upgrading-light-client-data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/light-client/fork.md#upgrading-light-client-data func upgrade_lc_header_to_capella*( pre: altair.LightClientHeader): LightClientHeader = LightClientHeader( beacon: pre.beacon) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/light-client/fork.md#upgrading-light-client-data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/light-client/fork.md#upgrading-light-client-data func upgrade_lc_bootstrap_to_capella*( pre: altair.LightClientBootstrap): LightClientBootstrap = LightClientBootstrap( @@ -690,7 +690,7 @@ func upgrade_lc_bootstrap_to_capella*( current_sync_committee: pre.current_sync_committee, current_sync_committee_branch: pre.current_sync_committee_branch) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/light-client/fork.md#upgrading-light-client-data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/light-client/fork.md#upgrading-light-client-data func upgrade_lc_update_to_capella*( pre: altair.LightClientUpdate): LightClientUpdate = LightClientUpdate( @@ -702,7 +702,7 @@ func upgrade_lc_update_to_capella*( sync_aggregate: pre.sync_aggregate, signature_slot: pre.signature_slot) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/light-client/fork.md#upgrading-light-client-data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/light-client/fork.md#upgrading-light-client-data func upgrade_lc_finality_update_to_capella*( pre: altair.LightClientFinalityUpdate): LightClientFinalityUpdate = LightClientFinalityUpdate( @@ -712,7 +712,7 @@ func upgrade_lc_finality_update_to_capella*( sync_aggregate: pre.sync_aggregate, signature_slot: pre.signature_slot) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/light-client/fork.md#upgrading-light-client-data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/light-client/fork.md#upgrading-light-client-data func upgrade_lc_optimistic_update_to_capella*( pre: altair.LightClientOptimisticUpdate): LightClientOptimisticUpdate = LightClientOptimisticUpdate( diff --git a/beacon_chain/spec/datatypes/constants.nim b/beacon_chain/spec/datatypes/constants.nim index dc6022dbfe..23e0391473 100644 --- a/beacon_chain/spec/datatypes/constants.nim +++ b/beacon_chain/spec/datatypes/constants.nim @@ -14,7 +14,7 @@ type Epoch* = distinct uint64 SyncCommitteePeriod* = distinct uint64 - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.9/specs/capella/beacon-chain.md#custom-types + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/beacon-chain.md#custom-types WithdrawalIndex* = uint64 DomainType* = distinct array[4, byte] @@ -55,7 +55,7 @@ const DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF* = DomainType([byte 0x08, 0x00, 0x00, 0x00]) DOMAIN_CONTRIBUTION_AND_PROOF* = DomainType([byte 0x09, 0x00, 0x00, 0x00]) - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/beacon-chain.md#domain-types + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/beacon-chain.md#domain-types DOMAIN_BLS_TO_EXECUTION_CHANGE* = DomainType([byte 0x0a, 0x00, 0x00, 0x00]) # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/phase0/fork-choice.md#configuration diff --git a/beacon_chain/spec/datatypes/deneb.nim b/beacon_chain/spec/datatypes/deneb.nim index 74a8933fd1..a26eec1910 100644 --- a/beacon_chain/spec/datatypes/deneb.nim +++ b/beacon_chain/spec/datatypes/deneb.nim @@ -382,7 +382,7 @@ type state_root*: Eth2Digest body*: TrustedBeaconBlockBody - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/deneb/beacon-chain.md#beaconblockbody + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/deneb/beacon-chain.md#beaconblockbody BeaconBlockBody* = object randao_reveal*: ValidatorSig eth1_data*: Eth1Data @@ -725,7 +725,7 @@ func upgrade_lc_update_to_deneb*( sync_aggregate: pre.sync_aggregate, signature_slot: pre.signature_slot) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/deneb/light-client/fork.md#upgrading-light-client-data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/deneb/light-client/fork.md#upgrading-light-client-data func upgrade_lc_finality_update_to_deneb*( pre: capella.LightClientFinalityUpdate): LightClientFinalityUpdate = LightClientFinalityUpdate( diff --git a/beacon_chain/spec/datatypes/electra.nim b/beacon_chain/spec/datatypes/electra.nim index ba55beb4b2..e0271c5517 100644 --- a/beacon_chain/spec/datatypes/electra.nim +++ b/beacon_chain/spec/datatypes/electra.nim @@ -186,13 +186,13 @@ type data*: AttestationData signature*: ValidatorSig - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#aggregateandproof + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#aggregateandproof AggregateAndProof* = object aggregator_index*: uint64 # `ValidatorIndex` after validation aggregate*: Attestation selection_proof*: ValidatorSig - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#signedaggregateandproof + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#signedaggregateandproof SignedAggregateAndProof* = object message*: AggregateAndProof signature*: ValidatorSig @@ -257,7 +257,7 @@ type # Slot at which the aggregate signature was created (untrusted) signature_slot*: Slot - # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/altair/light-client/sync-protocol.md#lightclientoptimisticupdate + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/light-client/sync-protocol.md#lightclientoptimisticupdate LightClientOptimisticUpdate* = object # Header attested to by the sync committee attested_header*: LightClientHeader @@ -809,7 +809,7 @@ func normalize_merkle_branch*[N]( res[0 ..< depth] = branch[num_extra ..< branch.len] res -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/electra/light-client/fork.md#upgrading-light-client-data +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/electra/light-client/fork.md#upgrading-light-client-data func upgrade_lc_header_to_electra*( pre: deneb.LightClientHeader): LightClientHeader = LightClientHeader( diff --git a/beacon_chain/spec/datatypes/fulu.nim b/beacon_chain/spec/datatypes/fulu.nim index 4b797ab73c..1d63a7f2c2 100644 --- a/beacon_chain/spec/datatypes/fulu.nim +++ b/beacon_chain/spec/datatypes/fulu.nim @@ -88,7 +88,7 @@ type type DataColumn* = List[KzgCell, Limit(MAX_BLOB_COMMITMENTS_PER_BLOCK)] - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/das-core.md#datacolumnsidecar + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/fulu/das-core.md#datacolumnsidecar DataColumnSidecar* = object index*: ColumnIndex # Index of column in extended matrix column*: DataColumn diff --git a/beacon_chain/spec/datatypes/phase0.nim b/beacon_chain/spec/datatypes/phase0.nim index c60bc0f404..46ffa6c507 100644 --- a/beacon_chain/spec/datatypes/phase0.nim +++ b/beacon_chain/spec/datatypes/phase0.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2024 Status Research & Development GmbH +# Copyright (c) 2021-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -221,7 +221,7 @@ type deposits*: List[Deposit, Limit MAX_DEPOSITS] voluntary_exits*: List[TrustedSignedVoluntaryExit, Limit MAX_VOLUNTARY_EXITS] - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/phase0/beacon-chain.md#signedbeaconblock + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#signedbeaconblock SignedBeaconBlock* = object message*: BeaconBlock signature*: ValidatorSig diff --git a/beacon_chain/spec/forks.nim b/beacon_chain/spec/forks.nim index 1fae955baf..01f01a0f88 100644 --- a/beacon_chain/spec/forks.nim +++ b/beacon_chain/spec/forks.nim @@ -1673,7 +1673,7 @@ func compute_fork_data_root*(current_version: Version, genesis_validators_root: genesis_validators_root )) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/phase0/beacon-chain.md#compute_fork_digest +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#compute_fork_digest func compute_fork_digest*(current_version: Version, genesis_validators_root: Eth2Digest): ForkDigest = ## Return the 4-byte fork digest for the ``current_version`` and diff --git a/beacon_chain/spec/helpers.nim b/beacon_chain/spec/helpers.nim index bf07b49b0a..7f3280991f 100644 --- a/beacon_chain/spec/helpers.nim +++ b/beacon_chain/spec/helpers.nim @@ -203,7 +203,7 @@ func get_seed*(state: ForkyBeaconState, epoch: Epoch, domain_type: DomainType): epoch + EPOCHS_PER_HISTORICAL_VECTOR - MIN_SEED_LOOKAHEAD - 1) state.get_seed(epoch, domain_type, mix) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#add_flag +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#add_flag func add_flag*(flags: ParticipationFlags, flag_index: TimelyFlag): ParticipationFlags = let flag = ParticipationFlags(1'u8 shl ord(flag_index)) flags or flag @@ -384,7 +384,7 @@ func contextEpoch*(bootstrap: ForkyLightClientBootstrap): Epoch = func contextEpoch*(update: SomeForkyLightClientUpdate): Epoch = update.attested_header.beacon.slot.epoch -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/bellatrix/beacon-chain.md#is_merge_transition_complete +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/bellatrix/beacon-chain.md#is_merge_transition_complete func is_merge_transition_complete*( state: bellatrix.BeaconState | capella.BeaconState | deneb.BeaconState | electra.BeaconState | fulu.BeaconState): bool = @@ -422,7 +422,7 @@ func is_merge_transition_block( not is_merge_transition_complete(state) and body.execution_payload != defaultExecutionPayload -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/bellatrix/beacon-chain.md#is_execution_enabled +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/bellatrix/beacon-chain.md#is_execution_enabled func is_execution_enabled*( state: bellatrix.BeaconState | capella.BeaconState | deneb.BeaconState | electra.BeaconState | fulu.BeaconState, diff --git a/beacon_chain/spec/keystore.nim b/beacon_chain/spec/keystore.nim index 3669cb9718..758184800e 100644 --- a/beacon_chain/spec/keystore.nim +++ b/beacon_chain/spec/keystore.nim @@ -1386,7 +1386,7 @@ proc createWallet*(kdfKind: KdfKind, crypto: crypto, nextAccount: nextAccount.get(0)) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#bls_withdrawal_prefix +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#bls_withdrawal_prefix func makeWithdrawalCredentials*(k: ValidatorPubKey): Eth2Digest = var bytes = eth2digest(k.toRaw()) bytes.data[0] = BLS_WITHDRAWAL_PREFIX.uint8 diff --git a/beacon_chain/spec/light_client_sync.nim b/beacon_chain/spec/light_client_sync.nim index 3c44b965e2..8b1eb4b156 100644 --- a/beacon_chain/spec/light_client_sync.nim +++ b/beacon_chain/spec/light_client_sync.nim @@ -180,7 +180,7 @@ proc validate_light_client_update*( ok() -# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/altair/light-client/sync-protocol.md#apply_light_client_update +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/light-client/sync-protocol.md#apply_light_client_update func apply_light_client_update( store: var ForkyLightClientStore, update: SomeForkyLightClientUpdate): bool = diff --git a/beacon_chain/spec/network.nim b/beacon_chain/spec/network.nim index 88522aef89..56deffe557 100644 --- a/beacon_chain/spec/network.nim +++ b/beacon_chain/spec/network.nim @@ -72,7 +72,7 @@ func getAggregateAndProofsTopic*(forkDigest: ForkDigest): string = func getBlsToExecutionChangeTopic*(forkDigest: ForkDigest): string = eth2Prefix(forkDigest) & topicBlsToExecutionChangeSuffix -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#broadcast-attestation +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#broadcast-attestation func compute_subnet_for_attestation*( committees_per_slot: uint64, slot: Slot, committee_index: CommitteeIndex): SubnetId = @@ -88,19 +88,19 @@ func compute_subnet_for_attestation*( (committees_since_epoch_start + committee_index.asUInt64) mod ATTESTATION_SUBNET_COUNT) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#broadcast-attestation +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#broadcast-attestation func getAttestationTopic*(forkDigest: ForkDigest, subnetId: SubnetId): string = ## For subscribing and unsubscribing to/from a subnet. eth2Prefix(forkDigest) & "beacon_attestation_" & $(subnetId) & "/ssz_snappy" -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/p2p-interface.md#topics-and-messages +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/p2p-interface.md#topics-and-messages func getSyncCommitteeTopic*(forkDigest: ForkDigest, subcommitteeIdx: SyncSubcommitteeIndex): string = ## For subscribing and unsubscribing to/from a subnet. eth2Prefix(forkDigest) & "sync_committee_" & $subcommitteeIdx & "/ssz_snappy" -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/p2p-interface.md#topics-and-messages +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/p2p-interface.md#topics-and-messages func getSyncCommitteeContributionAndProofTopic*(forkDigest: ForkDigest): string = ## For subscribing and unsubscribing to/from a subnet. eth2Prefix(forkDigest) & "sync_committee_contribution_and_proof/ssz_snappy" diff --git a/beacon_chain/spec/peerdas_helpers.nim b/beacon_chain/spec/peerdas_helpers.nim index e47cf32f64..578f22de05 100644 --- a/beacon_chain/spec/peerdas_helpers.nim +++ b/beacon_chain/spec/peerdas_helpers.nim @@ -264,7 +264,7 @@ proc get_data_column_sidecars*(signed_beacon_block: electra.SignedBeaconBlock, ok(sidecars) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/fulu/peer-sampling.md#get_extended_sample_count +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/fulu/peer-sampling.md#get_extended_sample_count func get_extended_sample_count*(samples_per_slot: int, allowed_failures: int): int = diff --git a/beacon_chain/spec/presets/mainnet/altair_preset.nim b/beacon_chain/spec/presets/mainnet/altair_preset.nim index e22d89596f..9427f2f2e4 100644 --- a/beacon_chain/spec/presets/mainnet/altair_preset.nim +++ b/beacon_chain/spec/presets/mainnet/altair_preset.nim @@ -8,7 +8,7 @@ {.push raises: [].} # Mainnet preset - Altair -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/mainnet/altair.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/altair.yaml const # Updated penalty values # --------------------------------------------------------------- diff --git a/beacon_chain/spec/presets/mainnet/bellatrix_preset.nim b/beacon_chain/spec/presets/mainnet/bellatrix_preset.nim index ceaa94ae90..285fc0b6c8 100644 --- a/beacon_chain/spec/presets/mainnet/bellatrix_preset.nim +++ b/beacon_chain/spec/presets/mainnet/bellatrix_preset.nim @@ -8,7 +8,7 @@ {.push raises: [].} # Mainnet preset - Bellatrix -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/mainnet/bellatrix.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/bellatrix.yaml const # Updated penalty values # --------------------------------------------------------------- diff --git a/beacon_chain/spec/presets/mainnet/capella_preset.nim b/beacon_chain/spec/presets/mainnet/capella_preset.nim index aa44c62b38..2bd2db38c8 100644 --- a/beacon_chain/spec/presets/mainnet/capella_preset.nim +++ b/beacon_chain/spec/presets/mainnet/capella_preset.nim @@ -8,7 +8,7 @@ {.push raises: [].} # Mainnet preset - Capella -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/mainnet/capella.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/capella.yaml const # Max operations per block # --------------------------------------------------------------- diff --git a/beacon_chain/spec/presets/minimal/altair_preset.nim b/beacon_chain/spec/presets/minimal/altair_preset.nim index fb49f13219..6b9e188f59 100644 --- a/beacon_chain/spec/presets/minimal/altair_preset.nim +++ b/beacon_chain/spec/presets/minimal/altair_preset.nim @@ -8,7 +8,7 @@ {.push raises: [].} # Minimal preset - Altair -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/minimal/altair.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/minimal/altair.yaml const # Updated penalty values # --------------------------------------------------------------- diff --git a/beacon_chain/spec/presets/minimal/bellatrix_preset.nim b/beacon_chain/spec/presets/minimal/bellatrix_preset.nim index 6cdc0bb7f0..8bba794930 100644 --- a/beacon_chain/spec/presets/minimal/bellatrix_preset.nim +++ b/beacon_chain/spec/presets/minimal/bellatrix_preset.nim @@ -8,7 +8,7 @@ {.push raises: [].} # Minimal preset - Bellatrix -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/minimal/bellatrix.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/minimal/bellatrix.yaml const # Updated penalty values # --------------------------------------------------------------- diff --git a/beacon_chain/spec/presets/minimal/capella_preset.nim b/beacon_chain/spec/presets/minimal/capella_preset.nim index 587435f0e7..84e822d46c 100644 --- a/beacon_chain/spec/presets/minimal/capella_preset.nim +++ b/beacon_chain/spec/presets/minimal/capella_preset.nim @@ -8,7 +8,7 @@ {.push raises: [].} # Minimal preset - Capella -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/presets/minimal/capella.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/minimal/capella.yaml const # Max operations per block # --------------------------------------------------------------- diff --git a/beacon_chain/spec/signatures.nim b/beacon_chain/spec/signatures.nim index de5de34707..075f756348 100644 --- a/beacon_chain/spec/signatures.nim +++ b/beacon_chain/spec/signatures.nim @@ -59,7 +59,7 @@ func compute_epoch_signing_root*( let domain = get_domain(fork, DOMAIN_RANDAO, epoch, genesis_validators_root) compute_signing_root(epoch, domain) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#randao-reveal +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#randao-reveal func get_epoch_signature*( fork: Fork, genesis_validators_root: Eth2Digest, epoch: Epoch, privkey: ValidatorPrivKey): CookedSig = @@ -145,7 +145,7 @@ func compute_attestation_signing_root*( fork, DOMAIN_BEACON_ATTESTER, epoch, genesis_validators_root) compute_signing_root(attestation_data, domain) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#aggregate-signature +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#aggregate-signature func get_attestation_signature*( fork: Fork, genesis_validators_root: Eth2Digest, attestation_data: AttestationData, @@ -355,7 +355,7 @@ proc get_contribution_and_proof_signature*( blsSign(privkey, signing_root.data) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/validator.md#aggregation-selection +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/validator.md#aggregation-selection func is_sync_committee_aggregator*(signature: ValidatorSig): bool = let signatureDigest = eth2digest(signature.blob) diff --git a/beacon_chain/spec/state_transition.nim b/beacon_chain/spec/state_transition.nim index 8426b8096b..f8e388dc5b 100644 --- a/beacon_chain/spec/state_transition.nim +++ b/beacon_chain/spec/state_transition.nim @@ -382,7 +382,7 @@ func partialBeaconBlock*( _: ExecutionRequests): auto = const consensusFork = typeof(state).kind - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#preparing-for-a-beaconblock + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#preparing-for-a-beaconblock var res = consensusFork.BeaconBlock( slot: state.data.slot, proposer_index: proposer_index.uint64, @@ -512,7 +512,7 @@ proc makeBeaconBlockWithRewards*( transactions_root.get when executionPayload is deneb.ExecutionPayloadForSigning: - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/deneb/beacon-chain.md#beaconblockbody + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/deneb/beacon-chain.md#beaconblockbody forkyState.data.latest_block_header.body_root = hash_tree_root( [hash_tree_root(randao_reveal), hash_tree_root(eth1_data), diff --git a/beacon_chain/spec/state_transition_block.nim b/beacon_chain/spec/state_transition_block.nim index d63b08c1e2..fb1a99527f 100644 --- a/beacon_chain/spec/state_transition_block.nim +++ b/beacon_chain/spec/state_transition_block.nim @@ -10,8 +10,8 @@ # State transition - block processing as described in # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/phase0/beacon-chain.md#block-processing # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.9/specs/altair/beacon-chain.md#block-processing -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/bellatrix/beacon-chain.md#block-processing -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/capella/beacon-chain.md#block-processing +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/bellatrix/beacon-chain.md#block-processing +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/capella/beacon-chain.md#block-processing # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/deneb/beacon-chain.md#block-processing # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.7/specs/electra/beacon-chain.md#block-processing # @@ -801,7 +801,7 @@ func get_participant_reward*(total_active_balance: Gwei): Gwei = func get_proposer_reward*(participant_reward: Gwei): Gwei = participant_reward * PROPOSER_WEIGHT div (WEIGHT_DENOMINATOR - PROPOSER_WEIGHT) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#sync-aggregate-processing +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#sync-aggregate-processing proc process_sync_aggregate*( state: var (altair.BeaconState | bellatrix.BeaconState | capella.BeaconState | deneb.BeaconState | electra.BeaconState | @@ -1213,7 +1213,7 @@ proc process_block*( ok(? process_operations(cfg, state, blck.body, 0.Gwei, flags, cache)) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#block-processing +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#block-processing # TODO workaround for https://github.com/nim-lang/Nim/issues/18095 # copy of datatypes/altair.nim type SomeAltairBlock = diff --git a/beacon_chain/spec/state_transition_epoch.nim b/beacon_chain/spec/state_transition_epoch.nim index 522091f8e5..c356212093 100644 --- a/beacon_chain/spec/state_transition_epoch.nim +++ b/beacon_chain/spec/state_transition_epoch.nim @@ -155,7 +155,7 @@ func process_attestations*( if v.flags.contains RewardFlags.isPreviousEpochHeadAttester: info.balances.previous_epoch_head_attesters_raw += validator_balance -# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.6/specs/phase0/beacon-chain.md#helpers +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#helpers # get_eligible_validator_indices func is_eligible_validator*(validator: RewardStatus): bool = validator.flags.contains(RewardFlags.isActiveInPreviousEpoch) or @@ -174,7 +174,7 @@ func is_eligible_validator*(validator: ParticipationInfo): bool = from ./datatypes/deneb import BeaconState -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#get_unslashed_participating_indices +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#get_unslashed_participating_indices func get_unslashed_participating_balances*( state: altair.BeaconState | bellatrix.BeaconState | capella.BeaconState | deneb.BeaconState | electra.BeaconState | fulu.BeaconState): @@ -462,7 +462,7 @@ proc compute_unrealized_finality*( justified: jfRes.current_justified_checkpoint, finalized: jfRes.finalized_checkpoint) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/phase0/beacon-chain.md#helpers +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#helpers func get_base_reward_sqrt*(state: phase0.BeaconState, index: ValidatorIndex, total_balance_sqrt: auto): Gwei = # Spec function recalculates total_balance every time, which creates an @@ -594,7 +594,7 @@ func get_inactivity_penalty_delta*( delta -# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.6/specs/phase0/beacon-chain.md#get_attestation_deltas +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#get_attestation_deltas func get_attestation_deltas( state: phase0.BeaconState, info: var phase0.EpochInfo) = ## Update rewards with attestation reward/penalty deltas for each validator. @@ -650,7 +650,7 @@ func get_base_reward_increment*( EFFECTIVE_BALANCE_INCREMENT.Gwei increments * base_reward_per_increment -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#get_flag_index_deltas +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#get_flag_index_deltas func get_flag_index_reward*( state: altair.BeaconState | bellatrix.BeaconState | capella.BeaconState | deneb.BeaconState | electra.BeaconState | fulu.BeaconState, @@ -976,7 +976,7 @@ func process_registry_updates*( ok() # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.7/specs/phase0/beacon-chain.md#slashings -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#slashings +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#slashings # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/bellatrix/beacon-chain.md#slashings func get_adjusted_total_slashing_balance*( state: ForkyBeaconState, total_balance: Gwei): Gwei = @@ -1038,7 +1038,7 @@ func get_slashing_penalty*( # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.7/specs/phase0/beacon-chain.md#slashings # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.9/specs/altair/beacon-chain.md#slashings -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/bellatrix/beacon-chain.md#slashings +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/bellatrix/beacon-chain.md#slashings # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.7/specs/electra/beacon-chain.md#modified-process_slashings func get_slashing( state: ForkyBeaconState, total_balance: Gwei, vidx: ValidatorIndex): Gwei = @@ -1133,14 +1133,14 @@ func process_historical_roots_update*(state: var ForkyBeaconState) = if not state.historical_roots.add state.compute_historical_root(): raiseAssert "no more room for historical roots, so long and thanks for the fish!" -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/phase0/beacon-chain.md#participation-records-rotation +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/beacon-chain.md#participation-records-rotation func process_participation_record_updates*(state: var phase0.BeaconState) = # Rotate current/previous epoch attestations - using swap avoids copying all # elements using a slow genericSeqAssign state.previous_epoch_attestations.clear() swap(state.previous_epoch_attestations, state.current_epoch_attestations) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#participation-flags-updates +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#participation-flags-updates func process_participation_flag_updates*( state: var (altair.BeaconState | bellatrix.BeaconState | capella.BeaconState | deneb.BeaconState | @@ -1190,7 +1190,7 @@ template compute_inactivity_update( min(cfg.INACTIVITY_SCORE_RECOVERY_RATE, inactivity_score) inactivity_score -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.9/specs/altair/beacon-chain.md#inactivity-scores +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#inactivity-scores func process_inactivity_updates*( cfg: RuntimeConfig, state: var (altair.BeaconState | bellatrix.BeaconState | @@ -1502,7 +1502,7 @@ proc process_epoch*( let epoch = get_current_epoch(state) info.init(state) - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#justification-and-finalization + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#justification-and-finalization process_justification_and_finalization(state, info.balances, flags) # state.slot hasn't been incremented yet. @@ -1545,7 +1545,7 @@ proc process_epoch*( let epoch = get_current_epoch(state) info.init(state) - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/beacon-chain.md#justification-and-finalization + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/beacon-chain.md#justification-and-finalization process_justification_and_finalization(state, info.balances, flags) # state.slot hasn't been incremented yet. diff --git a/beacon_chain/validators/beacon_validators.nim b/beacon_chain/validators/beacon_validators.nim index 9f94d4a5c4..b6bd2dfd60 100644 --- a/beacon_chain/validators/beacon_validators.nim +++ b/beacon_chain/validators/beacon_validators.nim @@ -1809,8 +1809,8 @@ proc signAndSendAggregate( signAndSendAggregatedAttestations() else: - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#construct-aggregate - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#aggregateandproof + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#construct-aggregate + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#aggregateandproof var msg = phase0.SignedAggregateAndProof( message: phase0.AggregateAndProof( aggregator_index: distinctBase validator_index, @@ -2165,7 +2165,7 @@ proc handleValidatorDuties*(node: BeaconNode, lastSlot, slot: Slot) {.async: (ra updateValidatorMetrics(node) # the important stuff is done, update the vanity numbers - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#broadcast-aggregate + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#broadcast-aggregate # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/altair/validator.md#broadcast-sync-committee-contribution # Wait 2 / 3 of the slot time to allow messages to propagate, then collect # the result in aggregates diff --git a/beacon_chain/validators/slashing_protection_v2.nim b/beacon_chain/validators/slashing_protection_v2.nim index 662e9b3faa..6337c3ce69 100644 --- a/beacon_chain/validators/slashing_protection_v2.nim +++ b/beacon_chain/validators/slashing_protection_v2.nim @@ -36,7 +36,7 @@ export results # - https://notes.ethereum.org/@djrtwo/Bkn3zpwxB#Validator-responsibilities # # Phase 0 spec - Honest Validator - how to avoid slashing -# - https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#how-to-avoid-slashing +# - https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#how-to-avoid-slashing # # In-depth reading on slashing conditions # @@ -58,7 +58,7 @@ export results # 2. An attester can get slashed for signing # two attestations that together violate # the Casper FFG slashing conditions. -# - https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#ffg-vote +# - https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#ffg-vote # The "source" is the current_justified_epoch # The "target" is the current_epoch # diff --git a/beacon_chain/validators/validator_pool.nim b/beacon_chain/validators/validator_pool.nim index 7577fb6dba..5097146134 100644 --- a/beacon_chain/validators/validator_pool.nim +++ b/beacon_chain/validators/validator_pool.nim @@ -535,7 +535,7 @@ proc signData(v: AttachedValidator, else: v.signWithDistributedKey(request) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#signature +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#signature proc getBlockSignature*(v: AttachedValidator, fork: Fork, genesis_validators_root: Eth2Digest, slot: Slot, block_root: Eth2Digest, @@ -891,7 +891,7 @@ proc getSyncCommitteeMessage*(v: AttachedValidator, ) ) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/altair/validator.md#aggregation-selection +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/altair/validator.md#aggregation-selection proc getSyncCommitteeSelectionProof*(v: AttachedValidator, fork: Fork, genesis_validators_root: Eth2Digest, slot: Slot, @@ -927,7 +927,7 @@ proc getContributionAndProofSignature*(v: AttachedValidator, fork: Fork, fork, genesis_validators_root, contribution_and_proof) await v.signData(request) -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#randao-reveal +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#randao-reveal proc getEpochSignature*(v: AttachedValidator, fork: Fork, genesis_validators_root: Eth2Digest, epoch: Epoch ): Future[SignatureResult] diff --git a/tests/consensus_spec/altair/test_fixture_light_client_sync_protocol.nim b/tests/consensus_spec/altair/test_fixture_light_client_sync_protocol.nim index 21c7e8e9d8..54ed20c326 100644 --- a/tests/consensus_spec/altair/test_fixture_light_client_sync_protocol.nim +++ b/tests/consensus_spec/altair/test_fixture_light_client_sync_protocol.nim @@ -23,7 +23,7 @@ import # Test utilities ../../testutil, ../../testblockutil -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/tests/core/pyspec/eth2spec/test/helpers/sync_committee.py#L27-L44 +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/tests/core/pyspec/eth2spec/test/helpers/sync_committee.py#L27-L44 proc compute_aggregate_sync_committee_signature( cfg: RuntimeConfig, forked: ForkedHashedBeaconState, diff --git a/tests/consensus_spec/fixtures_utils.nim b/tests/consensus_spec/fixtures_utils.nim index 9e7a592dbc..b8a4602710 100644 --- a/tests/consensus_spec/fixtures_utils.nim +++ b/tests/consensus_spec/fixtures_utils.nim @@ -90,7 +90,7 @@ type rewards*: List[Gwei, Limit VALIDATOR_REGISTRY_LIMIT] penalties*: List[Gwei, Limit VALIDATOR_REGISTRY_LIMIT] - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/specs/phase0/validator.md#eth1block + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/validator.md#eth1block Eth1Block* = object timestamp*: uint64 deposit_root*: Eth2Digest diff --git a/tests/consensus_spec/test_fixture_kzg.nim b/tests/consensus_spec/test_fixture_kzg.nim index c8f37938b7..58b3dd31cd 100644 --- a/tests/consensus_spec/test_fixture_kzg.nim +++ b/tests/consensus_spec/test_fixture_kzg.nim @@ -76,7 +76,7 @@ proc runVerifyKzgProofTest(suiteName, suitePath, path: string) = y = fromHex[32](data["input"]["y"].getStr) proof = fromHex[48](data["input"]["proof"].getStr) - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/tests/formats/kzg_4844/verify_kzg_proof.md#condition + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/tests/formats/kzg_4844/verify_kzg_proof.md#condition # "If the commitment or proof is invalid (e.g. not on the curve or not in # the G1 subgroup of the BLS curve) or `z` or `y` are not a valid BLS # field element, it should error, i.e. the output should be `null`." @@ -236,7 +236,7 @@ proc runVerifyCellKzgProofBatchTest(suiteName, suitePath, path: string) = cells = data["input"]["cells"].mapIt(fromHex[2048](it.getStr)) proofs = data["input"]["proofs"].mapIt(fromHex[48](it.getStr)) - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.1/tests/formats/kzg_7594/verify_cell_kzg_proof_batch.md#condition + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/tests/formats/kzg_7594/verify_cell_kzg_proof_batch.md#condition # If the blob is invalid (e.g. incorrect length or one of the 32-byte # blocks does not represent a BLS field element) it should error, i.e. the # the output should be `null`. diff --git a/tests/testblockutil.nim b/tests/testblockutil.nim index 8469de18c9..cf6d2eadbe 100644 --- a/tests/testblockutil.nim +++ b/tests/testblockutil.nim @@ -89,7 +89,7 @@ func signBlock( from eth/eip1559 import EIP1559_INITIAL_BASE_FEE, calcEip1599BaseFee from eth/common/eth_types import EMPTY_ROOT_HASH, GasInt -proc build_empty_merge_execution_payload(state: bellatrix.BeaconState): +func build_empty_merge_execution_payload(state: bellatrix.BeaconState): bellatrix.ExecutionPayloadForSigning = ## Assuming a pre-state of the same slot, build a valid ExecutionPayload ## without any transactions from a non-merged block. @@ -118,7 +118,7 @@ proc build_empty_merge_execution_payload(state: bellatrix.BeaconState): bellatrix.ExecutionPayloadForSigning(executionPayload: payload, blockValue: Wei.zero) -proc build_empty_execution_payload( +func build_empty_execution_payload( state: bellatrix.BeaconState, feeRecipient: Eth1Address): bellatrix.ExecutionPayloadForSigning = ## Assuming a pre-state of the same slot, build a valid ExecutionPayload From e5f7c24e2a87becf9c8ef7b685b8a06fc729b4b6 Mon Sep 17 00:00:00 2001 From: kdeme <7857583+kdeme@users.noreply.github.com> Date: Sat, 15 Feb 2025 00:09:13 +0100 Subject: [PATCH 07/46] Bump nim-eth submodule (#6926) - Improvements to discv5 sessions - Adjust uTP benchmarking tests to use multiple nodes - Discv5 Protocol: Add support for banning nodes - Reduce declared but not used warnings - Optimize RLP serialization - Discv5 Routing Table: Add support for banning nodes - use the common CI workflow - add discv5_network_byte metric in discoveryv5 protocol - ecies: cleanup --- vendor/nim-eth | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/nim-eth b/vendor/nim-eth index dcfbc4291d..e973d0b8ef 160000 --- a/vendor/nim-eth +++ b/vendor/nim-eth @@ -1 +1 @@ -Subproject commit dcfbc4291d39b59563828c3e32be4d51a2f25931 +Subproject commit e973d0b8ef0d49ec8094f88d606174c862cc964c From 7309f7dadcc9621a8b32f1c2e20e0ecd44b85c70 Mon Sep 17 00:00:00 2001 From: tersec Date: Sat, 15 Feb 2025 01:49:31 +0000 Subject: [PATCH 08/46] add --finalized-checkpoint-state suggestion to the TNS state download timeout message (#6927) --- beacon_chain/consensus_object_pools/block_clearance.nim | 6 ------ beacon_chain/trusted_node_sync.nim | 6 ++++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/beacon_chain/consensus_object_pools/block_clearance.nim b/beacon_chain/consensus_object_pools/block_clearance.nim index b05468f192..b42125bc2c 100644 --- a/beacon_chain/consensus_object_pools/block_clearance.nim +++ b/beacon_chain/consensus_object_pools/block_clearance.nim @@ -8,10 +8,8 @@ {.push raises: [].} import - std/sequtils, chronicles, results, - stew/assign2, ../spec/[ beaconstate, forks, signatures, signatures_batch, state_transition, state_transition_epoch], @@ -504,10 +502,6 @@ proc addBackfillBlockData*( return ok() return err(error) startTick = Moment.now() - parentBlock = dag.getForkedBlock(parent.bid.root).get() - trustedStateRoot = - withBlck(parentBlock): - forkyBlck.message.state_root clearanceBlock = BlockSlotId.init(parent.bid, forkyBlck.message.slot) updateFlags1 = dag.updateFlags # TODO (cheatfate): {skipLastStateRootCalculation} flag here could diff --git a/beacon_chain/trusted_node_sync.nim b/beacon_chain/trusted_node_sync.nim index 06f32d0aae..cb8c9fed98 100644 --- a/beacon_chain/trusted_node_sync.nim +++ b/beacon_chain/trusted_node_sync.nim @@ -16,9 +16,11 @@ import ./spec/[beaconstate, eth2_merkleization, forks, light_client_sync, network, presets, state_transition, deposit_snapshots], - "."/[beacon_clock, beacon_chain_db, era_db] + "."/[beacon_chain_db, era_db] from presto import RestDecodingError +from "."/beacon_clock import + BeaconClock, fromFloatSeconds, getBeaconTimeFn, init const largeRequestsTimeout = 120.seconds # Downloading large items such as states. @@ -337,7 +339,7 @@ proc doTrustedNodeSync*( else: tmp awaitWithTimeout(client.getStateV2(id, cfg), largeRequestsTimeout): - error "Attempt to download checkpoint state timed out" + error "Attempt to download checkpoint state timed out; https://nimbus.guide/trusted-node-sync.html#sync-from-checkpoint-files provides an alternative approach" quit 1 except CatchableError as exc: error "Unable to download checkpoint state", From 9dbeb4e1969f833017be87cf371ba69395dbce62 Mon Sep 17 00:00:00 2001 From: Agnish Ghosh <80243668+agnxsh@users.noreply.github.com> Date: Mon, 17 Feb 2025 20:01:35 +0530 Subject: [PATCH 09/46] add: basic validator custody (#6929) * add: basic validator custody * address review comments * renaming to snake case --- beacon_chain/spec/datatypes/fulu.nim | 10 +++++++++- beacon_chain/spec/peerdas_helpers.nim | 10 ++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/beacon_chain/spec/datatypes/fulu.nim b/beacon_chain/spec/datatypes/fulu.nim index 1d63a7f2c2..8f2ad6d084 100644 --- a/beacon_chain/spec/datatypes/fulu.nim +++ b/beacon_chain/spec/datatypes/fulu.nim @@ -59,11 +59,19 @@ const # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#configuration DATA_COLUMN_SIDECAR_SUBNET_COUNT* = 128 - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/das-core.md#custody-setting + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/fulu/das-core.md#custody-setting SAMPLES_PER_SLOT* = 8 CUSTODY_REQUIREMENT* = 4 NUMBER_OF_CUSTODY_GROUPS* = 128 + # Minimum number of custody groups an honest node with + # validators attached custodies and serves samples from + VALIDATOR_CUSTODY_REQUIREMENT* = 8 + + # Balance increment corresponding to one additional group to custody + # 2**5 * 10**9 (= 32,000,000,000) Gwei + BALANCE_PER_ADDITIONAL_CUSTODY_GROUP*: uint64 = 32000000000'u64 + # Number of columns in the network per custody group COLUMNS_PER_GROUP* = NUMBER_OF_COLUMNS div NUMBER_OF_CUSTODY_GROUPS diff --git a/beacon_chain/spec/peerdas_helpers.nim b/beacon_chain/spec/peerdas_helpers.nim index 578f22de05..a57c426658 100644 --- a/beacon_chain/spec/peerdas_helpers.nim +++ b/beacon_chain/spec/peerdas_helpers.nim @@ -342,3 +342,13 @@ proc verify_data_column_sidecar_kzg_proofs*(sidecar: DataColumnSidecar): return err("DataColumnSidecar: validation failed") ok() + +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/fulu/das-core.md#validator-custody +func get_validators_custody_requirement*(state: fulu.BeaconState, + validator_indices: openArray[ValidatorIndex]): + uint64 = + var total_node_balance: Gwei + for index in validator_indices: + total_node_balance += state.balances[index] + let count = total_node_balance div BALANCE_PER_ADDITIONAL_CUSTODY_GROUP + min(max(count.uint64, VALIDATOR_CUSTODY_REQUIREMENT.uint64), NUMBER_OF_CUSTODY_GROUPS.uint64) From 00f2bb8a8e192245d2503b27f7d5cf8aefad694a Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 17 Feb 2025 16:02:30 +0100 Subject: [PATCH 10/46] Bump nim-libbacktrace to `624d1f8719d9e34c5d0c1f15652168a1222e1782` (#6930) - Always use system unwinder --- docker/dist/base_image/Dockerfile.macos | 5 +++-- docker/dist/base_image/Dockerfile.win64 | 5 +++-- docker/dist/entry_point.sh | 4 +--- docs/the_nimbus_book/src/install.md | 11 +++++------ nix/default.nix | 2 +- vendor/nim-libbacktrace | 2 +- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/docker/dist/base_image/Dockerfile.macos b/docker/dist/base_image/Dockerfile.macos index 5a195faa6d..1aae9b49e1 100644 --- a/docker/dist/base_image/Dockerfile.macos +++ b/docker/dist/base_image/Dockerfile.macos @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2023 Status Research & Development GmbH +# Copyright (c) 2021-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -12,6 +12,8 @@ # The only way to make this a part of our reproducible build system is to build # it once, upload it to Docker Hub and make sure it's being pulled regularly so # it's not deleted after 6 months of inactivity. +# +# Mar 2025: CMake is no longer needed, removable when base image is updated FROM ubuntu:20.04 @@ -28,4 +30,3 @@ RUN apt-get -qq update \ COPY "build_osxcross.sh" "/root/" RUN cd /root \ && ./build_osxcross.sh - diff --git a/docker/dist/base_image/Dockerfile.win64 b/docker/dist/base_image/Dockerfile.win64 index 1ffdd22df5..7e52ef5221 100644 --- a/docker/dist/base_image/Dockerfile.win64 +++ b/docker/dist/base_image/Dockerfile.win64 @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2023 Status Research & Development GmbH +# Copyright (c) 2021-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -12,6 +12,8 @@ # The only way to make this a part of our reproducible build system is to build # it once, upload it to Docker Hub and make sure it's being pulled regularly so # it's not deleted after 6 months of inactivity. +# +# Mar 2025: CMake is no longer needed, removable when base image is updated FROM ubuntu:20.04 @@ -55,4 +57,3 @@ RUN \ && cd /opt/mxe \ && make -j $(nproc) MXE_TARGETS='x86_64-w64-mingw32.static' MXE_USE_CCACHE='' DONT_CHECK_REQUIREMENTS=1 cc \ && rm -rf /opt/mxe/.log /opt/mxe/pkg - diff --git a/docker/dist/entry_point.sh b/docker/dist/entry_point.sh index 6b828a2792..966503f761 100755 --- a/docker/dist/entry_point.sh +++ b/docker/dist/entry_point.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2020-2024 Status Research & Development GmbH. Licensed under +# Copyright (c) 2020-2025 Status Research & Development GmbH. Licensed under # either of: # - Apache License, version 2.0 # - MIT license @@ -140,7 +140,6 @@ elif [[ "${PLATFORM}" == "macOS_amd64" ]]; then CC="${CC}" \ AR="x86_64-apple-darwin${DARWIN_VER}-ar" \ RANLIB="x86_64-apple-darwin${DARWIN_VER}-ranlib" \ - CMAKE="x86_64-apple-darwin${DARWIN_VER}-cmake" \ DSYMUTIL="x86_64-apple-darwin${DARWIN_VER}-dsymutil" \ FORCE_DSYMUTIL=1 \ USE_VENDORED_LIBUNWIND=1 \ @@ -172,7 +171,6 @@ elif [[ "${PLATFORM}" == "macOS_arm64" ]]; then CC="${CC}" \ AR="arm64-apple-darwin${DARWIN_VER}-ar" \ RANLIB="arm64-apple-darwin${DARWIN_VER}-ranlib" \ - CMAKE="arm64-apple-darwin${DARWIN_VER}-cmake" \ DSYMUTIL="arm64-apple-darwin${DARWIN_VER}-dsymutil" \ FORCE_DSYMUTIL=1 \ USE_VENDORED_LIBUNWIND=1 \ diff --git a/docs/the_nimbus_book/src/install.md b/docs/the_nimbus_book/src/install.md index 309ef21498..5c8c78749d 100644 --- a/docs/the_nimbus_book/src/install.md +++ b/docs/the_nimbus_book/src/install.md @@ -14,7 +14,6 @@ Check that your machine matches the [minimal system requirements](./hardware.md) When building from source, you will need additional build dependencies to be installed: - Developer tools (C compiler, Make, Bash, Git) -- [CMake](https://cmake.org/) @@ -26,21 +25,21 @@ When building from source, you will need additional build dependencies to be ins ```sh # Debian and Ubuntu - sudo apt-get install build-essential git-lfs cmake + sudo apt-get install build-essential git-lfs # Fedora - dnf install @development-tools cmake + dnf install @development-tools # Arch Linux, using an AUR manager - yourAURmanager -S base-devel git-lfs cmake + yourAURmanager -S base-devel git-lfs ``` === "macOS" - With [Homebrew](https://brew.sh/): + The Command Line Tools package is available as part of Xcode and can be installed via the Terminal application: ```sh - brew install cmake + xcode-select --install ``` === "Windows" diff --git a/nix/default.nix b/nix/default.nix index 0235e46ee0..ee9ffeed75 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -35,7 +35,7 @@ in stdenv.mkDerivation rec { fakeGit = writeScriptBin "git" "echo ${version}"; fakeLsbRelease = writeScriptBin "lsb_release" "echo nix"; in - with pkgs; [ fakeGit fakeLsbRelease which cmake ] + with pkgs; [ fakeGit fakeLsbRelease which ] ++ lib.optionals stdenv.isDarwin [ pkgs.darwin.cctools ]; enableParallelBuilding = true; diff --git a/vendor/nim-libbacktrace b/vendor/nim-libbacktrace index 616e5f4a6e..624d1f8719 160000 --- a/vendor/nim-libbacktrace +++ b/vendor/nim-libbacktrace @@ -1 +1 @@ -Subproject commit 616e5f4a6e2c751b85487e2e855c6b7f90848503 +Subproject commit 624d1f8719d9e34c5d0c1f15652168a1222e1782 From ac3e5a2ef19b86a396170a6b29fab2da4075341a Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 17 Feb 2025 16:59:45 +0100 Subject: [PATCH 11/46] Remove unused `StatusUpdateInterval` (#6932) The `StatusUpdateInterval` definition is not used anywhere. Remove it. --- beacon_chain/sync/sync_manager.nim | 3 --- 1 file changed, 3 deletions(-) diff --git a/beacon_chain/sync/sync_manager.nim b/beacon_chain/sync/sync_manager.nim index fbc4dccb63..005f0d4d92 100644 --- a/beacon_chain/sync/sync_manager.nim +++ b/beacon_chain/sync/sync_manager.nim @@ -25,9 +25,6 @@ const SyncWorkersCount* = 10 ## Number of sync workers to spawn - StatusUpdateInterval* = chronos.minutes(1) - ## Minimum time between two subsequent calls to update peer's status - StatusExpirationTime* = chronos.minutes(2) ## Time time it takes for the peer's status information to expire. From 913ff37a2dde3309958a66793d864ae7e667b284 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 17 Feb 2025 17:07:38 +0100 Subject: [PATCH 12/46] Add log parameters to sync manager debug message (#6933) There is a single debug message emitted by `sync_manager` that does not include log parameters. Add them, so that `topics` filtering works. --- beacon_chain/sync/sync_manager.nim | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/beacon_chain/sync/sync_manager.nim b/beacon_chain/sync/sync_manager.nim index 005f0d4d92..37096c988b 100644 --- a/beacon_chain/sync/sync_manager.nim +++ b/beacon_chain/sync/sync_manager.nim @@ -223,7 +223,7 @@ proc getBlobSidecars[A, B](man: SyncManager[A, B], peer: A, mixin getScore, `==` doAssert(not(req.isEmpty()), "Request must not be empty!") - debug "Requesting blobs sidecars from peer", + debug "Requesting blob sidecars from peer", request = req, peer_score = req.item.getScore(), peer_speed = req.item.netKbps(), @@ -347,7 +347,12 @@ proc getSyncBlockData*[T]( if shouldGetBlob: let blobData = block: - debug "Requesting blobs sidecars from peer" + debug "Requesting blob sidecars from peer", + slot = slot, + peer = peer, + peer_score = peer.getScore(), + peer_speed = peer.netKbps(), + topics = "syncman" let res = await blobSidecarsByRange(peer, slot, 1'u64) if res.isErr(): peer.updateScore(PeerScoreNoValues) From 7c9eca4143191867c02e441216a19818b77ec4c9 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 17 Feb 2025 18:00:44 +0100 Subject: [PATCH 13/46] Bump nim-testutils to `v0.6.0` (#6931) - https://github.com/status-im/nim-testutils/releases/tag/v0.6.0 --- vendor/nim-testutils | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/nim-testutils b/vendor/nim-testutils index 4d37244f9f..94d68e796c 160000 --- a/vendor/nim-testutils +++ b/vendor/nim-testutils @@ -1 +1 @@ -Subproject commit 4d37244f9f5e1acd8592a4ceb5c3fc47bc160181 +Subproject commit 94d68e796c045d5b37cabc6be32d7bfa168f8857 From 6826c723e7ed773dec242051456a216ad2f190de Mon Sep 17 00:00:00 2001 From: Jakub Date: Mon, 17 Feb 2025 18:20:37 +0100 Subject: [PATCH 14/46] lower testnet base ports to avoid port clashes (#6934) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hitting the same ports as `status-desktop` is using during end-to-end tests is more probably when our rage is higher. Signed-off-by: Jakub Sokołowski --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index e6bdf76198..e0faa59f23 100644 --- a/Makefile +++ b/Makefile @@ -210,10 +210,10 @@ libbacktrace: # - --base-el-rpc-port + --el-port-offset * [0, --nodes + --light-clients) # - --base-el-ws-port + --el-port-offset * [0, --nodes + --light-clients) # - --base-el-auth-rpc-port + --el-port-offset * [0, --nodes + --light-clients) -UNIT_TEST_BASE_PORT := 39960 -REST_TEST_BASE_PORT := 40990 -MINIMAL_TESTNET_BASE_PORT := 35001 -MAINNET_TESTNET_BASE_PORT := 36501 +UNIT_TEST_BASE_PORT := 29960 +REST_TEST_BASE_PORT := 30990 +MINIMAL_TESTNET_BASE_PORT := 25001 +MAINNET_TESTNET_BASE_PORT := 26501 restapi-test: ./tests/simulation/restapi.sh \ From f61a1e1db4306335116d5a77c5977e74297f08c8 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 17 Feb 2025 18:56:13 +0100 Subject: [PATCH 15/46] Remove unused functions blob test (#6935) `createBlobSidecars` and `createBlobRange` are not used in syncman tests and can be removed. --- tests/test_sync_manager.nim | 46 ------------------------------------- 1 file changed, 46 deletions(-) diff --git a/tests/test_sync_manager.nim b/tests/test_sync_manager.nim index eb683da52a..b59e86ff60 100644 --- a/tests/test_sync_manager.nim +++ b/tests/test_sync_manager.nim @@ -89,52 +89,6 @@ func createBlobs( inc sidecarIdx res -func createBlobSidecars(srange: SyncRange, map: string): seq[BlobSidecars] = - var - res: seq[BlobSidecars] - notFirst = false - doAssert(lenu64(map) == srange.count, - "Length of map string should be equal to range size") - for index in 0 ..< srange.count: - let slot = srange.slot + index - if map[index] == '.': - if notFirst: - res.add(default(BlobSidecars)) - else: - let count = Base10.decode(uint8, [map[index]]).get() - doAssert(count > 0 and count <= 9) - var subres: seq[ref BlobSidecar] - for i in 0 ..< int(count): - let car = - newClone(BlobSidecar( - index: uint64(i), - signed_block_header: - SignedBeaconBlockHeader( - message: BeaconBlockHeader(slot: slot)))) - subres.add(car) - res.add(BlobSidecars(subres)) - notFirst = true - res - -func createBlobRange(srange: SyncRange, map: string): seq[ref BlobSidecar] = - var res: seq[ref BlobSidecar] - doAssert(lenu64(map) == srange.count, - "Length of map string should be equal to range size") - for index in 0 ..< srange.count: - let slot = srange.slot + index - if map[index] != '.': - let count = Base10.decode(uint8, [map[index]]).get() - doAssert(count > 0 and count <= 9) - for i in 0 ..< int(count): - let car = - newClone(BlobSidecar( - index: uint64(i), - signed_block_header: - SignedBeaconBlockHeader( - message: BeaconBlockHeader(slot: slot)))) - res.add(car) - res - func collector(queue: AsyncQueue[BlockEntry]): BlockVerifier = proc verify( signedBlock: ForkedSignedBeaconBlock, From 8c1bfce71d7c7c119f27f96dcb7103b8dd529c48 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Thu, 20 Feb 2025 14:05:24 +0100 Subject: [PATCH 16/46] Re-sync docs for Gnosis Altair preset (#6940) * Re-sync docs for Gnosis Altair preset The comment for `EPOCHS_PER_SYNC_COMMITTEE_PERIOD` of Gnosis Altair preset was outdated and referring to a wrong number. * Lint --- beacon_chain/spec/presets/gnosis/altair_preset.nim | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/beacon_chain/spec/presets/gnosis/altair_preset.nim b/beacon_chain/spec/presets/gnosis/altair_preset.nim index 7190e7d5c6..41cc0ab643 100644 --- a/beacon_chain/spec/presets/gnosis/altair_preset.nim +++ b/beacon_chain/spec/presets/gnosis/altair_preset.nim @@ -1,10 +1,12 @@ # beacon_chain -# Copyright (c) 2023 Status Research & Development GmbH +# Copyright (c) 2023-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). # at your option. This file may not be copied, modified, or distributed except according to those terms. +{.push raises: [].} + # Gnosis preset - Altair # https://github.com/gnosischain/specs/blob/1648fc86cef7bc148d74cb21921d2d12ca9442ac/consensus/preset/gnosis/altair.yaml const @@ -22,7 +24,7 @@ const # --------------------------------------------------------------- # 2**9 (= 512) SYNC_COMMITTEE_SIZE* = 512 - # 2**8 (= 256) + # 2**9 (= 512) EPOCHS_PER_SYNC_COMMITTEE_PERIOD* {.intdefine.}: uint64 = 512 From 337a36d1abbce823bc9101cf48a6ea969579c85a Mon Sep 17 00:00:00 2001 From: Agnish Ghosh <80243668+agnxsh@users.noreply.github.com> Date: Thu, 20 Feb 2025 22:57:46 +0530 Subject: [PATCH 17/46] rm SyncRequestQueueItem (#6941) --- beacon_chain/sync/sync_queue.nim | 4 ---- 1 file changed, 4 deletions(-) diff --git a/beacon_chain/sync/sync_queue.nim b/beacon_chain/sync/sync_queue.nim index 0e59273d12..d7f5bf281b 100644 --- a/beacon_chain/sync/sync_queue.nim +++ b/beacon_chain/sync/sync_queue.nim @@ -43,10 +43,6 @@ type data*: SyncRange item*: T - SyncRequestQueueItem*[T] = object - requests: seq[SyncRequest[T]] - data: SyncRange - SyncQueueItem[T] = object requests: seq[SyncRequest[T]] data: SyncRange From f232e39d92bf96dfb9793c9ecc767dc7ac1dec26 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Thu, 20 Feb 2025 20:10:18 +0100 Subject: [PATCH 18/46] Disable totals summary in Markdown test reports (#6937) * Disable totals summary in Markdown test reports The totals summaries in .md test reports are frequently leading to merge conflicts and may even disincentivize adding new tests. As we only use the list of tests anyway (primarily for consensus-spec-tests comparison) we can drop the total amounts summaries from the Markdown files. * Re-generate tests --- AllTests-mainnet.md | 95 -------------- ConsensusSpecPreset-mainnet.md | 211 ------------------------------- ConsensusSpecPreset-minimal.md | 220 --------------------------------- tests/testutil.nim | 5 +- 4 files changed, 3 insertions(+), 528 deletions(-) diff --git a/AllTests-mainnet.md b/AllTests-mainnet.md index 47f0338b85..4b3968cd87 100644 --- a/AllTests-mainnet.md +++ b/AllTests-mainnet.md @@ -4,7 +4,6 @@ AllTests-mainnet ```diff + ancestorSlot OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Attestation pool electra processing [Preset: mainnet] ```diff + Aggregated attestations with disjoint comittee bits into a single on-chain aggregate [Pres OK @@ -13,7 +12,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Can add and retrieve simple electra attestations [Preset: mainnet] OK + Working with electra aggregates [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## Attestation pool processing [Preset: mainnet] ```diff + Attestation from different branch [Preset: mainnet] OK @@ -29,7 +27,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Trying to add a duplicate block from an old pruned epoch is tagged as an error OK + Working with aggregates [Preset: mainnet] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## Backfill ```diff + Backfill to genesis OK @@ -37,7 +34,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + Reload backfill position OK + Restart after each block OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## Beacon chain DB [Preset: mainnet] ```diff + empty database [Preset: mainnet] OK @@ -75,7 +71,6 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + sanity check phase 0 states, reusing buffers [Preset: mainnet] OK + sanity check state diff roundtrip [Preset: mainnet] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## Beacon chain file test suite ```diff + Auto check/repair test (missing data) OK @@ -84,7 +79,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Auto check/repair test (only header) OK + Fixture file validation OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## Beacon state [Preset: mainnet] ```diff + Smoke test initialize_beacon_state_from_eth1 [Preset: mainnet] OK @@ -95,18 +89,15 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + merklizer state roundtrip OK + process_slots OK ``` -OK: 7/7 Fail: 0/7 Skip: 0/7 ## Beacon time ```diff + Dependent slots OK + basics OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Beacon validators test suite ```diff + builderBetterBid(builderBoostFactor) test OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Blinded block conversions ```diff + Bellatrix toSignedBlindedBeaconBlock OK @@ -115,12 +106,10 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Electra toSignedBlindedBeaconBlock OK + Fulu toSignedBlindedBeaconBlock OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## Block pool altair processing [Preset: mainnet] ```diff + Invalid signatures [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Block pool processing [Preset: mainnet] ```diff + Adding the same block twice returns a Duplicate error [Preset: mainnet] OK @@ -129,36 +118,30 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + updateHead updates head and headState [Preset: mainnet] OK + updateState sanity [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## Block processor [Preset: mainnet] ```diff + Reverse order block add & get [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Block quarantine ```diff + Recursive missing parent OK + Unviable smoke test OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## BlockId and helpers ```diff + atSlot sanity OK + parent sanity OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## BlockRef and helpers ```diff + get_ancestor sanity OK + isAncestorOf sanity OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## BlockSlot and helpers ```diff + atSlot sanity OK + parent sanity OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Combined scenarios [Beacon Node] [Preset: mainnet] ```diff + ImportKeystores should not be blocked by fee recipient setting [Beacon Node] [Preset: main OK @@ -166,7 +149,6 @@ OK: 2/2 Fail: 0/2 Skip: 0/2 + ImportRemoteKeys should not be blocked by fee recipient setting [Beacon Node] [Preset: mai OK + ImportRemoteKeys should not be blocked by gas limit setting [Beacon Node] [Preset: mainnet OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## DeleteKeys requests [Beacon Node] [Preset: mainnet] ```diff + Deleting not existing key [Beacon Node] [Preset: mainnet] OK @@ -174,7 +156,6 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Invalid Authorization Token [Beacon Node] [Preset: mainnet] OK + Missing Authorization header [Beacon Node] [Preset: mainnet] OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## DeleteRemoteKeys requests [Beacon Node] [Preset: mainnet] ```diff + Deleting existing local key and remote key [Beacon Node] [Preset: mainnet] OK @@ -183,7 +164,6 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Invalid Authorization Token [Beacon Node] [Preset: mainnet] OK + Missing Authorization header [Beacon Node] [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## DepositContractSnapshot ```diff + Migration OK @@ -191,18 +171,15 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + depositCount OK + isValid OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## Discovery fork ID ```diff + Expected fork IDs OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Diverging hardforks ```diff + Non-tail block in common OK + Tail block only in common OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - KZG ```diff + KZG - Blob to KZG commitment - blob_to_kzg_commitment_case_invalid_blob_59d64ff6b4648fad OK @@ -459,7 +436,6 @@ OK: 2/2 Fail: 0/2 Skip: 0/2 + KZG - Verify blob KZG proof batch - verify_blob_kzg_proof_batch_case_invalid_proof_d070689 OK + KZG - Verify blob KZG proof batch - verify_blob_kzg_proof_batch_case_proof_length_differen OK ``` -OK: 253/253 Fail: 0/253 Skip: 0/253 ## EF - KZG - PeerDAS ```diff + KZG - Compute Cells And Proofs - compute_cells_and_kzg_proofs_case_invalid_blob_26555bdcbf OK @@ -519,7 +495,6 @@ OK: 253/253 Fail: 0/253 Skip: 0/253 + KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_same_cell_multi OK + KZG - Verify Cell Kzg Proof Batch - verify_cell_kzg_proof_batch_case_valid_zero_cells_fbbd OK ``` -OK: 56/56 Fail: 0/56 Skip: 0/56 ## EF - PeerDAS - Networking [Preset: mainnet] ```diff + Networking - Compute Columns for Custody Group - mainnet/fulu/networking/compute_columns_f OK @@ -537,7 +512,6 @@ OK: 56/56 Fail: 0/56 Skip: 0/56 + Networking - Get Custody Groups - mainnet/fulu/networking/get_custody_groups/pyspec_tests/ OK + Networking - Get Custody Groups - mainnet/fulu/networking/get_custody_groups/pyspec_tests/ OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - SSZ generic types ```diff Testing basic_vector inputs - invalid Skip @@ -553,7 +527,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + Testing uints inputs - invalid OK + Testing uints inputs - valid OK ``` -OK: 10/12 Fail: 0/12 Skip: 2/12 ## EIP-4881 ```diff + deposit_cases OK @@ -562,13 +535,11 @@ OK: 10/12 Fail: 0/12 Skip: 2/12 + invalid_snapshot OK + snapshot_cases OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EIP-7594 Unit Tests ```diff + EIP-7594: Compute Matrix OK + EIP:7594: Recover Matrix OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EL Configuration ```diff + Empty config file OK @@ -577,27 +548,23 @@ OK: 2/2 Fail: 0/2 Skip: 0/2 + Old style config files OK + URL parsing OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## Engine API conversions ```diff + Roundtrip engine RPC V1 and bellatrix ExecutionPayload representations OK + Roundtrip engine RPC V2 and capella ExecutionPayload representations OK + Roundtrip engine RPC V3 and deneb ExecutionPayload representations OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## Eth1 monitor ```diff + Deposits chain OK + Rewrite URLs OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Eth2 specific discovery tests ```diff + Invalid attnets field OK + Subnet query OK + Subnet query after ENR update OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## Fee recipient management [Beacon Node] [Preset: mainnet] ```diff + Configuring the fee recipient [Beacon Node] [Preset: mainnet] OK @@ -610,19 +577,16 @@ OK: 3/3 Fail: 0/3 Skip: 0/3 + Obtaining the fee recipient of an unconfigured validator returns the suggested default [Be OK + Setting the fee recipient on a missing validator creates a record for it [Beacon Node] [Pr OK ``` -OK: 9/9 Fail: 0/9 Skip: 0/9 ## FinalizedBlocks [Preset: mainnet] ```diff + Basic ops [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Fork id compatibility test ```diff + Digest check OK + Fork check OK + Next fork epoch check OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## Forked SSZ readers ```diff + load altair block OK @@ -637,7 +601,6 @@ OK: 3/3 Fail: 0/3 Skip: 0/3 + load phase0 state OK + should raise on unknown data OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## Gas limit management [Beacon Node] [Preset: mainnet] ```diff + Configuring the gas limit [Beacon Node] [Preset: mainnet] OK @@ -650,24 +613,20 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Obtaining the gas limit of an unconfigured validator returns the suggested default [Beacon OK + Setting the gas limit on a missing validator creates a record for it [Beacon Node] [Preset OK ``` -OK: 9/9 Fail: 0/9 Skip: 0/9 ## Gossip fork transition ```diff + Gossip fork transition OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Gossip validation [Preset: mainnet] ```diff + Empty committee when no committee for slot OK + validateAttestation OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Gossip validation - Altair ```diff + Period boundary OK + validateSyncCommitteeMessage - Duplicate pubkey OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Graffiti management [Beacon Node] [Preset: mainnet] ```diff + Configuring the graffiti [Beacon Node] [Preset: mainnet] OK @@ -678,7 +637,6 @@ OK: 2/2 Fail: 0/2 Skip: 0/2 + Obtaining the graffiti of an unconfigured validator returns the suggested default [Beacon OK + Setting the graffiti on a missing validator creates a record for it [Beacon Node] [Preset: OK ``` -OK: 7/7 Fail: 0/7 Skip: 0/7 ## Honest validator ```diff + General pubsub topics OK @@ -689,7 +647,6 @@ OK: 7/7 Fail: 0/7 Skip: 0/7 + isNearSyncCommitteePeriod OK + is_aggregator OK ``` -OK: 7/7 Fail: 0/7 Skip: 0/7 ## ImportKeystores requests [Beacon Node] [Preset: mainnet] ```diff + ImportKeystores/ListKeystores/DeleteKeystores [Beacon Node] [Preset: mainnet] OK @@ -697,7 +654,6 @@ OK: 7/7 Fail: 0/7 Skip: 0/7 + Invalid Authorization Token [Beacon Node] [Preset: mainnet] OK + Missing Authorization header [Beacon Node] [Preset: mainnet] OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## ImportRemoteKeys/ListRemoteKeys/DeleteRemoteKeys [Beacon Node] [Preset: mainnet] ```diff + Importing list of remote keys [Beacon Node] [Preset: mainnet] OK @@ -705,7 +661,6 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Invalid Authorization Token [Beacon Node] [Preset: mainnet] OK + Missing Authorization header [Beacon Node] [Preset: mainnet] OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## Key spliting ```diff + k < n OK @@ -713,7 +668,6 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + k == n == 100 OK + single share OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## KeyStorage testing suite ```diff + Load Prysm keystore OK @@ -729,19 +683,16 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + [SCRYPT] Network Keystore decryption OK + [SCRYPT] Network Keystore encryption OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## Latest valid hash [Preset: mainnet] ```diff + LVH searching OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Light client [Preset: mainnet] ```diff + Init from checkpoint OK + Light client sync OK + Pre-Altair OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## Light client processor [Preset: mainnet] ```diff + Duplicate bootstrap (Optimistic) [Preset: mainnet] OK @@ -757,7 +708,6 @@ OK: 3/3 Fail: 0/3 Skip: 0/3 + Sync (Optimistic) [Preset: mainnet] OK + Sync (Strict) [Preset: mainnet] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## ListKeys requests [Beacon Node] [Preset: mainnet] ```diff + Correct token provided [Beacon Node] [Preset: mainnet] OK @@ -765,7 +715,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + Invalid Authorization Token [Beacon Node] [Preset: mainnet] OK + Missing Authorization header [Beacon Node] [Preset: mainnet] OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## ListRemoteKeys requests [Beacon Node] [Preset: mainnet] ```diff + Correct token provided [Beacon Node] [Preset: mainnet] OK @@ -773,7 +722,6 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Invalid Authorization Token [Beacon Node] [Preset: mainnet] OK + Missing Authorization header [Beacon Node] [Preset: mainnet] OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## Message signatures ```diff + Aggregate and proof signatures OK @@ -785,20 +733,17 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + Sync committee signed contribution and proof signatures OK + Voluntary exit signatures OK ``` -OK: 8/8 Fail: 0/8 Skip: 0/8 ## Network metadata ```diff + mainnet OK + sepolia OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Nimbus remote signer/signing test (verifying-web3signer) ```diff + Signing BeaconBlock (getBlockSignature(capella)) OK + Signing BeaconBlock (getBlockSignature(deneb)) OK + Waiting for signing node (/upcheck) test OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## Nimbus remote signer/signing test (web3signer) ```diff + Connection timeout test OK @@ -819,17 +764,14 @@ OK: 3/3 Fail: 0/3 Skip: 0/3 + Signing voluntary exit (getValidatorExitSignature()) OK + Waiting for signing node (/upcheck) test OK ``` -OK: 17/17 Fail: 0/17 Skip: 0/17 ## Old database versions [Preset: mainnet] ```diff + pre-1.1.0 OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## PeerDAS Sampling Tests ```diff + PeerDAS: Extended Sample Count OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## PeerPool testing suite ```diff + Access peers by key test OK @@ -845,12 +787,10 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + addPeerNoWait() test OK + deletePeer() test OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## Pruning ```diff + prune states OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## REST JSON encoding and decoding ```diff + Blob OK @@ -859,7 +799,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + KzgProof OK + Validator pubkey hack OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## Remove keystore testing suite ```diff + Many remotes OK @@ -868,36 +807,30 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Verifying Signer / Single remote OK + vesion 1 OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## Serialization/deserialization [Beacon Node] [Preset: mainnet] ```diff + Deserialization test vectors OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Serialization/deserialization test suite ```diff + RestErrorMessage parser tests OK + RestErrorMessage writer tests OK + strictParse(Stuint) tests OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## Shufflings ```diff + Accelerated shuffling computation OK + Accelerated shuffling computation (with epochRefState jump) OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Shufflings (merged) ```diff + Accelerated shuffling computation OK + Accelerated shuffling computation (with epochRefState jump) OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Size bounds ```diff + SignedBeaconBlockDeneb OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Slashing Interchange tests [Preset: mainnet] ```diff + Slashing test: duplicate_pubkey_not_slashable.json OK @@ -939,7 +872,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Slashing test: single_validator_two_blocks_no_signing_root.json OK + Slashing test: wrong_genesis_validators_root.json OK ``` -OK: 35/38 Fail: 0/38 Skip: 3/38 ## Slashing Protection DB [Preset: mainnet] ```diff + Attestation ordering #1698 OK @@ -955,35 +887,29 @@ OK: 35/38 Fail: 0/38 Skip: 3/38 + SP for surrounding attestations OK + Test valid attestation #1699 OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## Spec datatypes ```diff + Graffiti bytes OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Spec helpers ```diff + build_proof - BeaconState OK + hypergeom_cdf OK + integer_squareroot OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## Specific field types ```diff + root update OK + roundtrip OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Starting states ```diff + Starting state without block OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## State history ```diff + getBlockIdAtSlot OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Sync committee pool ```diff + Aggregating votes OK @@ -994,7 +920,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Missed slots across sync committee period boundary OK + isSeen OK ``` -OK: 7/7 Fail: 0/7 Skip: 0/7 ## SyncManager test suite ```diff + [SyncManager] groupBlobs() test OK @@ -1018,12 +943,10 @@ OK: 7/7 Fail: 0/7 Skip: 0/7 + [SyncQueue] checkResponse() test OK + [SyncQueue] hasEndGap() test OK ``` -OK: 20/20 Fail: 0/20 Skip: 0/20 ## Type helpers ```diff + BeaconBlock OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## Validator Client test suite ```diff + /eth/v1/validator/beacon_committee_selections serialization/deserialization test OK @@ -1041,7 +964,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + getUniqueVotes() test vectors OK + normalizeUri() test vectors OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## Validator change pool testing suite ```diff + addValidatorChangeMessage/getAttesterSlashingMessage (Electra) OK @@ -1052,7 +974,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + addValidatorChangeMessage/getVoluntaryExitMessage OK + pre-pre-fork voluntary exit OK ``` -OK: 7/7 Fail: 0/7 Skip: 0/7 ## Validator pool ```diff + Doppelganger for genesis validator OK @@ -1060,20 +981,17 @@ OK: 7/7 Fail: 0/7 Skip: 0/7 + Dynamic validator set: queryValidatorsSource() test OK + Dynamic validator set: updateDynamicValidators() test OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## ValidatorPubKey bucket sort ```diff + incremental construction OK + one-shot construction OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## Zero signature sanity checks ```diff + SSZ serialization roundtrip of SignedBeaconBlockHeader OK + Zero signatures cannot be loaded into a BLS signature object OK + default initialization of signatures OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## chain DAG finalization tests [Preset: mainnet] ```diff + init with gaps [Preset: mainnet] OK @@ -1081,7 +999,6 @@ OK: 3/3 Fail: 0/3 Skip: 0/3 + prune heads on finalization [Preset: mainnet] OK + shutdown during finalization [Preset: mainnet] OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## createValidatorFiles() ```diff + Add keystore files [LOCAL] OK @@ -1093,27 +1010,23 @@ OK: 4/4 Fail: 0/4 Skip: 0/4 + `createLocalValidatorFiles` with `validatorsDir` without permissions OK + `createValidatorFiles` with already existing dirs and any error OK ``` -OK: 8/8 Fail: 0/8 Skip: 0/8 ## engine API authentication ```diff + HS256 JWS iat token signing OK + HS256 JWS signing OK + getIatToken OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## eth2.0-deposits-cli compatibility ```diff + restoring mnemonic with password OK + restoring mnemonic without password OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## removeValidatorFiles() ```diff + Remove nonexistent validator OK + Remove validator files OK + Remove validator files twice OK ``` -OK: 3/3 Fail: 0/3 Skip: 0/3 ## removeValidatorFiles() multiple keystore types ```diff + Remove [LOCAL] when [LOCAL] is missing OK @@ -1123,7 +1036,6 @@ OK: 3/3 Fail: 0/3 Skip: 0/3 + Remove [REMOTE] when [REMOTE] is missing OK + Remove [REMOTE] when [REMOTE] is present OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## saveKeystore() ```diff + Save [LOCAL] keystore after [LOCAL] keystore with different id OK @@ -1135,18 +1047,15 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + Save [REMOTE] keystore after [REMOTE] keystore with different id OK + Save [REMOTE] keystore after [REMOTE] keystore with same id OK ``` -OK: 8/8 Fail: 0/8 Skip: 0/8 ## state diff tests [Preset: mainnet] ```diff + random slot differences [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## subnet tracker ```diff + should register stability subnets on attester duties OK + should register sync committee duties OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## weak-subjectivity-checkpoint ```diff + Correct values OK @@ -1159,7 +1068,3 @@ OK: 2/2 Fail: 0/2 Skip: 0/2 + non-number epoch OK + shorter root OK ``` -OK: 9/9 Fail: 0/9 Skip: 0/9 - ----TOTAL--- -OK: 787/792 Fail: 0/792 Skip: 5/792 diff --git a/ConsensusSpecPreset-mainnet.md b/ConsensusSpecPreset-mainnet.md index 437399df6f..8635a4816e 100644 --- a/ConsensusSpecPreset-mainnet.md +++ b/ConsensusSpecPreset-mainnet.md @@ -4,18 +4,15 @@ ConsensusSpecPreset-mainnet ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Epoch Processing - Eth1 data reset [Preset: mainnet] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Altair - Epoch Processing - Historical roots update [Preset: mainnet] ```diff + Historical roots update - historical_root_accumulator [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Epoch Processing - Inactivity [Preset: mainnet] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: mainnet] OK @@ -40,7 +37,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: mainnet] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: mainnet] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Altair - Epoch Processing - Justification & Finalization [Preset: mainnet] ```diff + Justification & Finalization - 123_ok_support [Preset: mainnet] OK @@ -54,7 +50,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: mainnet] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Altair - Epoch Processing - Participation flag updates [Preset: mainnet] ```diff + Participation flag updates - all_zeroed [Preset: mainnet] OK @@ -68,12 +63,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_2 [Preset: mainnet] OK + Participation flag updates - random_genesis [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Altair - Epoch Processing - RANDAO mixes reset [Preset: mainnet] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Epoch Processing - Registry updates [Preset: mainnet] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK @@ -88,7 +81,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Altair - Epoch Processing - Rewards and penalties [Preset: mainnet] ```diff + Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK @@ -107,7 +99,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Rewards and penalties - random_fill_attestations [Preset: mainnet] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Altair - Epoch Processing - Slashings [Preset: mainnet] ```diff + Slashings - low_penalty [Preset: mainnet] OK @@ -116,12 +107,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: mainnet] OK + Slashings - slashings_with_random_state [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Altair - Epoch Processing - Slashings reset [Preset: mainnet] ```diff + Slashings reset - flush_slashings [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Finality [Preset: mainnet] ```diff + [Valid] EF - Altair - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK @@ -130,7 +119,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Altair - Finality - finality_rule_3 [Preset: mainnet] OK + [Valid] EF - Altair - Finality - finality_rule_4 [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Altair - Fork [Preset: mainnet] ```diff + EF - Altair - Fork - altair_fork_random_0 [Preset: mainnet] OK @@ -148,7 +136,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Altair - Fork - fork_random_low_balances [Preset: mainnet] OK + EF - Altair - Fork - fork_random_misc_balances [Preset: mainnet] OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Altair - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Altair - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -193,7 +180,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Valid] EF - Altair - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Altair - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Altair - Operations - Attester Slashing [Preset: mainnet] ```diff + [Invalid] EF - Altair - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -227,7 +213,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Altair - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Altair - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Altair - Operations - Block Header [Preset: mainnet] ```diff + [Invalid] EF - Altair - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -237,7 +222,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Invalid] EF - Altair - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Altair - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Altair - Operations - Deposit [Preset: mainnet] ```diff + [Invalid] EF - Altair - Operations - Deposit - invalid_bad_merkle_proof OK @@ -260,7 +244,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Altair - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Altair - Operations - Deposit - top_up__zero_balance OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Altair - Operations - Proposer Slashing [Preset: mainnet] ```diff + [Invalid] EF - Altair - Operations - Proposer Slashing - invalid_different_proposer_indice OK @@ -279,7 +262,6 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + [Valid] EF - Altair - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Altair - Operations - Proposer Slashing - slashed_and_proposer_index_the_sa OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Altair - Operations - Sync Aggregate [Preset: mainnet] ```diff + [Invalid] EF - Altair - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -309,7 +291,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Altair - Operations - Sync Aggregate - sync_committee_with_participating_ex OK + [Valid] EF - Altair - Operations - Sync Aggregate - sync_committee_with_participating_wi OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Altair - Operations - Voluntary Exit [Preset: mainnet] ```diff + [Invalid] EF - Altair - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -322,7 +303,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Altair - Operations - Voluntary Exit - default_exit_epoch_subsequent_exit OK + [Valid] EF - Altair - Operations - Voluntary Exit - success_exit_queue__min_churn OK ``` -OK: 9/9 Fail: 0/9 Skip: 0/9 ## EF - Altair - Random [Preset: mainnet] ```diff + [Valid] EF - Altair - Random - randomized_0 [Preset: mainnet] OK @@ -342,7 +322,6 @@ OK: 9/9 Fail: 0/9 Skip: 0/9 + [Valid] EF - Altair - Random - randomized_8 [Preset: mainnet] OK + [Valid] EF - Altair - Random - randomized_9 [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Altair - Rewards [Preset: mainnet] ```diff + EF - Altair - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -380,7 +359,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Altair - Rewards - with_slashed_validators [Preset: mainnet] OK + EF - Altair - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Altair - SSZ consensus objects [Preset: mainnet] ```diff + Testing AggregateAndProof OK @@ -423,7 +401,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Validator OK + Testing VoluntaryExit OK ``` -OK: 39/39 Fail: 0/39 Skip: 0/39 ## EF - Altair - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Altair - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK @@ -474,7 +451,6 @@ OK: 39/39 Fail: 0/39 Skip: 0/39 + [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK + [Valid] EF - Altair - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK ``` -OK: 47/47 Fail: 0/47 Skip: 0/47 ## EF - Altair - Sanity - Slots [Preset: mainnet] ```diff + EF - Altair - Slots - double_empty_epoch [Preset: mainnet] OK @@ -484,7 +460,6 @@ OK: 47/47 Fail: 0/47 Skip: 0/47 + EF - Altair - Slots - slots_1 [Preset: mainnet] OK + EF - Altair - Slots - slots_2 [Preset: mainnet] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Altair - Transition [Preset: mainnet] ```diff + EF - Altair - Transition - non_empty_historical_roots [Preset: mainnet] OK @@ -510,7 +485,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Altair - Transition - transition_with_random_half_participation [Preset: mainnet] OK + EF - Altair - Transition - transition_with_random_three_quarters_participation [Preset: ma OK ``` -OK: 22/22 Fail: 0/22 Skip: 0/22 ## EF - Altair - Unittests - Light client - Sync protocol [Preset: mainnet] ```diff + process_light_client_update_finality_updated OK @@ -518,23 +492,19 @@ OK: 22/22 Fail: 0/22 Skip: 0/22 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Bellatrix - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Epoch Processing - Eth1 data reset [Preset: mainnet] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Bellatrix - Epoch Processing - Historical roots update [Preset: mainnet] ```diff + Historical roots update - historical_root_accumulator [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Epoch Processing - Inactivity [Preset: mainnet] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: mainnet] OK @@ -559,7 +529,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: mainnet] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: mainnet] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Bellatrix - Epoch Processing - Justification & Finalization [Preset: mainnet] ```diff + Justification & Finalization - 123_ok_support [Preset: mainnet] OK @@ -573,7 +542,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: mainnet] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Bellatrix - Epoch Processing - Participation flag updates [Preset: mainnet] ```diff + Participation flag updates - all_zeroed [Preset: mainnet] OK @@ -587,12 +555,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_2 [Preset: mainnet] OK + Participation flag updates - random_genesis [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Bellatrix - Epoch Processing - RANDAO mixes reset [Preset: mainnet] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Epoch Processing - Registry updates [Preset: mainnet] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK @@ -607,7 +573,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Bellatrix - Epoch Processing - Rewards and penalties [Preset: mainnet] ```diff + Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK @@ -626,7 +591,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Rewards and penalties - random_fill_attestations [Preset: mainnet] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Bellatrix - Epoch Processing - Slashings [Preset: mainnet] ```diff + Slashings - low_penalty [Preset: mainnet] OK @@ -635,12 +599,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: mainnet] OK + Slashings - slashings_with_random_state [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Bellatrix - Epoch Processing - Slashings reset [Preset: mainnet] ```diff + Slashings reset - flush_slashings [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Finality [Preset: mainnet] ```diff + [Valid] EF - Bellatrix - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK @@ -649,7 +611,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Bellatrix - Finality - finality_rule_3 [Preset: mainnet] OK + [Valid] EF - Bellatrix - Finality - finality_rule_4 [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Bellatrix - Fork [Preset: mainnet] ```diff + EF - Bellatrix - Fork - bellatrix_fork_random_0 [Preset: mainnet] OK @@ -665,7 +626,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Bellatrix - Fork - fork_random_low_balances [Preset: mainnet] OK + EF - Bellatrix - Fork - fork_random_misc_balances [Preset: mainnet] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Bellatrix - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -710,7 +670,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + [Valid] EF - Bellatrix - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Bellatrix - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Bellatrix - Operations - Attester Slashing [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -744,7 +703,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Bellatrix - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Bellatrix - Operations - Attester Slashing - with_effective_balance_dispari OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Bellatrix - Operations - Block Header [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -754,7 +712,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Invalid] EF - Bellatrix - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Bellatrix - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Bellatrix - Operations - Deposit [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Deposit - invalid_bad_merkle_proof OK @@ -778,7 +735,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Bellatrix - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Bellatrix - Operations - Deposit - top_up__zero_balance OK ``` -OK: 20/20 Fail: 0/20 Skip: 0/20 ## EF - Bellatrix - Operations - Execution Payload [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Execution Payload - invalid_bad_everything_first_p OK @@ -808,7 +764,6 @@ OK: 20/20 Fail: 0/20 Skip: 0/20 + [Valid] EF - Bellatrix - Operations - Execution Payload - zero_length_transaction_first_ OK + [Valid] EF - Bellatrix - Operations - Execution Payload - zero_length_transaction_regula OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Bellatrix - Operations - Proposer Slashing [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Proposer Slashing - invalid_different_proposer_ind OK @@ -827,7 +782,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Bellatrix - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Bellatrix - Operations - Proposer Slashing - slashed_and_proposer_index_the OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Bellatrix - Operations - Sync Aggregate [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -857,7 +811,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Bellatrix - Operations - Sync Aggregate - sync_committee_with_participating OK + [Valid] EF - Bellatrix - Operations - Sync Aggregate - sync_committee_with_participating OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Bellatrix - Operations - Voluntary Exit [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -876,7 +829,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Bellatrix - Operations - Voluntary Exit - voluntary_exit_with_current_fork_ OK + [Valid] EF - Bellatrix - Operations - Voluntary Exit - voluntary_exit_with_previous_fork OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Bellatrix - Random [Preset: mainnet] ```diff + [Valid] EF - Bellatrix - Random - randomized_0 [Preset: mainnet] OK @@ -896,7 +848,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Bellatrix - Random - randomized_8 [Preset: mainnet] OK + [Valid] EF - Bellatrix - Random - randomized_9 [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Bellatrix - Rewards [Preset: mainnet] ```diff + EF - Bellatrix - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -934,7 +885,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Bellatrix - Rewards - with_slashed_validators [Preset: mainnet] OK + EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Bellatrix - SSZ consensus objects [Preset: mainnet] ```diff + Testing AggregateAndProof OK @@ -980,7 +930,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Validator OK + Testing VoluntaryExit OK ``` -OK: 42/42 Fail: 0/42 Skip: 0/42 ## EF - Bellatrix - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK @@ -1034,7 +983,6 @@ OK: 42/42 Fail: 0/42 Skip: 0/42 + [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__half [Prese OK + [Valid] EF - Bellatrix - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK ``` -OK: 50/50 Fail: 0/50 Skip: 0/50 ## EF - Bellatrix - Sanity - Slots [Preset: mainnet] ```diff + EF - Bellatrix - Slots - double_empty_epoch [Preset: mainnet] OK @@ -1044,7 +992,6 @@ OK: 50/50 Fail: 0/50 Skip: 0/50 + EF - Bellatrix - Slots - slots_1 [Preset: mainnet] OK + EF - Bellatrix - Slots - slots_2 [Preset: mainnet] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Bellatrix - Transition [Preset: mainnet] ```diff + EF - Bellatrix - Transition - non_empty_historical_roots [Preset: mainnet] OK @@ -1070,23 +1017,19 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Bellatrix - Transition - transition_with_random_half_participation [Preset: mainnet] OK + EF - Bellatrix - Transition - transition_with_random_three_quarters_participation [Preset: OK ``` -OK: 22/22 Fail: 0/22 Skip: 0/22 ## EF - Capella - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Eth1 data reset [Preset: mainnet] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Capella - Epoch Processing - Historical summaries update [Preset: mainnet] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Inactivity [Preset: mainnet] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: mainnet] OK @@ -1111,7 +1054,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: mainnet] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: mainnet] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Capella - Epoch Processing - Justification & Finalization [Preset: mainnet] ```diff + Justification & Finalization - 123_ok_support [Preset: mainnet] OK @@ -1125,7 +1067,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: mainnet] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Capella - Epoch Processing - Participation flag updates [Preset: mainnet] ```diff + Participation flag updates - all_zeroed [Preset: mainnet] OK @@ -1139,12 +1080,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_2 [Preset: mainnet] OK + Participation flag updates - random_genesis [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Capella - Epoch Processing - RANDAO mixes reset [Preset: mainnet] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Registry updates [Preset: mainnet] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK @@ -1159,7 +1098,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Capella - Epoch Processing - Rewards and penalties [Preset: mainnet] ```diff + Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK @@ -1178,7 +1116,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Rewards and penalties - random_fill_attestations [Preset: mainnet] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Capella - Epoch Processing - Slashings [Preset: mainnet] ```diff + Slashings - low_penalty [Preset: mainnet] OK @@ -1187,12 +1124,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: mainnet] OK + Slashings - slashings_with_random_state [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Capella - Epoch Processing - Slashings reset [Preset: mainnet] ```diff + Slashings reset - flush_slashings [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Finality [Preset: mainnet] ```diff + [Valid] EF - Capella - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK @@ -1201,7 +1136,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Capella - Finality - finality_rule_3 [Preset: mainnet] OK + [Valid] EF - Capella - Finality - finality_rule_4 [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Capella - Fork [Preset: mainnet] ```diff + EF - Capella - Fork - capella_fork_random_0 [Preset: mainnet] OK @@ -1217,7 +1151,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Capella - Fork - fork_random_low_balances [Preset: mainnet] OK + EF - Capella - Fork - fork_random_misc_balances [Preset: mainnet] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Capella - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -1262,7 +1195,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + [Valid] EF - Capella - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Capella - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Capella - Operations - Attester Slashing [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -1296,7 +1228,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Capella - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Capella - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Capella - Operations - BLS to execution change [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_already_0x01 OK @@ -1315,7 +1246,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Capella - Operations - BLS to execution change - success_withdrawable OK + [Valid] EF - Capella - Operations - BLS to execution change - valid_signature_from_staki OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Capella - Operations - Block Header [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -1325,7 +1255,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Invalid] EF - Capella - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Capella - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Capella - Operations - Deposit [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Deposit - invalid_bad_merkle_proof OK @@ -1350,7 +1279,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Capella - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Capella - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Capella - Operations - Execution Payload [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Execution Payload - invalid_bad_everything_first_pay OK @@ -1380,7 +1308,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Capella - Operations - Execution Payload - zero_length_transaction_first_pa OK + [Valid] EF - Capella - Operations - Execution Payload - zero_length_transaction_regular_ OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Capella - Operations - Proposer Slashing [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Proposer Slashing - invalid_different_proposer_indic OK @@ -1399,7 +1326,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Capella - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Capella - Operations - Proposer Slashing - slashed_and_proposer_index_the_s OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Capella - Operations - Sync Aggregate [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -1429,7 +1355,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Capella - Operations - Sync Aggregate - sync_committee_with_participating_e OK + [Valid] EF - Capella - Operations - Sync Aggregate - sync_committee_with_participating_w OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Capella - Operations - Voluntary Exit [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -1448,7 +1373,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Capella - Operations - Voluntary Exit - voluntary_exit_with_current_fork_ve OK + [Valid] EF - Capella - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_v OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Capella - Operations - Withdrawals [Preset: mainnet] ```diff + [Invalid] EF - Capella - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK @@ -1505,7 +1429,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` -OK: 53/53 Fail: 0/53 Skip: 0/53 ## EF - Capella - Random [Preset: mainnet] ```diff + [Valid] EF - Capella - Random - randomized_0 [Preset: mainnet] OK @@ -1525,7 +1448,6 @@ OK: 53/53 Fail: 0/53 Skip: 0/53 + [Valid] EF - Capella - Random - randomized_8 [Preset: mainnet] OK + [Valid] EF - Capella - Random - randomized_9 [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Capella - Rewards [Preset: mainnet] ```diff + EF - Capella - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -1563,7 +1485,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Capella - Rewards - with_slashed_validators [Preset: mainnet] OK + EF - Capella - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Capella - SSZ consensus objects [Preset: mainnet] ```diff + Testing AggregateAndProof OK @@ -1613,7 +1534,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 46/46 Fail: 0/46 Skip: 0/46 ## EF - Capella - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Capella - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK @@ -1679,7 +1599,6 @@ OK: 46/46 Fail: 0/46 Skip: 0/46 + [Valid] EF - Capella - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK + [Valid] EF - Capella - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK ``` -OK: 62/62 Fail: 0/62 Skip: 0/62 ## EF - Capella - Sanity - Slots [Preset: mainnet] ```diff + EF - Capella - Slots - double_empty_epoch [Preset: mainnet] OK @@ -1689,7 +1608,6 @@ OK: 62/62 Fail: 0/62 Skip: 0/62 + EF - Capella - Slots - slots_1 [Preset: mainnet] OK + EF - Capella - Slots - slots_2 [Preset: mainnet] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Capella - Transition [Preset: mainnet] ```diff + EF - Capella - Transition - non_empty_historical_roots [Preset: mainnet] OK @@ -1715,7 +1633,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Capella - Transition - transition_with_random_half_participation [Preset: mainnet] OK + EF - Capella - Transition - transition_with_random_three_quarters_participation [Preset: m OK ``` -OK: 22/22 Fail: 0/22 Skip: 0/22 ## EF - Capella - Unittests - Light client - Sync protocol [Preset: mainnet] ```diff + process_light_client_update_finality_updated OK @@ -1723,23 +1640,19 @@ OK: 22/22 Fail: 0/22 Skip: 0/22 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Deneb - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Epoch Processing - Eth1 data reset [Preset: mainnet] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Deneb - Epoch Processing - Historical summaries update [Preset: mainnet] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Epoch Processing - Inactivity [Preset: mainnet] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: mainnet] OK @@ -1764,7 +1677,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: mainnet] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: mainnet] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Deneb - Epoch Processing - Justification & Finalization [Preset: mainnet] ```diff + Justification & Finalization - 123_ok_support [Preset: mainnet] OK @@ -1778,7 +1690,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: mainnet] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Deneb - Epoch Processing - Participation flag updates [Preset: mainnet] ```diff + Participation flag updates - all_zeroed [Preset: mainnet] OK @@ -1792,12 +1703,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_2 [Preset: mainnet] OK + Participation flag updates - random_genesis [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Deneb - Epoch Processing - RANDAO mixes reset [Preset: mainnet] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Epoch Processing - Registry updates [Preset: mainnet] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK @@ -1812,7 +1721,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Deneb - Epoch Processing - Rewards and penalties [Preset: mainnet] ```diff + Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK @@ -1831,7 +1739,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Rewards and penalties - random_fill_attestations [Preset: mainnet] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Deneb - Epoch Processing - Slashings [Preset: mainnet] ```diff + Slashings - low_penalty [Preset: mainnet] OK @@ -1840,12 +1747,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: mainnet] OK + Slashings - slashings_with_random_state [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Deneb - Epoch Processing - Slashings reset [Preset: mainnet] ```diff + Slashings reset - flush_slashings [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Finality [Preset: mainnet] ```diff + [Valid] EF - Deneb - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK @@ -1854,7 +1759,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Deneb - Finality - finality_rule_3 [Preset: mainnet] OK + [Valid] EF - Deneb - Finality - finality_rule_4 [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Deneb - Fork [Preset: mainnet] ```diff + EF - Deneb - Fork - deneb_fork_random_0 [Preset: mainnet] OK @@ -1870,7 +1774,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Deneb - Fork - fork_random_low_balances [Preset: mainnet] OK + EF - Deneb - Fork - fork_random_misc_balances [Preset: mainnet] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Deneb - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -1915,7 +1818,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + [Valid] EF - Deneb - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Deneb - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Deneb - Operations - Attester Slashing [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -1949,7 +1851,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Deneb - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Deneb - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Deneb - Operations - BLS to execution change [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - BLS to execution change - invalid_already_0x01 OK @@ -1967,7 +1868,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Deneb - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Deneb - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Deneb - Operations - Block Header [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -1977,7 +1877,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Invalid] EF - Deneb - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Deneb - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Deneb - Operations - Deposit [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Deposit - invalid_bad_merkle_proof OK @@ -2002,7 +1901,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Deneb - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Deneb - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Deneb - Operations - Execution Payload [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Execution Payload - invalid_bad_everything_first_paylo OK @@ -2046,7 +1944,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Deneb - Operations - Execution Payload - zero_length_transaction_regular_pa OK + [Valid] EF - Deneb - Operations - Execution Payload - zeroed_commitment OK ``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## EF - Deneb - Operations - Proposer Slashing [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Proposer Slashing - invalid_different_proposer_indices OK @@ -2065,7 +1962,6 @@ OK: 40/40 Fail: 0/40 Skip: 0/40 + [Valid] EF - Deneb - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Deneb - Operations - Proposer Slashing - slashed_and_proposer_index_the_sam OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Deneb - Operations - Sync Aggregate [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -2095,7 +1991,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Deneb - Operations - Sync Aggregate - sync_committee_with_participating_exi OK + [Valid] EF - Deneb - Operations - Sync Aggregate - sync_committee_with_participating_wit OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Deneb - Operations - Voluntary Exit [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -2114,7 +2009,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Deneb - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_ver OK + [Valid] EF - Deneb - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_ver OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Deneb - Operations - Withdrawals [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_few OK @@ -2171,7 +2065,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Deneb - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balan OK + [Valid] EF - Deneb - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balan OK ``` -OK: 53/53 Fail: 0/53 Skip: 0/53 ## EF - Deneb - Random [Preset: mainnet] ```diff + [Valid] EF - Deneb - Random - randomized_0 [Preset: mainnet] OK @@ -2191,7 +2084,6 @@ OK: 53/53 Fail: 0/53 Skip: 0/53 + [Valid] EF - Deneb - Random - randomized_8 [Preset: mainnet] OK + [Valid] EF - Deneb - Random - randomized_9 [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Deneb - Rewards [Preset: mainnet] ```diff + EF - Deneb - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -2229,7 +2121,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Deneb - Rewards - with_slashed_validators [Preset: mainnet] OK + EF - Deneb - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Deneb - SSZ consensus objects [Preset: mainnet] ```diff + Testing AggregateAndProof OK @@ -2281,7 +2172,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 48/48 Fail: 0/48 Skip: 0/48 ## EF - Deneb - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Deneb - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK @@ -2356,7 +2246,6 @@ OK: 48/48 Fail: 0/48 Skip: 0/48 + [Valid] EF - Deneb - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK + [Valid] EF - Deneb - Sanity - Blocks - zero_blob [Preset: mainnet] OK ``` -OK: 71/71 Fail: 0/71 Skip: 0/71 ## EF - Deneb - Sanity - Slots [Preset: mainnet] ```diff + EF - Deneb - Slots - double_empty_epoch [Preset: mainnet] OK @@ -2366,7 +2255,6 @@ OK: 71/71 Fail: 0/71 Skip: 0/71 + EF - Deneb - Slots - slots_1 [Preset: mainnet] OK + EF - Deneb - Slots - slots_2 [Preset: mainnet] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Deneb - Transition [Preset: mainnet] ```diff + EF - Deneb - Transition - non_empty_historical_roots [Preset: mainnet] OK @@ -2395,7 +2283,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Deneb - Transition - transition_with_random_half_participation [Preset: mainnet] OK + EF - Deneb - Transition - transition_with_random_three_quarters_participation [Preset: mai OK ``` -OK: 25/25 Fail: 0/25 Skip: 0/25 ## EF - Deneb - Unittests - Light client - Sync protocol [Preset: mainnet] ```diff + process_light_client_update_finality_updated OK @@ -2403,24 +2290,20 @@ OK: 25/25 Fail: 0/25 Skip: 0/25 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Electra - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK + Effective balance updates - effective_balance_hysteresis_with_compounding_credentials [Pre OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Electra - Epoch Processing - Eth1 data reset [Preset: mainnet] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Electra - Epoch Processing - Historical summaries update [Preset: mainnet] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Electra - Epoch Processing - Inactivity [Preset: mainnet] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: mainnet] OK @@ -2445,7 +2328,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: mainnet] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: mainnet] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Electra - Epoch Processing - Justification & Finalization [Preset: mainnet] ```diff + Justification & Finalization - 123_ok_support [Preset: mainnet] OK @@ -2459,7 +2341,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: mainnet] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Electra - Epoch Processing - Participation flag updates [Preset: mainnet] ```diff + Participation flag updates - all_zeroed [Preset: mainnet] OK @@ -2473,7 +2354,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_2 [Preset: mainnet] OK + Participation flag updates - random_genesis [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Electra - Epoch Processing - Pending consolidations [Preset: mainnet] ```diff + Pending consolidations - all_consolidation_cases_together [Preset: mainnet] OK @@ -2490,7 +2370,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Pending consolidations - pending_consolidation_with_pending_deposit [Preset: mainnet] OK + Pending consolidations - skip_consolidation_when_source_slashed [Preset: mainnet] OK ``` -OK: 13/13 Fail: 0/13 Skip: 0/13 ## EF - Electra - Epoch Processing - Pending deposits [Preset: mainnet] ```diff + Pending deposits - apply_pending_deposit_compounding_withdrawal_credentials_max [Preset: m OK @@ -2538,12 +2417,10 @@ OK: 13/13 Fail: 0/13 Skip: 0/13 + Pending deposits - process_pending_deposits_withdrawable_validator [Preset: mainnet] OK + Pending deposits - process_pending_deposits_withdrawable_validator_not_churned [Preset: ma OK ``` -OK: 44/44 Fail: 0/44 Skip: 0/44 ## EF - Electra - Epoch Processing - RANDAO mixes reset [Preset: mainnet] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Electra - Epoch Processing - Registry updates [Preset: mainnet] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK @@ -2563,7 +2440,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Electra - Epoch Processing - Rewards and penalties [Preset: mainnet] ```diff + Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK @@ -2582,7 +2458,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + Rewards and penalties - random_fill_attestations [Preset: mainnet] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Electra - Epoch Processing - Slashings [Preset: mainnet] ```diff + Slashings - low_penalty [Preset: mainnet] OK @@ -2591,12 +2466,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: mainnet] OK + Slashings - slashings_with_random_state [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Electra - Epoch Processing - Slashings reset [Preset: mainnet] ```diff + Slashings reset - flush_slashings [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Electra - Finality [Preset: mainnet] ```diff + [Valid] EF - Electra - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK @@ -2605,7 +2478,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Electra - Finality - finality_rule_3 [Preset: mainnet] OK + [Valid] EF - Electra - Finality - finality_rule_4 [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Electra - Fork [Preset: mainnet] ```diff + EF - Electra - Fork - electra_fork_random_0 [Preset: mainnet] OK @@ -2628,7 +2500,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Electra - Fork - fork_random_low_balances [Preset: mainnet] OK + EF - Electra - Fork - fork_random_misc_balances [Preset: mainnet] OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Electra - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -2677,7 +2548,6 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + [Valid] EF - Electra - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Electra - Operations - Attestation - previous_epoch OK ``` -OK: 45/45 Fail: 0/45 Skip: 0/45 ## EF - Electra - Operations - Attester Slashing [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -2711,7 +2581,6 @@ OK: 45/45 Fail: 0/45 Skip: 0/45 + [Valid] EF - Electra - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Electra - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Electra - Operations - BLS to execution change [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - BLS to execution change - invalid_already_0x01 OK @@ -2729,7 +2598,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Electra - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Electra - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Electra - Operations - Block Header [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -2739,7 +2607,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Invalid] EF - Electra - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Electra - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Electra - Operations - Consolidation Request [Preset: mainnet] ```diff + [Valid] EF - Electra - Operations - Consolidation Request - basic_switch_to_compounding OK @@ -2753,7 +2620,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Electra - Operations - Consolidation Request - switch_to_compounding_with_e OK + [Valid] EF - Electra - Operations - Consolidation Request - switch_to_compounding_with_p OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Electra - Operations - Deposit [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Deposit - invalid_bad_merkle_proof OK @@ -2778,7 +2644,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + [Valid] EF - Electra - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Electra - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Electra - Operations - Deposit Request [Preset: mainnet] ```diff + [Valid] EF - Electra - Operations - Deposit Request - process_deposit_request_invalid_si OK @@ -2790,7 +2655,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Electra - Operations - Deposit Request - process_deposit_request_top_up_max OK + [Valid] EF - Electra - Operations - Deposit Request - process_deposit_request_top_up_min OK ``` -OK: 8/8 Fail: 0/8 Skip: 0/8 ## EF - Electra - Operations - Execution Payload [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_everything_first_pay OK @@ -2834,7 +2698,6 @@ OK: 8/8 Fail: 0/8 Skip: 0/8 + [Valid] EF - Electra - Operations - Execution Payload - zero_length_transaction_regular_ OK + [Valid] EF - Electra - Operations - Execution Payload - zeroed_commitment OK ``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## EF - Electra - Operations - Proposer Slashing [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_different_proposer_indic OK @@ -2853,7 +2716,6 @@ OK: 40/40 Fail: 0/40 Skip: 0/40 + [Valid] EF - Electra - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Electra - Operations - Proposer Slashing - slashed_and_proposer_index_the_s OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Electra - Operations - Sync Aggregate [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -2883,7 +2745,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_participating_e OK + [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_participating_w OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Electra - Operations - Voluntary Exit [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -2911,7 +2772,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Electra - Operations - Voluntary Exit - min_balance_exits_up_to_churn OK + [Valid] EF - Electra - Operations - Voluntary Exit - success_exit_queue__min_churn OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Electra - Operations - Withdrawal Request [Preset: mainnet] ```diff + [Valid] EF - Electra - Operations - Withdrawal Request - activation_epoch_less_than_shar OK @@ -2934,7 +2794,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Electra - Operations - Withdrawal Request - pending_withdrawals_consume_all OK + [Valid] EF - Electra - Operations - Withdrawal Request - unknown_pubkey OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Electra - Operations - Withdrawals [Preset: mainnet] ```diff + [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK @@ -3013,7 +2872,6 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK + [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` -OK: 75/75 Fail: 0/75 Skip: 0/75 ## EF - Electra - Random [Preset: mainnet] ```diff + [Valid] EF - Electra - Random - randomized_0 [Preset: mainnet] OK @@ -3033,7 +2891,6 @@ OK: 75/75 Fail: 0/75 Skip: 0/75 + [Valid] EF - Electra - Random - randomized_8 [Preset: mainnet] OK + [Valid] EF - Electra - Random - randomized_9 [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Electra - Rewards [Preset: mainnet] ```diff + EF - Electra - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -3071,7 +2928,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Electra - Rewards - with_slashed_validators [Preset: mainnet] OK + EF - Electra - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Electra - SSZ consensus objects [Preset: mainnet] ```diff + Testing AggregateAndProof OK @@ -3131,7 +2987,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK + Testing WithdrawalRequest OK ``` -OK: 56/56 Fail: 0/56 Skip: 0/56 ## EF - Electra - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_eth1_deposits_overl OK @@ -3221,7 +3076,6 @@ OK: 56/56 Fail: 0/56 Skip: 0/56 + [Valid] EF - Electra - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK + [Valid] EF - Electra - Sanity - Blocks - zero_blob [Preset: mainnet] OK ``` -OK: 86/86 Fail: 0/86 Skip: 0/86 ## EF - Electra - Sanity - Slots [Preset: mainnet] ```diff + EF - Electra - Slots - double_empty_epoch [Preset: mainnet] OK @@ -3236,7 +3090,6 @@ OK: 86/86 Fail: 0/86 Skip: 0/86 + EF - Electra - Slots - slots_1 [Preset: mainnet] OK + EF - Electra - Slots - slots_2 [Preset: mainnet] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Electra - Transition [Preset: mainnet] ```diff + EF - Electra - Transition - non_empty_historical_roots [Preset: mainnet] OK @@ -3267,7 +3120,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + EF - Electra - Transition - transition_with_random_half_participation [Preset: mainnet] OK + EF - Electra - Transition - transition_with_random_three_quarters_participation [Preset: m OK ``` -OK: 27/27 Fail: 0/27 Skip: 0/27 ## EF - Electra - Unittests - Light client - Sync protocol [Preset: mainnet] ```diff + process_light_client_update_finality_updated OK @@ -3275,24 +3127,20 @@ OK: 27/27 Fail: 0/27 Skip: 0/27 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Fulu - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK + Effective balance updates - effective_balance_hysteresis_with_compounding_credentials [Pre OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Fulu - Epoch Processing - Eth1 data reset [Preset: mainnet] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Fulu - Epoch Processing - Historical summaries update [Preset: mainnet] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Fulu - Epoch Processing - Inactivity [Preset: mainnet] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: mainnet] OK @@ -3317,7 +3165,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: mainnet] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: mainnet] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Fulu - Epoch Processing - Justification & Finalization [Preset: mainnet] ```diff + Justification & Finalization - 123_ok_support [Preset: mainnet] OK @@ -3331,7 +3178,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: mainnet] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Fulu - Epoch Processing - Participation flag updates [Preset: mainnet] ```diff + Participation flag updates - all_zeroed [Preset: mainnet] OK @@ -3345,7 +3191,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_2 [Preset: mainnet] OK + Participation flag updates - random_genesis [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Fulu - Epoch Processing - Pending consolidations [Preset: mainnet] ```diff + Pending consolidations - all_consolidation_cases_together [Preset: mainnet] OK @@ -3362,7 +3207,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Pending consolidations - pending_consolidation_with_pending_deposit [Preset: mainnet] OK + Pending consolidations - skip_consolidation_when_source_slashed [Preset: mainnet] OK ``` -OK: 13/13 Fail: 0/13 Skip: 0/13 ## EF - Fulu - Epoch Processing - Pending deposits [Preset: mainnet] ```diff + Pending deposits - apply_pending_deposit_compounding_withdrawal_credentials_max [Preset: m OK @@ -3410,12 +3254,10 @@ OK: 13/13 Fail: 0/13 Skip: 0/13 + Pending deposits - process_pending_deposits_withdrawable_validator [Preset: mainnet] OK + Pending deposits - process_pending_deposits_withdrawable_validator_not_churned [Preset: ma OK ``` -OK: 44/44 Fail: 0/44 Skip: 0/44 ## EF - Fulu - Epoch Processing - RANDAO mixes reset [Preset: mainnet] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Fulu - Epoch Processing - Registry updates [Preset: mainnet] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK @@ -3435,7 +3277,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Fulu - Epoch Processing - Rewards and penalties [Preset: mainnet] ```diff + Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK @@ -3454,7 +3295,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + Rewards and penalties - random_fill_attestations [Preset: mainnet] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Fulu - Epoch Processing - Slashings [Preset: mainnet] ```diff + Slashings - low_penalty [Preset: mainnet] OK @@ -3463,12 +3303,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: mainnet] OK + Slashings - slashings_with_random_state [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Fulu - Epoch Processing - Slashings reset [Preset: mainnet] ```diff + Slashings reset - flush_slashings [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Fulu - Finality [Preset: mainnet] ```diff + [Valid] EF - Fulu - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK @@ -3477,7 +3315,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Fulu - Finality - finality_rule_3 [Preset: mainnet] OK + [Valid] EF - Fulu - Finality - finality_rule_4 [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Fulu - Fork [Preset: mainnet] ```diff + EF - Fulu - Fork - fork_base_state [Preset: mainnet] OK @@ -3493,7 +3330,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Fulu - Fork - fulu_fork_random_low_balances [Preset: mainnet] OK + EF - Fulu - Fork - fulu_fork_random_misc_balances [Preset: mainnet] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Fulu - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -3542,7 +3378,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + [Valid] EF - Fulu - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Fulu - Operations - Attestation - previous_epoch OK ``` -OK: 45/45 Fail: 0/45 Skip: 0/45 ## EF - Fulu - Operations - Attester Slashing [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -3576,7 +3411,6 @@ OK: 45/45 Fail: 0/45 Skip: 0/45 + [Valid] EF - Fulu - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Fulu - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Fulu - Operations - BLS to execution change [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - BLS to execution change - invalid_already_0x01 OK @@ -3594,7 +3428,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Fulu - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Fulu - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Fulu - Operations - Block Header [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -3604,7 +3437,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Invalid] EF - Fulu - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Fulu - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Fulu - Operations - Consolidation Request [Preset: mainnet] ```diff + [Valid] EF - Fulu - Operations - Consolidation Request - basic_switch_to_compounding OK @@ -3618,7 +3450,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Fulu - Operations - Consolidation Request - switch_to_compounding_with_exce OK + [Valid] EF - Fulu - Operations - Consolidation Request - switch_to_compounding_with_pend OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Fulu - Operations - Deposit [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Deposit - invalid_bad_merkle_proof OK @@ -3643,7 +3474,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + [Valid] EF - Fulu - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Fulu - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Fulu - Operations - Deposit Request [Preset: mainnet] ```diff + [Valid] EF - Fulu - Operations - Deposit Request - process_deposit_request_invalid_sig OK @@ -3655,7 +3485,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Fulu - Operations - Deposit Request - process_deposit_request_top_up_max_ef OK + [Valid] EF - Fulu - Operations - Deposit Request - process_deposit_request_top_up_min_ac OK ``` -OK: 8/8 Fail: 0/8 Skip: 0/8 ## EF - Fulu - Operations - Execution Payload [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Execution Payload - invalid_bad_everything_first_payloa OK @@ -3699,7 +3528,6 @@ OK: 8/8 Fail: 0/8 Skip: 0/8 + [Valid] EF - Fulu - Operations - Execution Payload - zero_length_transaction_regular_pay OK + [Valid] EF - Fulu - Operations - Execution Payload - zeroed_commitment OK ``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## EF - Fulu - Operations - Proposer Slashing [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Proposer Slashing - invalid_different_proposer_indices OK @@ -3718,7 +3546,6 @@ OK: 40/40 Fail: 0/40 Skip: 0/40 + [Valid] EF - Fulu - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Fulu - Operations - Proposer Slashing - slashed_and_proposer_index_the_same OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Fulu - Operations - Sync Aggregate [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -3748,7 +3575,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Fulu - Operations - Sync Aggregate - sync_committee_with_participating_exit OK + [Valid] EF - Fulu - Operations - Sync Aggregate - sync_committee_with_participating_with OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Fulu - Operations - Voluntary Exit [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -3776,7 +3602,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Fulu - Operations - Voluntary Exit - min_balance_exits_up_to_churn OK + [Valid] EF - Fulu - Operations - Voluntary Exit - success_exit_queue__min_churn OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Fulu - Operations - Withdrawal Request [Preset: mainnet] ```diff + [Valid] EF - Fulu - Operations - Withdrawal Request - activation_epoch_less_than_shard_c OK @@ -3799,7 +3624,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Fulu - Operations - Withdrawal Request - pending_withdrawals_consume_all_ex OK + [Valid] EF - Fulu - Operations - Withdrawal Request - unknown_pubkey OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Fulu - Operations - Withdrawals [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_few_ OK @@ -3878,7 +3702,6 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + [Valid] EF - Fulu - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balanc OK + [Valid] EF - Fulu - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balanc OK ``` -OK: 75/75 Fail: 0/75 Skip: 0/75 ## EF - Fulu - Random [Preset: mainnet] ```diff + [Valid] EF - Fulu - Random - randomized_0 [Preset: mainnet] OK @@ -3898,7 +3721,6 @@ OK: 75/75 Fail: 0/75 Skip: 0/75 + [Valid] EF - Fulu - Random - randomized_8 [Preset: mainnet] OK + [Valid] EF - Fulu - Random - randomized_9 [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Fulu - Rewards [Preset: mainnet] ```diff + EF - Fulu - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -3936,7 +3758,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Fulu - Rewards - with_slashed_validators [Preset: mainnet] OK + EF - Fulu - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Fulu - SSZ consensus objects [Preset: mainnet] ```diff + Testing AggregateAndProof OK @@ -3999,7 +3820,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK + Testing WithdrawalRequest OK ``` -OK: 59/59 Fail: 0/59 Skip: 0/59 ## EF - Fulu - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Fulu - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK @@ -4076,7 +3896,6 @@ OK: 59/59 Fail: 0/59 Skip: 0/59 + [Valid] EF - Fulu - Sanity - Blocks - withdrawal_success_two_blocks [Preset: mainnet] OK + [Valid] EF - Fulu - Sanity - Blocks - zero_blob [Preset: mainnet] OK ``` -OK: 73/73 Fail: 0/73 Skip: 0/73 ## EF - Fulu - Sanity - Slots [Preset: mainnet] ```diff + EF - Fulu - Slots - double_empty_epoch [Preset: mainnet] OK @@ -4091,7 +3910,6 @@ OK: 73/73 Fail: 0/73 Skip: 0/73 + EF - Fulu - Slots - slots_1 [Preset: mainnet] OK + EF - Fulu - Slots - slots_2 [Preset: mainnet] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Light client - Single merkle proof [Preset: mainnet] ```diff + Light client - Single merkle proof - mainnet/altair/light_client/single_merkle_proof/Beaco OK @@ -4114,7 +3932,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Light client - Single merkle proof - mainnet/electra/light_client/single_merkle_proof/Beac OK + Light client - Single merkle proof - mainnet/fulu/light_client/single_merkle_proof/BeaconB OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Merkle proof [Preset: mainnet] ```diff + Merkle proof - Single merkle proof - mainnet/deneb/merkle_proof/single_merkle_proof/Beacon OK @@ -4132,23 +3949,19 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + Merkle proof - Single merkle proof - mainnet/fulu/merkle_proof/single_merkle_proof/BeaconB OK + Merkle proof - Single merkle proof - mainnet/fulu/merkle_proof/single_merkle_proof/BeaconB OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Phase 0 - Epoch Processing - Effective balance updates [Preset: mainnet] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - Eth1 data reset [Preset: mainnet] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: mainnet] OK + Eth1 data reset - eth1_vote_reset [Preset: mainnet] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Phase 0 - Epoch Processing - Historical roots update [Preset: mainnet] ```diff + Historical roots update - historical_root_accumulator [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - Justification & Finalization [Preset: mainnet] ```diff + Justification & Finalization - 123_ok_support [Preset: mainnet] OK @@ -4162,17 +3975,14 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Justification & Finalization - 23_poor_support [Preset: mainnet] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: mainnet] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Phase 0 - Epoch Processing - Participation record updates [Preset: mainnet] ```diff + Participation record updates - updated_participation_record [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - RANDAO mixes reset [Preset: mainnet] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - Registry updates [Preset: mainnet] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: mainnet] OK @@ -4187,7 +3997,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_min [Preset: mainnet] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: mainnet] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Phase 0 - Epoch Processing - Rewards and penalties [Preset: mainnet] ```diff + Rewards and penalties - almost_empty_attestations [Preset: mainnet] OK @@ -4210,7 +4019,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Rewards and penalties - random_fill_attestations [Preset: mainnet] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: mainnet] OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Phase 0 - Epoch Processing - Slashings [Preset: mainnet] ```diff + Slashings - low_penalty [Preset: mainnet] OK @@ -4219,12 +4027,10 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + Slashings - scaled_penalties [Preset: mainnet] OK + Slashings - slashings_with_random_state [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Phase 0 - Epoch Processing - Slashings reset [Preset: mainnet] ```diff + Slashings reset - flush_slashings [Preset: mainnet] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Operations - Attestation [Preset: mainnet] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK @@ -4269,7 +4075,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: ma OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Phase 0 - Operations - Attester Slashing [Preset: mainnet] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK @@ -4303,7 +4108,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Phase 0 - Operations - Block Header [Preset: mainnet] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK @@ -4313,7 +4117,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Phase 0 - Operations - Deposit [Preset: mainnet] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK @@ -4334,7 +4137,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: mainne OK ``` -OK: 17/17 Fail: 0/17 Skip: 0/17 ## EF - Phase 0 - Operations - Proposer Slashing [Preset: mainnet] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK @@ -4353,7 +4155,6 @@ OK: 17/17 Fail: 0/17 Skip: 0/17 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Phase 0 - Operations - Voluntary Exit [Preset: mainnet] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK @@ -4366,7 +4167,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK ``` -OK: 9/9 Fail: 0/9 Skip: 0/9 ## EF - Phase 0 - Rewards [Preset: mainnet] ```diff + EF - Phase 0 - Rewards - all_balances_too_low_for_reward [Preset: mainnet] OK @@ -4419,7 +4219,6 @@ OK: 9/9 Fail: 0/9 Skip: 0/9 + EF - Phase 0 - Rewards - with_slashed_validators [Preset: mainnet] OK + EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: mainnet] OK ``` -OK: 49/49 Fail: 0/49 Skip: 0/49 ## EF - Phase 0 - SSZ consensus objects [Preset: mainnet] ```diff + Testing AggregateAndProof OK @@ -4450,7 +4249,6 @@ OK: 49/49 Fail: 0/49 Skip: 0/49 + Testing Validator OK + Testing VoluntaryExit OK ``` -OK: 27/27 Fail: 0/27 Skip: 0/27 ## EF - Phase 0 - Sanity - Slots [Preset: mainnet] ```diff + EF - Phase 0 - Slots - double_empty_epoch [Preset: mainnet] OK @@ -4460,7 +4258,6 @@ OK: 27/27 Fail: 0/27 Skip: 0/27 + EF - Phase 0 - Slots - slots_1 [Preset: mainnet] OK + EF - Phase 0 - Slots - slots_2 [Preset: mainnet] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Phase0 - Finality [Preset: mainnet] ```diff + [Valid] EF - Phase0 - Finality - finality_no_updates_at_genesis [Preset: mainnet] OK @@ -4469,7 +4266,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Phase0 - Finality - finality_rule_3 [Preset: mainnet] OK + [Valid] EF - Phase0 - Finality - finality_rule_4 [Preset: mainnet] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Phase0 - Random [Preset: mainnet] ```diff + [Valid] EF - Phase0 - Random - randomized_0 [Preset: mainnet] OK @@ -4489,7 +4285,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Phase0 - Random - randomized_8 [Preset: mainnet] OK + [Valid] EF - Phase0 - Random - randomized_9 [Preset: mainnet] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Phase0 - Sanity - Blocks [Preset: mainnet] ```diff + [Invalid] EF - Phase0 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: mainnet] OK @@ -4533,7 +4328,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Phase0 - Sanity - Blocks - slash_and_exit_diff_index [Preset: mainnet] OK + [Valid] EF - Phase0 - Sanity - Blocks - voluntary_exit [Preset: mainnet] OK ``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## ForkChoice ```diff + ForkChoice - mainnet/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_attestations_is_great OK @@ -4670,7 +4464,6 @@ OK: 40/40 Fail: 0/40 Skip: 0/40 + ForkChoice - mainnet/fulu/fork_choice/on_block/pyspec_tests/proposer_boost_root_same_slot_ OK ForkChoice - mainnet/fulu/fork_choice/should_override_forkchoice_update/pyspec_tests/shoul Skip ``` -OK: 106/133 Fail: 0/133 Skip: 27/133 ## Sync ```diff + Sync - mainnet/bellatrix/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK @@ -4679,7 +4472,3 @@ OK: 106/133 Fail: 0/133 Skip: 27/133 + Sync - mainnet/electra/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK + Sync - mainnet/fulu/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 - ----TOTAL--- -OK: 3821/3848 Fail: 0/3848 Skip: 27/3848 diff --git a/ConsensusSpecPreset-minimal.md b/ConsensusSpecPreset-minimal.md index 5acc6df6a0..c34a73d103 100644 --- a/ConsensusSpecPreset-minimal.md +++ b/ConsensusSpecPreset-minimal.md @@ -4,18 +4,15 @@ ConsensusSpecPreset-minimal ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Epoch Processing - Eth1 data reset [Preset: minimal] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Altair - Epoch Processing - Historical roots update [Preset: minimal] ```diff + Historical roots update - historical_root_accumulator [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Epoch Processing - Inactivity [Preset: minimal] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: minimal] OK @@ -40,7 +37,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: minimal] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: minimal] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Altair - Epoch Processing - Justification & Finalization [Preset: minimal] ```diff + Justification & Finalization - 123_ok_support [Preset: minimal] OK @@ -54,7 +50,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: minimal] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Altair - Epoch Processing - Participation flag updates [Preset: minimal] ```diff + Participation flag updates - all_zeroed [Preset: minimal] OK @@ -70,12 +65,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_genesis [Preset: minimal] OK + Participation flag updates - slightly_larger_random [Preset: minimal] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Altair - Epoch Processing - RANDAO mixes reset [Preset: minimal] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Epoch Processing - Registry updates [Preset: minimal] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: minimal] OK @@ -94,7 +87,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Altair - Epoch Processing - Rewards and penalties [Preset: minimal] ```diff + Rewards and penalties - almost_empty_attestations [Preset: minimal] OK @@ -113,7 +105,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Rewards and penalties - random_fill_attestations [Preset: minimal] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Altair - Epoch Processing - Slashings [Preset: minimal] ```diff + Slashings - low_penalty [Preset: minimal] OK @@ -122,12 +113,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: minimal] OK + Slashings - slashings_with_random_state [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Altair - Epoch Processing - Slashings reset [Preset: minimal] ```diff + Slashings reset - flush_slashings [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Altair - Epoch Processing - Sync committee updates [Preset: minimal] ```diff + Sync committee updates - sync_committees_no_progress_not_at_period_boundary [Preset: minim OK @@ -136,7 +125,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_misc_balances_not_genesis [Preset: minim OK + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Altair - Finality [Preset: minimal] ```diff + [Valid] EF - Altair - Finality - finality_no_updates_at_genesis [Preset: minimal] OK @@ -145,7 +133,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Altair - Finality - finality_rule_3 [Preset: minimal] OK + [Valid] EF - Altair - Finality - finality_rule_4 [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Altair - Fork [Preset: minimal] ```diff + EF - Altair - Fork - altair_fork_random_0 [Preset: minimal] OK @@ -165,7 +152,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Altair - Fork - fork_random_low_balances [Preset: minimal] OK + EF - Altair - Fork - fork_random_misc_balances [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Altair - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Altair - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -210,7 +196,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Altair - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Altair - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Altair - Operations - Attester Slashing [Preset: minimal] ```diff + [Invalid] EF - Altair - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -244,7 +229,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Altair - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Altair - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Altair - Operations - Block Header [Preset: minimal] ```diff + [Invalid] EF - Altair - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -254,7 +238,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Invalid] EF - Altair - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Altair - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Altair - Operations - Deposit [Preset: minimal] ```diff + [Invalid] EF - Altair - Operations - Deposit - invalid_bad_merkle_proof OK @@ -277,7 +260,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Altair - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Altair - Operations - Deposit - top_up__zero_balance OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Altair - Operations - Proposer Slashing [Preset: minimal] ```diff + [Invalid] EF - Altair - Operations - Proposer Slashing - invalid_different_proposer_indice OK @@ -296,7 +278,6 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + [Valid] EF - Altair - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Altair - Operations - Proposer Slashing - slashed_and_proposer_index_the_sa OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Altair - Operations - Sync Aggregate [Preset: minimal] ```diff + [Invalid] EF - Altair - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -324,7 +305,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Altair - Operations - Sync Aggregate - sync_committee_with_participating_wi OK + [Valid] EF - Altair - Operations - Sync Aggregate - valid_signature_future_committee OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Altair - Operations - Voluntary Exit [Preset: minimal] ```diff + [Invalid] EF - Altair - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -338,7 +318,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Altair - Operations - Voluntary Exit - success_exit_queue__min_churn OK + [Valid] EF - Altair - Operations - Voluntary Exit - success_exit_queue__scaled_churn OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Altair - Random [Preset: minimal] ```diff + [Valid] EF - Altair - Random - randomized_0 [Preset: minimal] OK @@ -358,7 +337,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + [Valid] EF - Altair - Random - randomized_8 [Preset: minimal] OK + [Valid] EF - Altair - Random - randomized_9 [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Altair - Rewards [Preset: minimal] ```diff + EF - Altair - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -396,7 +374,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Altair - Rewards - with_slashed_validators [Preset: minimal] OK + EF - Altair - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Altair - SSZ consensus objects [Preset: minimal] ```diff + Testing AggregateAndProof OK @@ -439,7 +416,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Validator OK + Testing VoluntaryExit OK ``` -OK: 39/39 Fail: 0/39 Skip: 0/39 ## EF - Altair - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Altair - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK @@ -495,7 +471,6 @@ OK: 39/39 Fail: 0/39 Skip: 0/39 + [Valid] EF - Altair - Sanity - Blocks - sync_committee_committee_genesis__half [Preset: OK + [Valid] EF - Altair - Sanity - Blocks - voluntary_exit [Preset: minimal] OK ``` -OK: 52/52 Fail: 0/52 Skip: 0/52 ## EF - Altair - Sanity - Slots [Preset: minimal] ```diff + EF - Altair - Slots - double_empty_epoch [Preset: minimal] OK @@ -505,7 +480,6 @@ OK: 52/52 Fail: 0/52 Skip: 0/52 + EF - Altair - Slots - slots_1 [Preset: minimal] OK + EF - Altair - Slots - slots_2 [Preset: minimal] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Altair - Transition [Preset: minimal] ```diff + EF - Altair - Transition - non_empty_historical_roots [Preset: minimal] OK @@ -535,7 +509,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Altair - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minima OK + EF - Altair - Transition - transition_with_voluntary_exit_right_before_fork [Preset: minim OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Altair - Unittests - Light client - Sync protocol [Preset: minimal] ```diff + process_light_client_update_finality_updated OK @@ -543,23 +516,19 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Bellatrix - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Epoch Processing - Eth1 data reset [Preset: minimal] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Bellatrix - Epoch Processing - Historical roots update [Preset: minimal] ```diff + Historical roots update - historical_root_accumulator [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Epoch Processing - Inactivity [Preset: minimal] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: minimal] OK @@ -584,7 +553,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: minimal] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: minimal] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Bellatrix - Epoch Processing - Justification & Finalization [Preset: minimal] ```diff + Justification & Finalization - 123_ok_support [Preset: minimal] OK @@ -598,7 +566,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: minimal] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Bellatrix - Epoch Processing - Participation flag updates [Preset: minimal] ```diff + Participation flag updates - all_zeroed [Preset: minimal] OK @@ -614,12 +581,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_genesis [Preset: minimal] OK + Participation flag updates - slightly_larger_random [Preset: minimal] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Bellatrix - Epoch Processing - RANDAO mixes reset [Preset: minimal] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Epoch Processing - Registry updates [Preset: minimal] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: minimal] OK @@ -638,7 +603,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Bellatrix - Epoch Processing - Rewards and penalties [Preset: minimal] ```diff + Rewards and penalties - almost_empty_attestations [Preset: minimal] OK @@ -657,7 +621,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Rewards and penalties - random_fill_attestations [Preset: minimal] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Bellatrix - Epoch Processing - Slashings [Preset: minimal] ```diff + Slashings - low_penalty [Preset: minimal] OK @@ -666,12 +629,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: minimal] OK + Slashings - slashings_with_random_state [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Bellatrix - Epoch Processing - Slashings reset [Preset: minimal] ```diff + Slashings reset - flush_slashings [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Bellatrix - Epoch Processing - Sync committee updates [Preset: minimal] ```diff + Sync committee updates - sync_committees_no_progress_not_at_period_boundary [Preset: minim OK @@ -680,7 +641,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_misc_balances_not_genesis [Preset: minim OK + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Bellatrix - Finality [Preset: minimal] ```diff + [Valid] EF - Bellatrix - Finality - finality_no_updates_at_genesis [Preset: minimal] OK @@ -689,7 +649,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Bellatrix - Finality - finality_rule_3 [Preset: minimal] OK + [Valid] EF - Bellatrix - Finality - finality_rule_4 [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Bellatrix - Fork [Preset: minimal] ```diff + EF - Bellatrix - Fork - bellatrix_fork_random_0 [Preset: minimal] OK @@ -707,7 +666,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Bellatrix - Fork - fork_random_low_balances [Preset: minimal] OK + EF - Bellatrix - Fork - fork_random_misc_balances [Preset: minimal] OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Bellatrix - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -752,7 +710,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Valid] EF - Bellatrix - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Bellatrix - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Bellatrix - Operations - Attester Slashing [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -786,7 +743,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Bellatrix - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Bellatrix - Operations - Attester Slashing - with_effective_balance_dispari OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Bellatrix - Operations - Block Header [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -796,7 +752,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Invalid] EF - Bellatrix - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Bellatrix - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Bellatrix - Operations - Deposit [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Deposit - invalid_bad_merkle_proof OK @@ -820,7 +775,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Bellatrix - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Bellatrix - Operations - Deposit - top_up__zero_balance OK ``` -OK: 20/20 Fail: 0/20 Skip: 0/20 ## EF - Bellatrix - Operations - Execution Payload [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Execution Payload - invalid_bad_everything_first_p OK @@ -850,7 +804,6 @@ OK: 20/20 Fail: 0/20 Skip: 0/20 + [Valid] EF - Bellatrix - Operations - Execution Payload - zero_length_transaction_first_ OK + [Valid] EF - Bellatrix - Operations - Execution Payload - zero_length_transaction_regula OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Bellatrix - Operations - Proposer Slashing [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Proposer Slashing - invalid_different_proposer_ind OK @@ -869,7 +822,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Bellatrix - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Bellatrix - Operations - Proposer Slashing - slashed_and_proposer_index_the OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Bellatrix - Operations - Sync Aggregate [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -897,7 +849,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Bellatrix - Operations - Sync Aggregate - sync_committee_with_participating OK + [Valid] EF - Bellatrix - Operations - Sync Aggregate - valid_signature_future_committee OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Bellatrix - Operations - Voluntary Exit [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -917,7 +868,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Bellatrix - Operations - Voluntary Exit - voluntary_exit_with_current_fork_ OK + [Valid] EF - Bellatrix - Operations - Voluntary Exit - voluntary_exit_with_previous_fork OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Bellatrix - Random [Preset: minimal] ```diff + [Valid] EF - Bellatrix - Random - randomized_0 [Preset: minimal] OK @@ -937,7 +887,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Bellatrix - Random - randomized_8 [Preset: minimal] OK + [Valid] EF - Bellatrix - Random - randomized_9 [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Bellatrix - Rewards [Preset: minimal] ```diff + EF - Bellatrix - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -975,7 +924,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Bellatrix - Rewards - with_slashed_validators [Preset: minimal] OK + EF - Bellatrix - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Bellatrix - SSZ consensus objects [Preset: minimal] ```diff + Testing AggregateAndProof OK @@ -1021,7 +969,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Validator OK + Testing VoluntaryExit OK ``` -OK: 42/42 Fail: 0/42 Skip: 0/42 ## EF - Bellatrix - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Bellatrix - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK @@ -1080,7 +1027,6 @@ OK: 42/42 Fail: 0/42 Skip: 0/42 + [Valid] EF - Bellatrix - Sanity - Blocks - sync_committee_committee_genesis__half [Prese OK + [Valid] EF - Bellatrix - Sanity - Blocks - voluntary_exit [Preset: minimal] OK ``` -OK: 55/55 Fail: 0/55 Skip: 0/55 ## EF - Bellatrix - Sanity - Slots [Preset: minimal] ```diff + EF - Bellatrix - Slots - double_empty_epoch [Preset: minimal] OK @@ -1090,7 +1036,6 @@ OK: 55/55 Fail: 0/55 Skip: 0/55 + EF - Bellatrix - Slots - slots_1 [Preset: minimal] OK + EF - Bellatrix - Slots - slots_2 [Preset: minimal] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Bellatrix - Transition [Preset: minimal] ```diff + EF - Bellatrix - Transition - non_empty_historical_roots [Preset: minimal] OK @@ -1120,23 +1065,19 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Bellatrix - Transition - transition_with_voluntary_exit_right_after_fork [Preset: min OK + EF - Bellatrix - Transition - transition_with_voluntary_exit_right_before_fork [Preset: mi OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Capella - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Eth1 data reset [Preset: minimal] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Capella - Epoch Processing - Historical summaries update [Preset: minimal] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Inactivity [Preset: minimal] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: minimal] OK @@ -1161,7 +1102,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: minimal] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: minimal] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Capella - Epoch Processing - Justification & Finalization [Preset: minimal] ```diff + Justification & Finalization - 123_ok_support [Preset: minimal] OK @@ -1175,7 +1115,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: minimal] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Capella - Epoch Processing - Participation flag updates [Preset: minimal] ```diff + Participation flag updates - all_zeroed [Preset: minimal] OK @@ -1191,12 +1130,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_genesis [Preset: minimal] OK + Participation flag updates - slightly_larger_random [Preset: minimal] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Capella - Epoch Processing - RANDAO mixes reset [Preset: minimal] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Registry updates [Preset: minimal] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: minimal] OK @@ -1215,7 +1152,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Capella - Epoch Processing - Rewards and penalties [Preset: minimal] ```diff + Rewards and penalties - almost_empty_attestations [Preset: minimal] OK @@ -1234,7 +1170,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Rewards and penalties - random_fill_attestations [Preset: minimal] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Capella - Epoch Processing - Slashings [Preset: minimal] ```diff + Slashings - low_penalty [Preset: minimal] OK @@ -1243,12 +1178,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: minimal] OK + Slashings - slashings_with_random_state [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Capella - Epoch Processing - Slashings reset [Preset: minimal] ```diff + Slashings reset - flush_slashings [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Capella - Epoch Processing - Sync committee updates [Preset: minimal] ```diff + Sync committee updates - sync_committees_no_progress_not_at_period_boundary [Preset: minim OK @@ -1257,7 +1190,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_misc_balances_not_genesis [Preset: minim OK + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Capella - Finality [Preset: minimal] ```diff + [Valid] EF - Capella - Finality - finality_no_updates_at_genesis [Preset: minimal] OK @@ -1266,7 +1198,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Capella - Finality - finality_rule_3 [Preset: minimal] OK + [Valid] EF - Capella - Finality - finality_rule_4 [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Capella - Fork [Preset: minimal] ```diff + EF - Capella - Fork - capella_fork_random_0 [Preset: minimal] OK @@ -1284,7 +1215,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Capella - Fork - fork_random_low_balances [Preset: minimal] OK + EF - Capella - Fork - fork_random_misc_balances [Preset: minimal] OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Capella - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -1329,7 +1259,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Valid] EF - Capella - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Capella - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Capella - Operations - Attester Slashing [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -1363,7 +1292,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Capella - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Capella - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Capella - Operations - BLS to execution change [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - BLS to execution change - invalid_already_0x01 OK @@ -1381,7 +1309,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Capella - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Capella - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Capella - Operations - Block Header [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -1391,7 +1318,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Invalid] EF - Capella - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Capella - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Capella - Operations - Deposit [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Deposit - invalid_bad_merkle_proof OK @@ -1416,7 +1342,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Capella - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Capella - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Capella - Operations - Execution Payload [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Execution Payload - invalid_bad_everything_first_pay OK @@ -1446,7 +1371,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Capella - Operations - Execution Payload - zero_length_transaction_first_pa OK + [Valid] EF - Capella - Operations - Execution Payload - zero_length_transaction_regular_ OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Capella - Operations - Proposer Slashing [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Proposer Slashing - invalid_different_proposer_indic OK @@ -1465,7 +1389,6 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + [Valid] EF - Capella - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Capella - Operations - Proposer Slashing - slashed_and_proposer_index_the_s OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Capella - Operations - Sync Aggregate [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -1493,7 +1416,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Capella - Operations - Sync Aggregate - sync_committee_with_participating_w OK + [Valid] EF - Capella - Operations - Sync Aggregate - valid_signature_future_committee OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Capella - Operations - Voluntary Exit [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -1513,7 +1435,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Capella - Operations - Voluntary Exit - voluntary_exit_with_current_fork_ve OK + [Valid] EF - Capella - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_v OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Capella - Operations - Withdrawals [Preset: minimal] ```diff + [Invalid] EF - Capella - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK @@ -1571,7 +1492,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK + [Valid] EF - Capella - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` -OK: 54/54 Fail: 0/54 Skip: 0/54 ## EF - Capella - Random [Preset: minimal] ```diff + [Valid] EF - Capella - Random - randomized_0 [Preset: minimal] OK @@ -1591,7 +1511,6 @@ OK: 54/54 Fail: 0/54 Skip: 0/54 + [Valid] EF - Capella - Random - randomized_8 [Preset: minimal] OK + [Valid] EF - Capella - Random - randomized_9 [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Capella - Rewards [Preset: minimal] ```diff + EF - Capella - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -1629,7 +1548,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Capella - Rewards - with_slashed_validators [Preset: minimal] OK + EF - Capella - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Capella - SSZ consensus objects [Preset: minimal] ```diff + Testing AggregateAndProof OK @@ -1679,7 +1597,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 46/46 Fail: 0/46 Skip: 0/46 ## EF - Capella - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Capella - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK @@ -1752,7 +1669,6 @@ OK: 46/46 Fail: 0/46 Skip: 0/46 + [Valid] EF - Capella - Sanity - Blocks - voluntary_exit [Preset: minimal] OK + [Valid] EF - Capella - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK ``` -OK: 69/69 Fail: 0/69 Skip: 0/69 ## EF - Capella - Sanity - Slots [Preset: minimal] ```diff + EF - Capella - Slots - double_empty_epoch [Preset: minimal] OK @@ -1762,7 +1678,6 @@ OK: 69/69 Fail: 0/69 Skip: 0/69 + EF - Capella - Slots - slots_1 [Preset: minimal] OK + EF - Capella - Slots - slots_2 [Preset: minimal] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Capella - Transition [Preset: minimal] ```diff + EF - Capella - Transition - non_empty_historical_roots [Preset: minimal] OK @@ -1792,7 +1707,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Capella - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minim OK + EF - Capella - Transition - transition_with_voluntary_exit_right_before_fork [Preset: mini OK ``` -OK: 26/26 Fail: 0/26 Skip: 0/26 ## EF - Capella - Unittests - Light client - Sync protocol [Preset: minimal] ```diff + process_light_client_update_finality_updated OK @@ -1800,23 +1714,19 @@ OK: 26/26 Fail: 0/26 Skip: 0/26 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Deneb - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Epoch Processing - Eth1 data reset [Preset: minimal] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Deneb - Epoch Processing - Historical summaries update [Preset: minimal] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Epoch Processing - Inactivity [Preset: minimal] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: minimal] OK @@ -1841,7 +1751,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: minimal] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: minimal] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Deneb - Epoch Processing - Justification & Finalization [Preset: minimal] ```diff + Justification & Finalization - 123_ok_support [Preset: minimal] OK @@ -1855,7 +1764,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: minimal] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Deneb - Epoch Processing - Participation flag updates [Preset: minimal] ```diff + Participation flag updates - all_zeroed [Preset: minimal] OK @@ -1871,12 +1779,10 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_genesis [Preset: minimal] OK + Participation flag updates - slightly_larger_random [Preset: minimal] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Deneb - Epoch Processing - RANDAO mixes reset [Preset: minimal] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Epoch Processing - Registry updates [Preset: minimal] ```diff + Registry updates - activation_churn_limit__equal_to_activation_limit [Preset: minimal] OK @@ -1898,7 +1804,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK ``` -OK: 18/18 Fail: 0/18 Skip: 0/18 ## EF - Deneb - Epoch Processing - Rewards and penalties [Preset: minimal] ```diff + Rewards and penalties - almost_empty_attestations [Preset: minimal] OK @@ -1917,7 +1822,6 @@ OK: 18/18 Fail: 0/18 Skip: 0/18 + Rewards and penalties - random_fill_attestations [Preset: minimal] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Deneb - Epoch Processing - Slashings [Preset: minimal] ```diff + Slashings - low_penalty [Preset: minimal] OK @@ -1926,12 +1830,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: minimal] OK + Slashings - slashings_with_random_state [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Deneb - Epoch Processing - Slashings reset [Preset: minimal] ```diff + Slashings reset - flush_slashings [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Deneb - Epoch Processing - Sync committee updates [Preset: minimal] ```diff + Sync committee updates - sync_committees_no_progress_not_at_period_boundary [Preset: minim OK @@ -1940,7 +1842,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_misc_balances_not_genesis [Preset: minim OK + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Deneb - Finality [Preset: minimal] ```diff + [Valid] EF - Deneb - Finality - finality_no_updates_at_genesis [Preset: minimal] OK @@ -1949,7 +1850,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Deneb - Finality - finality_rule_3 [Preset: minimal] OK + [Valid] EF - Deneb - Finality - finality_rule_4 [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Deneb - Fork [Preset: minimal] ```diff + EF - Deneb - Fork - deneb_fork_random_0 [Preset: minimal] OK @@ -1967,7 +1867,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Deneb - Fork - fork_random_low_balances [Preset: minimal] OK + EF - Deneb - Fork - fork_random_misc_balances [Preset: minimal] OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Deneb - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -2012,7 +1911,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Valid] EF - Deneb - Operations - Attestation - one_basic_attestation OK + [Valid] EF - Deneb - Operations - Attestation - previous_epoch OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Deneb - Operations - Attester Slashing [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -2046,7 +1944,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Deneb - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Deneb - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Deneb - Operations - BLS to execution change [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - BLS to execution change - invalid_already_0x01 OK @@ -2064,7 +1961,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Deneb - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Deneb - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Deneb - Operations - Block Header [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -2074,7 +1970,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Invalid] EF - Deneb - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Deneb - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Deneb - Operations - Deposit [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Deposit - invalid_bad_merkle_proof OK @@ -2099,7 +1994,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Deneb - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Deneb - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Deneb - Operations - Execution Payload [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Execution Payload - invalid_bad_everything_first_paylo OK @@ -2143,7 +2037,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Deneb - Operations - Execution Payload - zero_length_transaction_regular_pa OK + [Valid] EF - Deneb - Operations - Execution Payload - zeroed_commitment OK ``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## EF - Deneb - Operations - Proposer Slashing [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Proposer Slashing - invalid_different_proposer_indices OK @@ -2162,7 +2055,6 @@ OK: 40/40 Fail: 0/40 Skip: 0/40 + [Valid] EF - Deneb - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Deneb - Operations - Proposer Slashing - slashed_and_proposer_index_the_sam OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Deneb - Operations - Sync Aggregate [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -2190,7 +2082,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Deneb - Operations - Sync Aggregate - sync_committee_with_participating_wit OK + [Valid] EF - Deneb - Operations - Sync Aggregate - valid_signature_future_committee OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Deneb - Operations - Voluntary Exit [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -2210,7 +2101,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Deneb - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_ver OK + [Valid] EF - Deneb - Operations - Voluntary Exit - voluntary_exit_with_previous_fork_ver OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Deneb - Operations - Withdrawals [Preset: minimal] ```diff + [Invalid] EF - Deneb - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_few OK @@ -2268,7 +2158,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Deneb - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balan OK + [Valid] EF - Deneb - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balan OK ``` -OK: 54/54 Fail: 0/54 Skip: 0/54 ## EF - Deneb - Random [Preset: minimal] ```diff + [Valid] EF - Deneb - Random - randomized_0 [Preset: minimal] OK @@ -2288,7 +2177,6 @@ OK: 54/54 Fail: 0/54 Skip: 0/54 + [Valid] EF - Deneb - Random - randomized_8 [Preset: minimal] OK + [Valid] EF - Deneb - Random - randomized_9 [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Deneb - Rewards [Preset: minimal] ```diff + EF - Deneb - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -2326,7 +2214,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Deneb - Rewards - with_slashed_validators [Preset: minimal] OK + EF - Deneb - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Deneb - SSZ consensus objects [Preset: minimal] ```diff + Testing AggregateAndProof OK @@ -2378,7 +2265,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing VoluntaryExit OK + Testing Withdrawal OK ``` -OK: 48/48 Fail: 0/48 Skip: 0/48 ## EF - Deneb - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Deneb - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK @@ -2460,7 +2346,6 @@ OK: 48/48 Fail: 0/48 Skip: 0/48 + [Valid] EF - Deneb - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK + [Valid] EF - Deneb - Sanity - Blocks - zero_blob [Preset: minimal] OK ``` -OK: 78/78 Fail: 0/78 Skip: 0/78 ## EF - Deneb - Sanity - Slots [Preset: minimal] ```diff + EF - Deneb - Slots - double_empty_epoch [Preset: minimal] OK @@ -2470,7 +2355,6 @@ OK: 78/78 Fail: 0/78 Skip: 0/78 + EF - Deneb - Slots - slots_1 [Preset: minimal] OK + EF - Deneb - Slots - slots_2 [Preset: minimal] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Deneb - Transition [Preset: minimal] ```diff + EF - Deneb - Transition - higher_churn_limit_to_lower [Preset: minimal] OK @@ -2504,7 +2388,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + EF - Deneb - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minimal OK + EF - Deneb - Transition - transition_with_voluntary_exit_right_before_fork [Preset: minima OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Deneb - Unittests - Light client - Sync protocol [Preset: minimal] ```diff + process_light_client_update_finality_updated OK @@ -2512,24 +2395,20 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Electra - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK + Effective balance updates - effective_balance_hysteresis_with_compounding_credentials [Pre OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Electra - Epoch Processing - Eth1 data reset [Preset: minimal] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Electra - Epoch Processing - Historical summaries update [Preset: minimal] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Electra - Epoch Processing - Inactivity [Preset: minimal] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: minimal] OK @@ -2554,7 +2433,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: minimal] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: minimal] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Electra - Epoch Processing - Justification & Finalization [Preset: minimal] ```diff + Justification & Finalization - 123_ok_support [Preset: minimal] OK @@ -2568,7 +2446,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: minimal] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Electra - Epoch Processing - Participation flag updates [Preset: minimal] ```diff + Participation flag updates - all_zeroed [Preset: minimal] OK @@ -2584,7 +2461,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_genesis [Preset: minimal] OK + Participation flag updates - slightly_larger_random [Preset: minimal] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Electra - Epoch Processing - Pending consolidations [Preset: minimal] ```diff + Pending consolidations - all_consolidation_cases_together [Preset: minimal] OK @@ -2601,7 +2477,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + Pending consolidations - pending_consolidation_with_pending_deposit [Preset: minimal] OK + Pending consolidations - skip_consolidation_when_source_slashed [Preset: minimal] OK ``` -OK: 13/13 Fail: 0/13 Skip: 0/13 ## EF - Electra - Epoch Processing - Pending deposits [Preset: minimal] ```diff + Pending deposits - apply_pending_deposit_compounding_withdrawal_credentials_max [Preset: m OK @@ -2650,12 +2525,10 @@ OK: 13/13 Fail: 0/13 Skip: 0/13 + Pending deposits - process_pending_deposits_withdrawable_validator [Preset: minimal] OK + Pending deposits - process_pending_deposits_withdrawable_validator_not_churned [Preset: mi OK ``` -OK: 45/45 Fail: 0/45 Skip: 0/45 ## EF - Electra - Epoch Processing - RANDAO mixes reset [Preset: minimal] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Electra - Epoch Processing - Registry updates [Preset: minimal] ```diff + Registry updates - activation_churn_limit__equal_to_activation_limit [Preset: minimal] OK @@ -2682,7 +2555,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK ``` -OK: 23/23 Fail: 0/23 Skip: 0/23 ## EF - Electra - Epoch Processing - Rewards and penalties [Preset: minimal] ```diff + Rewards and penalties - almost_empty_attestations [Preset: minimal] OK @@ -2701,7 +2573,6 @@ OK: 23/23 Fail: 0/23 Skip: 0/23 + Rewards and penalties - random_fill_attestations [Preset: minimal] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Electra - Epoch Processing - Slashings [Preset: minimal] ```diff + Slashings - low_penalty [Preset: minimal] OK @@ -2710,12 +2581,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: minimal] OK + Slashings - slashings_with_random_state [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Electra - Epoch Processing - Slashings reset [Preset: minimal] ```diff + Slashings reset - flush_slashings [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Electra - Epoch Processing - Sync committee updates [Preset: minimal] ```diff + Sync committee updates - sync_committees_no_progress_not_at_period_boundary [Preset: minim OK @@ -2724,7 +2593,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_misc_balances_not_genesis [Preset: minim OK + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Electra - Finality [Preset: minimal] ```diff + [Valid] EF - Electra - Finality - finality_no_updates_at_genesis [Preset: minimal] OK @@ -2733,7 +2601,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Electra - Finality - finality_rule_3 [Preset: minimal] OK + [Valid] EF - Electra - Finality - finality_rule_4 [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Electra - Fork [Preset: minimal] ```diff + EF - Electra - Fork - electra_fork_random_0 [Preset: minimal] OK @@ -2758,7 +2625,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Electra - Fork - fork_random_low_balances [Preset: minimal] OK + EF - Electra - Fork - fork_random_misc_balances [Preset: minimal] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Electra - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -2811,7 +2677,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Electra - Operations - Attestation - one_committee_with_gap OK + [Valid] EF - Electra - Operations - Attestation - previous_epoch OK ``` -OK: 49/49 Fail: 0/49 Skip: 0/49 ## EF - Electra - Operations - Attester Slashing [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -2845,7 +2710,6 @@ OK: 49/49 Fail: 0/49 Skip: 0/49 + [Valid] EF - Electra - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Electra - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Electra - Operations - BLS to execution change [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - BLS to execution change - invalid_already_0x01 OK @@ -2863,7 +2727,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Electra - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Electra - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Electra - Operations - Block Header [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -2873,7 +2736,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Invalid] EF - Electra - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Electra - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Electra - Operations - Consolidation Request [Preset: minimal] ```diff + [Valid] EF - Electra - Operations - Consolidation Request - basic_consolidation_in_curre OK @@ -2910,7 +2772,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Electra - Operations - Consolidation Request - switch_to_compounding_with_e OK + [Valid] EF - Electra - Operations - Consolidation Request - switch_to_compounding_with_p OK ``` -OK: 33/33 Fail: 0/33 Skip: 0/33 ## EF - Electra - Operations - Deposit [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Deposit - invalid_bad_merkle_proof OK @@ -2935,7 +2796,6 @@ OK: 33/33 Fail: 0/33 Skip: 0/33 + [Valid] EF - Electra - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Electra - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Electra - Operations - Deposit Request [Preset: minimal] ```diff + [Valid] EF - Electra - Operations - Deposit Request - process_deposit_request_invalid_si OK @@ -2947,7 +2807,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Electra - Operations - Deposit Request - process_deposit_request_top_up_max OK + [Valid] EF - Electra - Operations - Deposit Request - process_deposit_request_top_up_min OK ``` -OK: 8/8 Fail: 0/8 Skip: 0/8 ## EF - Electra - Operations - Execution Payload [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Execution Payload - invalid_bad_everything_first_pay OK @@ -2991,7 +2850,6 @@ OK: 8/8 Fail: 0/8 Skip: 0/8 + [Valid] EF - Electra - Operations - Execution Payload - zero_length_transaction_regular_ OK + [Valid] EF - Electra - Operations - Execution Payload - zeroed_commitment OK ``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## EF - Electra - Operations - Proposer Slashing [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Proposer Slashing - invalid_different_proposer_indic OK @@ -3010,7 +2868,6 @@ OK: 40/40 Fail: 0/40 Skip: 0/40 + [Valid] EF - Electra - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Electra - Operations - Proposer Slashing - slashed_and_proposer_index_the_s OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Electra - Operations - Sync Aggregate [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -3038,7 +2895,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Electra - Operations - Sync Aggregate - sync_committee_with_participating_w OK + [Valid] EF - Electra - Operations - Sync Aggregate - valid_signature_future_committee OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Electra - Operations - Voluntary Exit [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -3062,7 +2918,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Electra - Operations - Voluntary Exit - success_exit_queue__min_churn OK + [Valid] EF - Electra - Operations - Voluntary Exit - success_exit_queue__scaled_churn OK ``` -OK: 20/20 Fail: 0/20 Skip: 0/20 ## EF - Electra - Operations - Withdrawal Request [Preset: minimal] ```diff + [Valid] EF - Electra - Operations - Withdrawal Request - activation_epoch_less_than_shar OK @@ -3095,7 +2950,6 @@ OK: 20/20 Fail: 0/20 Skip: 0/20 + [Valid] EF - Electra - Operations - Withdrawal Request - pending_withdrawals_consume_all OK + [Valid] EF - Electra - Operations - Withdrawal Request - unknown_pubkey OK ``` -OK: 29/29 Fail: 0/29 Skip: 0/29 ## EF - Electra - Operations - Withdrawals [Preset: minimal] ```diff + [Invalid] EF - Electra - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_f OK @@ -3175,7 +3029,6 @@ OK: 29/29 Fail: 0/29 Skip: 0/29 + [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK + [Valid] EF - Electra - Operations - Withdrawals - withdrawable_epoch_but_0_effective_bal OK ``` -OK: 76/76 Fail: 0/76 Skip: 0/76 ## EF - Electra - Random [Preset: minimal] ```diff + [Valid] EF - Electra - Random - randomized_0 [Preset: minimal] OK @@ -3195,7 +3048,6 @@ OK: 76/76 Fail: 0/76 Skip: 0/76 + [Valid] EF - Electra - Random - randomized_8 [Preset: minimal] OK + [Valid] EF - Electra - Random - randomized_9 [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Electra - Rewards [Preset: minimal] ```diff + EF - Electra - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -3233,7 +3085,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Electra - Rewards - with_slashed_validators [Preset: minimal] OK + EF - Electra - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Electra - SSZ consensus objects [Preset: minimal] ```diff + Testing AggregateAndProof OK @@ -3293,7 +3144,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK + Testing WithdrawalRequest OK ``` -OK: 56/56 Fail: 0/56 Skip: 0/56 ## EF - Electra - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Electra - Sanity - Blocks - deposit_transition__invalid_eth1_deposits_overl OK @@ -3390,7 +3240,6 @@ OK: 56/56 Fail: 0/56 Skip: 0/56 + [Valid] EF - Electra - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK + [Valid] EF - Electra - Sanity - Blocks - zero_blob [Preset: minimal] OK ``` -OK: 93/93 Fail: 0/93 Skip: 0/93 ## EF - Electra - Sanity - Slots [Preset: minimal] ```diff + EF - Electra - Slots - double_empty_epoch [Preset: minimal] OK @@ -3405,7 +3254,6 @@ OK: 93/93 Fail: 0/93 Skip: 0/93 + EF - Electra - Slots - slots_1 [Preset: minimal] OK + EF - Electra - Slots - slots_2 [Preset: minimal] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Electra - Transition [Preset: minimal] ```diff + EF - Electra - Transition - higher_churn_limit_to_lower [Preset: minimal] OK @@ -3442,7 +3290,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + EF - Electra - Transition - transition_with_voluntary_exit_right_after_fork [Preset: minim OK + EF - Electra - Transition - transition_with_voluntary_exit_right_before_fork [Preset: mini OK ``` -OK: 33/33 Fail: 0/33 Skip: 0/33 ## EF - Electra - Unittests - Light client - Sync protocol [Preset: minimal] ```diff + process_light_client_update_finality_updated OK @@ -3450,24 +3297,20 @@ OK: 33/33 Fail: 0/33 Skip: 0/33 + test_process_light_client_update_at_period_boundary OK + test_process_light_client_update_not_timeout OK ``` -OK: 4/4 Fail: 0/4 Skip: 0/4 ## EF - Fulu - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK + Effective balance updates - effective_balance_hysteresis_with_compounding_credentials [Pre OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Fulu - Epoch Processing - Eth1 data reset [Preset: minimal] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Fulu - Epoch Processing - Historical summaries update [Preset: minimal] ```diff + Historical summaries update - historical_summaries_accumulator [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Fulu - Epoch Processing - Inactivity [Preset: minimal] ```diff + Inactivity - all_zero_inactivity_scores_empty_participation [Preset: minimal] OK @@ -3492,7 +3335,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Inactivity - some_slashed_zero_scores_full_participation [Preset: minimal] OK + Inactivity - some_slashed_zero_scores_full_participation_leaking [Preset: minimal] OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Fulu - Epoch Processing - Justification & Finalization [Preset: minimal] ```diff + Justification & Finalization - 123_ok_support [Preset: minimal] OK @@ -3506,7 +3348,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + Justification & Finalization - 23_poor_support [Preset: minimal] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Fulu - Epoch Processing - Participation flag updates [Preset: minimal] ```diff + Participation flag updates - all_zeroed [Preset: minimal] OK @@ -3522,7 +3363,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + Participation flag updates - random_genesis [Preset: minimal] OK + Participation flag updates - slightly_larger_random [Preset: minimal] OK ``` -OK: 12/12 Fail: 0/12 Skip: 0/12 ## EF - Fulu - Epoch Processing - Pending consolidations [Preset: minimal] ```diff + Pending consolidations - all_consolidation_cases_together [Preset: minimal] OK @@ -3539,7 +3379,6 @@ OK: 12/12 Fail: 0/12 Skip: 0/12 + Pending consolidations - pending_consolidation_with_pending_deposit [Preset: minimal] OK + Pending consolidations - skip_consolidation_when_source_slashed [Preset: minimal] OK ``` -OK: 13/13 Fail: 0/13 Skip: 0/13 ## EF - Fulu - Epoch Processing - Pending deposits [Preset: minimal] ```diff + Pending deposits - apply_pending_deposit_compounding_withdrawal_credentials_max [Preset: m OK @@ -3588,12 +3427,10 @@ OK: 13/13 Fail: 0/13 Skip: 0/13 + Pending deposits - process_pending_deposits_withdrawable_validator [Preset: minimal] OK + Pending deposits - process_pending_deposits_withdrawable_validator_not_churned [Preset: mi OK ``` -OK: 45/45 Fail: 0/45 Skip: 0/45 ## EF - Fulu - Epoch Processing - RANDAO mixes reset [Preset: minimal] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Fulu - Epoch Processing - Registry updates [Preset: minimal] ```diff + Registry updates - activation_churn_limit__equal_to_activation_limit [Preset: minimal] OK @@ -3620,7 +3457,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK ``` -OK: 23/23 Fail: 0/23 Skip: 0/23 ## EF - Fulu - Epoch Processing - Rewards and penalties [Preset: minimal] ```diff + Rewards and penalties - almost_empty_attestations [Preset: minimal] OK @@ -3639,7 +3475,6 @@ OK: 23/23 Fail: 0/23 Skip: 0/23 + Rewards and penalties - random_fill_attestations [Preset: minimal] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Fulu - Epoch Processing - Slashings [Preset: minimal] ```diff + Slashings - low_penalty [Preset: minimal] OK @@ -3648,12 +3483,10 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Slashings - scaled_penalties [Preset: minimal] OK + Slashings - slashings_with_random_state [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Fulu - Epoch Processing - Slashings reset [Preset: minimal] ```diff + Slashings reset - flush_slashings [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Fulu - Epoch Processing - Sync committee updates [Preset: minimal] ```diff + Sync committee updates - sync_committees_no_progress_not_at_period_boundary [Preset: minim OK @@ -3662,7 +3495,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Sync committee updates - sync_committees_progress_misc_balances_not_genesis [Preset: minim OK + Sync committee updates - sync_committees_progress_not_genesis [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Fulu - Finality [Preset: minimal] ```diff + [Valid] EF - Fulu - Finality - finality_no_updates_at_genesis [Preset: minimal] OK @@ -3671,7 +3503,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Fulu - Finality - finality_rule_3 [Preset: minimal] OK + [Valid] EF - Fulu - Finality - finality_rule_4 [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Fulu - Fork [Preset: minimal] ```diff + EF - Fulu - Fork - fork_base_state [Preset: minimal] OK @@ -3689,7 +3520,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + EF - Fulu - Fork - fulu_fork_random_low_balances [Preset: minimal] OK + EF - Fulu - Fork - fulu_fork_random_misc_balances [Preset: minimal] OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Fulu - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Attestation - invalid_after_max_inclusion_slot OK @@ -3742,7 +3572,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Valid] EF - Fulu - Operations - Attestation - one_committee_with_gap OK + [Valid] EF - Fulu - Operations - Attestation - previous_epoch OK ``` -OK: 49/49 Fail: 0/49 Skip: 0/49 ## EF - Fulu - Operations - Attester Slashing [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Attester Slashing - invalid_all_empty_indices OK @@ -3776,7 +3605,6 @@ OK: 49/49 Fail: 0/49 Skip: 0/49 + [Valid] EF - Fulu - Operations - Attester Slashing - proposer_index_slashed OK + [Valid] EF - Fulu - Operations - Attester Slashing - with_effective_balance_disparity OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Fulu - Operations - BLS to execution change [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - BLS to execution change - invalid_already_0x01 OK @@ -3794,7 +3622,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Valid] EF - Fulu - Operations - BLS to execution change - success_not_activated OK + [Valid] EF - Fulu - Operations - BLS to execution change - success_withdrawable OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Fulu - Operations - Block Header [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Block Header - invalid_multiple_blocks_single_slot OK @@ -3804,7 +3631,6 @@ OK: 14/14 Fail: 0/14 Skip: 0/14 + [Invalid] EF - Fulu - Operations - Block Header - invalid_slot_block_header OK + [Valid] EF - Fulu - Operations - Block Header - basic_block_header OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Fulu - Operations - Consolidation Request [Preset: minimal] ```diff + [Valid] EF - Fulu - Operations - Consolidation Request - basic_consolidation_in_current_ OK @@ -3841,7 +3667,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Fulu - Operations - Consolidation Request - switch_to_compounding_with_exce OK + [Valid] EF - Fulu - Operations - Consolidation Request - switch_to_compounding_with_pend OK ``` -OK: 33/33 Fail: 0/33 Skip: 0/33 ## EF - Fulu - Operations - Deposit [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Deposit - invalid_bad_merkle_proof OK @@ -3866,7 +3691,6 @@ OK: 33/33 Fail: 0/33 Skip: 0/33 + [Valid] EF - Fulu - Operations - Deposit - top_up__max_effective_balance OK + [Valid] EF - Fulu - Operations - Deposit - top_up__zero_balance OK ``` -OK: 21/21 Fail: 0/21 Skip: 0/21 ## EF - Fulu - Operations - Deposit Request [Preset: minimal] ```diff + [Valid] EF - Fulu - Operations - Deposit Request - process_deposit_request_invalid_sig OK @@ -3878,7 +3702,6 @@ OK: 21/21 Fail: 0/21 Skip: 0/21 + [Valid] EF - Fulu - Operations - Deposit Request - process_deposit_request_top_up_max_ef OK + [Valid] EF - Fulu - Operations - Deposit Request - process_deposit_request_top_up_min_ac OK ``` -OK: 8/8 Fail: 0/8 Skip: 0/8 ## EF - Fulu - Operations - Execution Payload [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Execution Payload - invalid_bad_everything_first_payloa OK @@ -3922,7 +3745,6 @@ OK: 8/8 Fail: 0/8 Skip: 0/8 + [Valid] EF - Fulu - Operations - Execution Payload - zero_length_transaction_regular_pay OK + [Valid] EF - Fulu - Operations - Execution Payload - zeroed_commitment OK ``` -OK: 40/40 Fail: 0/40 Skip: 0/40 ## EF - Fulu - Operations - Proposer Slashing [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Proposer Slashing - invalid_different_proposer_indices OK @@ -3941,7 +3763,6 @@ OK: 40/40 Fail: 0/40 Skip: 0/40 + [Valid] EF - Fulu - Operations - Proposer Slashing - block_header_from_future OK + [Valid] EF - Fulu - Operations - Proposer Slashing - slashed_and_proposer_index_the_same OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Fulu - Operations - Sync Aggregate [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Sync Aggregate - invalid_signature_bad_domain OK @@ -3969,7 +3790,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Fulu - Operations - Sync Aggregate - sync_committee_with_participating_with OK + [Valid] EF - Fulu - Operations - Sync Aggregate - valid_signature_future_committee OK ``` -OK: 24/24 Fail: 0/24 Skip: 0/24 ## EF - Fulu - Operations - Voluntary Exit [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Voluntary Exit - invalid_incorrect_signature OK @@ -3993,7 +3813,6 @@ OK: 24/24 Fail: 0/24 Skip: 0/24 + [Valid] EF - Fulu - Operations - Voluntary Exit - success_exit_queue__min_churn OK + [Valid] EF - Fulu - Operations - Voluntary Exit - success_exit_queue__scaled_churn OK ``` -OK: 20/20 Fail: 0/20 Skip: 0/20 ## EF - Fulu - Operations - Withdrawal Request [Preset: minimal] ```diff + [Valid] EF - Fulu - Operations - Withdrawal Request - activation_epoch_less_than_shard_c OK @@ -4026,7 +3845,6 @@ OK: 20/20 Fail: 0/20 Skip: 0/20 + [Valid] EF - Fulu - Operations - Withdrawal Request - pending_withdrawals_consume_all_ex OK + [Valid] EF - Fulu - Operations - Withdrawal Request - unknown_pubkey OK ``` -OK: 29/29 Fail: 0/29 Skip: 0/29 ## EF - Fulu - Operations - Withdrawals [Preset: minimal] ```diff + [Invalid] EF - Fulu - Operations - Withdrawals - invalid_a_lot_fully_withdrawable_too_few_ OK @@ -4106,7 +3924,6 @@ OK: 29/29 Fail: 0/29 Skip: 0/29 + [Valid] EF - Fulu - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balanc OK + [Valid] EF - Fulu - Operations - Withdrawals - withdrawable_epoch_but_0_effective_balanc OK ``` -OK: 76/76 Fail: 0/76 Skip: 0/76 ## EF - Fulu - Random [Preset: minimal] ```diff + [Valid] EF - Fulu - Random - randomized_0 [Preset: minimal] OK @@ -4126,7 +3943,6 @@ OK: 76/76 Fail: 0/76 Skip: 0/76 + [Valid] EF - Fulu - Random - randomized_8 [Preset: minimal] OK + [Valid] EF - Fulu - Random - randomized_9 [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Fulu - Rewards [Preset: minimal] ```diff + EF - Fulu - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -4164,7 +3980,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + EF - Fulu - Rewards - with_slashed_validators [Preset: minimal] OK + EF - Fulu - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` -OK: 34/34 Fail: 0/34 Skip: 0/34 ## EF - Fulu - SSZ consensus objects [Preset: minimal] ```diff + Testing AggregateAndProof OK @@ -4227,7 +4042,6 @@ OK: 34/34 Fail: 0/34 Skip: 0/34 + Testing Withdrawal OK + Testing WithdrawalRequest OK ``` -OK: 59/59 Fail: 0/59 Skip: 0/59 ## EF - Fulu - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Fulu - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK @@ -4311,7 +4125,6 @@ OK: 59/59 Fail: 0/59 Skip: 0/59 + [Valid] EF - Fulu - Sanity - Blocks - withdrawal_success_two_blocks [Preset: minimal] OK + [Valid] EF - Fulu - Sanity - Blocks - zero_blob [Preset: minimal] OK ``` -OK: 80/80 Fail: 0/80 Skip: 0/80 ## EF - Fulu - Sanity - Slots [Preset: minimal] ```diff + EF - Fulu - Slots - double_empty_epoch [Preset: minimal] OK @@ -4326,7 +4139,6 @@ OK: 80/80 Fail: 0/80 Skip: 0/80 + EF - Fulu - Slots - slots_1 [Preset: minimal] OK + EF - Fulu - Slots - slots_2 [Preset: minimal] OK ``` -OK: 11/11 Fail: 0/11 Skip: 0/11 ## EF - Light client - Data collection [Preset: minimal] ```diff + Light client - Data collection - minimal/altair/light_client/data_collection/pyspec_tests/ OK @@ -4339,7 +4151,6 @@ OK: 11/11 Fail: 0/11 Skip: 0/11 + Light client - Data collection - minimal/deneb/light_client/data_collection/pyspec_tests/l OK + Light client - Data collection - minimal/electra/light_client/data_collection/pyspec_tests OK ``` -OK: 9/9 Fail: 0/9 Skip: 0/9 ## EF - Light client - Single merkle proof [Preset: minimal] ```diff + Light client - Single merkle proof - minimal/altair/light_client/single_merkle_proof/Beaco OK @@ -4362,7 +4173,6 @@ OK: 9/9 Fail: 0/9 Skip: 0/9 + Light client - Single merkle proof - minimal/electra/light_client/single_merkle_proof/Beac OK + Light client - Single merkle proof - minimal/fulu/light_client/single_merkle_proof/BeaconB OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Light client - Sync [Preset: minimal] ```diff + Light client - Sync - minimal/altair/light_client/sync/pyspec_tests/advance_finality_witho OK @@ -4396,7 +4206,6 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + Light client - Sync - minimal/electra/light_client/sync/pyspec_tests/light_client_sync OK + Light client - Sync - minimal/electra/light_client/sync/pyspec_tests/supply_sync_committee OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Light client - Update ranking [Preset: minimal] ```diff + Light client - Update ranking - minimal/altair/light_client/update_ranking/pyspec_tests/up OK @@ -4405,7 +4214,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + Light client - Update ranking - minimal/deneb/light_client/update_ranking/pyspec_tests/upd OK + Light client - Update ranking - minimal/electra/light_client/update_ranking/pyspec_tests/u OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Merkle proof [Preset: minimal] ```diff + Merkle proof - Single merkle proof - minimal/deneb/merkle_proof/single_merkle_proof/Beacon OK @@ -4423,23 +4231,19 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + Merkle proof - Single merkle proof - minimal/fulu/merkle_proof/single_merkle_proof/BeaconB OK + Merkle proof - Single merkle proof - minimal/fulu/merkle_proof/single_merkle_proof/BeaconB OK ``` -OK: 14/14 Fail: 0/14 Skip: 0/14 ## EF - Phase 0 - Epoch Processing - Effective balance updates [Preset: minimal] ```diff + Effective balance updates - effective_balance_hysteresis [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - Eth1 data reset [Preset: minimal] ```diff + Eth1 data reset - eth1_vote_no_reset [Preset: minimal] OK + Eth1 data reset - eth1_vote_reset [Preset: minimal] OK ``` -OK: 2/2 Fail: 0/2 Skip: 0/2 ## EF - Phase 0 - Epoch Processing - Historical roots update [Preset: minimal] ```diff + Historical roots update - historical_root_accumulator [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - Justification & Finalization [Preset: minimal] ```diff + Justification & Finalization - 123_ok_support [Preset: minimal] OK @@ -4453,17 +4257,14 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Justification & Finalization - 23_poor_support [Preset: minimal] OK + Justification & Finalization - balance_threshold_with_exited_validators [Preset: minimal] OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Phase 0 - Epoch Processing - Participation record updates [Preset: minimal] ```diff + Participation record updates - updated_participation_record [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - RANDAO mixes reset [Preset: minimal] ```diff + RANDAO mixes reset - updated_randao_mixes [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Epoch Processing - Registry updates [Preset: minimal] ```diff + Registry updates - activation_queue_activation_and_ejection__1 [Preset: minimal] OK @@ -4482,7 +4283,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + Registry updates - ejection_past_churn_limit_scaled [Preset: minimal] OK + Registry updates - invalid_large_withdrawable_epoch [Preset: minimal] OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Phase 0 - Epoch Processing - Rewards and penalties [Preset: minimal] ```diff + Rewards and penalties - almost_empty_attestations [Preset: minimal] OK @@ -4505,7 +4305,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + Rewards and penalties - random_fill_attestations [Preset: minimal] OK + Rewards and penalties - random_fill_attestations_with_leak [Preset: minimal] OK ``` -OK: 19/19 Fail: 0/19 Skip: 0/19 ## EF - Phase 0 - Epoch Processing - Slashings [Preset: minimal] ```diff + Slashings - low_penalty [Preset: minimal] OK @@ -4514,12 +4313,10 @@ OK: 19/19 Fail: 0/19 Skip: 0/19 + Slashings - scaled_penalties [Preset: minimal] OK + Slashings - slashings_with_random_state [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Phase 0 - Epoch Processing - Slashings reset [Preset: minimal] ```diff + Slashings reset - flush_slashings [Preset: minimal] OK ``` -OK: 1/1 Fail: 0/1 Skip: 0/1 ## EF - Phase 0 - Operations - Attestation [Preset: minimal] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK @@ -4564,7 +4361,6 @@ OK: 1/1 Fail: 0/1 Skip: 0/1 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attestation [Preset: mi OK ``` -OK: 41/41 Fail: 0/41 Skip: 0/41 ## EF - Phase 0 - Operations - Attester Slashing [Preset: minimal] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK @@ -4598,7 +4394,6 @@ OK: 41/41 Fail: 0/41 Skip: 0/41 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Attester Slashing [Pres OK ``` -OK: 30/30 Fail: 0/30 Skip: 0/30 ## EF - Phase 0 - Operations - Block Header [Preset: minimal] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK @@ -4608,7 +4403,6 @@ OK: 30/30 Fail: 0/30 Skip: 0/30 + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Block Header [Preset: m OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Phase 0 - Operations - Deposit [Preset: minimal] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK @@ -4629,7 +4423,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Deposit [Preset: minima OK ``` -OK: 17/17 Fail: 0/17 Skip: 0/17 ## EF - Phase 0 - Operations - Proposer Slashing [Preset: minimal] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK @@ -4648,7 +4441,6 @@ OK: 17/17 Fail: 0/17 Skip: 0/17 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Proposer Slashing [Pres OK ``` -OK: 15/15 Fail: 0/15 Skip: 0/15 ## EF - Phase 0 - Operations - Voluntary Exit [Preset: minimal] ```diff + [Invalid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK @@ -4662,7 +4454,6 @@ OK: 15/15 Fail: 0/15 Skip: 0/15 + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK + [Valid] EF - Phase 0 - Operations - EF - Phase 0 - Operations - Voluntary Exit [Preset: OK ``` -OK: 10/10 Fail: 0/10 Skip: 0/10 ## EF - Phase 0 - Rewards [Preset: minimal] ```diff + EF - Phase 0 - Rewards - all_balances_too_low_for_reward [Preset: minimal] OK @@ -4715,7 +4506,6 @@ OK: 10/10 Fail: 0/10 Skip: 0/10 + EF - Phase 0 - Rewards - with_slashed_validators [Preset: minimal] OK + EF - Phase 0 - Rewards - with_slashed_validators_leak [Preset: minimal] OK ``` -OK: 49/49 Fail: 0/49 Skip: 0/49 ## EF - Phase 0 - SSZ consensus objects [Preset: minimal] ```diff + Testing AggregateAndProof OK @@ -4746,7 +4536,6 @@ OK: 49/49 Fail: 0/49 Skip: 0/49 + Testing Validator OK + Testing VoluntaryExit OK ``` -OK: 27/27 Fail: 0/27 Skip: 0/27 ## EF - Phase 0 - Sanity - Slots [Preset: minimal] ```diff + EF - Phase 0 - Slots - double_empty_epoch [Preset: minimal] OK @@ -4756,7 +4545,6 @@ OK: 27/27 Fail: 0/27 Skip: 0/27 + EF - Phase 0 - Slots - slots_1 [Preset: minimal] OK + EF - Phase 0 - Slots - slots_2 [Preset: minimal] OK ``` -OK: 6/6 Fail: 0/6 Skip: 0/6 ## EF - Phase0 - Finality [Preset: minimal] ```diff + [Valid] EF - Phase0 - Finality - finality_no_updates_at_genesis [Preset: minimal] OK @@ -4765,7 +4553,6 @@ OK: 6/6 Fail: 0/6 Skip: 0/6 + [Valid] EF - Phase0 - Finality - finality_rule_3 [Preset: minimal] OK + [Valid] EF - Phase0 - Finality - finality_rule_4 [Preset: minimal] OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 ## EF - Phase0 - Random [Preset: minimal] ```diff + [Valid] EF - Phase0 - Random - randomized_0 [Preset: minimal] OK @@ -4785,7 +4572,6 @@ OK: 5/5 Fail: 0/5 Skip: 0/5 + [Valid] EF - Phase0 - Random - randomized_8 [Preset: minimal] OK + [Valid] EF - Phase0 - Random - randomized_9 [Preset: minimal] OK ``` -OK: 16/16 Fail: 0/16 Skip: 0/16 ## EF - Phase0 - Sanity - Blocks [Preset: minimal] ```diff + [Invalid] EF - Phase0 - Sanity - Blocks - invalid_all_zeroed_sig [Preset: minimal] OK @@ -4834,7 +4620,6 @@ OK: 16/16 Fail: 0/16 Skip: 0/16 + [Valid] EF - Phase0 - Sanity - Blocks - slash_and_exit_diff_index [Preset: minimal] OK + [Valid] EF - Phase0 - Sanity - Blocks - voluntary_exit [Preset: minimal] OK ``` -OK: 45/45 Fail: 0/45 Skip: 0/45 ## ForkChoice ```diff + ForkChoice - minimal/altair/fork_choice/ex_ante/pyspec_tests/ex_ante_sandwich_with_honest_ OK @@ -5152,7 +4937,6 @@ OK: 45/45 Fail: 0/45 Skip: 0/45 + ForkChoice - minimal/fulu/fork_choice/withholding/pyspec_tests/withholding_attack OK + ForkChoice - minimal/fulu/fork_choice/withholding/pyspec_tests/withholding_attack_unviable OK ``` -OK: 282/314 Fail: 0/314 Skip: 32/314 ## Sync ```diff + Sync - minimal/bellatrix/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK @@ -5161,7 +4945,3 @@ OK: 282/314 Fail: 0/314 Skip: 32/314 + Sync - minimal/electra/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK + Sync - minimal/fulu/sync/optimistic/pyspec_tests/from_syncing_to_invalid OK ``` -OK: 5/5 Fail: 0/5 Skip: 0/5 - ----TOTAL--- -OK: 4262/4294 Fail: 0/4294 Skip: 32/4294 diff --git a/tests/testutil.nim b/tests/testutil.nim index f00a8873d5..bd232750f7 100644 --- a/tests/testutil.nim +++ b/tests/testutil.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2018-2024 Status Research & Development GmbH +# Copyright (c) 2018-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -58,7 +58,8 @@ proc summarizeLongTests*(name: string) = status.sort do (a: (string, OrderedTable[string, Status]), b: (string, OrderedTable[string, Status])) -> int: cmp(a[0], b[0]) - generateReport(name & "-" & const_preset, status, width=90) + generateReport( + name & "-" & const_preset, status, width=90, withTotals=false) except CatchableError as exc: raiseAssert exc.msg From b49a7e84a4cee8c8ef4dfcb271cffe9b90b6c93d Mon Sep 17 00:00:00 2001 From: Eugene Kabanov Date: Mon, 24 Feb 2025 11:53:44 +0200 Subject: [PATCH 19/46] VC: Fix graffiti settings (#6946) * Fix VC not using graffiti settings from filesystem file or keymanager API. * Fix VC unable to set graffiti bytes before validator being added via keymanager api. * Update copyright year. * Remove unneeded code. --- beacon_chain/rpc/rest_key_management_api.nim | 13 ++++--------- beacon_chain/validator_client/block_service.nim | 8 ++------ 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/beacon_chain/rpc/rest_key_management_api.nim b/beacon_chain/rpc/rest_key_management_api.nim index ca4e789662..93f3a79d2b 100644 --- a/beacon_chain/rpc/rest_key_management_api.nim +++ b/beacon_chain/rpc/rest_key_management_api.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2024 Status Research & Development GmbH +# Copyright (c) 2021-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -667,15 +667,10 @@ proc installKeymanagerHandlers*(router: var RestRouter, host: KeymanagerHost) = decodeBody(SetGraffitiRequest, contentBody.get()).valueOr: return keymanagerApiError(Http400, InvalidGraffitiRequestError) - if not(host.checkValidatorKeystoreDir(pubkey)): - return keymanagerApiError(Http404, ValidatorNotFoundError) + host.setGraffiti(pubkey, GraffitiBytes.init(req.graffiti)).isOkOr: + return keymanagerApiError(Http500, "Failed to set graffiti: " & error) - let status = host.setGraffiti(pubkey, GraffitiBytes.init(req.graffiti)) - if status.isOk: - RestApiResponse.response(Http202) - else: - keymanagerApiError( - Http500, "Failed to set graffiti: " & status.error) + RestApiResponse.response(Http202) # https://ethereum.github.io/keymanager-APIs/?urls.primaryName=dev#/Graffiti/deleteGraffiti router.api2(MethodDelete, "/eth/v1/validator/{pubkey}/graffiti") do ( diff --git a/beacon_chain/validator_client/block_service.nim b/beacon_chain/validator_client/block_service.nim index 4f2fbe2762..1c392a2a8a 100644 --- a/beacon_chain/validator_client/block_service.nim +++ b/beacon_chain/validator_client/block_service.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2024 Status Research & Development GmbH +# Copyright (c) 2021-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -107,11 +107,7 @@ proc publishBlockV3( ) {.async: (raises: [CancelledError]).} = let genesisRoot = vc.beaconGenesis.genesis_validators_root - graffiti = - if vc.config.graffiti.isSome(): - vc.config.graffiti.get() - else: - defaultGraffitiBytes() + graffiti = vc.getGraffitiBytes(validator) vindex = validator.index.get() logScope: From d1e5e8112f766304d91e7c0563b7cb613fb11b54 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 16:29:41 +0100 Subject: [PATCH 20/46] Compute `BlobQuarantine` limit from dynamic config (#6948) `MAX_BLOBS_PER_BLOCK_ELECTRA` is configurable by network definitions, compute the `BlobQuarantine` limit on initialization at runtime instead of at compile time. --- .../consensus_object_pools/blob_quarantine.nim | 18 +++++++++++------- beacon_chain/nimbus_beacon_node.nim | 3 ++- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/beacon_chain/consensus_object_pools/blob_quarantine.nim b/beacon_chain/consensus_object_pools/blob_quarantine.nim index 99f6af50a2..12da2ca4ff 100644 --- a/beacon_chain/consensus_object_pools/blob_quarantine.nim +++ b/beacon_chain/consensus_object_pools/blob_quarantine.nim @@ -14,13 +14,14 @@ import from std/sequtils import mapIt from std/strutils import join -const - MaxBlobs = 3 * SLOTS_PER_EPOCH * MAX_BLOBS_PER_BLOCK_ELECTRA - ## Same limit as `MaxOrphans` in `block_quarantine`; - ## blobs may arrive before an orphan is tagged `blobless` +func maxBlobs(MAX_BLOBS_PER_BLOCK_ELECTRA: uint64): uint64 = + # Same limit as `MaxOrphans` in `block_quarantine`; + # blobs may arrive before an orphan is tagged `blobless` + 3 * SLOTS_PER_EPOCH * MAX_BLOBS_PER_BLOCK_ELECTRA type BlobQuarantine* = object + maxBlobs: uint64 blobs*: OrderedTable[(Eth2Digest, BlobIndex, KzgCommitment), ref BlobSidecar] onBlobSidecarCallback*: OnBlobSidecarCallback @@ -39,7 +40,7 @@ func shortLog*(x: seq[BlobFetchRecord]): string = "[" & x.mapIt(shortLog(it.block_root) & shortLog(it.indices)).join(", ") & "]" func put*(quarantine: var BlobQuarantine, blobSidecar: ref BlobSidecar) = - if quarantine.blobs.lenu64 >= MaxBlobs: + if quarantine.blobs.lenu64 >= quarantine.maxBlobs: # FIFO if full. For example, sync manager and request manager can race to # put blobs in at the same time, so one gets blob insert -> block resolve # -> blob insert sequence, which leaves garbage blobs. @@ -106,5 +107,8 @@ func blobFetchRecord*(quarantine: BlobQuarantine, BlobFetchRecord(block_root: blck.root, indices: indices) func init*( - T: type BlobQuarantine, onBlobSidecarCallback: OnBlobSidecarCallback): T = - T(onBlobSidecarCallback: onBlobSidecarCallback) + T: type BlobQuarantine, + cfg: RuntimeConfig, + onBlobSidecarCallback: OnBlobSidecarCallback): T = + T(maxBlobs: cfg.MAX_BLOBS_PER_BLOCK_ELECTRA.maxBlobs(), + onBlobSidecarCallback: onBlobSidecarCallback) diff --git a/beacon_chain/nimbus_beacon_node.nim b/beacon_chain/nimbus_beacon_node.nim index 69b5ab58c6..9dd1b52726 100644 --- a/beacon_chain/nimbus_beacon_node.nim +++ b/beacon_chain/nimbus_beacon_node.nim @@ -418,7 +418,8 @@ proc initFullNode( dag, attestationPool, onVoluntaryExitAdded, onBLSToExecutionChangeAdded, onProposerSlashingAdded, onPhase0AttesterSlashingAdded, onElectraAttesterSlashingAdded)) - blobQuarantine = newClone(BlobQuarantine.init(onBlobSidecarAdded)) + blobQuarantine = newClone(BlobQuarantine.init( + dag.cfg, onBlobSidecarAdded)) dataColumnQuarantine = newClone(DataColumnQuarantine.init()) supernode = node.config.peerdasSupernode localCustodyGroups = From 751c1cb9ddac3bed3b8ac16bfbd0da1dcd338c25 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 16:37:24 +0100 Subject: [PATCH 21/46] Expose runtime `MAX_BLOBS_PER_BLOCK_ELECTRA` in REST config endpoint (#6949) The REST config endpoint exposes the compile-time constant instead of the config value for `MAX_BLOBS_PER_BLOCK_ELECTRA`. Fix that, so that the compile-time constant can be removed eventually. --- beacon_chain/rpc/rest_config_api.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_chain/rpc/rest_config_api.nim b/beacon_chain/rpc/rest_config_api.nim index ec1a009115..e6ffba1903 100644 --- a/beacon_chain/rpc/rest_config_api.nim +++ b/beacon_chain/rpc/rest_config_api.nim @@ -364,7 +364,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = MAX_PENDING_DEPOSITS_PER_EPOCH: Base10.toString(uint64(MAX_PENDING_DEPOSITS_PER_EPOCH)), MAX_BLOBS_PER_BLOCK_ELECTRA: - Base10.toString(uint64(MAX_BLOBS_PER_BLOCK_ELECTRA)), + Base10.toString(cfg.MAX_BLOBS_PER_BLOCK_ELECTRA), MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: Base10.toString(cfg.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA), MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: From e714176e700e43ab5a3e9ca121d46891045dc38b Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 16:59:05 +0100 Subject: [PATCH 22/46] Use correct blob subnet when `BLOB_SIDECAR_SUBNET_COUNT_*` is overridden (#6950) `BLOB_SIDECAR_SUBNET_COUNT_ELECTRA` is configurable separately from `MAX_BLOBS_PER_BLOCK_ELECTRA` to allow configs with multiple blob IDs mapped to the same gossip topic. There is no large runtime overhead in simply using the correct constant as defined by spec. If we want to restrict to values that map 1 blob to 1 topic, there should be a check. Also fix max blobs per block computation to be based on the block slot, rather than the time at which it was received. --- .../gossip_processing/gossip_validation.nim | 12 ++++++------ beacon_chain/spec/network.nim | 13 ++++++++++--- beacon_chain/validators/message_router.nim | 6 ++++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/beacon_chain/gossip_processing/gossip_validation.nim b/beacon_chain/gossip_processing/gossip_validation.nim index fab3bd0225..a56ecf54fb 100644 --- a/beacon_chain/gossip_processing/gossip_validation.nim +++ b/beacon_chain/gossip_processing/gossip_validation.nim @@ -293,9 +293,8 @@ template checkedReject( pool: ValidatorChangePool, error: ValidationError): untyped = pool.dag.checkedReject(error) -func getMaxBlobsPerBlock(cfg: RuntimeConfig, wallTime: BeaconTime): uint64 = - if min(wallTime, wallTime - MAXIMUM_GOSSIP_CLOCK_DISPARITY).slotOrZero.epoch >= - cfg.ELECTRA_FORK_EPOCH: +func getMaxBlobsPerBlock(cfg: RuntimeConfig, slot: Slot): uint64 = + if slot >= cfg.ELECTRA_FORK_EPOCH.start_slot: cfg.MAX_BLOBS_PER_BLOCK_ELECTRA else: MAX_BLOBS_PER_BLOCK @@ -379,7 +378,7 @@ template validateBeaconBlockDeneb( # limitation defined in Consensus Layer -- i.e. validate that # len(body.signed_beacon_block.message.blob_kzg_commitments) <= MAX_BLOBS_PER_BLOCK if not (lenu64(signed_beacon_block.message.body.blob_kzg_commitments) <= - dag.cfg.getMaxBlobsPerBlock(wallTime)): + dag.cfg.getMaxBlobsPerBlock(signed_beacon_block.message.slot)): return dag.checkedReject("validateBeaconBlockDeneb: too many blob commitments") # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.4/specs/deneb/p2p-interface.md#blob_sidecar_subnet_id @@ -395,12 +394,13 @@ proc validateBlobSidecar*( # [REJECT] The sidecar's index is consistent with `MAX_BLOBS_PER_BLOCK` # -- i.e. `blob_sidecar.index < MAX_BLOBS_PER_BLOCK` - if not (blob_sidecar.index < dag.cfg.getMaxBlobsPerBlock(wallTime)): + if not (blob_sidecar.index < dag.cfg.getMaxBlobsPerBlock(block_header.slot)): return dag.checkedReject("BlobSidecar: index inconsistent") # [REJECT] The sidecar is for the correct subnet -- i.e. # `compute_subnet_for_blob_sidecar(blob_sidecar.index) == subnet_id`. - if not (compute_subnet_for_blob_sidecar(blob_sidecar.index) == subnet_id): + if not (dag.cfg.compute_subnet_for_blob_sidecar( + block_header.slot, blob_sidecar.index) == subnet_id): return dag.checkedReject("BlobSidecar: subnet incorrect") # [IGNORE] The sidecar is not from a future slot (with a diff --git a/beacon_chain/spec/network.nim b/beacon_chain/spec/network.nim index 56deffe557..62bc1b9e36 100644 --- a/beacon_chain/spec/network.nim +++ b/beacon_chain/spec/network.nim @@ -110,9 +110,16 @@ func getBlobSidecarTopic*(forkDigest: ForkDigest, subnet_id: BlobId): string = eth2Prefix(forkDigest) & "blob_sidecar_" & $subnet_id & "/ssz_snappy" -# https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/deneb/validator.md#sidecar -func compute_subnet_for_blob_sidecar*(blob_index: BlobIndex): BlobId = - BlobId(blob_index mod MAX_BLOBS_PER_BLOCK_ELECTRA) +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/deneb/validator.md#sidecar +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/electra/validator.md#sidecar +func compute_subnet_for_blob_sidecar*( + cfg: RuntimeConfig, slot: Slot, blob_index: BlobIndex): BlobId = + let subnetCount = + if slot >= cfg.ELECTRA_FORK_EPOCH.start_slot: + cfg.BLOB_SIDECAR_SUBNET_COUNT_ELECTRA + else: + BLOB_SIDECAR_SUBNET_COUNT + BlobId(blob_index mod subnetCount) # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#compute_subnet_for_data_column_sidecar func compute_subnet_for_data_column_sidecar*(column_index: ColumnIndex): uint64 = diff --git a/beacon_chain/validators/message_router.nim b/beacon_chain/validators/message_router.nim index 0965453b9f..31c9fca380 100644 --- a/beacon_chain/validators/message_router.nim +++ b/beacon_chain/validators/message_router.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2018-2024 Status Research & Development GmbH +# Copyright (c) 2018-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -157,7 +157,9 @@ proc routeSignedBeaconBlock*( let blobs = blobsOpt.get() var workers = newSeq[Future[SendResult]](blobs.len) for i in 0.. Date: Mon, 24 Feb 2025 17:10:01 +0100 Subject: [PATCH 23/46] Use consistent merkleization limit for `/eth/v1/beacon/blob_sidecars` (#6951) Use the `MAX_BLOB_COMMITMENTS_PER_BLOCK` constant as merkleization limit for the `/eth/v1/beacon/blob_sidecars` response so that `hash_tree_root` results in same value regardless of configured serialization limits. At compile-time, we don't have access to the actual serialization limit, so using a mainnet derived value in the type definition is not flexible. --- beacon_chain/rpc/rest_beacon_api.nim | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/beacon_chain/rpc/rest_beacon_api.nim b/beacon_chain/rpc/rest_beacon_api.nim index e2fe4bbd8b..996aa9649f 100644 --- a/beacon_chain/rpc/rest_beacon_api.nim +++ b/beacon_chain/rpc/rest_beacon_api.nim @@ -1702,10 +1702,12 @@ proc installBeaconApiHandlers*(router: var RestRouter, node: BeaconNode) = res.get() # https://github.com/ethereum/beacon-APIs/blob/v2.4.2/types/deneb/blob_sidecar.yaml#L2-L28 - # Define a list which allows for a larger-than-Deneb-valid blobs per block, - # per https://github.com/ethereum/beacon-APIs/pull/488 and for pre-Electra, - # those blobs just won't exist. - let data = newClone(default(List[BlobSidecar, Limit MAX_BLOBS_PER_BLOCK_ELECTRA])) + # The merkleization limit of the list is `MAX_BLOB_COMMITMENTS_PER_BLOCK`, + # the serialization limit is configurable and is: + # - `MAX_BLOBS_PER_BLOCK` from Deneb onward + # - `MAX_BLOBS_PER_BLOCK_ELECTRA` from Electra. + let data = newClone(default( + List[BlobSidecar, Limit MAX_BLOB_COMMITMENTS_PER_BLOCK])) if indices.isErr: return RestApiResponse.jsonError(Http400, @@ -1713,7 +1715,7 @@ proc installBeaconApiHandlers*(router: var RestRouter, node: BeaconNode) = let indexFilter = indices.get.toHashSet - for blobIndex in 0'u64 ..< MAX_BLOBS_PER_BLOCK_ELECTRA: + for blobIndex in 0'u64 ..< node.dag.cfg.MAX_BLOBS_PER_BLOCK_ELECTRA: if indexFilter.len > 0 and blobIndex notin indexFilter: continue From a06733ea1522ec0a0c87c3a5f9123470247fa32b Mon Sep 17 00:00:00 2001 From: tersec Date: Mon, 24 Feb 2025 17:30:56 +0000 Subject: [PATCH 24/46] bump nim-snappy (#6947) --- vendor/nim-snappy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/nim-snappy b/vendor/nim-snappy index 0c308d3424..9658ee0684 160000 --- a/vendor/nim-snappy +++ b/vendor/nim-snappy @@ -1 +1 @@ -Subproject commit 0c308d34241c9f0764f6d111a0288428ded173bc +Subproject commit 9658ee0684fde6cd5fb904936a774ef82bd33344 From 27fcbdd6fc97488fc9c2d639a22aef96972464b5 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 19:36:19 +0100 Subject: [PATCH 25/46] Expose `MAX_REQUEST_BLOB_SIDECARS_ELECTRA` config via REST (#6953) The `MAX_REQUEST_BLOB_SIDECARS_ELECTRA` value is configurable and should therefore be queriable via REST to see how the BN is configured. --- beacon_chain/rpc/rest_config_api.nim | 2 ++ ncli/resttest-rules.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/beacon_chain/rpc/rest_config_api.nim b/beacon_chain/rpc/rest_config_api.nim index e6ffba1903..36d8f8b122 100644 --- a/beacon_chain/rpc/rest_config_api.nim +++ b/beacon_chain/rpc/rest_config_api.nim @@ -365,6 +365,8 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(uint64(MAX_PENDING_DEPOSITS_PER_EPOCH)), MAX_BLOBS_PER_BLOCK_ELECTRA: Base10.toString(cfg.MAX_BLOBS_PER_BLOCK_ELECTRA), + MAX_REQUEST_BLOB_SIDECARS_ELECTRA: + Base10.toString(cfg.MAX_REQUEST_BLOB_SIDECARS_ELECTRA), MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: Base10.toString(cfg.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA), MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: diff --git a/ncli/resttest-rules.json b/ncli/resttest-rules.json index e19f83d736..84ed3bb32b 100644 --- a/ncli/resttest-rules.json +++ b/ncli/resttest-rules.json @@ -4180,7 +4180,7 @@ "response": { "status": {"operator": "equals", "value": "200"}, "headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}], - "body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","GOSSIP_MAX_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","MAX_CHUNK_SIZE":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"", "UNSET_DEPOSIT_REQUESTS_START_INDEX":"", "FULL_EXIT_REQUEST_AMOUNT": "", "COMPOUNDING_WITHDRAWAL_PREFIX": "", "DEPOSIT_REQUEST_TYPE": "", "WITHDRAWAL_REQUEST_TYPE": "", "CONSOLIDATION_REQUEST_TYPE": "", "MIN_ACTIVATION_BALANCE": "", "MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "", "WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "", "PENDING_DEPOSITS_LIMIT": "", "PENDING_PARTIAL_WITHDRAWALS_LIMIT": "", "PENDING_CONSOLIDATIONS_LIMIT": "", "MAX_ATTESTER_SLASHINGS_ELECTRA": "", "MAX_ATTESTATIONS_ELECTRA": "", "MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "", "MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "", "MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "", "MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "", "MAX_PENDING_DEPOSITS_PER_EPOCH": "", "MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "", "MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": ""}}] + "body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","MAX_REQUEST_BLOB_SIDECARS_ELECTRA":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","GOSSIP_MAX_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","MAX_CHUNK_SIZE":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"", "UNSET_DEPOSIT_REQUESTS_START_INDEX":"", "FULL_EXIT_REQUEST_AMOUNT": "", "COMPOUNDING_WITHDRAWAL_PREFIX": "", "DEPOSIT_REQUEST_TYPE": "", "WITHDRAWAL_REQUEST_TYPE": "", "CONSOLIDATION_REQUEST_TYPE": "", "MIN_ACTIVATION_BALANCE": "", "MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "", "WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "", "PENDING_DEPOSITS_LIMIT": "", "PENDING_PARTIAL_WITHDRAWALS_LIMIT": "", "PENDING_CONSOLIDATIONS_LIMIT": "", "MAX_ATTESTER_SLASHINGS_ELECTRA": "", "MAX_ATTESTATIONS_ELECTRA": "", "MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "", "MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "", "MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "", "MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "", "MAX_PENDING_DEPOSITS_PER_EPOCH": "", "MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "", "MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": ""}}] } }, { From 5236e6301f8c386835ce6887d5b676006bfa85c4 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 19:42:30 +0100 Subject: [PATCH 26/46] Remove unused `deadlineVar` from p2p dsl (#6952) * Remove unused `deadlineVar` from p2p dsl The `deadlineVar` is not used anywhere and can be removed. * Lint --- beacon_chain/networking/eth2_protocol_dsl.nim | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/beacon_chain/networking/eth2_protocol_dsl.nim b/beacon_chain/networking/eth2_protocol_dsl.nim index 0d2668ccd4..36473bdb06 100644 --- a/beacon_chain/networking/eth2_protocol_dsl.nim +++ b/beacon_chain/networking/eth2_protocol_dsl.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2024 Status Research & Development GmbH +# Copyright (c) 2024-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -132,7 +132,6 @@ let responseVar* {.compileTime.} = ident "response" streamVar* {.compileTime.} = ident "stream" protocolVar* {.compileTime.} = ident "protocol" - deadlineVar* {.compileTime.} = ident "deadline" timeoutVar* {.compileTime.} = ident "timeout" currentProtocolSym* {.compileTime.} = ident "CurrentProtocol" resultIdent* {.compileTime.} = ident "result" @@ -904,4 +903,3 @@ macro emitForAllBackends(backendSyms: typed, options: untyped, body: untyped): u template p2pProtocol*(options: untyped, body: untyped) {.dirty.} = bind emitForAllBackends emitForAllBackends(p2pProtocolBackendImpl, options, body) - From 4b864cc0b6db05a8e715b85a7e7866ef92e5040e Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 19:52:05 +0100 Subject: [PATCH 27/46] When requesting lists via req/resp, allow runtime config of `maxLen` (#6954) The maximum number of items that are acceptable for any given req/resp response can be smaller than the hard maximum. For example, if we only request blobs for a single block, the limit is `MAX_BLOBS_PER_BLOCK` so we will eventually reject any response that exceeds that limit even though it technically fits into the `MAX_REQUEST_BLOB_SIDECARS` based response type. This adds an optional `maxResponseItems` parameter to requests that provide `List` responses, so that the caller can further restrict the maximum expected number of response chunks. If a peer provides more chunks than expected, this now fails early with `ResponseChunkOverflow`. --- beacon_chain/networking/eth2_network.nim | 82 +++++++++++++++++++----- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/beacon_chain/networking/eth2_network.nim b/beacon_chain/networking/eth2_network.nim index de4571bfa6..43de82ff3c 100644 --- a/beacon_chain/networking/eth2_network.nim +++ b/beacon_chain/networking/eth2_network.nim @@ -135,7 +135,8 @@ type ## Protocol requests using this type will produce request-making ## client-side procs that return `NetRes[MsgType]` - MultipleChunksResponse*[MsgType; maxLen: static Limit] = distinct UntypedResponse + MultipleChunksResponse*[ + MsgType; maxLen: static Limit] = distinct UntypedResponse ## Protocol requests using this type will produce request-making ## client-side procs that return `NetRes[List[MsgType, maxLen]]`. ## In the future, such procs will return an `InputStream[NetRes[MsgType]]`. @@ -952,9 +953,11 @@ proc readResponseChunk( return await readChunkPayload(conn, peer, MsgType) -proc readResponse(conn: Connection, peer: Peer, - MsgType: type, timeout: Duration): Future[NetRes[MsgType]] - {.async: (raises: [CancelledError]).} = +proc readResponse( + conn: Connection, peer: Peer, + MsgType: type, maxResponseItems: Limit, + timeout: Duration +): Future[NetRes[MsgType]] {.async: (raises: [CancelledError]).} = when MsgType is List: type E = MsgType.T var results: MsgType @@ -979,18 +982,20 @@ proc readResponse(conn: Connection, peer: Peer, return err nextRes.error else: trace "Got chunk", conn - if not results.add nextRes.value: + if results.len >= maxResponseItems or not results.add nextRes.value: return neterr(ResponseChunkOverflow) else: + discard maxResponseItems # Always set to 1 for non-`List` responses let nextFut = conn.readResponseChunk(peer, MsgType) if not await nextFut.withTimeout(timeout): return neterr(ReadResponseTimeout) return await nextFut # Guaranteed to complete without waiting -proc makeEth2Request(peer: Peer, protocolId: string, requestBytes: seq[byte], - ResponseMsg: type, - timeout: Duration): Future[NetRes[ResponseMsg]] - {.async: (raises: [CancelledError]).} = +proc doMakeEth2Request( + peer: Peer, protocolId: string, requestBytes: seq[byte], + ResponseMsg: type, maxResponseItems: Limit, + timeout: Duration +): Future[NetRes[ResponseMsg]] {.async: (raises: [CancelledError]).} = let deadline = sleepAsync timeout streamRes = @@ -1017,7 +1022,8 @@ proc makeEth2Request(peer: Peer, protocolId: string, requestBytes: seq[byte], nbc_reqresp_messages_sent.inc(1, [shortProtocolId(protocolId)]) # Read the response - let res = await readResponse(stream, peer, ResponseMsg, timeout) + let res = await readResponse( + stream, peer, ResponseMsg, maxResponseItems, timeout) if res.isErr(): if res.error().kind in ProtocolViolations: peer.updateScore(PeerScoreInvalidRequest) @@ -1036,6 +1042,31 @@ proc makeEth2Request(peer: Peer, protocolId: string, requestBytes: seq[byte], debug "Unexpected error while closing stream", peer, protocolId, exc = exc.msg +proc makeEth2Request( + peer: Peer, protocolId: string, requestBytes: seq[byte], + ResponseMsg: type, + timeout: Duration +): Future[NetRes[ResponseMsg]] {. + async: (raises: [CancelledError], raw: true).} = + when ResponseMsg is List: + doMakeEth2Request( + peer, protocolId, requestBytes, ResponseMsg, ResponseMsg.maxLen, timeout) + else: + doMakeEth2Request( + peer, protocolId, requestBytes, ResponseMsg, 1.Limit, timeout) + +proc makeEth2Request( + peer: Peer, protocolId: string, requestBytes: seq[byte], + ResponseMsg: type, maxResponseItems: Limit, + timeout: Duration +): Future[NetRes[ResponseMsg]] {. + async: (raises: [CancelledError], raw: true).} = + when ResponseMsg is List: + doMakeEth2Request( + peer, protocolId, requestBytes, ResponseMsg, maxResponseItems, timeout) + else: + static: raiseAssert $ResponseMsg & " does not support `maxResponseItems`" + func init*(T: type MultipleChunksResponse, peer: Peer, conn: Connection): T = T(UntypedResponse(peer: peer, stream: conn)) @@ -1098,7 +1129,7 @@ func setEventHandlers(p: ProtocolInfo, p.onPeerConnected = onPeerConnected p.onPeerDisconnected = onPeerDisconnected -proc implementSendProcBody(sendProc: SendProc) = +proc implementSendProcBody(sendProc: SendProc, isChunkStream: bool) = let msg = sendProc.msg UntypedResponse = bindSym "UntypedResponse" @@ -1109,9 +1140,16 @@ proc implementSendProcBody(sendProc: SendProc) = case msg.kind of msgRequest: let ResponseRecord = msg.response.recName - quote: - makeEth2Request(`peer`, `msgProto`, `bytes`, - `ResponseRecord`, `timeoutVar`) + if isChunkStream: + quote: + makeEth2Request( + `peer`, `msgProto`, `bytes`, + `ResponseRecord`, maxResponseItems, `timeoutVar`) + else: + quote: + makeEth2Request( + `peer`, `msgProto`, `bytes`, + `ResponseRecord`, `timeoutVar`) else: quote: sendNotificationMsg(`peer`, `msgProto`, `bytes`) else: @@ -2019,7 +2057,9 @@ proc p2pProtocolBackendImpl*(p: P2PProtocol): Backend = ## initialize the network object by creating handlers bound to the ## specific network. ## - var userHandlerCall = newTree(nnkDiscardStmt) + var + userHandlerCall = newTree(nnkDiscardStmt) + maxResponseItems: Opt[NimNode] if msg.userHandler != nil: var OutputParamType = if msg.kind == msgRequest: msg.outputParamType @@ -2037,6 +2077,7 @@ proc p2pProtocolBackendImpl*(p: P2PProtocol): Backend = let isChunkStream = eqIdent(OutputParamType[0], "MultipleChunksResponse") msg.response.recName = if isChunkStream: + maxResponseItems.ok OutputParamType[2] newTree(nnkBracketExpr, ident"List", OutputParamType[1], OutputParamType[2]) else: OutputParamType[1] @@ -2074,7 +2115,16 @@ proc p2pProtocolBackendImpl*(p: P2PProtocol): Backend = ## var sendProc = msg.createSendProc() - implementSendProcBody sendProc + if maxResponseItems.isSome: + sendProc.def.params.insert( + sendProc.def.params.len - 1, # Insert before implicit `timeout` param + newTree( + nnkIdentDefs, + ident"maxResponseItems", + bindSym"Limit", + maxResponseItems.get)) + + implementSendProcBody(sendProc, maxResponseItems.isSome) protocol.outProcRegistrations.add( newCall(registerMsg, From 645f1ed7a6cd10a2fcefd9bd0e33d59ef9325e8c Mon Sep 17 00:00:00 2001 From: Eugene Kabanov Date: Mon, 24 Feb 2025 21:01:29 +0200 Subject: [PATCH 28/46] Add SSZ encoding support to REST API endpoint /eth/v1/validator/register_validator (#6943) * Add SSZ version of /eth/v1/validator/register_validator * Add ability to test `application/octet-stream` bodies to `restclient`. Add tests for SSZ version `/eth/v1/validator/register_validator`. * Fix test value to be correct hexadecimal string. * Update copyright years. --- beacon_chain/rpc/rest_constants.nim | 3 +- beacon_chain/rpc/rest_validator_api.nim | 22 ++++------ .../eth2_apis/eth2_rest_serialization.nim | 42 +++++++++++++++++-- ncli/resttest-rules.json | 25 +++++++++++ ncli/resttest.nim | 14 +++++-- 5 files changed, 86 insertions(+), 20 deletions(-) diff --git a/beacon_chain/rpc/rest_constants.nim b/beacon_chain/rpc/rest_constants.nim index bdd8bcc848..1cac1725d5 100644 --- a/beacon_chain/rpc/rest_constants.nim +++ b/beacon_chain/rpc/rest_constants.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2024 Status Research & Development GmbH +# Copyright (c) 2021-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -271,3 +271,4 @@ const "Unable to load state for parent block, database corrupt?" RewardOverflowError* = "Reward value overflow" + InvalidContentTypeError* = "Invalid content type" diff --git a/beacon_chain/rpc/rest_validator_api.nim b/beacon_chain/rpc/rest_validator_api.nim index 671ead2f84..54beb5bda1 100644 --- a/beacon_chain/rpc/rest_validator_api.nim +++ b/beacon_chain/rpc/rest_validator_api.nim @@ -1,4 +1,4 @@ -# Copyright (c) 2018-2024 Status Research & Development GmbH +# Copyright (c) 2018-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -1215,25 +1215,21 @@ proc installValidatorApiHandlers*(router: var RestRouter, node: BeaconNode) = router.api2(MethodPost, "/eth/v1/validator/register_validator") do ( contentBody: Option[ContentBody]) -> RestApiResponse: + if contentBody.isNone(): + return RestApiResponse.jsonError(Http400, EmptyRequestBodyError) let - body = - block: - if contentBody.isNone(): - return RestApiResponse.jsonError(Http400, EmptyRequestBodyError) - let dres = decodeBody(seq[SignedValidatorRegistrationV1], contentBody.get()) - if dres.isErr(): - return RestApiResponse.jsonError(Http400, - InvalidPrepareBeaconProposerError) - dres.get() + body = decodeBodyJsonOrSsz(seq[SignedValidatorRegistrationV1], + contentBody.get()).valueOr: + return RestApiResponse.jsonError(error) - for signedValidatorRegistration in body: + for registration in body: # Don't validate beyond syntactically, because # "requests containing currently inactive or unknown validator pubkeys # will be accepted, as they may become active at a later epoch". Along # these lines, even if it's adding a validator the BN already has as a # local validator, the keymanager API might remove that from the BN. - node.externalBuilderRegistrations[signedValidatorRegistration.message.pubkey] = - signedValidatorRegistration + node.externalBuilderRegistrations[registration.message.pubkey] = + registration RestApiResponse.response(Http200) diff --git a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim index 2bfe660ca8..3cd01bd8e5 100644 --- a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim +++ b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim @@ -3036,7 +3036,7 @@ proc decodeBody*( [version, $exc.msg])) ok(RestPublishedSignedBeaconBlock(ForkedSignedBeaconBlock.init(blck))) else: - err(RestErrorMessage.init(Http415, "Invalid content type", + err(RestErrorMessage.init(Http415, InvalidContentTypeError, [version, $body.contentType])) proc decodeBody*( @@ -3232,9 +3232,45 @@ proc decodeBody*( ok(RestPublishedSignedBlockContents( kind: ConsensusFork.Fulu, fuluData: blckContents)) else: - err(RestErrorMessage.init(Http415, "Invalid content type", + err(RestErrorMessage.init(Http415, InvalidContentTypeError, [version, $body.contentType])) +proc decodeBodyJsonOrSsz*( + t: typedesc[seq[SignedValidatorRegistrationV1]], + body: ContentBody +): Result[seq[SignedValidatorRegistrationV1], RestErrorMessage] = + if body.contentType == ApplicationJsonMediaType: + let data = + try: + RestJson.decode( + body.data, + seq[SignedValidatorRegistrationV1], + requireAllFields = true, + allowUnknownFields = true) + except SerializationError as exc: + debug "Failed to deserialize REST JSON data", + err = exc.formatMsg("") + return err( + RestErrorMessage.init(Http400, UnableDecodeError, + [exc.formatMsg("")])) + ok(data) + elif body.contentType == OctetStreamMediaType: + let data = + try: + SSZ.decode( + body.data, + List[SignedValidatorRegistrationV1, Limit VALIDATOR_REGISTRY_LIMIT]) + except SerializationError as exc: + debug "Failed to deserialize REST SSZ data", + err = exc.formatMsg("") + return err( + RestErrorMessage.init(Http400, UnableDecodeError, + [exc.formatMsg("")])) + ok(data.toSeq) + else: + err(RestErrorMessage.init(Http415, InvalidContentTypeError, + [$body.contentType])) + proc decodeBody*[T](t: typedesc[T], body: ContentBody): Result[T, cstring] = if body.contentType != ApplicationJsonMediaType: @@ -3285,7 +3321,7 @@ proc decodeBodyJsonOrSsz*[T](t: typedesc[T], RestErrorMessage.init(Http400, UnexpectedDecodeError, [$exc.msg])) ok(blck) else: - err(RestErrorMessage.init(Http415, "Invalid content type", + err(RestErrorMessage.init(Http415, InvalidContentTypeError, [$body.contentType])) proc encodeBytes*[T: EncodeTypes](value: T, diff --git a/ncli/resttest-rules.json b/ncli/resttest-rules.json index 84ed3bb32b..f925140ed0 100644 --- a/ncli/resttest-rules.json +++ b/ncli/resttest-rules.json @@ -5000,6 +5000,31 @@ "headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}] } }, + { + "topics": ["validator", "register_validators"], + "request": { + "url": "/eth/v1/validator/register_validator", + "method": "POST", + "headers": {"Accept": "application/json"}, + "body": {"content-type": "application/octet-stream", "data": "64000000000000000000000000000000000000000000000000000000b5b5b76700000000a81da27d35ce91ddd3129042e47d0bf91a0ff60ed415ed25cda46b42c8d9cb91eb727966e5054828417bda9a1e5e8ba79043ce8b1542c118846537dc33ec2bfe8fa63858d8104b94b7673dd1390f05ac8ff949ba709cfde534857ddfbf757faa0af4a9e1e3743add7c51ca36223a580d2fa25b4dc46623e57f8d75fc647e6966c4828ee90c8eaf4f1babaa4b2f40d82bc8000000000000000000000000000000000000000000000000000000b5b5b76700000000886979da71af92933ebb6055a8c4a43a0c5e4ab645f9272ab6d441a5c2645c3278893439890eeda72f5580f05ae0898b8ba37e74091eb05ab1f66bf02f03ab7bfe0ee8f471ff8de8e10ef71164cef57a2ea694cde397d678a2ca18994cb2e154170e2a71a40fca2505c1e375c2ec05f9bc0a4f987968822177fe8d6326890362e0e55d18d0cf30b171ae44f969dbdf33"} + }, + "response": { + "status": {"operator": "equals", "value": "200"} + } + }, + { + "topics": ["validator", "register_validators"], + "request": { + "url": "/eth/v1/validator/register_validator", + "method": "POST", + "headers": {"Accept": "application/json"}, + "body": {"content-type": "application/octet-stream", "data": "64000000000000000000000000000000000000000000000000000000b5b5b76700000000a81da27d35ce91ddd3129042e47d0bf91a0ff60ed415ed25cda46b42c8d9cb91eb727966e5054828417bda9a1e5e8ba79043ce8b1542c118846537dc33ec2bfe8fa63858d8104b94b7673dd1390f05ac8ff949ba709cfde534857ddfbf757faa0af4a9e1e3743add7c51ca36223a580d2fa25b4dc46623e57f8d75fc647e6966c4828ee90c8eaf4f1babaa4b2f40d82bc8000000000000000000000000000000000000000000000000000000b5b5b76700000000886979da71af92933ebb6055a8c4a43a0c5e4ab645f9272ab6d441a5c2645c3278893439890eeda72f5580f05ae0898b8ba37e74091eb05ab1f66bf02f03ab7bfe0ee8f471ff8de8e10ef71164cef57a2ea694cde397d678a2ca18994cb2e154170e2a71a40fca2505c1e375c2ec05f9bc0a4f987968822177fe8d6326890362e0e55d18d0cf30b171ae44f969dbdf"} + }, + "response": { + "status": {"operator": "equals", "value": "400"}, + "headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}] + } + }, { "topics": ["key_management", "list_keys"], "request": { diff --git a/ncli/resttest.nim b/ncli/resttest.nim index d6896f9bb5..9cffdc5ecf 100644 --- a/ncli/resttest.nim +++ b/ncli/resttest.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2021-2024 Status Research & Development GmbH +# Copyright (c) 2021-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -10,7 +10,7 @@ import std/[strutils, os, options, uri, json, tables], results, - stew/[io2, base10], + stew/[io2, base10, byteutils], confutils, chronicles, httputils, chronos, chronos/streams/[asyncstream, tlsstream] @@ -455,7 +455,15 @@ proc prepareRequest(uri: Uri, return err("Field `body.data` must be present") if bdata.kind != JString: return err("Field `body.data` should be string") - (btype.str, bdata.str) + if toLowerAscii(btype.str) == "application/octet-stream": + let data = + try: + string.fromBytes(hexToSeqByte(bdata.str)) + except ValueError: + return err("Field `body.data` should be valid hexadecimal string") + (btype.str, data) + else: + (btype.str, bdata.str) var res = meth & " " & uri.path & requestUri & " HTTP/1.1\r\n" res.add("Content-Length: " & Base10.toString(uint64(len(requestBodyData))) & From 47b166337dc08bdb8e9e389de2ff31a98d2cb9ac Mon Sep 17 00:00:00 2001 From: Pedro Miranda <32689555+pedromiguelmiranda@users.noreply.github.com> Date: Mon, 24 Feb 2025 19:38:35 +0000 Subject: [PATCH 29/46] setup logging before any procedure with logging (#6942) Co-authored-by: pmmiranda --- beacon_chain/nimbus_beacon_node.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_chain/nimbus_beacon_node.nim b/beacon_chain/nimbus_beacon_node.nim index 9dd1b52726..ecfa5ba51d 100644 --- a/beacon_chain/nimbus_beacon_node.nim +++ b/beacon_chain/nimbus_beacon_node.nim @@ -2580,8 +2580,8 @@ programMain: # permissions are insecure. quit QuitFailure - setupFileLimits() setupLogging(config.logLevel, config.logStdout, config.logFile) + setupFileLimits() ## This Ctrl+C handler exits the program in non-graceful way. ## It's responsible for handling Ctrl+C in sub-commands such From 501580e0cfc715cef7615482ea098f39c28e83a8 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 22:46:50 +0100 Subject: [PATCH 30/46] Merge `GOSSIP_MAX_SIZE` and `MAX_CHUNK_SIZE` into `MAX_PAYLOAD_SIZE` (#6955) * Merge `GOSSIP_MAX_SIZE` and `MAX_CHUNK_SIZE` into `MAX_PAYLOAD_SIZE` In upstream specs the preset values for indicating max payload sizes have been merged into a single `MAX_PAYLOAD_SIZE` constant. * Lint * Update config endpoint --- beacon_chain/beacon_chain_file.nim | 4 +- beacon_chain/networking/eth2_network.nim | 20 +++++----- beacon_chain/rpc/rest_config_api.nim | 8 ++-- beacon_chain/spec/datatypes/constants.nim | 5 +-- beacon_chain/spec/presets.nim | 27 +++++-------- ncli/resttest-rules.json | 2 +- scripts/mainnet-non-overriden-config.yaml | 47 ++++++++++++++++++----- scripts/minimal-non-overriden-config.yaml | 46 +++++++++++++++++----- 8 files changed, 102 insertions(+), 57 deletions(-) diff --git a/beacon_chain/beacon_chain_file.nim b/beacon_chain/beacon_chain_file.nim index f19d4cf84c..46b7a4bc31 100644 --- a/beacon_chain/beacon_chain_file.nim +++ b/beacon_chain/beacon_chain_file.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2018-2024 Status Research & Development GmbH +# Copyright (c) 2018-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -71,7 +71,7 @@ const ChainFileVersion = 1'u32 ChainFileHeaderValue = 0x424D494E'u32 ChainFileBufferSize* = 4096 - MaxChunkSize = int(GOSSIP_MAX_SIZE) + MaxChunkSize = int(MAX_PAYLOAD_SIZE) ChainFileHeaderArray = ChainFileHeaderValue.toBytesLE() IncompleteWriteError = "Unable to write data to file, disk full?" MaxForksCount* = 16384 diff --git a/beacon_chain/networking/eth2_network.nim b/beacon_chain/networking/eth2_network.nim index 43de82ff3c..a1fcb3a773 100644 --- a/beacon_chain/networking/eth2_network.nim +++ b/beacon_chain/networking/eth2_network.nim @@ -845,8 +845,8 @@ func chunkMaxSize[T](): uint32 = when isFixedSize(T): uint32 fixedPortionSize(T) else: - static: doAssert MAX_CHUNK_SIZE < high(uint32).uint64 - MAX_CHUNK_SIZE.uint32 + static: doAssert MAX_PAYLOAD_SIZE < high(uint32).uint64 + MAX_PAYLOAD_SIZE.uint32 template gossipMaxSize(T: untyped): uint32 = const maxSize = static: @@ -855,20 +855,20 @@ template gossipMaxSize(T: untyped): uint32 = elif T is bellatrix.SignedBeaconBlock or T is capella.SignedBeaconBlock or T is deneb.SignedBeaconBlock or T is electra.SignedBeaconBlock or T is fulu.SignedBeaconBlock: - GOSSIP_MAX_SIZE + MAX_PAYLOAD_SIZE # TODO https://github.com/status-im/nim-ssz-serialization/issues/20 for # Attestation, AttesterSlashing, and SignedAggregateAndProof, which all # have lists bounded at MAX_VALIDATORS_PER_COMMITTEE (2048) items, thus - # having max sizes significantly smaller than GOSSIP_MAX_SIZE. + # having max sizes significantly smaller than MAX_PAYLOAD_SIZE. elif T is phase0.Attestation or T is phase0.AttesterSlashing or T is phase0.SignedAggregateAndProof or T is phase0.SignedBeaconBlock or T is electra.SignedAggregateAndProof or T is electra.Attestation or T is electra.AttesterSlashing or T is altair.SignedBeaconBlock or T is SomeForkyLightClientObject: - GOSSIP_MAX_SIZE + MAX_PAYLOAD_SIZE else: {.fatal: "unknown type " & name(T).} - static: doAssert maxSize <= GOSSIP_MAX_SIZE + static: doAssert maxSize <= MAX_PAYLOAD_SIZE maxSize.uint32 proc readVarint2(conn: Connection): Future[NetRes[uint64]] {. @@ -902,7 +902,7 @@ proc readChunkPayload*(conn: Connection, peer: Peer, if size == 0: return neterr ZeroSizePrefix - # The `size.int` conversion is safe because `size` is bounded to `MAX_CHUNK_SIZE` + # The `size.int` conversion is safe because `size` is bounded to `MAX_PAYLOAD_SIZE` let dataRes = await conn.uncompressFramedStream(size.int) data = dataRes.valueOr: @@ -2417,7 +2417,7 @@ proc createEth2Node*(rng: ref HmacDrbgContext, try: # This doesn't have to be a tight bound, just enough to avoid denial of # service attacks. - let decoded = snappy.decode(m.data, static(GOSSIP_MAX_SIZE.uint32)) + let decoded = snappy.decode(m.data, static(MAX_PAYLOAD_SIZE.uint32)) ok(gossipId(decoded, phase0Prefix, m.topic)) except CatchableError: err(ValidationResult.Reject) @@ -2464,7 +2464,7 @@ proc createEth2Node*(rng: ref HmacDrbgContext, sign = false, verifySignature = false, anonymize = true, - maxMessageSize = static(GOSSIP_MAX_SIZE.int), + maxMessageSize = static(MAX_PAYLOAD_SIZE.int), parameters = params) switch.mount(pubsub) @@ -2604,7 +2604,7 @@ func gossipEncode(msg: auto): seq[byte] = let uncompressed = SSZ.encode(msg) # This function only for messages we create. A message this large amounts to # an internal logic error. - doAssert uncompressed.lenu64 <= GOSSIP_MAX_SIZE + doAssert uncompressed.lenu64 <= MAX_PAYLOAD_SIZE snappy.encode(uncompressed) diff --git a/beacon_chain/rpc/rest_config_api.nim b/beacon_chain/rpc/rest_config_api.nim index 36d8f8b122..fe97332aac 100644 --- a/beacon_chain/rpc/rest_config_api.nim +++ b/beacon_chain/rpc/rest_config_api.nim @@ -209,22 +209,22 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(REORG_PARENT_WEIGHT_THRESHOLD), REORG_MAX_EPOCHS_SINCE_FINALIZATION: Base10.toString(uint64(REORG_MAX_EPOCHS_SINCE_FINALIZATION)), + DEPOSIT_CHAIN_ID: Base10.toString(cfg.DEPOSIT_CHAIN_ID), DEPOSIT_NETWORK_ID: Base10.toString(cfg.DEPOSIT_NETWORK_ID), DEPOSIT_CONTRACT_ADDRESS: $cfg.DEPOSIT_CONTRACT_ADDRESS, - GOSSIP_MAX_SIZE: - Base10.toString(GOSSIP_MAX_SIZE), + + MAX_PAYLOAD_SIZE: + Base10.toString(MAX_PAYLOAD_SIZE), MAX_REQUEST_BLOCKS: Base10.toString(MAX_REQUEST_BLOCKS), EPOCHS_PER_SUBNET_SUBSCRIPTION: Base10.toString(EPOCHS_PER_SUBNET_SUBSCRIPTION), MIN_EPOCHS_FOR_BLOCK_REQUESTS: Base10.toString(cfg.MIN_EPOCHS_FOR_BLOCK_REQUESTS), - MAX_CHUNK_SIZE: - Base10.toString(MAX_CHUNK_SIZE), TTFB_TIMEOUT: Base10.toString(TTFB_TIMEOUT), RESP_TIMEOUT: diff --git a/beacon_chain/spec/datatypes/constants.nim b/beacon_chain/spec/datatypes/constants.nim index 23e0391473..5465e686fe 100644 --- a/beacon_chain/spec/datatypes/constants.nim +++ b/beacon_chain/spec/datatypes/constants.nim @@ -73,9 +73,8 @@ const ATTESTATION_PROPAGATION_SLOT_RANGE*: uint64 = 32 MAXIMUM_GOSSIP_CLOCK_DISPARITY* = 500.millis - # https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/bellatrix/p2p-interface.md#configuration - GOSSIP_MAX_SIZE* = 10'u64 * 1024 * 1024 # bytes - MAX_CHUNK_SIZE* = 10'u64 * 1024 * 1024 # bytes + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/p2p-interface.md#configuration + MAX_PAYLOAD_SIZE* = 10'u64 * 1024 * 1024 # bytes # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/deneb/p2p-interface.md#configuration MAX_REQUEST_BLOCKS_DENEB*: uint64 = 128 # TODO Make use of in request code diff --git a/beacon_chain/spec/presets.nim b/beacon_chain/spec/presets.nim index a2fe2b4a4f..34055a0e54 100644 --- a/beacon_chain/spec/presets.nim +++ b/beacon_chain/spec/presets.nim @@ -92,11 +92,10 @@ type DEPOSIT_CONTRACT_ADDRESS*: Eth1Address # Networking - # TODO GOSSIP_MAX_SIZE*: uint64 + # TODO MAX_PAYLOAD_SIZE*: uint64 # TODO MAX_REQUEST_BLOCKS*: uint64 # TODO EPOCHS_PER_SUBNET_SUBSCRIPTION*: uint64 MIN_EPOCHS_FOR_BLOCK_REQUESTS*: uint64 - # TODO MAX_CHUNK_SIZE*: uint64 # TODO TTFB_TIMEOUT*: uint64 # TODO RESP_TIMEOUT*: uint64 # TODO ATTESTATION_PROPAGATION_SLOT_RANGE*: uint64 @@ -249,15 +248,13 @@ when const_preset == "mainnet": # Networking # --------------------------------------------------------------- # `10 * 2**20` (= 10485760, 10 MiB) - # TODO GOSSIP_MAX_SIZE: 10485760, + # TODO MAX_PAYLOAD_SIZE: 10485760, # `2**10` (= 1024) # TODO MAX_REQUEST_BLOCKS: 1024, # `2**8` (= 256) # TODO EPOCHS_PER_SUBNET_SUBSCRIPTION: 256, # `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months) MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024, - # `10 * 2**20` (=10485760, 10 MiB) - # TODO MAX_CHUNK_SIZE: 10485760, # 5s # TODO TTFB_TIMEOUT: 5, # 10s @@ -312,9 +309,6 @@ elif const_preset == "gnosis": # such as `CONFIG_NAME`, `TERMINAL_TOTAL_DIFFICULTY`, `*_FORK_EPOCH`, etc # which must be effectively overriden in all network (including mainnet). const defaultRuntimeConfig* = RuntimeConfig( - # Mainnet config - - # Extends the mainnet preset PRESET_BASE: "gnosis", # Free-form short name of the network that this configuration applies to - known @@ -372,8 +366,8 @@ elif const_preset == "gnosis": # Time parameters # --------------------------------------------------------------- - # 12 seconds - # TODO SECONDS_PER_SLOT: 12, + # 5 seconds + # TODO SECONDS_PER_SLOT: 5, # 14 (estimate from Eth1 mainnet) SECONDS_PER_ETH1_BLOCK: 5, # 2**8 (= 256) epochs ~27 hours @@ -409,15 +403,13 @@ elif const_preset == "gnosis": # Networking # --------------------------------------------------------------- # `10 * 2**20` (= 10485760, 10 MiB) - # TODO GOSSIP_MAX_SIZE: 10485760, + # TODO MAX_PAYLOAD_SIZE: 10485760, # `2**10` (= 1024) # TODO MAX_REQUEST_BLOCKS: 1024, # `2**8` (= 256) # TODO EPOCHS_PER_SUBNET_SUBSCRIPTION: 256, # `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months) MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024, - # `10 * 2**20` (=10485760, 10 MiB) - # TODO MAX_CHUNK_SIZE: 10485760, # 5s # TODO TTFB_TIMEOUT: 5, # 10s @@ -566,15 +558,13 @@ elif const_preset == "minimal": # Networking # --------------------------------------------------------------- # `10 * 2**20` (= 10485760, 10 MiB) - # TODO GOSSIP_MAX_SIZE: 10485760, + # TODO MAX_PAYLOAD_SIZE: 10485760, # `2**10` (= 1024) # TODO MAX_REQUEST_BLOCKS: 1024, # `2**8` (= 256) # TODO EPOCHS_PER_SUBNET_SUBSCRIPTION: 256, # [customized] `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 272) MIN_EPOCHS_FOR_BLOCK_REQUESTS: 272, - # `10 * 2**20` (=10485760, 10 MiB) - # TODO MAX_CHUNK_SIZE: 10485760, # 5s # TODO TTFB_TIMEOUT: 5, # 10s @@ -804,10 +794,11 @@ proc readRuntimeConfig*( checkCompatibility DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF checkCompatibility DOMAIN_CONTRIBUTION_AND_PROOF - checkCompatibility GOSSIP_MAX_SIZE + checkCompatibility MAX_PAYLOAD_SIZE + checkCompatibility MAX_PAYLOAD_SIZE, "GOSSIP_MAX_SIZE" + checkCompatibility MAX_PAYLOAD_SIZE, "MAX_CHUNK_SIZE" checkCompatibility MAX_REQUEST_BLOCKS checkCompatibility EPOCHS_PER_SUBNET_SUBSCRIPTION - checkCompatibility MAX_CHUNK_SIZE checkCompatibility TTFB_TIMEOUT checkCompatibility RESP_TIMEOUT checkCompatibility ATTESTATION_PROPAGATION_SLOT_RANGE diff --git a/ncli/resttest-rules.json b/ncli/resttest-rules.json index f925140ed0..ece1cbdbf7 100644 --- a/ncli/resttest-rules.json +++ b/ncli/resttest-rules.json @@ -4180,7 +4180,7 @@ "response": { "status": {"operator": "equals", "value": "200"}, "headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}], - "body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","MAX_REQUEST_BLOB_SIDECARS_ELECTRA":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","GOSSIP_MAX_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","MAX_CHUNK_SIZE":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"", "UNSET_DEPOSIT_REQUESTS_START_INDEX":"", "FULL_EXIT_REQUEST_AMOUNT": "", "COMPOUNDING_WITHDRAWAL_PREFIX": "", "DEPOSIT_REQUEST_TYPE": "", "WITHDRAWAL_REQUEST_TYPE": "", "CONSOLIDATION_REQUEST_TYPE": "", "MIN_ACTIVATION_BALANCE": "", "MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "", "WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "", "PENDING_DEPOSITS_LIMIT": "", "PENDING_PARTIAL_WITHDRAWALS_LIMIT": "", "PENDING_CONSOLIDATIONS_LIMIT": "", "MAX_ATTESTER_SLASHINGS_ELECTRA": "", "MAX_ATTESTATIONS_ELECTRA": "", "MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "", "MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "", "MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "", "MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "", "MAX_PENDING_DEPOSITS_PER_EPOCH": "", "MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "", "MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": ""}}] + "body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","MAX_REQUEST_BLOB_SIDECARS_ELECTRA":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","MAX_PAYLOAD_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"", "UNSET_DEPOSIT_REQUESTS_START_INDEX":"", "FULL_EXIT_REQUEST_AMOUNT": "", "COMPOUNDING_WITHDRAWAL_PREFIX": "", "DEPOSIT_REQUEST_TYPE": "", "WITHDRAWAL_REQUEST_TYPE": "", "CONSOLIDATION_REQUEST_TYPE": "", "MIN_ACTIVATION_BALANCE": "", "MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "", "WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "", "PENDING_DEPOSITS_LIMIT": "", "PENDING_PARTIAL_WITHDRAWALS_LIMIT": "", "PENDING_CONSOLIDATIONS_LIMIT": "", "MAX_ATTESTER_SLASHINGS_ELECTRA": "", "MAX_ATTESTATIONS_ELECTRA": "", "MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "", "MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "", "MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "", "MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "", "MAX_PENDING_DEPOSITS_PER_EPOCH": "", "MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "", "MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": ""}}] } }, { diff --git a/scripts/mainnet-non-overriden-config.yaml b/scripts/mainnet-non-overriden-config.yaml index 07dd383cd8..b6ccbfeed8 100644 --- a/scripts/mainnet-non-overriden-config.yaml +++ b/scripts/mainnet-non-overriden-config.yaml @@ -53,13 +53,16 @@ BELLATRIX_FORK_VERSION: 0x02000000 # (overriden in launch_local_testnet.sh) BELLATRIX_FORK_EPOCH: 144896 # Sept 6, 2022, 11:34:47am UTC # Capella CAPELLA_FORK_VERSION: 0x03000000 -# (overriden in launch_local_testnet.sh) CAPELLA_FORK_EPOCH: 18446744073709551615 +# (overriden in launch_local_testnet.sh) CAPELLA_FORK_EPOCH: 194048 # April 12, 2023, 10:27:35pm UTC # Deneb DENEB_FORK_VERSION: 0x04000000 -# (overriden in launch_local_testnet.sh) DENEB_FORK_EPOCH: 18446744073709551615 +# (overriden in launch_local_testnet.sh) DENEB_FORK_EPOCH: 269568 # March 13, 2024, 01:55:35pm UTC # Electra ELECTRA_FORK_VERSION: 0x05000000 -# (overriden in launch_local_testnet.sh) ELECTRA_FORK_EPOCH: 18446744073709551615 +# (overriden in launch_local_testnet.sh) ELECTRA_FORK_EPOCH: 18446744073709551615 # temporary stub +# Fulu +FULU_FORK_VERSION: 0x06000000 +# (overriden in launch_local_testnet.sh) FULU_FORK_EPOCH: 18446744073709551615 # temporary stub # Time parameters # --------------------------------------------------------------- @@ -87,7 +90,6 @@ EJECTION_BALANCE: 16000000000 MIN_PER_EPOCH_CHURN_LIMIT: 4 # 2**16 (= 65,536) CHURN_LIMIT_QUOTIENT: 65536 - # [New in Deneb:EIP7514] 2**3 (= 8) MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT: 8 @@ -95,7 +97,6 @@ MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT: 8 # --------------------------------------------------------------- # 40% PROPOSER_SCORE_BOOST: 40 - # 20% REORG_HEAD_WEIGHT_THRESHOLD: 20 # 160% @@ -103,6 +104,7 @@ REORG_PARENT_WEIGHT_THRESHOLD: 160 # `2` epochs REORG_MAX_EPOCHS_SINCE_FINALIZATION: 2 + # Deposit contract # --------------------------------------------------------------- # Ethereum PoW Mainnet @@ -110,18 +112,17 @@ DEPOSIT_CHAIN_ID: 1 DEPOSIT_NETWORK_ID: 1 # (overriden in launch_local_testnet.sh) DEPOSIT_CONTRACT_ADDRESS: 0x00000000219ab540356cBB839Cbe05303d7705Fa + # Networking # --------------------------------------------------------------- # `10 * 2**20` (= 10485760, 10 MiB) -GOSSIP_MAX_SIZE: 10485760 +MAX_PAYLOAD_SIZE: 10485760 # `2**10` (= 1024) MAX_REQUEST_BLOCKS: 1024 # `2**8` (= 256) EPOCHS_PER_SUBNET_SUBSCRIPTION: 256 # `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months) MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024 -# `10 * 2**20` (=10485760, 10 MiB) -MAX_CHUNK_SIZE: 10485760 # 5s TTFB_TIMEOUT: 5 # 10s @@ -142,9 +143,35 @@ ATTESTATION_SUBNET_PREFIX_BITS: 6 # Deneb # `2**7` (=128) MAX_REQUEST_BLOCKS_DENEB: 128 -# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK -MAX_REQUEST_BLOB_SIDECARS: 768 # `2**12` (= 4096 epochs, ~18 days) MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 4096 # `6` BLOB_SIDECAR_SUBNET_COUNT: 6 +# `uint64(6)` +MAX_BLOBS_PER_BLOCK: 6 +# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK +MAX_REQUEST_BLOB_SIDECARS: 768 + +# Electra +# 2**7 * 10**9 (= 128,000,000,000) +MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 128000000000 +# 2**8 * 10**9 (= 256,000,000,000) +MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 256000000000 +# `9` +BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9 +# `uint64(9)` +MAX_BLOBS_PER_BLOCK_ELECTRA: 9 +# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA +MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 + +# Fulu +NUMBER_OF_COLUMNS: 128 +NUMBER_OF_CUSTODY_GROUPS: 128 +DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 +MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 +SAMPLES_PER_SLOT: 8 +CUSTODY_REQUIREMENT: 4 +VALIDATOR_CUSTODY_REQUIREMENT: 8 +BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000 +MAX_BLOBS_PER_BLOCK_FULU: 12 +MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 diff --git a/scripts/minimal-non-overriden-config.yaml b/scripts/minimal-non-overriden-config.yaml index 8acd453784..b264220897 100644 --- a/scripts/minimal-non-overriden-config.yaml +++ b/scripts/minimal-non-overriden-config.yaml @@ -59,6 +59,9 @@ DENEB_FORK_VERSION: 0x04000001 # Electra ELECTRA_FORK_VERSION: 0x05000001 # (overriden in launch_local_testnet.sh) ELECTRA_FORK_EPOCH: 18446744073709551615 +# Fulu +FULU_FORK_VERSION: 0x06000001 +# (overriden in launch_local_testnet.sh) FULU_FORK_EPOCH: 18446744073709551615 # Time parameters # --------------------------------------------------------------- @@ -82,19 +85,18 @@ INACTIVITY_SCORE_BIAS: 4 INACTIVITY_SCORE_RECOVERY_RATE: 16 # 2**4 * 10**9 (= 16,000,000,000) Gwei EJECTION_BALANCE: 16000000000 -# 2**2 (= 4) -MIN_PER_EPOCH_CHURN_LIMIT: 4 +# [customized] more easily demonstrate the difference between this value and the activation churn limit +MIN_PER_EPOCH_CHURN_LIMIT: 2 # [customized] scale queue churn at much lower validator counts for testing CHURN_LIMIT_QUOTIENT: 32 - # [New in Deneb:EIP7514] [customized] MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT: 4 + # Fork choice # --------------------------------------------------------------- # 40% PROPOSER_SCORE_BOOST: 40 - # 20% REORG_HEAD_WEIGHT_THRESHOLD: 20 # 160% @@ -102,6 +104,7 @@ REORG_PARENT_WEIGHT_THRESHOLD: 160 # `2` epochs REORG_MAX_EPOCHS_SINCE_FINALIZATION: 2 + # Deposit contract # --------------------------------------------------------------- # Ethereum Goerli testnet @@ -110,18 +113,17 @@ DEPOSIT_NETWORK_ID: 5 # Configured on a per testnet basis # (overriden in launch_local_testnet.sh) DEPOSIT_CONTRACT_ADDRESS: 0x1234567890123456789012345678901234567890 + # Networking # --------------------------------------------------------------- # `10 * 2**20` (= 10485760, 10 MiB) -GOSSIP_MAX_SIZE: 10485760 +MAX_PAYLOAD_SIZE: 10485760 # `2**10` (= 1024) MAX_REQUEST_BLOCKS: 1024 # `2**8` (= 256) EPOCHS_PER_SUBNET_SUBSCRIPTION: 256 # [customized] `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 272) MIN_EPOCHS_FOR_BLOCK_REQUESTS: 272 -# `10 * 2**20` (=10485760, 10 MiB) -MAX_CHUNK_SIZE: 10485760 # 5s TTFB_TIMEOUT: 5 # 10s @@ -142,9 +144,35 @@ ATTESTATION_SUBNET_PREFIX_BITS: 6 # Deneb # `2**7` (=128) MAX_REQUEST_BLOCKS_DENEB: 128 -# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK -MAX_REQUEST_BLOB_SIDECARS: 768 # `2**12` (= 4096 epochs, ~18 days) MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 4096 # `6` BLOB_SIDECAR_SUBNET_COUNT: 6 +## `uint64(6)` +MAX_BLOBS_PER_BLOCK: 6 +# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK +MAX_REQUEST_BLOB_SIDECARS: 768 + +# Electra +# [customized] 2**6 * 10**9 (= 64,000,000,000) +MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 64000000000 +# [customized] 2**7 * 10**9 (= 128,000,000,000) +MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 128000000000 +# `9` +BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9 +# `uint64(9)` +MAX_BLOBS_PER_BLOCK_ELECTRA: 9 +# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA +MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 + +# Fulu +NUMBER_OF_COLUMNS: 128 +NUMBER_OF_CUSTODY_GROUPS: 128 +DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 +MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 +SAMPLES_PER_SLOT: 8 +CUSTODY_REQUIREMENT: 4 +VALIDATOR_CUSTODY_REQUIREMENT: 8 +BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000 +MAX_BLOBS_PER_BLOCK_FULU: 12 +MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 From 7b2a6745e7af6392e0c4959aa751239a22830b0c Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Mon, 24 Feb 2025 23:44:11 +0100 Subject: [PATCH 31/46] Use larger serialization limit when parsing fork choice tests (#6956) `MAX_BLOBS_PER_BLOCK` became configurable with v1.5.0-alpha.4 specs (moved from preset to config), so use the theoretical max allowed value when parsing fork choice tests. --- tests/consensus_spec/test_fixture_fork_choice.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/consensus_spec/test_fixture_fork_choice.nim b/tests/consensus_spec/test_fixture_fork_choice.nim index ecb442242f..b2ab66ced1 100644 --- a/tests/consensus_spec/test_fixture_fork_choice.nim +++ b/tests/consensus_spec/test_fixture_fork_choice.nim @@ -137,7 +137,7 @@ proc loadOps( Opt.some BlobData( blobs: distinctBase(parseTest( path/(step["blobs"].getStr()) & ".ssz_snappy", - SSZ, List[KzgBlob, Limit MAX_BLOBS_PER_BLOCK])), + SSZ, List[KzgBlob, Limit MAX_BLOB_COMMITMENTS_PER_BLOCK])), proofs: step["proofs"].mapIt( KzgProof(bytes: fromHex(array[48, byte], it.getStr())))) else: From 64cfc7ea179201abff8a23a5a95535a281f16ef3 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 03:58:11 +0100 Subject: [PATCH 32/46] Extend `RuntimeConfig` with constants for blob sidecar limits (#6957) Since v1.5.0-alpha.4 the blob sidecar limits are no longer configured in the presets but are now part of the network configuration. This sets up `RuntimeConfig` to parse those values so that can phase out the compile time constants later. --- beacon_chain/rpc/rest_config_api.nim | 77 +++++++++++++++++----- beacon_chain/spec/presets.nim | 99 ++++++++++++++++++++++------ ncli/resttest-rules.json | 2 +- 3 files changed, 141 insertions(+), 37 deletions(-) diff --git a/beacon_chain/rpc/rest_config_api.nim b/beacon_chain/rpc/rest_config_api.nim index fe97332aac..fb27be6e6d 100644 --- a/beacon_chain/rpc/rest_config_api.nim +++ b/beacon_chain/rpc/rest_config_api.nim @@ -24,7 +24,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = cachedConfigSpec = RestApiResponse.prepareJsonResponse( ( - # https://github.com/ethereum/consensus-specs/blob/v1.4.0-alpha.1/presets/mainnet/phase0.yaml + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/phase0.yaml MAX_COMMITTEES_PER_SLOT: Base10.toString(MAX_COMMITTEES_PER_SLOT), TARGET_COMMITTEE_SIZE: @@ -39,12 +39,14 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(HYSTERESIS_DOWNWARD_MULTIPLIER), HYSTERESIS_UPWARD_MULTIPLIER: Base10.toString(HYSTERESIS_UPWARD_MULTIPLIER), + MIN_DEPOSIT_AMOUNT: Base10.toString(MIN_DEPOSIT_AMOUNT), MAX_EFFECTIVE_BALANCE: Base10.toString(MAX_EFFECTIVE_BALANCE), EFFECTIVE_BALANCE_INCREMENT: Base10.toString(EFFECTIVE_BALANCE_INCREMENT), + MIN_ATTESTATION_INCLUSION_DELAY: Base10.toString(MIN_ATTESTATION_INCLUSION_DELAY), SLOTS_PER_EPOCH: @@ -59,6 +61,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(SLOTS_PER_HISTORICAL_ROOT), MIN_EPOCHS_TO_INACTIVITY_PENALTY: Base10.toString(MIN_EPOCHS_TO_INACTIVITY_PENALTY), + EPOCHS_PER_HISTORICAL_VECTOR: Base10.toString(EPOCHS_PER_HISTORICAL_VECTOR), EPOCHS_PER_SLASHINGS_VECTOR: @@ -67,6 +70,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(HISTORICAL_ROOTS_LIMIT), VALIDATOR_REGISTRY_LIMIT: Base10.toString(VALIDATOR_REGISTRY_LIMIT), + BASE_REWARD_FACTOR: Base10.toString(BASE_REWARD_FACTOR), WHISTLEBLOWER_REWARD_QUOTIENT: @@ -79,6 +83,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(MIN_SLASHING_PENALTY_QUOTIENT), PROPORTIONAL_SLASHING_MULTIPLIER: Base10.toString(PROPORTIONAL_SLASHING_MULTIPLIER), + MAX_PROPOSER_SLASHINGS: Base10.toString(MAX_PROPOSER_SLASHINGS), MAX_ATTESTER_SLASHINGS: @@ -97,10 +102,12 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR), PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR: Base10.toString(PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR), + SYNC_COMMITTEE_SIZE: Base10.toString(uint64(SYNC_COMMITTEE_SIZE)), EPOCHS_PER_SYNC_COMMITTEE_PERIOD: Base10.toString(EPOCHS_PER_SYNC_COMMITTEE_PERIOD), + MIN_SYNC_COMMITTEE_PARTICIPANTS: Base10.toString(uint64(MIN_SYNC_COMMITTEE_PARTICIPANTS)), UPDATE_TIMEOUT: @@ -113,6 +120,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX), PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX: Base10.toString(PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX), + MAX_BYTES_PER_TRANSACTION: Base10.toString(uint64(MAX_BYTES_PER_TRANSACTION)), MAX_TRANSACTIONS_PER_PAYLOAD: @@ -130,27 +138,27 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP: Base10.toString(uint64(MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP)), - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/presets/mainnet/deneb.yaml + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/deneb.yaml FIELD_ELEMENTS_PER_BLOB: Base10.toString(deneb_preset.FIELD_ELEMENTS_PER_BLOB), MAX_BLOB_COMMITMENTS_PER_BLOCK: Base10.toString(MAX_BLOB_COMMITMENTS_PER_BLOCK), - MAX_BLOBS_PER_BLOCK: - Base10.toString(MAX_BLOBS_PER_BLOCK), KZG_COMMITMENT_INCLUSION_PROOF_DEPTH: Base10.toString(uint64(KZG_COMMITMENT_INCLUSION_PROOF_DEPTH)), - # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/configs/mainnet.yaml + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/configs/mainnet.yaml PRESET_BASE: cfg.PRESET_BASE, CONFIG_NAME: cfg.name(), + TERMINAL_TOTAL_DIFFICULTY: toString(cfg.TERMINAL_TOTAL_DIFFICULTY), TERMINAL_BLOCK_HASH: $cfg.TERMINAL_BLOCK_HASH, TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH: Base10.toString(uint64(cfg.TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH)), + MIN_GENESIS_ACTIVE_VALIDATOR_COUNT: Base10.toString(cfg.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT), MIN_GENESIS_TIME: @@ -159,6 +167,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = "0x" & $cfg.GENESIS_FORK_VERSION, GENESIS_DELAY: Base10.toString(cfg.GENESIS_DELAY), + ALTAIR_FORK_VERSION: "0x" & $cfg.ALTAIR_FORK_VERSION, ALTAIR_FORK_EPOCH: @@ -179,6 +188,11 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = "0x" & $cfg.ELECTRA_FORK_VERSION, ELECTRA_FORK_EPOCH: Base10.toString(uint64(cfg.ELECTRA_FORK_EPOCH)), + FULU_FORK_VERSION: + "0x" & $cfg.FULU_FORK_VERSION, + FULU_FORK_EPOCH: + Base10.toString(uint64(cfg.FULU_FORK_EPOCH)), + SECONDS_PER_SLOT: Base10.toString(SECONDS_PER_SLOT), SECONDS_PER_ETH1_BLOCK: @@ -189,6 +203,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(cfg.SHARD_COMMITTEE_PERIOD), ETH1_FOLLOW_DISTANCE: Base10.toString(cfg.ETH1_FOLLOW_DISTANCE), + INACTIVITY_SCORE_BIAS: Base10.toString(cfg.INACTIVITY_SCORE_BIAS), INACTIVITY_SCORE_RECOVERY_RATE: @@ -201,6 +216,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(cfg.CHURN_LIMIT_QUOTIENT), MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT: Base10.toString(cfg.MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT), + PROPOSER_SCORE_BOOST: Base10.toString(PROPOSER_SCORE_BOOST), REORG_HEAD_WEIGHT_THRESHOLD: @@ -245,14 +261,49 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = Base10.toString(ATTESTATION_SUBNET_EXTRA_BITS), ATTESTATION_SUBNET_PREFIX_BITS: Base10.toString(ATTESTATION_SUBNET_PREFIX_BITS), + MAX_REQUEST_BLOCKS_DENEB: Base10.toString(MAX_REQUEST_BLOCKS_DENEB), - MAX_REQUEST_BLOB_SIDECARS: - Base10.toString(MAX_REQUEST_BLOB_SIDECARS), MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: Base10.toString(cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS), BLOB_SIDECAR_SUBNET_COUNT: - Base10.toString(BLOB_SIDECAR_SUBNET_COUNT), + Base10.toString(cfg.BLOB_SIDECAR_SUBNET_COUNT), + MAX_BLOBS_PER_BLOCK: + Base10.toString(cfg.MAX_BLOBS_PER_BLOCK), + MAX_REQUEST_BLOB_SIDECARS: + Base10.toString(cfg.MAX_REQUEST_BLOB_SIDECARS), + + MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: + Base10.toString(cfg.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA), + MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: + Base10.toString(cfg.MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT), + BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: + Base10.toString(cfg.BLOB_SIDECAR_SUBNET_COUNT_ELECTRA), + MAX_BLOBS_PER_BLOCK_ELECTRA: + Base10.toString(cfg.MAX_BLOBS_PER_BLOCK_ELECTRA), + MAX_REQUEST_BLOB_SIDECARS_ELECTRA: + Base10.toString(cfg.MAX_REQUEST_BLOB_SIDECARS_ELECTRA), + + NUMBER_OF_COLUMNS: + Base10.toString(NUMBER_OF_COLUMNS.uint64), + NUMBER_OF_CUSTODY_GROUPS: + Base10.toString(NUMBER_OF_CUSTODY_GROUPS.uint64), + DATA_COLUMN_SIDECAR_SUBNET_COUNT: + Base10.toString(DATA_COLUMN_SIDECAR_SUBNET_COUNT.uint64), + MAX_REQUEST_DATA_COLUMN_SIDECARS: + Base10.toString(MAX_REQUEST_DATA_COLUMN_SIDECARS), + SAMPLES_PER_SLOT: + Base10.toString(SAMPLES_PER_SLOT.uint64), + CUSTODY_REQUIREMENT: + Base10.toString(CUSTODY_REQUIREMENT.uint64), + VALIDATOR_CUSTODY_REQUIREMENT: + Base10.toString(VALIDATOR_CUSTODY_REQUIREMENT.uint64), + BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: + Base10.toString(BALANCE_PER_ADDITIONAL_CUSTODY_GROUP), + # MAX_BLOBS_PER_BLOCK_FULU: + # Base10.toString(cfg.MAX_BLOBS_PER_BLOCK_FULU), + # MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: + # Base10.toString(cfg.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS), # https://github.com/ethereum/consensus-specs/blob/v1.4.0-alpha.3/specs/phase0/beacon-chain.md#constants # GENESIS_SLOT @@ -362,15 +413,7 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) = MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP: Base10.toString(uint64(MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP)), MAX_PENDING_DEPOSITS_PER_EPOCH: - Base10.toString(uint64(MAX_PENDING_DEPOSITS_PER_EPOCH)), - MAX_BLOBS_PER_BLOCK_ELECTRA: - Base10.toString(cfg.MAX_BLOBS_PER_BLOCK_ELECTRA), - MAX_REQUEST_BLOB_SIDECARS_ELECTRA: - Base10.toString(cfg.MAX_REQUEST_BLOB_SIDECARS_ELECTRA), - MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: - Base10.toString(cfg.MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA), - MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: - Base10.toString(cfg.MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT) + Base10.toString(uint64(MAX_PENDING_DEPOSITS_PER_EPOCH)) ) ) cachedDepositContract = diff --git a/beacon_chain/spec/presets.nim b/beacon_chain/spec/presets.nim index 34055a0e54..d97c3c5ab3 100644 --- a/beacon_chain/spec/presets.nim +++ b/beacon_chain/spec/presets.nim @@ -36,7 +36,7 @@ type Eth1Address* = web3types.Address RuntimeConfig* = object - ## https://github.com/ethereum/consensus-specs/tree/v1.4.0-beta.4/configs + ## https://github.com/ethereum/consensus-specs/tree/v1.5.0-beta.2/configs PRESET_BASE*: string CONFIG_NAME*: string @@ -109,9 +109,10 @@ type # Deneb # TODO MAX_REQUEST_BLOCKS_DENEB*: uint64 - # TODO MAX_REQUEST_BLOB_SIDECARS*: uint64 MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS*: uint64 - # TODO BLOB_SIDECAR_SUBNET_COUNT*: uint64 + BLOB_SIDECAR_SUBNET_COUNT*: uint64 + MAX_BLOBS_PER_BLOCK*: uint64 + MAX_REQUEST_BLOB_SIDECARS*: uint64 # Electra MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA*: uint64 @@ -120,6 +121,18 @@ type MAX_BLOBS_PER_BLOCK_ELECTRA*: uint64 MAX_REQUEST_BLOB_SIDECARS_ELECTRA*: uint64 + # Fulu + # TODO NUMBER_OF_COLUMNS*: uint64 + # TODO NUMBER_OF_CUSTODY_GROUPS*: uint64 + # TODO DATA_COLUMN_SIDECAR_SUBNET_COUNT*: uint64 + # TODO MAX_REQUEST_DATA_COLUMN_SIDECARS*: uint64 + # TODO SAMPLES_PER_SLOT*: uint64 + # TODO CUSTODY_REQUIREMENT*: uint64 + # TODO VALIDATOR_CUSTODY_REQUIREMENT*: uint64 + # TODO BALANCE_PER_ADDITIONAL_CUSTODY_GROUP*: uint64 + # TODO MAX_BLOBS_PER_BLOCK_FULU*: uint64 + # TODO MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS*: uint64 + PresetFile* = object values*: Table[string, string] missingValues*: seq[string] @@ -275,12 +288,14 @@ when const_preset == "mainnet": # Deneb # `2**7` (=128) # TODO MAX_REQUEST_BLOCKS_DENEB: 128, - # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK - # TODO MAX_REQUEST_BLOB_SIDECARS: 768, # `2**12` (= 4096 epochs, ~18 days) MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 4096, # `6` - # TODO BLOB_SIDECAR_SUBNET_COUNT: 6, + BLOB_SIDECAR_SUBNET_COUNT: 6, + # `uint64(6)` + MAX_BLOBS_PER_BLOCK: 6, + # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK + MAX_REQUEST_BLOB_SIDECARS: 768, # Electra # 2**7 * 10**9 (= 128,000,000,000) @@ -292,7 +307,19 @@ when const_preset == "mainnet": # `uint64(9)` MAX_BLOBS_PER_BLOCK_ELECTRA: 9, # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA - MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 + MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152, + + # Fulu + # TODO NUMBER_OF_COLUMNS: 128, + # TODO NUMBER_OF_CUSTODY_GROUPS: 128, + # TODO DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128, + # TODO MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384, + # TODO SAMPLES_PER_SLOT: 8, + # TODO CUSTODY_REQUIREMENT: 4, + # TODO VALIDATOR_CUSTODY_REQUIREMENT: 8, + # TODO BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000, + # TODO MAX_BLOBS_PER_BLOCK_FULU: 12, + # TODO MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 ) elif const_preset == "gnosis": @@ -430,24 +457,38 @@ elif const_preset == "gnosis": # Deneb # `2**7` (=128) # TODO MAX_REQUEST_BLOCKS_DENEB: 128, - # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK - # TODO MAX_REQUEST_BLOB_SIDECARS: 768, # `2**12` (= 4096 epochs, ~18 days) MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 16384, # `6` - # TODO BLOB_SIDECAR_SUBNET_COUNT: 6, + BLOB_SIDECAR_SUBNET_COUNT: 6, + # `uint64(2)` + MAX_BLOBS_PER_BLOCK: 2, + # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK + MAX_REQUEST_BLOB_SIDECARS: 768, # Electra # 2**7 * 10**9 (= 128,000,000,000) MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 128000000000'u64, # 2**8 * 10**9 (= 256,000,000,000) MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 256000000000'u64, - # `9` - BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9, - # `uint64(9)` - MAX_BLOBS_PER_BLOCK_ELECTRA: 9, + # `2` + BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 2, + # `uint64(2)` + MAX_BLOBS_PER_BLOCK_ELECTRA: 2, # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA - MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 + MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 256, + + # Fulu + # TODO NUMBER_OF_COLUMNS: 128, + # TODO NUMBER_OF_CUSTODY_GROUPS: 128, + # TODO DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128, + # TODO MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384, + # TODO SAMPLES_PER_SLOT: 8, + # TODO CUSTODY_REQUIREMENT: 4, + # TODO VALIDATOR_CUSTODY_REQUIREMENT: 8, + # TODO BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000, + # TODO MAX_BLOBS_PER_BLOCK_FULU: 12, + # TODO MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 ) elif const_preset == "minimal": @@ -585,12 +626,14 @@ elif const_preset == "minimal": # Deneb # `2**7` (=128) # TODO MAX_REQUEST_BLOCKS_DENEB: 128, - # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK - # TODO MAX_REQUEST_BLOB_SIDECARS: 768, # `2**12` (= 4096 epochs, ~18 days) MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 4096, # `6` - # TODO BLOB_SIDECAR_SUBNET_COUNT: 6, + BLOB_SIDECAR_SUBNET_COUNT: 6, + # `uint64(6)` + MAX_BLOBS_PER_BLOCK: 6, + # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK + MAX_REQUEST_BLOB_SIDECARS: 768, # Electra # [customized] 2**6 * 10**9 (= 64,000,000,000) @@ -602,7 +645,19 @@ elif const_preset == "minimal": # `uint64(9)` MAX_BLOBS_PER_BLOCK_ELECTRA: 9, # MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA - MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152, + MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 + + # Fulu + # TODO NUMBER_OF_COLUMNS: 128, + # TODO NUMBER_OF_CUSTODY_GROUPS: 128, + # TODO DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128, + # TODO MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384, + # TODO SAMPLES_PER_SLOT: 8, + # TODO CUSTODY_REQUIREMENT: 4, + # TODO VALIDATOR_CUSTODY_REQUIREMENT: 8, + # TODO BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000, + # TODO MAX_BLOBS_PER_BLOCK_FULU: 12, + # TODO MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 ) else: @@ -840,6 +895,12 @@ proc readRuntimeConfig*( # Requires initialized `cfg` checkCompatibility cfg.safeMinEpochsForBlockRequests(), "MIN_EPOCHS_FOR_BLOCK_REQUESTS", `>=` + checkCompatibility MAX_REQUEST_BLOCKS_DENEB * cfg.MAX_BLOBS_PER_BLOCK, + "MAX_REQUEST_BLOB_SIDECARS" + checkCompatibility cfg.MAX_BLOBS_PER_BLOCK, + "MAX_BLOBS_PER_BLOCK_ELECTRA", `>=` + checkCompatibility MAX_REQUEST_BLOCKS_DENEB * cfg.MAX_BLOBS_PER_BLOCK_ELECTRA, + "MAX_REQUEST_BLOB_SIDECARS_ELECTRA" var unknowns: seq[string] for name in values.keys: diff --git a/ncli/resttest-rules.json b/ncli/resttest-rules.json index ece1cbdbf7..0f9ec145a8 100644 --- a/ncli/resttest-rules.json +++ b/ncli/resttest-rules.json @@ -4180,7 +4180,7 @@ "response": { "status": {"operator": "equals", "value": "200"}, "headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}], - "body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","MAX_REQUEST_BLOB_SIDECARS_ELECTRA":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","MAX_PAYLOAD_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"", "UNSET_DEPOSIT_REQUESTS_START_INDEX":"", "FULL_EXIT_REQUEST_AMOUNT": "", "COMPOUNDING_WITHDRAWAL_PREFIX": "", "DEPOSIT_REQUEST_TYPE": "", "WITHDRAWAL_REQUEST_TYPE": "", "CONSOLIDATION_REQUEST_TYPE": "", "MIN_ACTIVATION_BALANCE": "", "MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "", "WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "", "PENDING_DEPOSITS_LIMIT": "", "PENDING_PARTIAL_WITHDRAWALS_LIMIT": "", "PENDING_CONSOLIDATIONS_LIMIT": "", "MAX_ATTESTER_SLASHINGS_ELECTRA": "", "MAX_ATTESTATIONS_ELECTRA": "", "MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "", "MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "", "MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "", "MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "", "MAX_PENDING_DEPOSITS_PER_EPOCH": "", "MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "", "MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": ""}}] + "body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","FULU_FORK_VERSION":"","FULU_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","MAX_PAYLOAD_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","MAX_BLOBS_PER_BLOCK":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA":"","MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT":"","BLOB_SIDECAR_SUBNET_COUNT_ELECTRA":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","MAX_REQUEST_BLOB_SIDECARS_ELECTRA":"","NUMBER_OF_COLUMNS":"","NUMBER_OF_CUSTODY_GROUPS":"","DATA_COLUMN_SIDECAR_SUBNET_COUNT":"","MAX_REQUEST_DATA_COLUMN_SIDECARS":"","SAMPLES_PER_SLOT":"","CUSTODY_REQUIREMENT":"","VALIDATOR_CUSTODY_REQUIREMENT":"","BALANCE_PER_ADDITIONAL_CUSTODY_GROUP":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"","UNSET_DEPOSIT_REQUESTS_START_INDEX":"","FULL_EXIT_REQUEST_AMOUNT":"","COMPOUNDING_WITHDRAWAL_PREFIX":"","DEPOSIT_REQUEST_TYPE":"","WITHDRAWAL_REQUEST_TYPE":"","CONSOLIDATION_REQUEST_TYPE":"","MIN_ACTIVATION_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA":"","WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA":"","PENDING_DEPOSITS_LIMIT":"","PENDING_PARTIAL_WITHDRAWALS_LIMIT":"","PENDING_CONSOLIDATIONS_LIMIT":"","MAX_ATTESTER_SLASHINGS_ELECTRA":"","MAX_ATTESTATIONS_ELECTRA":"","MAX_DEPOSIT_REQUESTS_PER_PAYLOAD":"","MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD":"","MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD":"","MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP":"","MAX_PENDING_DEPOSITS_PER_EPOCH":""}}] } }, { From 0a676dab098afee449bbd166d32350396b98f6b5 Mon Sep 17 00:00:00 2001 From: tersec Date: Tue, 25 Feb 2025 04:23:35 +0000 Subject: [PATCH 33/46] rm spec-removed produceBlockV2 and produceBlindedBlock beacon API endpoints (#6885) --- beacon_chain/rpc/rest_constants.nim | 6 + beacon_chain/rpc/rest_validator_api.nim | 228 +----------------- beacon_chain/validators/beacon_validators.nim | 147 ----------- ncli/resttest-rules.json | 4 +- 4 files changed, 12 insertions(+), 373 deletions(-) diff --git a/beacon_chain/rpc/rest_constants.nim b/beacon_chain/rpc/rest_constants.nim index 1cac1725d5..fcce13463e 100644 --- a/beacon_chain/rpc/rest_constants.nim +++ b/beacon_chain/rpc/rest_constants.nim @@ -229,6 +229,12 @@ const DeprecatedRemovalGetDebugChainHeadsV1* = "v1/debug/beacon/heads endpoint was deprecated and replaced by v2: " & "https://github.com/ethereum/beacon-APIs/pull/319" + DeprecatedRemovalProduceBlindedBlockV1* = + "v1/validator/blinded_blocks/{slot} was deprecated, removed, and replaced " & + "by produceBlockV3: https://github.com/ethereum/beacon-APIs/pull/466" + DeprecatedRemovalValidatorBlocksV2* = + "v2/validator/blocks/{slot} was deprecated, removed, and replaced " & + "by produceBlockV3: https://github.com/ethereum/beacon-APIs/pull/466" BlockIncorrectFork* = "Block has incorrect fork" ValidatorNotActive* = diff --git a/beacon_chain/rpc/rest_validator_api.nim b/beacon_chain/rpc/rest_validator_api.nim index 54beb5bda1..be1dc282aa 100644 --- a/beacon_chain/rpc/rest_validator_api.nim +++ b/beacon_chain/rpc/rest_validator_api.nim @@ -315,245 +315,25 @@ proc installValidatorApiHandlers*(router: var RestRouter, node: BeaconNode) = RestApiResponse.jsonError(Http404, StateNotFoundError) - # https://ethereum.github.io/beacon-APIs/#/Validator/produceBlock router.api2(MethodGet, "/eth/v1/validator/blocks/{slot}") do ( slot: Slot, randao_reveal: Option[ValidatorSig], graffiti: Option[GraffitiBytes]) -> RestApiResponse: RestApiResponse.jsonError( Http410, DeprecatedRemovalValidatorBlocksV1) - # https://ethereum.github.io/beacon-APIs/#/Validator/produceBlockV2 router.api(MethodGet, "/eth/v2/validator/blocks/{slot}") do ( slot: Slot, randao_reveal: Option[ValidatorSig], graffiti: Option[GraffitiBytes], skip_randao_verification: Option[string]) -> RestApiResponse: - let - contentType = preferredContentType(jsonMediaType, sszMediaType).valueOr: - return RestApiResponse.jsonError(Http406, ContentNotAcceptableError) - let message = - block: - let qslot = block: - if slot.isErr(): - return RestApiResponse.jsonError(Http400, InvalidSlotValueError, - $slot.error()) - let res = slot.get() - - if res <= node.dag.finalizedHead.slot: - return RestApiResponse.jsonError(Http400, InvalidSlotValueError, - "Slot already finalized") - let - wallTime = node.beaconClock.now() + MAXIMUM_GOSSIP_CLOCK_DISPARITY - if res > wallTime.slotOrZero: - return RestApiResponse.jsonError(Http400, InvalidSlotValueError, - "Slot cannot be in the future") - res - let qskip_randao_verification = - if skip_randao_verification.isNone(): - false - else: - let res = skip_randao_verification.get() - if res.isErr() or res.get() != "": - return RestApiResponse.jsonError( - Http400, InvalidSkipRandaoVerificationValue) - true - let qrandao = - if randao_reveal.isNone(): - return RestApiResponse.jsonError(Http400, MissingRandaoRevealValue) - else: - let res = randao_reveal.get() - if res.isErr(): - return RestApiResponse.jsonError(Http400, - InvalidRandaoRevealValue, - $res.error()) - res.get() - let qgraffiti = - if graffiti.isNone(): - defaultGraffitiBytes() - else: - let res = graffiti.get() - if res.isErr(): - return RestApiResponse.jsonError(Http400, - InvalidGraffitiBytesValue, - $res.error()) - res.get() - let qhead = - block: - let res = node.getSyncedHead(qslot) - if res.isErr(): - return RestApiResponse.jsonError(Http503, BeaconNodeInSyncError, - $res.error()) - let tres = res.get() - if not tres.executionValid: - return RestApiResponse.jsonError(Http503, BeaconNodeInSyncError) - tres - let - proposer = node.dag.getProposer(qhead, qslot).valueOr: - return RestApiResponse.jsonError(Http400, ProposerNotFoundError) - - if not node.verifyRandao( - qslot, proposer, qrandao, qskip_randao_verification): - return RestApiResponse.jsonError(Http400, InvalidRandaoRevealValue) - - let res = withConsensusFork( - node.dag.cfg.consensusForkAtEpoch(qslot.epoch)): - when consensusFork >= ConsensusFork.Bellatrix: - await makeBeaconBlockForHeadAndSlot( - consensusFork.ExecutionPayloadForSigning, - node, qrandao, proposer, qgraffiti, qhead, qslot) - else: - return RestApiResponse.jsonError(Http400, InvalidSlotValueError) - if res.isErr(): - return RestApiResponse.jsonError(Http400, res.error()) - res.get - return - withBlck(message.blck): - let data = - when consensusFork >= ConsensusFork.Fulu: - let blobsBundle = message.blobsBundleOpt.get() - fulu.BlockContents( - `block`: forkyBlck, - kzg_proofs: blobsBundle.proofs, - blobs: blobsBundle.blobs) - elif consensusFork >= ConsensusFork.Electra: - let blobsBundle = message.blobsBundleOpt.get() - electra.BlockContents( - `block`: forkyBlck, - kzg_proofs: blobsBundle.proofs, - blobs: blobsBundle.blobs) - elif consensusFork >= ConsensusFork.Deneb: - let blobsBundle = message.blobsBundleOpt.get() - deneb.BlockContents( - `block`: forkyBlck, - kzg_proofs: blobsBundle.proofs, - blobs: blobsBundle.blobs) - else: - forkyBlck - if contentType == sszMediaType: - let headers = [("eth-consensus-version", consensusFork.toString())] - RestApiResponse.sszResponse(data, headers) - elif contentType == jsonMediaType: - RestApiResponse.jsonResponseWVersion(data, consensusFork) - else: - raiseAssert "preferredContentType() returns invalid content type" + RestApiResponse.jsonError( + Http410, DeprecatedRemovalValidatorBlocksV2) - # https://ethereum.github.io/beacon-APIs/#/Validator/produceBlindedBlock - # https://github.com/ethereum/beacon-APIs/blob/c097f1a62c9a12c30e8175a39f205f92d3b931a9/apis/validator/blinded_block.yaml router.api(MethodGet, "/eth/v1/validator/blinded_blocks/{slot}") do ( slot: Slot, randao_reveal: Option[ValidatorSig], graffiti: Option[GraffitiBytes], skip_randao_verification: Option[string]) -> RestApiResponse: - ## Requests a beacon node to produce a valid blinded block, which can then - ## be signed by a validator. A blinded block is a block with only a - ## transactions root, rather than a full transactions list. - ## - ## Metadata in the response indicates the type of block produced, and the - ## supported types of block will be added to as forks progress. - let contentType = - block: - let res = preferredContentType(jsonMediaType, - sszMediaType) - if res.isErr(): - return RestApiResponse.jsonError(Http406, ContentNotAcceptableError) - res.get() - let qslot = block: - if slot.isErr(): - return RestApiResponse.jsonError(Http400, InvalidSlotValueError, - $slot.error()) - let res = slot.get() - - if res <= node.dag.finalizedHead.slot: - return RestApiResponse.jsonError(Http400, InvalidSlotValueError, - "Slot already finalized") - let - wallTime = node.beaconClock.now() + MAXIMUM_GOSSIP_CLOCK_DISPARITY - if res > wallTime.slotOrZero: - return RestApiResponse.jsonError(Http400, InvalidSlotValueError, - "Slot cannot be in the future") - res - let qskip_randao_verification = - if skip_randao_verification.isNone(): - false - else: - let res = skip_randao_verification.get() - if res.isErr() or res.get() != "": - return RestApiResponse.jsonError(Http400, - InvalidSkipRandaoVerificationValue) - true - let qrandao = - if randao_reveal.isNone(): - return RestApiResponse.jsonError(Http400, MissingRandaoRevealValue) - else: - let res = randao_reveal.get() - if res.isErr(): - return RestApiResponse.jsonError(Http400, - InvalidRandaoRevealValue, - $res.error()) - res.get() - let qgraffiti = - if graffiti.isNone(): - defaultGraffitiBytes() - else: - let res = graffiti.get() - if res.isErr(): - return RestApiResponse.jsonError(Http400, - InvalidGraffitiBytesValue, - $res.error()) - res.get() - let qhead = - block: - let res = node.getSyncedHead(qslot) - if res.isErr(): - return RestApiResponse.jsonError(Http503, BeaconNodeInSyncError, - $res.error()) - let tres = res.get() - if not tres.executionValid: - return RestApiResponse.jsonError(Http503, BeaconNodeInSyncError) - tres - let proposer = node.dag.getProposer(qhead, qslot).valueOr: - return RestApiResponse.jsonError(Http400, ProposerNotFoundError) - - if not node.verifyRandao( - qslot, proposer, qrandao, qskip_randao_verification): - return RestApiResponse.jsonError(Http400, InvalidRandaoRevealValue) - - template responseVersioned( - response: untyped, contextFork: ConsensusFork): untyped = - if contentType == sszMediaType: - let headers = [("eth-consensus-version", contextFork.toString())] - RestApiResponse.sszResponse(response, headers) - elif contentType == jsonMediaType: - RestApiResponse.jsonResponseWVersion(response, contextFork) - else: - RestApiResponse.jsonError(Http500, InvalidAcceptError) - - let - payloadBuilderClient = node.getPayloadBuilderClient( - proposer.distinctBase).valueOr: - return RestApiResponse.jsonError( - Http500, "Unable to initialize payload builder client: " & $error) - contextFork = node.dag.cfg.consensusForkAtEpoch(node.currentSlot.epoch) - - withConsensusFork(contextFork): - when consensusFork >= ConsensusFork.Deneb: - let res = await makeBlindedBeaconBlockForHeadAndSlot[ - consensusFork.BlindedBeaconBlock]( - node, payloadBuilderClient, qrandao, - proposer, qgraffiti, qhead, qslot) - if res.isErr(): - return RestApiResponse.jsonError(Http400, res.error()) - return responseVersioned(res.get().blindedBlckPart, contextFork) - elif consensusFork >= ConsensusFork.Bellatrix: - return RestApiResponse.jsonError( - Http400, "Pre-Deneb builder API unsupported") - else: - # Pre-Bellatrix, this endpoint will return a BeaconBlock - let res = await makeBeaconBlockForHeadAndSlot( - bellatrix.ExecutionPayloadForSigning, node, qrandao, - proposer, qgraffiti, qhead, qslot) - if res.isErr(): - return RestApiResponse.jsonError(Http400, res.error()) - withBlck(res.get().blck): - return responseVersioned(forkyBlck, contextFork) + RestApiResponse.jsonError( + Http410, DeprecatedRemovalProduceBlindedBlockV1) func getMaybeBlindedHeaders( consensusFork: ConsensusFork, diff --git a/beacon_chain/validators/beacon_validators.nim b/beacon_chain/validators/beacon_validators.nim index b6bd2dfd60..fc3d36a572 100644 --- a/beacon_chain/validators/beacon_validators.nim +++ b/beacon_chain/validators/beacon_validators.nim @@ -800,78 +800,6 @@ func constructSignableBlindedBlock[T: fulu_mev.SignedBlindedBeaconBlock]( blindedBlock -func constructPlainBlindedBlock[T: deneb_mev.BlindedBeaconBlock]( - blck: ForkyBeaconBlock, - blindedBundle: deneb_mev.BlindedExecutionPayloadAndBlobsBundle): T = - # https://github.com/nim-lang/Nim/issues/23020 workaround - static: doAssert T is deneb_mev.BlindedBeaconBlock - - const - blckFields = getFieldNames(typeof(blck)) - blckBodyFields = getFieldNames(typeof(blck.body)) - - var blindedBlock: T - - # https://github.com/ethereum/builder-specs/blob/v0.4.0/specs/bellatrix/validator.md#block-proposal - copyFields(blindedBlock, blck, blckFields) - copyFields(blindedBlock.body, blck.body, blckBodyFields) - assign( - blindedBlock.body.execution_payload_header, - blindedBundle.execution_payload_header) - assign( - blindedBlock.body.blob_kzg_commitments, - blindedBundle.blob_kzg_commitments) - - blindedBlock - -func constructPlainBlindedBlock[T: electra_mev.BlindedBeaconBlock]( - blck: ForkyBeaconBlock, - blindedBundle: electra_mev.BlindedExecutionPayloadAndBlobsBundle): T = - # https://github.com/nim-lang/Nim/issues/23020 workaround - static: doAssert T is electra_mev.BlindedBeaconBlock - - const - blckFields = getFieldNames(typeof(blck)) - blckBodyFields = getFieldNames(typeof(blck.body)) - - var blindedBlock: T - - # https://github.com/ethereum/builder-specs/blob/v0.4.0/specs/bellatrix/validator.md#block-proposal - copyFields(blindedBlock, blck, blckFields) - copyFields(blindedBlock.body, blck.body, blckBodyFields) - assign( - blindedBlock.body.execution_payload_header, - blindedBundle.execution_payload_header) - assign( - blindedBlock.body.blob_kzg_commitments, - blindedBundle.blob_kzg_commitments) - - blindedBlock - -func constructPlainBlindedBlock[T: fulu_mev.BlindedBeaconBlock]( - blck: ForkyBeaconBlock, - blindedBundle: fulu_mev.BlindedExecutionPayloadAndBlobsBundle): T = - # https://github.com/nim-lang/Nim/issues/23020 workaround - static: doAssert T is fulu_mev.BlindedBeaconBlock - - const - blckFields = getFieldNames(typeof(blck)) - blckBodyFields = getFieldNames(typeof(blck.body)) - - var blindedBlock: T - - # https://github.com/ethereum/builder-specs/blob/v0.4.0/specs/bellatrix/validator.md#block-proposal - copyFields(blindedBlock, blck, blckFields) - copyFields(blindedBlock.body, blck.body, blckBodyFields) - assign( - blindedBlock.body.execution_payload_header, - blindedBundle.execution_payload_header) - assign( - blindedBlock.body.blob_kzg_commitments, - blindedBundle.blob_kzg_commitments) - - blindedBlock - proc blindedBlockCheckSlashingAndSign[ T: deneb_mev.SignedBlindedBeaconBlock | electra_mev.SignedBlindedBeaconBlock | @@ -1145,81 +1073,6 @@ proc proposeBlockMEV( func isEFMainnet(cfg: RuntimeConfig): bool = cfg.DEPOSIT_CHAIN_ID == 1 and cfg.DEPOSIT_NETWORK_ID == 1 -proc makeBlindedBeaconBlockForHeadAndSlot*[BBB: ForkyBlindedBeaconBlock]( - node: BeaconNode, payloadBuilderClient: RestClientRef, - randao_reveal: ValidatorSig, validator_index: ValidatorIndex, - graffiti: GraffitiBytes, head: BlockRef, slot: Slot): - Future[BlindedBlockResult[BBB]] {.async: (raises: [CancelledError]).} = - ## Requests a beacon node to produce a valid blinded block, which can then be - ## signed by a validator. A blinded block is a block with only a transactions - ## root, rather than a full transactions list. - ## - ## This function is used by the validator client, but not the beacon node for - ## its own validators. - when BBB is fulu_mev.BlindedBeaconBlock: - type EPH = fulu_mev.BlindedExecutionPayloadAndBlobsBundle - elif BBB is electra_mev.BlindedBeaconBlock: - type EPH = electra_mev.BlindedExecutionPayloadAndBlobsBundle - elif BBB is deneb_mev.BlindedBeaconBlock: - type EPH = deneb_mev.BlindedExecutionPayloadAndBlobsBundle - else: - static: doAssert false - - let - pubkey = - # Relevant state for knowledge of validators - withState(node.dag.headState): - if node.dag.cfg.isEFMainnet and livenessFailsafeInEffect( - forkyState.data.block_roots.data, forkyState.data.slot): - # It's head block's slot which matters here, not proposal slot - return err("Builder API liveness failsafe in effect") - - if distinctBase(validator_index) >= forkyState.data.validators.lenu64: - debug "makeBlindedBeaconBlockForHeadAndSlot: invalid validator index", - head = shortLog(head), - validator_index, - validators_len = forkyState.data.validators.len - return err("Invalid validator index") - - forkyState.data.validators.item(validator_index).pubkey - - blindedBlockParts = await getBlindedBlockParts[EPH]( - node, payloadBuilderClient, head, pubkey, slot, randao_reveal, - validator_index, graffiti) - if blindedBlockParts.isErr: - # Don't try EL fallback -- VC specifically requested a blinded block - return err("Unable to create blinded block") - - let (executionPayloadHeader, bidValue, consensusValue, forkedBlck) = - blindedBlockParts.get - withBlck(forkedBlck): - when consensusFork >= ConsensusFork.Deneb: - when (consensusFork == ConsensusFork.Deneb and - EPH is deneb_mev.BlindedExecutionPayloadAndBlobsBundle): - return ok( - BuilderBid[BBB]( - blindedBlckPart: - constructPlainBlindedBlock[BBB](forkyBlck, executionPayloadHeader), - executionRequests: default(ExecutionRequests), - executionPayloadValue: bidValue, - consensusBlockValue: consensusValue)) - - elif (consensusFork == ConsensusFork.Electra and - EPH is electra_mev.BlindedExecutionPayloadAndBlobsBundle) or - (consensusFork == ConsensusFork.Fulu and - EPH is fulu_mev.BlindedExecutionPayloadAndBlobsBundle): - return ok( - BuilderBid[BBB]( - blindedBlckPart: - constructPlainBlindedBlock[BBB](forkyBlck, executionPayloadHeader), - executionRequests: forkyBlck.body.execution_requests, - executionPayloadValue: bidValue, - consensusBlockValue: consensusValue)) - else: - return err("makeBlindedBeaconBlockForHeadAndSlot: mismatched block/payload types") - else: - return err("Attempt to create pre-Deneb blinded block") - proc collectBids( SBBB: typedesc, EPS: typedesc, node: BeaconNode, payloadBuilderClient: RestClientRef, validator_pubkey: ValidatorPubKey, diff --git a/ncli/resttest-rules.json b/ncli/resttest-rules.json index 0f9ec145a8..9a596b1291 100644 --- a/ncli/resttest-rules.json +++ b/ncli/resttest-rules.json @@ -4526,7 +4526,7 @@ "headers": {"Accept": "application/json"} }, "response": { - "status": {"operator": "equals", "value": "400"} + "status": {"operator": "equals", "value": "410"} } }, { @@ -4536,7 +4536,7 @@ "headers": {"Accept": "application/json"} }, "response": { - "status": {"operator": "equals", "value": "400"} + "status": {"operator": "equals", "value": "410"} } }, { From c08163e089e3bb8722fe3b69349959ac1c1bb785 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 14:41:09 +0100 Subject: [PATCH 34/46] Use `MAX_BLOBS_PER_BLOCK` from config in gossip validation (#6958) Start phasing out the compile-time `MAX_BLOBS_PER_BLOCK` and use the value from the network config in gossip validation instead. --- beacon_chain/gossip_processing/gossip_validation.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/beacon_chain/gossip_processing/gossip_validation.nim b/beacon_chain/gossip_processing/gossip_validation.nim index a56ecf54fb..056309c459 100644 --- a/beacon_chain/gossip_processing/gossip_validation.nim +++ b/beacon_chain/gossip_processing/gossip_validation.nim @@ -297,7 +297,7 @@ func getMaxBlobsPerBlock(cfg: RuntimeConfig, slot: Slot): uint64 = if slot >= cfg.ELECTRA_FORK_EPOCH.start_slot: cfg.MAX_BLOBS_PER_BLOCK_ELECTRA else: - MAX_BLOBS_PER_BLOCK + cfg.MAX_BLOBS_PER_BLOCK template validateBeaconBlockBellatrix( _: phase0.SignedBeaconBlock | altair.SignedBeaconBlock, From aec1e6a2ec8a5ad932de1d1e6c7c7130294c508d Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 14:45:56 +0100 Subject: [PATCH 35/46] When requesting blobs by root, limit response size to request size (#6961) When requesting `idList.len` blobs, the response can't be larger than `idList.len` or it is invalid. --- beacon_chain/sync/request_manager.nim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/beacon_chain/sync/request_manager.nim b/beacon_chain/sync/request_manager.nim index 199e9936ab..a56f87ec3c 100644 --- a/beacon_chain/sync/request_manager.nim +++ b/beacon_chain/sync/request_manager.nim @@ -262,7 +262,8 @@ proc fetchBlobsFromNetwork(self: RequestManager, debug "Requesting blobs by root", peer = peer, blobs = shortLog(idList), peer_score = peer.getScore() - let blobs = await blobSidecarsByRoot(peer, BlobIdentifierList idList) + let blobs = await blobSidecarsByRoot( + peer, BlobIdentifierList idList, maxResponseItems = idList.len) if blobs.isOk: var ublobs = blobs.get().asSeq() From f5c94c3b5d88ac376b5024057f9fe67f44d3b861 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 14:49:50 +0100 Subject: [PATCH 36/46] Use fork-specific blob subnet count when subscribing to gossip topics (#6962) * Use fork-specific blob subnet count when subscribing to gossip topics We were always subscribing based on Electra blob gossip limits, despite no valid traffic being possible if those topics are used on Deneb. Use the correct limit for each fork: - `BLOB_SIDECAR_SUBNET_COUNT` on Deneb - `BLOB_SIDECAR_SUBNET_COUNT_ELECTRA` on Electra and later * Lint --- beacon_chain/nimbus_beacon_node.nim | 34 +++++++++++++++++++++------- beacon_chain/spec/datatypes/base.nim | 2 +- beacon_chain/spec/network.nim | 7 +++--- tests/test_honest_validator.nim | 4 ++-- 4 files changed, 33 insertions(+), 14 deletions(-) diff --git a/beacon_chain/nimbus_beacon_node.nim b/beacon_chain/nimbus_beacon_node.nim index ecfa5ba51d..6d10b9ef77 100644 --- a/beacon_chain/nimbus_beacon_node.nim +++ b/beacon_chain/nimbus_beacon_node.nim @@ -1295,15 +1295,22 @@ proc addCapellaMessageHandlers( node.addAltairMessageHandlers(forkDigest, slot) node.network.subscribe(getBlsToExecutionChangeTopic(forkDigest), basicParams) -proc addDenebMessageHandlers( - node: BeaconNode, forkDigest: ForkDigest, slot: Slot) = +proc doAddDenebMessageHandlers( + node: BeaconNode, forkDigest: ForkDigest, slot: Slot, + blobSidecarSubnetCount: uint64) = node.addCapellaMessageHandlers(forkDigest, slot) - for topic in blobSidecarTopics(forkDigest): + for topic in blobSidecarTopics(forkDigest, blobSidecarSubnetCount): node.network.subscribe(topic, basicParams) +proc addDenebMessageHandlers( + node: BeaconNode, forkDigest: ForkDigest, slot: Slot) = + node.doAddDenebMessageHandlers( + forkDigest, slot, node.dag.cfg.BLOB_SIDECAR_SUBNET_COUNT) + proc addElectraMessageHandlers( node: BeaconNode, forkDigest: ForkDigest, slot: Slot) = - node.addDenebMessageHandlers(forkDigest, slot) + node.doAddDenebMessageHandlers( + forkDigest, slot, node.dag.cfg.BLOB_SIDECAR_SUBNET_COUNT_ELECTRA) proc addFuluMessageHandlers( node: BeaconNode, forkDigest: ForkDigest, slot: Slot) = @@ -1324,13 +1331,19 @@ proc removeCapellaMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = node.removeAltairMessageHandlers(forkDigest) node.network.unsubscribe(getBlsToExecutionChangeTopic(forkDigest)) -proc removeDenebMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = +proc doRemoveDenebMessageHandlers( + node: BeaconNode, forkDigest: ForkDigest, blobSidecarSubnetCount: uint64) = node.removeCapellaMessageHandlers(forkDigest) - for topic in blobSidecarTopics(forkDigest): + for topic in blobSidecarTopics(forkDigest, blobSidecarSubnetCount): node.network.unsubscribe(topic) +proc removeDenebMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = + node.doRemoveDenebMessageHandlers( + forkDigest, node.dag.cfg.BLOB_SIDECAR_SUBNET_COUNT) + proc removeElectraMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = - node.removeDenebMessageHandlers(forkDigest) + node.doRemoveDenebMessageHandlers( + forkDigest, node.dag.cfg.BLOB_SIDECAR_SUBNET_COUNT_ELECTRA) proc removeFuluMessageHandlers(node: BeaconNode, forkDigest: ForkDigest) = node.removeElectraMessageHandlers(forkDigest) @@ -2083,7 +2096,12 @@ proc installMessageValidators(node: BeaconNode) = when consensusFork >= ConsensusFork.Deneb: # blob_sidecar_{subnet_id} # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/deneb/p2p-interface.md#blob_sidecar_subnet_id - for it in BlobId: + let subnetCount = + when consensusFork >= ConsensusFork.Electra: + node.dag.cfg.BLOB_SIDECAR_SUBNET_COUNT_ELECTRA + else: + node.dag.cfg.BLOB_SIDECAR_SUBNET_COUNT + for it in 0.BlobId ..< subnetCount.BlobId: closureScope: # Needed for inner `proc`; don't lift it out of loop. let subnet_id = it node.network.addValidator( diff --git a/beacon_chain/spec/datatypes/base.nim b/beacon_chain/spec/datatypes/base.nim index a4bcf6940e..a2f1225370 100644 --- a/beacon_chain/spec/datatypes/base.nim +++ b/beacon_chain/spec/datatypes/base.nim @@ -201,7 +201,7 @@ type BlobId* = distinct uint8 ## The blob id maps which gossip subscription to use to publish a - ## blob sidecar - it is distinct from the CommitteeIndex in particular + ## blob sidecar - it is distinct from the BlobIndex in particular ## ## The `BlobId` type is constrained to values in the range ## `[0, MAX_BLOBS_PER_BLOCK_ELECTRA)` during initialization. diff --git a/beacon_chain/spec/network.nim b/beacon_chain/spec/network.nim index 62bc1b9e36..9c61761122 100644 --- a/beacon_chain/spec/network.nim +++ b/beacon_chain/spec/network.nim @@ -118,7 +118,7 @@ func compute_subnet_for_blob_sidecar*( if slot >= cfg.ELECTRA_FORK_EPOCH.start_slot: cfg.BLOB_SIDECAR_SUBNET_COUNT_ELECTRA else: - BLOB_SIDECAR_SUBNET_COUNT + cfg.BLOB_SIDECAR_SUBNET_COUNT BlobId(blob_index mod subnetCount) # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#compute_subnet_for_data_column_sidecar @@ -243,8 +243,9 @@ func getSyncSubnets*( res.setBit(i div (SYNC_COMMITTEE_SIZE div SYNC_COMMITTEE_SUBNET_COUNT)) res -iterator blobSidecarTopics*(forkDigest: ForkDigest): string = - for subnet_id in BlobId: +iterator blobSidecarTopics*( + forkDigest: ForkDigest, subnetCount: uint64): string = + for subnet_id in 0.BlobId ..< subnetCount.BlobId: yield getBlobSidecarTopic(forkDigest, subnet_id) # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#data_column_sidecar_subnet_id diff --git a/tests/test_honest_validator.nim b/tests/test_honest_validator.nim index 59b79d9bba..e7fa1b6c39 100644 --- a/tests/test_honest_validator.nim +++ b/tests/test_honest_validator.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2020-2024 Status Research & Development GmbH +# Copyright (c) 2020-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -80,7 +80,7 @@ suite "Honest validator": "/eth2/00000000/sync_committee_3/ssz_snappy" getBlobSidecarTopic(forkDigest, BlobId(1)) == "/eth2/00000000/blob_sidecar_1/ssz_snappy" - toSeq(blobSidecarTopics(forkDigest)) == + toSeq(blobSidecarTopics(forkDigest, subnetCount = 9)) == ["/eth2/00000000/blob_sidecar_0/ssz_snappy", "/eth2/00000000/blob_sidecar_1/ssz_snappy", "/eth2/00000000/blob_sidecar_2/ssz_snappy", From de2429f325e79f37e2780c2c8f00bc43c59116e0 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 14:54:06 +0100 Subject: [PATCH 37/46] Use `MAX_BLOBS_PER_BLOCK` from config in state transition (#6959) Start phasing out the compile-time `MAX_BLOBS_PER_BLOCK` and use the value from the network config in state transition instead. --- beacon_chain/spec/state_transition_block.nim | 7 ++++--- tests/consensus_spec/deneb/test_fixture_operations.nim | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/beacon_chain/spec/state_transition_block.nim b/beacon_chain/spec/state_transition_block.nim index fb1a99527f..48834a4961 100644 --- a/beacon_chain/spec/state_transition_block.nim +++ b/beacon_chain/spec/state_transition_block.nim @@ -957,7 +957,8 @@ type SomeDenebBeaconBlockBody = # https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/deneb/beacon-chain.md#process_execution_payload proc process_execution_payload*( - state: var deneb.BeaconState, body: SomeDenebBeaconBlockBody, + cfg: RuntimeConfig, state: var deneb.BeaconState, + body: SomeDenebBeaconBlockBody, notify_new_payload: deneb.ExecutePayload): Result[void, cstring] = template payload: auto = body.execution_payload @@ -976,7 +977,7 @@ proc process_execution_payload*( return err("process_execution_payload: invalid timestamp") # [New in Deneb] Verify commitments are under limit - if not (lenu64(body.blob_kzg_commitments) <= MAX_BLOBS_PER_BLOCK): + if not (lenu64(body.blob_kzg_commitments) <= cfg.MAX_BLOBS_PER_BLOCK): return err("process_execution_payload: too many KZG commitments") # Verify the execution payload is valid @@ -1329,7 +1330,7 @@ proc process_block*( if is_execution_enabled(state, blck.body): ? process_withdrawals(state, blck.body.execution_payload) ? process_execution_payload( - state, blck.body, + cfg, state, blck.body, func(_: deneb.ExecutionPayload): bool = true) # [Modified in Deneb] ? process_randao(state, blck.body, flags, cache) ? process_eth1_data(state, blck.body) diff --git a/tests/consensus_spec/deneb/test_fixture_operations.nim b/tests/consensus_spec/deneb/test_fixture_operations.nim index d2a58f0158..f98c6e68ad 100644 --- a/tests/consensus_spec/deneb/test_fixture_operations.nim +++ b/tests/consensus_spec/deneb/test_fixture_operations.nim @@ -175,7 +175,8 @@ suite baseDescription & "Execution Payload " & preset(): preState.latest_block_root( assignClone(preState)[].hash_tree_root()))) func executePayload(_: deneb.ExecutionPayload): bool = payloadValid - process_execution_payload(preState, body, executePayload) + process_execution_payload( + defaultRuntimeConfig, preState, body, executePayload) for path in walkTests(OpExecutionPayloadDir): let applyExecutionPayload = makeApplyExecutionPayloadCb(path) From bbf648433b02b022d77873ecd3c10edc4fdea0b2 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 14:55:52 +0100 Subject: [PATCH 38/46] Move sync queue assertions to preset loader (#6960) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We already check in `presets.nim`: - `MAX_BLOBS_PER_BLOCK_ELECTRA` ≥ `MAX_BLOBS_PER_BLOCK` - Config values match preset constant values until constants phased out The ≤ 9 check can be moved over, then sync queue no longer depends on the deprecated preset constant values and it remains a one-time check. --- beacon_chain/spec/presets.nim | 6 ++++++ beacon_chain/sync/sync_queue.nim | 13 ------------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/beacon_chain/spec/presets.nim b/beacon_chain/spec/presets.nim index d97c3c5ab3..183d64c16e 100644 --- a/beacon_chain/spec/presets.nim +++ b/beacon_chain/spec/presets.nim @@ -31,6 +31,8 @@ const MESSAGE_DOMAIN_INVALID_SNAPPY*: array[4, byte] = [0x00, 0x00, 0x00, 0x00] MESSAGE_DOMAIN_VALID_SNAPPY*: array[4, byte] = [0x01, 0x00, 0x00, 0x00] + MAX_SUPPORTED_BLOBS_PER_BLOCK*: uint64 = 9 # revisit getShortMap(Blobs) if >9 + type Version* = distinct array[4, byte] Eth1Address* = web3types.Address @@ -873,6 +875,10 @@ proc readRuntimeConfig*( checkCompatibility MAX_BLOBS_PER_BLOCK_ELECTRA checkCompatibility MAX_REQUEST_BLOB_SIDECARS_ELECTRA + for suffix in ["", "_ELECTRA"]: + checkCompatibility MAX_SUPPORTED_BLOBS_PER_BLOCK, + "MAX_BLOBS_PER_BLOCK" & suffix, `<=` + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/phase0/fork-choice.md#configuration # Isn't being used as a preset in the usual way: at any time, there's one correct value checkCompatibility PROPOSER_SCORE_BOOST diff --git a/beacon_chain/sync/sync_queue.nim b/beacon_chain/sync/sync_queue.nim index d7f5bf281b..5c4934a274 100644 --- a/beacon_chain/sync/sync_queue.nim +++ b/beacon_chain/sync/sync_queue.nim @@ -143,11 +143,6 @@ func getShortMap*[T]( proc getShortMap*[T](req: SyncRequest[T], data: openArray[ref BlobSidecar]): string = - static: - doAssert(MAX_BLOBS_PER_BLOCK <= MAX_BLOBS_PER_BLOCK_ELECTRA) - doAssert(MAX_BLOBS_PER_BLOCK_ELECTRA < 10, - "getShortMap(Blobs) should be revisited") - var res = newStringOfCap(req.data.count) slider = req.data.slot @@ -175,11 +170,6 @@ proc getShortMap*[T]( req: SyncRequest[T], blobs: openArray[BlobSidecars] ): string = - static: - doAssert(MAX_BLOBS_PER_BLOCK <= MAX_BLOBS_PER_BLOCK_ELECTRA) - doAssert(MAX_BLOBS_PER_BLOCK_ELECTRA < 10, - "getShortMap(Blobs) should be revisited") - var res = newStringOfCap(req.data.count) slider = req.data.slot @@ -980,9 +970,6 @@ proc checkResponse*[T](req: SyncRequest[T], proc checkBlobsResponse*[T](req: SyncRequest[T], data: openArray[Slot]): Result[void, cstring] = - static: - doAssert(MAX_BLOBS_PER_BLOCK <= MAX_BLOBS_PER_BLOCK_ELECTRA) - if len(data) == 0: # Impossible to verify empty response. return ok() From d963bc310a299a72a9b2e549027a8f8b96e01837 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 17:16:18 +0100 Subject: [PATCH 39/46] Use `MAX_BLOBS_PER_BLOCK_ELECTRA` from config in sync manager (#6963) Since v1.5.0-alpha.4 the `MAX_BLOBS_PER_BLOCK` are part of config and are not preset constants anymore. This means we have to pass it into the sync manager so it can use the configured value. --- beacon_chain/nimbus_beacon_node.nim | 12 +++++++++--- beacon_chain/sync/sync_manager.nim | 16 ++++++++++++---- beacon_chain/sync/sync_overseer.nim | 3 ++- beacon_chain/sync/sync_queue.nim | 10 ++++++---- tests/test_sync_manager.nim | 13 ++++++++++--- 5 files changed, 39 insertions(+), 15 deletions(-) diff --git a/beacon_chain/nimbus_beacon_node.nim b/beacon_chain/nimbus_beacon_node.nim index 6d10b9ef77..5f842f2ef3 100644 --- a/beacon_chain/nimbus_beacon_node.nim +++ b/beacon_chain/nimbus_beacon_node.nim @@ -507,7 +507,9 @@ proc initFullNode( {} syncManager = newSyncManager[Peer, PeerId]( node.network.peerPool, - dag.cfg.DENEB_FORK_EPOCH, dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, + dag.cfg.DENEB_FORK_EPOCH, + dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, + dag.cfg.MAX_BLOBS_PER_BLOCK_ELECTRA, SyncQueueKind.Forward, getLocalHeadSlot, getLocalWallSlot, getFirstSlotAtFinalizedEpoch, getBackfillSlot, getFrontfillSlot, isWithinWeakSubjectivityPeriod, @@ -516,7 +518,9 @@ proc initFullNode( flags = syncManagerFlags) backfiller = newSyncManager[Peer, PeerId]( node.network.peerPool, - dag.cfg.DENEB_FORK_EPOCH, dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, + dag.cfg.DENEB_FORK_EPOCH, + dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, + dag.cfg.MAX_BLOBS_PER_BLOCK_ELECTRA, SyncQueueKind.Backward, getLocalHeadSlot, getLocalWallSlot, getFirstSlotAtFinalizedEpoch, getBackfillSlot, getFrontfillSlot, isWithinWeakSubjectivityPeriod, @@ -530,7 +534,9 @@ proc initFullNode( getLocalWallSlot() untrustedManager = newSyncManager[Peer, PeerId]( node.network.peerPool, - dag.cfg.DENEB_FORK_EPOCH, dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, + dag.cfg.DENEB_FORK_EPOCH, + dag.cfg.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, + dag.cfg.MAX_BLOBS_PER_BLOCK_ELECTRA, SyncQueueKind.Backward, getLocalHeadSlot, getLocalWallSlot, getFirstSlotAtFinalizedEpoch, getUntrustedBackfillSlot, getFrontfillSlot, isWithinWeakSubjectivityPeriod, diff --git a/beacon_chain/sync/sync_manager.nim b/beacon_chain/sync/sync_manager.nim index 37096c988b..6240a50359 100644 --- a/beacon_chain/sync/sync_manager.nim +++ b/beacon_chain/sync/sync_manager.nim @@ -57,6 +57,7 @@ type pool: PeerPool[A, B] DENEB_FORK_EPOCH: Epoch MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: uint64 + MAX_BLOBS_PER_BLOCK_ELECTRA: uint64 responseTimeout: chronos.Duration maxHeadAge: uint64 isWithinWeakSubjectivityPeriod: GetBoolCallback @@ -142,6 +143,7 @@ proc newSyncManager*[A, B]( pool: PeerPool[A, B], denebEpoch: Epoch, minEpochsForBlobSidecarsRequests: uint64, + maxBlobsPerBlockElectra: uint64, direction: SyncQueueKind, getLocalHeadSlotCb: GetSlotCallback, getLocalWallSlotCb: GetSlotCallback, @@ -170,6 +172,7 @@ proc newSyncManager*[A, B]( pool: pool, DENEB_FORK_EPOCH: denebEpoch, MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: minEpochsForBlobSidecarsRequests, + MAX_BLOBS_PER_BLOCK_ELECTRA: maxBlobsPerBlockElectra, getLocalHeadSlot: getLocalHeadSlotCb, getLocalWallSlot: getLocalWallSlotCb, isWithinWeakSubjectivityPeriod: weakSubjectivityPeriodCb, @@ -230,7 +233,9 @@ proc getBlobSidecars[A, B](man: SyncManager[A, B], peer: A, sync_ident = man.ident, topics = "syncman" - blobSidecarsByRange(peer, req.data.slot, req.data.count) + blobSidecarsByRange( + peer, req.data.slot, req.data.count, + maxResponseItems = (req.data.count * man.MAX_BLOBS_PER_BLOCK_ELECTRA).Limit) proc remainingSlots(man: SyncManager): uint64 = let @@ -293,7 +298,8 @@ func checkBlobs(blobs: seq[BlobSidecars]): Result[void, string] = proc getSyncBlockData*[T]( peer: T, - slot: Slot + slot: Slot, + maxBlobsPerBlockElectra: uint64 ): Future[SyncBlockDataRes] {.async: (raises: [CancelledError]).} = mixin getScore @@ -353,7 +359,8 @@ proc getSyncBlockData*[T]( peer_score = peer.getScore(), peer_speed = peer.netKbps(), topics = "syncman" - let res = await blobSidecarsByRange(peer, slot, 1'u64) + let res = await blobSidecarsByRange( + peer, slot, 1'u64, maxResponseItems = maxBlobsPerBlockElectra.Limit) if res.isErr(): peer.updateScore(PeerScoreNoValues) return err( @@ -449,7 +456,8 @@ proc getSyncBlockData[A, B]( if len(blobData) > 0: let blobSlots = mapIt(blobData, it[].signed_block_header.message.slot) - checkBlobsResponse(sr, blobSlots).isOkOr: + checkBlobsResponse( + sr, blobSlots, man.MAX_BLOBS_PER_BLOCK_ELECTRA).isOkOr: peer.updateScore(PeerScoreBadResponse) return err("Incorrect blobs sequence received, reason: " & $error) diff --git a/beacon_chain/sync/sync_overseer.nim b/beacon_chain/sync/sync_overseer.nim index 046f4e0d89..225e740ca1 100644 --- a/beacon_chain/sync/sync_overseer.nim +++ b/beacon_chain/sync/sync_overseer.nim @@ -89,7 +89,8 @@ proc getPeerBlock( let peer = await overseer.pool.acquire() try: let - res = (await getSyncBlockData(peer, slot)).valueOr: + maxBlobs = overseer.consensusManager.dag.cfg.MAX_BLOBS_PER_BLOCK_ELECTRA + res = (await getSyncBlockData(peer, slot, maxBlobs)).valueOr: return err(error) blob = if res.blobs.isSome(): diff --git a/beacon_chain/sync/sync_queue.nim b/beacon_chain/sync/sync_queue.nim index 5c4934a274..70e3c61bab 100644 --- a/beacon_chain/sync/sync_queue.nim +++ b/beacon_chain/sync/sync_queue.nim @@ -968,13 +968,15 @@ proc checkResponse*[T](req: SyncRequest[T], ok() -proc checkBlobsResponse*[T](req: SyncRequest[T], - data: openArray[Slot]): Result[void, cstring] = +proc checkBlobsResponse*[T]( + req: SyncRequest[T], + data: openArray[Slot], + maxBlobsPerBlockElectra: uint64): Result[void, cstring] = if len(data) == 0: # Impossible to verify empty response. return ok() - if lenu64(data) > (req.data.count * MAX_BLOBS_PER_BLOCK_ELECTRA): + if lenu64(data) > (req.data.count * maxBlobsPerBlockElectra): # Number of blobs in response should be less or equal to number of # requested (blocks * MAX_BLOBS_PER_BLOCK_ELECTRA). # NOTE: This is not strict check, proper check will be done in blobs @@ -991,7 +993,7 @@ proc checkBlobsResponse*[T](req: SyncRequest[T], return err("Incorrect order") if slot == pslot: inc(counter) - if counter > MAX_BLOBS_PER_BLOCK_ELECTRA: + if counter > maxBlobsPerBlockElectra: # NOTE: This is not strict check, proper check will be done in blobs # validation. return err("Number of blobs in the block exceeds the limit") diff --git a/tests/test_sync_manager.nim b/tests/test_sync_manager.nim index b59e86ff60..2be73ecc51 100644 --- a/tests/test_sync_manager.nim +++ b/tests/test_sync_manager.nim @@ -1363,14 +1363,21 @@ suite "SyncManager test suite": checkResponse(r3, @[Slot(13), Slot(13)]).isOk() == false test "[SyncQueue] checkBlobsResponse() test": + const maxBlobsPerBlockElectra = 9 + + proc checkBlobsResponse[T]( + req: SyncRequest[T], + data: openArray[Slot]): Result[void, cstring] = + checkBlobsResponse(req, data, maxBlobsPerBlockElectra) + let r1 = SyncRequest[SomeTPeer](data: SyncRange.init(Slot(11), 1'u64)) r2 = SyncRequest[SomeTPeer](data: SyncRange.init(Slot(11), 2'u64)) r3 = SyncRequest[SomeTPeer](data: SyncRange.init(Slot(11), 3'u64)) - d1 = Slot(11).repeat(MAX_BLOBS_PER_BLOCK_ELECTRA) - d2 = Slot(12).repeat(MAX_BLOBS_PER_BLOCK_ELECTRA) - d3 = Slot(13).repeat(MAX_BLOBS_PER_BLOCK_ELECTRA) + d1 = Slot(11).repeat(maxBlobsPerBlockElectra) + d2 = Slot(12).repeat(maxBlobsPerBlockElectra) + d3 = Slot(13).repeat(maxBlobsPerBlockElectra) check: checkBlobsResponse(r1, [Slot(11)]).isOk() == true From d74a6132d019465ea792a47b2eaca75bda429388 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 17:26:55 +0100 Subject: [PATCH 40/46] Allow runtime config of `MAX_REQUEST_BLOB_SIDECARS` (#6964) With `MAX_REQUEST_BLOB_SIDECARS` becoming dynamic, we can no longer use the value from network config in the `List` datatype and have to rely on an upper bound constant for the maximum supported value instead and then check the actual length at runtime. As a side effect, this also extends `BlobIdentifierList` to use the correct electra specific request limit instead of the Deneb constant. --- beacon_chain/spec/datatypes/constants.nim | 4 --- beacon_chain/spec/network.nim | 4 --- beacon_chain/spec/presets.nim | 6 ++--- beacon_chain/sync/sync_manager.nim | 2 +- beacon_chain/sync/sync_protocol.nim | 31 ++++++++++++++--------- 5 files changed, 23 insertions(+), 24 deletions(-) diff --git a/beacon_chain/spec/datatypes/constants.nim b/beacon_chain/spec/datatypes/constants.nim index 5465e686fe..8ad375c2a9 100644 --- a/beacon_chain/spec/datatypes/constants.nim +++ b/beacon_chain/spec/datatypes/constants.nim @@ -93,7 +93,3 @@ const # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/electra/beacon-chain.md#execution-1 MAX_BLOBS_PER_BLOCK_ELECTRA* = 9'u64 - - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/electra/p2p-interface.md#configuration - MAX_REQUEST_BLOB_SIDECARS_ELECTRA* = - MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA diff --git a/beacon_chain/spec/network.nim b/beacon_chain/spec/network.nim index 9c61761122..40807ea36f 100644 --- a/beacon_chain/spec/network.nim +++ b/beacon_chain/spec/network.nim @@ -30,10 +30,6 @@ const # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.9/specs/altair/light-client/p2p-interface.md#configuration MAX_REQUEST_LIGHT_CLIENT_UPDATES* = 128 - # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.5/specs/deneb/p2p-interface.md#configuration - MAX_REQUEST_BLOB_SIDECARS*: uint64 = - MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#configuration MAX_REQUEST_DATA_COLUMN_SIDECARS*: uint64 = MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS diff --git a/beacon_chain/spec/presets.nim b/beacon_chain/spec/presets.nim index 183d64c16e..0c47f7bb10 100644 --- a/beacon_chain/spec/presets.nim +++ b/beacon_chain/spec/presets.nim @@ -32,6 +32,7 @@ const MESSAGE_DOMAIN_VALID_SNAPPY*: array[4, byte] = [0x01, 0x00, 0x00, 0x00] MAX_SUPPORTED_BLOBS_PER_BLOCK*: uint64 = 9 # revisit getShortMap(Blobs) if >9 + MAX_SUPPORTED_REQUEST_BLOB_SIDECARS*: uint64 = 1152 type Version* = distinct array[4, byte] @@ -869,15 +870,14 @@ proc readRuntimeConfig*( checkCompatibility ATTESTATION_SUBNET_PREFIX_BITS checkCompatibility MAX_REQUEST_BLOCKS_DENEB - checkCompatibility MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK, - "MAX_REQUEST_BLOB_SIDECARS" checkCompatibility BLOB_SIDECAR_SUBNET_COUNT checkCompatibility MAX_BLOBS_PER_BLOCK_ELECTRA - checkCompatibility MAX_REQUEST_BLOB_SIDECARS_ELECTRA for suffix in ["", "_ELECTRA"]: checkCompatibility MAX_SUPPORTED_BLOBS_PER_BLOCK, "MAX_BLOBS_PER_BLOCK" & suffix, `<=` + checkCompatibility MAX_SUPPORTED_REQUEST_BLOB_SIDECARS, + "MAX_REQUEST_BLOB_SIDECARS" & suffix, `<=` # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/phase0/fork-choice.md#configuration # Isn't being used as a preset in the usual way: at any time, there's one correct value diff --git a/beacon_chain/sync/sync_manager.nim b/beacon_chain/sync/sync_manager.nim index 6240a50359..577ee88f32 100644 --- a/beacon_chain/sync/sync_manager.nim +++ b/beacon_chain/sync/sync_manager.nim @@ -92,7 +92,7 @@ type BeaconBlocksRes = NetRes[List[ref ForkedSignedBeaconBlock, Limit MAX_REQUEST_BLOCKS]] BlobSidecarsRes = - NetRes[List[ref BlobSidecar, Limit(MAX_REQUEST_BLOB_SIDECARS_ELECTRA)]] + NetRes[List[ref BlobSidecar, Limit(MAX_SUPPORTED_REQUEST_BLOB_SIDECARS)]] SyncBlockData* = object blocks*: seq[ref ForkedSignedBeaconBlock] diff --git a/beacon_chain/sync/sync_protocol.nim b/beacon_chain/sync/sync_protocol.nim index 17d5e10ffc..77868a865e 100644 --- a/beacon_chain/sync/sync_protocol.nim +++ b/beacon_chain/sync/sync_protocol.nim @@ -37,8 +37,10 @@ type slot: Slot BlockRootsList* = List[Eth2Digest, Limit MAX_REQUEST_BLOCKS] - BlobIdentifierList* = List[BlobIdentifier, Limit (MAX_REQUEST_BLOB_SIDECARS)] - DataColumnIdentifierList* = List[DataColumnIdentifier, Limit (MAX_REQUEST_DATA_COLUMN_SIDECARS)] + BlobIdentifierList* = List[ + BlobIdentifier, Limit MAX_SUPPORTED_REQUEST_BLOB_SIDECARS] + DataColumnIdentifierList* = List[ + DataColumnIdentifier, Limit (MAX_REQUEST_DATA_COLUMN_SIDECARS)] proc readChunkPayload*( conn: Connection, peer: Peer, MsgType: type (ref ForkedSignedBeaconBlock)): @@ -108,11 +110,13 @@ proc readChunkPayload*( template getBlobSidecarsByRoot( versionNumber: static string, peer: Peer, dag: ChainDAGRef, response: auto, - blobIds: BlobIdentifierList) = + blobIds: BlobIdentifierList, maxReqSidecars: uint64) = trace "got v" & versionNumber & " blobs range request", peer, len = blobIds.len if blobIds.len == 0: raise newException(InvalidInputsError, "No blobs requested") + if blobIds.lenu64 > maxReqSidecars: + raise newException(InvalidInputsError, "Exceeding blob request limit") let count = blobIds.len @@ -145,8 +149,8 @@ template getBlobSidecarsByRoot( template getBlobSidecarsByRange( versionNumber: static string, peer: Peer, dag: ChainDAGRef, response: auto, - startSlot: Slot, reqCount: uint64, blobsPerBlock: static uint64, - maxReqSidecars: static uint64) = + startSlot: Slot, reqCount: uint64, blobsPerBlock: uint64, + maxReqSidecars: uint64) = trace "got v" & versionNumber & " blobs range request", peer, startSlot, count = reqCount if reqCount == 0: @@ -161,9 +165,9 @@ template getBlobSidecarsByRange( if startSlot.epoch < epochBoundary: raise newException(ResourceUnavailableError, BlobsOutOfRange) - var blockIds: array[int(maxReqSidecars), BlockId] + var blockIds: array[MAX_SUPPORTED_REQUEST_BLOB_SIDECARS.int, BlockId] let - count = int min(reqCount, blockIds.lenu64) + count = int min(reqCount, maxReqSidecars) endIndex = count - 1 startIndex = dag.getBlockRange(startSlot, blockIds.toOpenArray(0, endIndex)) @@ -334,7 +338,7 @@ p2pProtocol BeaconSync(version = 1, peer: Peer, blobIds: BlobIdentifierList, response: MultipleChunksResponse[ - ref BlobSidecar, Limit(MAX_REQUEST_BLOB_SIDECARS_ELECTRA)]) + ref BlobSidecar, Limit(MAX_SUPPORTED_REQUEST_BLOB_SIDECARS)]) {.async, libp2pProtocol("blob_sidecars_by_root", 1).} = # TODO Semantically, this request should return a non-ref, but doing so # runs into extreme inefficiency due to the compiler introducing @@ -348,7 +352,9 @@ p2pProtocol BeaconSync(version = 1, # client call that returns `seq[ref BlobSidecar]` will # will be generated by the libp2p macro - we guarantee that seq items # are `not-nil` in the implementation - getBlobSidecarsByRoot("1", peer, peer.networkState.dag, response, blobIds) + getBlobSidecarsByRoot( + "1", peer, peer.networkState.dag, response, blobIds, + peer.networkState.dag.cfg.MAX_REQUEST_BLOB_SIDECARS_ELECTRA) # https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/deneb/p2p-interface.md#blobsidecarsbyrange-v1 proc blobSidecarsByRange( @@ -356,7 +362,7 @@ p2pProtocol BeaconSync(version = 1, startSlot: Slot, reqCount: uint64, response: MultipleChunksResponse[ - ref BlobSidecar, Limit(MAX_REQUEST_BLOB_SIDECARS_ELECTRA)]) + ref BlobSidecar, Limit(MAX_SUPPORTED_REQUEST_BLOB_SIDECARS)]) {.async, libp2pProtocol("blob_sidecars_by_range", 1).} = # TODO This code is more complicated than it needs to be, since the type # of the multiple chunks response is not actually used in this server @@ -368,7 +374,8 @@ p2pProtocol BeaconSync(version = 1, # are `not-nil` in the implementation getBlobSidecarsByRange( "1", peer, peer.networkState.dag, response, startSlot, reqCount, - MAX_BLOBS_PER_BLOCK_ELECTRA, MAX_REQUEST_BLOB_SIDECARS_ELECTRA) + peer.networkState.dag.cfg.MAX_BLOBS_PER_BLOCK_ELECTRA, + peer.networkState.dag.cfg.MAX_REQUEST_BLOB_SIDECARS_ELECTRA) # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#datacolumnsidecarsbyroot-v1 proc dataColumnSidecarsByRoot( @@ -420,7 +427,7 @@ p2pProtocol BeaconSync(version = 1, debug "Data column root request done", peer, roots = colIds.len, count, found -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#datacolumnsidecarsbyrange-v1 + # https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.10/specs/fulu/p2p-interface.md#datacolumnsidecarsbyrange-v1 proc dataColumnSidecarsByRange( peer: Peer, startSlot: Slot, From b18faca3f146802618122ef54eb1834a8701f683 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 18:46:41 +0100 Subject: [PATCH 41/46] Bump geth to `v1.15.3` (#6965) - https://github.com/ethereum/go-ethereum/releases/tag/v1.15.3 --- scripts/geth_binaries.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/geth_binaries.sh b/scripts/geth_binaries.sh index ca9900b178..2c44feb4f6 100644 --- a/scripts/geth_binaries.sh +++ b/scripts/geth_binaries.sh @@ -19,7 +19,7 @@ source "${SCRIPTS_DIR}/bash_utils.sh" download_geth_stable() { if [[ ! -e "${STABLE_GETH_BINARY}" ]]; then - GETH_VERSION="1.15.1-b027a90a" # https://geth.ethereum.org/downloads + GETH_VERSION="1.15.3-612c9e0f" # https://geth.ethereum.org/downloads GETH_URL="https://gethstore.blob.core.windows.net/builds/" case "${OS}-${ARCH}" in From ed576c5a13dfbcf59393f19e74f37e75738fd439 Mon Sep 17 00:00:00 2001 From: tersec Date: Tue, 25 Feb 2025 18:08:18 +0000 Subject: [PATCH 42/46] fix ncli slots help (#6966) * fix ncli slots help * copyright year --- ncli/ncli.nim | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ncli/ncli.nim b/ncli/ncli.nim index b38d668c01..a13dcf1263 100644 --- a/ncli/ncli.nim +++ b/ncli/ncli.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2020-2024 Status Research & Development GmbH +# Copyright (c) 2020-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -80,15 +80,15 @@ type of slots: preState2* {. argument - desc: "State to which to apply specified block"}: string + desc: "State to which to apply specified empty slots"}: string slot* {. argument - desc: "Block to apply to preState"}: uint64 + desc: "Empty slots to apply to preState"}: uint64 postState2* {. argument - desc: "Filename of state resulting from applying blck to preState"}: string + desc: "Filename of state resulting from empty slots to preState"}: string template saveSSZFile(filename: string, value: ForkedHashedBeaconState) = try: From 13e54ddd9255d7e27d8078be31ec7318d0d25d27 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 19:46:18 +0100 Subject: [PATCH 43/46] Limit `BlobId` to a maximum supported range (#6967) * Limit `BlobId` to a maximum supported range `BlobId` historically tracked `MAX_BLOBS_PER_BLOCK_ELECTRA` which is no longer correct because the network configuration may assign multiple blobs to the same subnet dynamically since v1.5.0-alpha.4. Instead, restrict it to a specific range, there is no `for x in BlobId` anywhere. * Lint --- beacon_chain/spec/datatypes/base.nim | 7 +++---- beacon_chain/spec/datatypes/constants.nim | 6 ------ beacon_chain/spec/presets.nim | 5 +++-- beacon_chain/spec/presets/gnosis/deneb_preset.nim | 8 ++++---- beacon_chain/spec/presets/mainnet/deneb_preset.nim | 6 ++---- beacon_chain/spec/presets/minimal/deneb_preset.nim | 6 ++---- 6 files changed, 14 insertions(+), 24 deletions(-) diff --git a/beacon_chain/spec/datatypes/base.nim b/beacon_chain/spec/datatypes/base.nim index a2f1225370..a75f4127b7 100644 --- a/beacon_chain/spec/datatypes/base.nim +++ b/beacon_chain/spec/datatypes/base.nim @@ -204,7 +204,8 @@ type ## blob sidecar - it is distinct from the BlobIndex in particular ## ## The `BlobId` type is constrained to values in the range - ## `[0, MAX_BLOBS_PER_BLOCK_ELECTRA)` during initialization. + ## `[0, MAX_SUPPORTED_BLOB_SIDECAR_SUBNET_COUNT)` during initialization. + ## The network configuration may impose further restrictions on the count! # BitVector[4] in the spec, ie 4 bits which end up encoded as a byte for # SSZ / hashing purposes @@ -612,9 +613,7 @@ template makeLimitedU64*(T: untyped, limit: uint64) = makeLimitedU64(CommitteeIndex, MAX_COMMITTEES_PER_SLOT) makeLimitedU64(SubnetId, ATTESTATION_SUBNET_COUNT) - -static: doAssert MAX_BLOBS_PER_BLOCK_ELECTRA >= BLOB_SIDECAR_SUBNET_COUNT -makeLimitedU64(BlobId, MAX_BLOBS_PER_BLOCK_ELECTRA) +makeLimitedU64(BlobId, MAX_SUPPORTED_BLOB_SIDECAR_SUBNET_COUNT) const validatorIndexLimit = min(uint64(int32.high), VALIDATOR_REGISTRY_LIMIT) diff --git a/beacon_chain/spec/datatypes/constants.nim b/beacon_chain/spec/datatypes/constants.nim index 8ad375c2a9..442d67c6ff 100644 --- a/beacon_chain/spec/datatypes/constants.nim +++ b/beacon_chain/spec/datatypes/constants.nim @@ -64,9 +64,6 @@ const REORG_PARENT_WEIGHT_THRESHOLD*: uint64 = 160 REORG_MAX_EPOCHS_SINCE_FINALIZATION* = Epoch(2) - # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.7/specs/deneb/p2p-interface.md#configuration - BLOB_SIDECAR_SUBNET_COUNT*: uint64 = 6 - # https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.1/specs/phase0/p2p-interface.md#configuration MAX_REQUEST_BLOCKS* = 1024'u64 RESP_TIMEOUT* = 10'u64 @@ -90,6 +87,3 @@ const DEPOSIT_REQUEST_TYPE* = 0x00'u8 WITHDRAWAL_REQUEST_TYPE* = 0x01'u8 CONSOLIDATION_REQUEST_TYPE* = 0x02'u8 - - # https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.0/specs/electra/beacon-chain.md#execution-1 - MAX_BLOBS_PER_BLOCK_ELECTRA* = 9'u64 diff --git a/beacon_chain/spec/presets.nim b/beacon_chain/spec/presets.nim index 0c47f7bb10..cdfa7ac6cd 100644 --- a/beacon_chain/spec/presets.nim +++ b/beacon_chain/spec/presets.nim @@ -31,6 +31,7 @@ const MESSAGE_DOMAIN_INVALID_SNAPPY*: array[4, byte] = [0x00, 0x00, 0x00, 0x00] MESSAGE_DOMAIN_VALID_SNAPPY*: array[4, byte] = [0x01, 0x00, 0x00, 0x00] + MAX_SUPPORTED_BLOB_SIDECAR_SUBNET_COUNT*: uint64 = 9 MAX_SUPPORTED_BLOBS_PER_BLOCK*: uint64 = 9 # revisit getShortMap(Blobs) if >9 MAX_SUPPORTED_REQUEST_BLOB_SIDECARS*: uint64 = 1152 @@ -870,10 +871,10 @@ proc readRuntimeConfig*( checkCompatibility ATTESTATION_SUBNET_PREFIX_BITS checkCompatibility MAX_REQUEST_BLOCKS_DENEB - checkCompatibility BLOB_SIDECAR_SUBNET_COUNT - checkCompatibility MAX_BLOBS_PER_BLOCK_ELECTRA for suffix in ["", "_ELECTRA"]: + checkCompatibility MAX_SUPPORTED_BLOB_SIDECAR_SUBNET_COUNT, + "BLOB_SIDECAR_SUBNET_COUNT" & suffix, `<=` checkCompatibility MAX_SUPPORTED_BLOBS_PER_BLOCK, "MAX_BLOBS_PER_BLOCK" & suffix, `<=` checkCompatibility MAX_SUPPORTED_REQUEST_BLOB_SIDECARS, diff --git a/beacon_chain/spec/presets/gnosis/deneb_preset.nim b/beacon_chain/spec/presets/gnosis/deneb_preset.nim index d32668081a..34f0c93128 100644 --- a/beacon_chain/spec/presets/gnosis/deneb_preset.nim +++ b/beacon_chain/spec/presets/gnosis/deneb_preset.nim @@ -1,18 +1,18 @@ # beacon_chain -# Copyright (c) 2023 Status Research & Development GmbH +# Copyright (c) 2023-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). # at your option. This file may not be copied, modified, or distributed except according to those terms. +{.push raises: [].} + # Gnosis preset - Deneb -# https://github.com/gnosischain/specs/blob/1648fc86cef7bc148d74cb21921d2d12ca9442ac/consensus/preset/gnosis/deneb.yaml +# https://github.com/gnosischain/specs/blob/31f87ac73d271762ac35b3649e7639d00c73c66d/consensus/preset/gnosis/deneb.yaml const # `uint64(4096)` FIELD_ELEMENTS_PER_BLOB*: uint64 = 4096 # `uint64(2**12)` (= 4096) MAX_BLOB_COMMITMENTS_PER_BLOCK*: uint64 = 4096 - # `uint64(6)` - MAX_BLOBS_PER_BLOCK*: uint64 = 6 # `floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) + 1 + ceillog2(MAX_BLOB_COMMITMENTS_PER_BLOCK)` = 4 + 1 + 12 = 17 KZG_COMMITMENT_INCLUSION_PROOF_DEPTH* = 17 diff --git a/beacon_chain/spec/presets/mainnet/deneb_preset.nim b/beacon_chain/spec/presets/mainnet/deneb_preset.nim index cd3f91edba..a67af9a2a2 100644 --- a/beacon_chain/spec/presets/mainnet/deneb_preset.nim +++ b/beacon_chain/spec/presets/mainnet/deneb_preset.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2023-2024 Status Research & Development GmbH +# Copyright (c) 2023-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -8,13 +8,11 @@ {.push raises: [].} # Mainnet preset - Deneb -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/presets/mainnet/deneb.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/mainnet/deneb.yaml const # `uint64(4096)` FIELD_ELEMENTS_PER_BLOB*: uint64 = 4096 # `uint64(2**12)` (= 4096) MAX_BLOB_COMMITMENTS_PER_BLOCK*: uint64 = 4096 - # `uint64(6)` - MAX_BLOBS_PER_BLOCK*: uint64 = 6 # `floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) + 1 + ceillog2(MAX_BLOB_COMMITMENTS_PER_BLOCK)` = 4 + 1 + 12 = 17 KZG_COMMITMENT_INCLUSION_PROOF_DEPTH* = 17 diff --git a/beacon_chain/spec/presets/minimal/deneb_preset.nim b/beacon_chain/spec/presets/minimal/deneb_preset.nim index f609de5503..b546724451 100644 --- a/beacon_chain/spec/presets/minimal/deneb_preset.nim +++ b/beacon_chain/spec/presets/minimal/deneb_preset.nim @@ -1,5 +1,5 @@ # beacon_chain -# Copyright (c) 2023-2024 Status Research & Development GmbH +# Copyright (c) 2023-2025 Status Research & Development GmbH # Licensed and distributed under either of # * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT). # * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0). @@ -8,13 +8,11 @@ {.push raises: [].} # Minimal preset - Deneb -# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.3/presets/minimal/deneb.yaml +# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/presets/minimal/deneb.yaml const # `uint64(4096)` FIELD_ELEMENTS_PER_BLOB*: uint64 = 4096 # [customized] MAX_BLOB_COMMITMENTS_PER_BLOCK*: uint64 = 32 - # `uint64(6)` - MAX_BLOBS_PER_BLOCK*: uint64 = 6 # [customized] `floorlog2(get_generalized_index(BeaconBlockBody, 'blob_kzg_commitments')) + 1 + ceillog2(MAX_BLOB_COMMITMENTS_PER_BLOCK)` = 4 + 1 + 5 = 10 KZG_COMMITMENT_INCLUSION_PROOF_DEPTH* = 10 From 085b1955dd7e0d2d7ac8cdb7cb2f321be4cd0ae9 Mon Sep 17 00:00:00 2001 From: Etan Kissling Date: Tue, 25 Feb 2025 22:07:54 +0100 Subject: [PATCH 44/46] Bump gnosis-chain-configs to `3f44fafa888439f56fc60d2f6173bfe63f31c962` (#6968) - Bump to v1.5.0-alpha.10 - Bump configs to spec v1.5.0 beta.2 - Schedule pectra on chiado - Make config comments match the values --- beacon_chain/networking/network_metadata.nim | 4 +++- vendor/gnosis-chain-configs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/beacon_chain/networking/network_metadata.nim b/beacon_chain/networking/network_metadata.nim index f9a3f923f9..a16fd329e1 100644 --- a/beacon_chain/networking/network_metadata.nim +++ b/beacon_chain/networking/network_metadata.nim @@ -288,7 +288,9 @@ when const_preset == "gnosis": for network in [gnosisMetadata, chiadoMetadata]: doAssert network.cfg.DENEB_FORK_EPOCH < FAR_FUTURE_EPOCH - doAssert network.cfg.ELECTRA_FORK_EPOCH == FAR_FUTURE_EPOCH + doAssert gnosisMetadata.cfg.ELECTRA_FORK_EPOCH == FAR_FUTURE_EPOCH + doAssert chiadoMetadata.cfg.ELECTRA_FORK_EPOCH != FAR_FUTURE_EPOCH + for network in [gnosisMetadata, chiadoMetadata]: doAssert network.cfg.FULU_FORK_EPOCH == FAR_FUTURE_EPOCH doAssert ConsensusFork.high == ConsensusFork.Fulu diff --git a/vendor/gnosis-chain-configs b/vendor/gnosis-chain-configs index 0e085cb606..3f44fafa88 160000 --- a/vendor/gnosis-chain-configs +++ b/vendor/gnosis-chain-configs @@ -1 +1 @@ -Subproject commit 0e085cb606e78a495ce8014f9350931bc360e663 +Subproject commit 3f44fafa888439f56fc60d2f6173bfe63f31c962 From d74e9ab7aaa29b4ed21b6c4671e7a140e3967516 Mon Sep 17 00:00:00 2001 From: tersec Date: Thu, 27 Feb 2025 01:31:08 +0000 Subject: [PATCH 45/46] increase trusted node sync state download timeout to 3 minutes (#6969) --- beacon_chain/trusted_node_sync.nim | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/beacon_chain/trusted_node_sync.nim b/beacon_chain/trusted_node_sync.nim index cb8c9fed98..c670c5b710 100644 --- a/beacon_chain/trusted_node_sync.nim +++ b/beacon_chain/trusted_node_sync.nim @@ -15,15 +15,14 @@ import ./spec/eth2_apis/rest_beacon_client, ./spec/[beaconstate, eth2_merkleization, forks, light_client_sync, network, presets, - state_transition, deposit_snapshots], - "."/[beacon_chain_db, era_db] + state_transition, deposit_snapshots] from presto import RestDecodingError from "."/beacon_clock import BeaconClock, fromFloatSeconds, getBeaconTimeFn, init const - largeRequestsTimeout = 120.seconds # Downloading large items such as states. + largeRequestsTimeout = 3.minutes # Downloading large items such as states. smallRequestsTimeout = 30.seconds # Downloading smaller items such as blocks and deposit snapshots. proc fetchDepositSnapshot( From fad7b9a7133faf63efb552b6caaa3fb1554aba19 Mon Sep 17 00:00:00 2001 From: tersec Date: Sun, 2 Mar 2025 03:15:42 +0000 Subject: [PATCH 46/46] version v25.3.0 --- CHANGELOG.md | 27 +++++++++++++++++++++++++++ beacon_chain/version.nim | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32ead28ce3..05d679ea69 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,30 @@ +2025-03-02 v25.3.0 +================== + +Nimbus `v25.3.0` is a `low-urgency` release except for the Gnosis Chiado testnet, for which it's a `high-urgency` release. + +### Improvements + +- Add Gnosis Chiado testnet Electra fork support: + https://github.com/status-im/nimbus-eth2/pull/6968 + +- Add SSZ support for the registerValidator beacon REST API endpoint: + https://github.com/status-im/nimbus-eth2/pull/6943 + +- Increase trusted node sync state download timeout to 3 minutes: + https://github.com/status-im/nimbus-eth2/pull/6969 + +- Add link to trusted node sync documentation regarding state download timeout: + https://github.com/status-im/nimbus-eth2/pull/6927 + +### Fixes + +- Fix validator client graffiti with web3signer validators: + https://github.com/status-im/nimbus-eth2/pull/6927 + +- Fix sync completion percentages exceeding 100%: + https://github.com/status-im/nimbus-eth2/pull/6922 + 2025-02-13 v25.2.0 ================== diff --git a/beacon_chain/version.nim b/beacon_chain/version.nim index a37d870122..71dc18f5a5 100644 --- a/beacon_chain/version.nim +++ b/beacon_chain/version.nim @@ -18,7 +18,7 @@ const "Copyright (c) 2019-" & compileYear & " Status Research & Development GmbH" versionMajor* = 25 - versionMinor* = 2 + versionMinor* = 3 versionBuild* = 0 versionBlob* = "stateofus" # Single word - ends up in the default graffiti