From 61f9829d02a76cea0c3eb02115e0f70338f5e167 Mon Sep 17 00:00:00 2001 From: tersec Date: Tue, 23 Sep 2025 10:49:32 +0000 Subject: [PATCH 1/2] schedule Fulu on Sepolia, Holesky, and Hoodi --- beacon_chain/networking/network_metadata.nim | 11 +++++-- beacon_chain/spec/peerdas_helpers.nim | 2 +- beacon_chain/spec/presets.nim | 30 ++++++++++++++++++-- vendor/holesky | 2 +- vendor/hoodi | 2 +- vendor/sepolia | 2 +- 6 files changed, 39 insertions(+), 10 deletions(-) diff --git a/beacon_chain/networking/network_metadata.nim b/beacon_chain/networking/network_metadata.nim index 347158214a..64b270d4b1 100644 --- a/beacon_chain/networking/network_metadata.nim +++ b/beacon_chain/networking/network_metadata.nim @@ -5,7 +5,7 @@ # * 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: [].} +{.push raises: [], gcsafe.} import std/os, @@ -327,11 +327,16 @@ elif const_preset == "mainnet": for network in [ mainnetMetadata, sepoliaMetadata, holeskyMetadata, hoodiMetadata]: checkForkConsistency(network.cfg) - doAssert network.cfg.ELECTRA_FORK_EPOCH < FAR_FUTURE_EPOCH - doAssert network.cfg.FULU_FORK_EPOCH == FAR_FUTURE_EPOCH doAssert network.cfg.GLOAS_FORK_EPOCH == FAR_FUTURE_EPOCH doAssert ConsensusFork.high == ConsensusFork.Gloas + doAssert mainnetMetadata.cfg.FULU_FORK_EPOCH == FAR_FUTURE_EPOCH + doAssert mainnetMetadata.cfg.BLOB_SCHEDULE.len == 0 + + for network in [sepoliaMetadata, holeskyMetadata, hoodiMetadata]: + doAssert network.cfg.FULU_FORK_EPOCH < FAR_FUTURE_EPOCH + doAssert network.cfg.BLOB_SCHEDULE.len == 2 + proc getMetadataForNetwork*(networkName: string): Eth2NetworkMetadata = template loadRuntimeMetadata(): auto = if fileExists(networkName / "config.yaml"): diff --git a/beacon_chain/spec/peerdas_helpers.nim b/beacon_chain/spec/peerdas_helpers.nim index 9cc64b881f..41b16da7b2 100644 --- a/beacon_chain/spec/peerdas_helpers.nim +++ b/beacon_chain/spec/peerdas_helpers.nim @@ -22,7 +22,7 @@ import from std/algorithm import sort from std/sequtils import toSeq -from stew/staticfor import staticfor +from stew/staticfor import staticFor type CellBytes = array[fulu.CELLS_PER_EXT_BLOB, Cell] diff --git a/beacon_chain/spec/presets.nim b/beacon_chain/spec/presets.nim index a2225d69f9..4b52629b3f 100644 --- a/beacon_chain/spec/presets.nim +++ b/beacon_chain/spec/presets.nim @@ -8,15 +8,15 @@ {.push raises: [], gcsafe.} import - std/[strutils, parseutils, tables, typetraits], + std/[parseutils, tables, typetraits], chronos/timer, stew/[byteutils], stint, eth/common/addresses as eth, ./datatypes/constants from std/algorithm import sort +from std/strutils import split, splitLines, startsWith, strip, `%` export constants - export stint, eth const @@ -40,6 +40,20 @@ const MAX_SUPPORTED_BLOBS_PER_BLOCK*: uint64 = 9 # revisit getShortMap(Blobs) if >9 MAX_SUPPORTED_REQUEST_BLOB_SIDECARS*: uint64 = 1152 + # https://github.com/ethereum/consensus-specs/blob/v1.6.0-beta.0/specs/phase0/beacon-chain.md#time-parameters-1 + SLOT_DURATION_MS: uint64 = 12000 + + # https://github.com/ethereum/consensus-specs/blob/v1.6.0-beta.0/specs/phase0/validator.md#time-parameters + ATTESTATION_DUE_BPS: uint64 = 3333 + AGGREGATE_DUE_BPS: uint64 = 6667 + + # https://github.com/ethereum/consensus-specs/blob/v1.6.0-beta.0/specs/altair/validator.md#time-parameters + SYNC_MESSAGE_DUE_BPS: uint64 = 3333 + CONTRIBUTION_DUE_BPS: uint64 = 6667 + + # https://github.com/ethereum/consensus-specs/blob/v1.6.0-beta.0/specs/phase0/fork-choice.md#time-parameters + PROPOSER_REORG_CUTOFF_BPS: uint64 = 1667 + type TimeConfig* = object SECONDS_PER_SLOT*: uint64 @@ -164,11 +178,13 @@ type const const_preset* {.strdefine.} = "mainnet" - # No-longer used values from legacy config files + # No-longer used values from legacy config files, or quirks of BPO parsing ignoredValues = [ "TRANSITION_TOTAL_DIFFICULTY", # Name that appears in some altair alphas, obsolete, remove when no more testnets "MIN_ANCHOR_POW_BLOCK_DIFFICULTY", # Name that appears in some altair alphas, obsolete, remove when no more testnets "RANDOM_SUBNETS_PER_VALIDATOR", # Removed in consensus-specs v1.4.0 + " MAX_BLOBS_PER_BLOCK", # parsed separately + " - EPOCH", # parsed separately ] when const_preset == "mainnet": @@ -809,6 +825,7 @@ proc readRuntimeConfig*( if lineParts[0] in ignoredValues: continue values[lineParts[0]] = lineParts[1].strip + # Accumulate BLOB_SCHEDULE entries var blobScheduleEntries: seq[BlobParameters] @@ -992,6 +1009,13 @@ proc readRuntimeConfig*( checkCompatibility REORG_PARENT_WEIGHT_THRESHOLD checkCompatibility REORG_MAX_EPOCHS_SINCE_FINALIZATION + checkCompatibility SLOT_DURATION_MS + checkCompatibility ATTESTATION_DUE_BPS + checkCompatibility AGGREGATE_DUE_BPS + checkCompatibility SYNC_MESSAGE_DUE_BPS + checkCompatibility CONTRIBUTION_DUE_BPS + checkCompatibility PROPOSER_REORG_CUTOFF_BPS + template assignValue(name: static string, field: untyped): untyped = if values.hasKey(name): when field is seq[BlobParameters]: diff --git a/vendor/holesky b/vendor/holesky index 47b9fdafc1..8aec65f11f 160000 --- a/vendor/holesky +++ b/vendor/holesky @@ -1 +1 @@ -Subproject commit 47b9fdafc1d7328b6f0efb735ad3391288ba61e4 +Subproject commit 8aec65f11f0c986d6b76b2eb902420635eb9b815 diff --git a/vendor/hoodi b/vendor/hoodi index 2573cf01c8..93aed76e01 160000 --- a/vendor/hoodi +++ b/vendor/hoodi @@ -1 +1 @@ -Subproject commit 2573cf01c8796314b49b2ccac29cdcc147d5a46a +Subproject commit 93aed76e010174e115d209a7c014e2f4c13f2228 diff --git a/vendor/sepolia b/vendor/sepolia index 494b5152ed..f9158732ad 160000 --- a/vendor/sepolia +++ b/vendor/sepolia @@ -1 +1 @@ -Subproject commit 494b5152ed04685b776cd3eb7c994402e18dd0aa +Subproject commit f9158732adb1a2a6440613ad2232eb50e7384c4f From a80dd5188967d62f1663238945662657a5fa8122 Mon Sep 17 00:00:00 2001 From: tersec Date: Tue, 23 Sep 2025 12:24:53 +0000 Subject: [PATCH 2/2] fix minimized --- beacon_chain/spec/presets.nim | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/beacon_chain/spec/presets.nim b/beacon_chain/spec/presets.nim index 4b52629b3f..465c52857c 100644 --- a/beacon_chain/spec/presets.nim +++ b/beacon_chain/spec/presets.nim @@ -40,9 +40,6 @@ const MAX_SUPPORTED_BLOBS_PER_BLOCK*: uint64 = 9 # revisit getShortMap(Blobs) if >9 MAX_SUPPORTED_REQUEST_BLOB_SIDECARS*: uint64 = 1152 - # https://github.com/ethereum/consensus-specs/blob/v1.6.0-beta.0/specs/phase0/beacon-chain.md#time-parameters-1 - SLOT_DURATION_MS: uint64 = 12000 - # https://github.com/ethereum/consensus-specs/blob/v1.6.0-beta.0/specs/phase0/validator.md#time-parameters ATTESTATION_DUE_BPS: uint64 = 3333 AGGREGATE_DUE_BPS: uint64 = 6667 @@ -735,6 +732,7 @@ else: const MIN_SECONDS_PER_SLOT* = 1'u64 MAX_SECONDS_PER_SLOT* = int64.high.uint64 div 1_000_000_000'u64 + SLOT_DURATION_MS = SECONDS_PER_SLOT * 1000 const SLOTS_PER_SYNC_COMMITTEE_PERIOD* = SLOTS_PER_EPOCH * EPOCHS_PER_SYNC_COMMITTEE_PERIOD