From 8ef8dd24df96da149e8a37f2298d73effd895b83 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Fri, 19 Sep 2025 17:36:59 +0200 Subject: [PATCH 1/6] feat: schedule fusaka --- metadata/besu.json | 18 +++++++ metadata/chainspec.json | 20 ++++++++ metadata/config.yaml | 111 +++++++++++++++++++++++++++++----------- metadata/genesis.json | 18 +++++++ 4 files changed, 136 insertions(+), 31 deletions(-) diff --git a/metadata/besu.json b/metadata/besu.json index 85d8956..dcd1d37 100644 --- a/metadata/besu.json +++ b/metadata/besu.json @@ -17,6 +17,9 @@ "shanghaiTime": 1681338455, "cancunTime": 1710338135, "pragueTime": 1746612311, + "osakaTime": 1764798551, + "bpo1Time": 1765978199, + "bpo2Time": 1767747671, "ethash": {}, "depositContractAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa", "withdrawalRequestContractAddress": "0x00000961ef480eb55e80d19ad83579a64c007002", @@ -31,6 +34,21 @@ "target": 6, "max": 9, "baseFeeUpdateFraction": 5007716 + }, + "osaka": { + "target": 6, + "max": 9, + "baseFeeUpdateFraction": 5007716 + }, + "bpo1": { + "target": 10, + "max": 15, + "baseFeeUpdateFraction": 8346193 + }, + "bpo2": { + "target": 14, + "max": 21, + "baseFeeUpdateFraction": 11684671 } }, "discovery": { diff --git a/metadata/chainspec.json b/metadata/chainspec.json index df44106..3b237b2 100644 --- a/metadata/chainspec.json +++ b/metadata/chainspec.json @@ -197,6 +197,14 @@ "eip7251TransitionTimestamp": "0x681b3057", "eip7623TransitionTimestamp": "0x681b3057", "eip7702TransitionTimestamp": "0x681b3057", + "eip7594TransitionTimestamp": "0x6930b057", + "eip7823TransitionTimestamp": "0x6930b057", + "eip7825TransitionTimestamp": "0x6930b057", + "eip7883TransitionTimestamp": "0x6930b057", + "eip7918TransitionTimestamp": "0x6930b057", + "eip7934TransitionTimestamp": "0x6930b057", + "eip7939TransitionTimestamp": "0x6930b057", + "eip7951TransitionTimestamp": "0x6930b057", "depositContractAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa", "terminalTotalDifficulty": "0xc70d808a128d7380000", "blobSchedule": [ @@ -211,6 +219,18 @@ "target": 6, "max": 9, "baseFeeUpdateFraction": "0x4c6964" + }, + { + "timestamp": "0x6942b057", + "target": 10, + "max": 15, + "baseFeeUpdateFraction": "0x7f5a51" + }, + { + "timestamp": "0x695db057", + "target": 14, + "max": 21, + "baseFeeUpdateFraction": "0xb24b3f" } ] }, diff --git a/metadata/config.yaml b/metadata/config.yaml index e4189bd..6fd7c79 100644 --- a/metadata/config.yaml +++ b/metadata/config.yaml @@ -54,20 +54,37 @@ DENEB_FORK_EPOCH: 269568 # March 13, 2024, 01:55:35pm UTC # Electra ELECTRA_FORK_VERSION: 0x05000000 ELECTRA_FORK_EPOCH: 364032 # May 7, 2025, 10:05:11am UTC +# Fulu +FULU_FORK_VERSION: 0x06000000 +FULU_FORK_EPOCH: 411392 # December 3, 2025, 09:49:11pm UTC # Time parameters # --------------------------------------------------------------- -# 12 seconds +# 12 seconds (*deprecated*) SECONDS_PER_SLOT: 12 +# 12000 milliseconds +SLOT_DURATION_MS: 12000 # 14 (estimate from Eth1 mainnet) SECONDS_PER_ETH1_BLOCK: 14 -# 2**8 (= 256) epochs ~27 hours +# 2**8 (= 256) epochs MIN_VALIDATOR_WITHDRAWABILITY_DELAY: 256 -# 2**8 (= 256) epochs ~27 hours +# 2**8 (= 256) epochs SHARD_COMMITTEE_PERIOD: 256 -# 2**11 (= 2,048) Eth1 blocks ~8 hours +# 2**11 (= 2,048) Eth1 blocks ETH1_FOLLOW_DISTANCE: 2048 +# 1667 basis points, ~17% of SLOT_DURATION_MS +PROPOSER_REORG_CUTOFF_BPS: 1667 +# 3333 basis points, ~33% of SLOT_DURATION_MS +ATTESTATION_DUE_BPS: 3333 +# 6667 basis points, ~67% of SLOT_DURATION_MS +AGGREGATE_DUE_BPS: 6667 + +# Altair +# 3333 basis points, ~33% of SLOT_DURATION_MS +SYNC_MESSAGE_DUE_BPS: 3333 +# 6667 basis points, ~67% of SLOT_DURATION_MS +CONTRIBUTION_DUE_BPS: 6667 # Validator cycle @@ -76,15 +93,23 @@ ETH1_FOLLOW_DISTANCE: 2048 INACTIVITY_SCORE_BIAS: 4 # 2**4 (= 16) INACTIVITY_SCORE_RECOVERY_RATE: 16 -# 2**4 * 10**9 (= 16,000,000,000) Gwei -EJECTION_BALANCE: 16000000000 -# 2**2 (= 4) +# 28,000,000,000 Gwei to ensure quicker ejection +EJECTION_BALANCE: 28000000000 +# 2**2 (= 4) validators MIN_PER_EPOCH_CHURN_LIMIT: 4 # 2**16 (= 65,536) CHURN_LIMIT_QUOTIENT: 65536 -# [New in Deneb:EIP7514] 2**3 (= 8) + +# Deneb +# 2**3 (= 8) (*deprecated*) MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT: 8 +# Electra +# 2**7 * 10**9 (= 128,000,000,000) Gwei +MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 128000000000 +# 2**8 * 10**9 (= 256,000,000,000) Gwei +MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 256000000000 + # Fork choice # --------------------------------------------------------------- # 40% @@ -93,7 +118,7 @@ PROPOSER_SCORE_BOOST: 40 REORG_HEAD_WEIGHT_THRESHOLD: 20 # 160% REORG_PARENT_WEIGHT_THRESHOLD: 160 -# `2` epochs +# 2 epochs REORG_MAX_EPOCHS_SINCE_FINALIZATION: 2 @@ -107,18 +132,15 @@ DEPOSIT_CONTRACT_ADDRESS: 0x00000000219ab540356cBB839Cbe05303d7705Fa # Networking # --------------------------------------------------------------- -# `10 * 2**20` (= 10485760, 10 MiB) +# 10 * 2**20 (= 10,485,760) bytes, 10 MiB MAX_PAYLOAD_SIZE: 10485760 -# `2**10` (= 1024) +# 2**10 (= 1,024) blocks MAX_REQUEST_BLOCKS: 1024 -# `2**8` (= 256) +# 2**8 (= 256) epochs EPOCHS_PER_SUBNET_SUBSCRIPTION: 256 -# `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months) +# MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2 (= 33,024) epochs MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024 -# 5s -TTFB_TIMEOUT: 5 -# 10s -RESP_TIMEOUT: 10 +# 2**5 (= 32) slots ATTESTATION_PROPAGATION_SLOT_RANGE: 32 # 500ms MAXIMUM_GOSSIP_CLOCK_DISPARITY: 500 @@ -126,30 +148,57 @@ MESSAGE_DOMAIN_INVALID_SNAPPY: 0x00000000 MESSAGE_DOMAIN_VALID_SNAPPY: 0x01000000 # 2 subnets per node SUBNETS_PER_NODE: 2 -# 2**8 (= 64) +# 2**6 (= 64) subnets ATTESTATION_SUBNET_COUNT: 64 +# 0 bits ATTESTATION_SUBNET_EXTRA_BITS: 0 -# ceillog2(ATTESTATION_SUBNET_COUNT) + ATTESTATION_SUBNET_EXTRA_BITS +# ceillog2(ATTESTATION_SUBNET_COUNT) + ATTESTATION_SUBNET_EXTRA_BITS (= 6 + 0) bits ATTESTATION_SUBNET_PREFIX_BITS: 6 # Deneb -# `2**7` (=128) +# 2**7 (= 128) blocks MAX_REQUEST_BLOCKS_DENEB: 128 -# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK -MAX_REQUEST_BLOB_SIDECARS: 768 -# `2**12` (= 4096 epochs, ~18 days) +# 2**12 (= 4,096) epochs MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 4096 -# `6` +# 6 subnets BLOB_SIDECAR_SUBNET_COUNT: 6 +# 6 blobs +MAX_BLOBS_PER_BLOCK: 6 +# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK (= 128 * 6) sidecars +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` +# 9 subnets BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9 -# `uint64(9)` +# 9 blobs MAX_BLOBS_PER_BLOCK_ELECTRA: 9 -# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA +# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA (= 128 * 9) sidecars MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152 + +# Fulu +# 2**7 (= 128) groups +NUMBER_OF_CUSTODY_GROUPS: 128 +# 2**7 (= 128) subnets +DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128 +# MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS (= 128 * 128) sidecars +MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384 +# 2**3 (= 8) samples +SAMPLES_PER_SLOT: 8 +# 2**2 (= 4) sidecars +CUSTODY_REQUIREMENT: 4 +# 2**3 (= 8) sidecars +VALIDATOR_CUSTODY_REQUIREMENT: 8 +# 2**5 * 10**9 (= 32,000,000,000) Gwei +BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000 +# 2**12 (= 4,096) epochs +MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 + + +# Blob Scheduling +# --------------------------------------------------------------- + +BLOB_SCHEDULE: + - EPOCH: 414464 # December 17, 2025, 01:29:59pm UTC + MAX_BLOBS_PER_BLOCK: 15 + - EPOCH: 419072 # January 7, 2026, 01:01:11am UTC + MAX_BLOBS_PER_BLOCK: 21 \ No newline at end of file diff --git a/metadata/genesis.json b/metadata/genesis.json index 2c2d06e..899f40d 100644 --- a/metadata/genesis.json +++ b/metadata/genesis.json @@ -22,6 +22,9 @@ "shanghaiTime": 1681338455, "cancunTime": 1710338135, "pragueTime": 1746612311, + "osakaTime": 1764798551, + "bpo1Time": 1765978199, + "bpo2Time": 1767747671, "ethash": {}, "depositContractAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa", "blobSchedule": { @@ -34,6 +37,21 @@ "target": 6, "max": 9, "baseFeeUpdateFraction": 5007716 + }, + "osaka": { + "target": 6, + "max": 9, + "baseFeeUpdateFraction": 5007716 + }, + "bpo1": { + "target": 10, + "max": 15, + "baseFeeUpdateFraction": 8346193 + }, + "bpo2": { + "target": 14, + "max": 21, + "baseFeeUpdateFraction": 11684671 } } }, From 5d5e9af9b3702dff342d30b7f00d3d347b063b9f Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Mon, 22 Sep 2025 20:04:27 +0200 Subject: [PATCH 2/6] fix ejection balance --- metadata/config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/metadata/config.yaml b/metadata/config.yaml index 6fd7c79..9e051d0 100644 --- a/metadata/config.yaml +++ b/metadata/config.yaml @@ -93,8 +93,8 @@ CONTRIBUTION_DUE_BPS: 6667 INACTIVITY_SCORE_BIAS: 4 # 2**4 (= 16) INACTIVITY_SCORE_RECOVERY_RATE: 16 -# 28,000,000,000 Gwei to ensure quicker ejection -EJECTION_BALANCE: 28000000000 +# 2**4 * 10**9 (= 16,000,000,000) Gwei +EJECTION_BALANCE: 16000000000 # 2**2 (= 4) validators MIN_PER_EPOCH_CHURN_LIMIT: 4 # 2**16 (= 65,536) @@ -201,4 +201,4 @@ BLOB_SCHEDULE: - EPOCH: 414464 # December 17, 2025, 01:29:59pm UTC MAX_BLOBS_PER_BLOCK: 15 - EPOCH: 419072 # January 7, 2026, 01:01:11am UTC - MAX_BLOBS_PER_BLOCK: 21 \ No newline at end of file + MAX_BLOBS_PER_BLOCK: 21 From 9dac4227015859458c06b81552bf93c555d0feeb Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Thu, 9 Oct 2025 10:51:49 +0200 Subject: [PATCH 3/6] remove osaka from blob schedule besu.json --- metadata/besu.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/metadata/besu.json b/metadata/besu.json index dcd1d37..634436e 100644 --- a/metadata/besu.json +++ b/metadata/besu.json @@ -35,11 +35,6 @@ "max": 9, "baseFeeUpdateFraction": 5007716 }, - "osaka": { - "target": 6, - "max": 9, - "baseFeeUpdateFraction": 5007716 - }, "bpo1": { "target": 10, "max": 15, From 00de292aedb9e7eb90cccb0fe1cf463d804fefc5 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Mon, 13 Oct 2025 16:16:25 +0200 Subject: [PATCH 4/6] remove unused osaka from blob schedule --- metadata/genesis.json | 5 ----- 1 file changed, 5 deletions(-) diff --git a/metadata/genesis.json b/metadata/genesis.json index 899f40d..7de9e61 100644 --- a/metadata/genesis.json +++ b/metadata/genesis.json @@ -38,11 +38,6 @@ "max": 9, "baseFeeUpdateFraction": 5007716 }, - "osaka": { - "target": 6, - "max": 9, - "baseFeeUpdateFraction": 5007716 - }, "bpo1": { "target": 10, "max": 15, From b7361ba886b63428e49541c905aabe1089cdb1b0 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Thu, 23 Oct 2025 00:29:22 +0200 Subject: [PATCH 5/6] Update config.yaml Co-authored-by: Justin Traglia <95511699+jtraglia@users.noreply.github.com> --- metadata/config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metadata/config.yaml b/metadata/config.yaml index 9e051d0..2274632 100644 --- a/metadata/config.yaml +++ b/metadata/config.yaml @@ -198,7 +198,7 @@ MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 # --------------------------------------------------------------- BLOB_SCHEDULE: - - EPOCH: 414464 # December 17, 2025, 01:29:59pm UTC + - EPOCH: 414464 # December 17, 2025, 01:29:59pm UTC MAX_BLOBS_PER_BLOCK: 15 - - EPOCH: 419072 # January 7, 2026, 01:01:11am UTC + - EPOCH: 419072 # January 7, 2026, 01:01:11am UTC MAX_BLOBS_PER_BLOCK: 21 From 980aee8893a2291d473c38f63797d5bc370fa381 Mon Sep 17 00:00:00 2001 From: Barnabas Busa Date: Fri, 24 Oct 2025 14:02:01 +0200 Subject: [PATCH 6/6] reschedule bpo1 from 17th of dec to 9th of dec --- metadata/besu.json | 2 +- metadata/chainspec.json | 2 +- metadata/config.yaml | 2 +- metadata/genesis.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/metadata/besu.json b/metadata/besu.json index 634436e..79475ac 100644 --- a/metadata/besu.json +++ b/metadata/besu.json @@ -18,7 +18,7 @@ "cancunTime": 1710338135, "pragueTime": 1746612311, "osakaTime": 1764798551, - "bpo1Time": 1765978199, + "bpo1Time": 1765290071, "bpo2Time": 1767747671, "ethash": {}, "depositContractAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa", diff --git a/metadata/chainspec.json b/metadata/chainspec.json index 3b237b2..bf6e82f 100644 --- a/metadata/chainspec.json +++ b/metadata/chainspec.json @@ -221,7 +221,7 @@ "baseFeeUpdateFraction": "0x4c6964" }, { - "timestamp": "0x6942b057", + "timestamp": "0x69383057", "target": 10, "max": 15, "baseFeeUpdateFraction": "0x7f5a51" diff --git a/metadata/config.yaml b/metadata/config.yaml index 2274632..370266e 100644 --- a/metadata/config.yaml +++ b/metadata/config.yaml @@ -198,7 +198,7 @@ MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096 # --------------------------------------------------------------- BLOB_SCHEDULE: - - EPOCH: 414464 # December 17, 2025, 01:29:59pm UTC + - EPOCH: 412672 # December 9, 2025, 02:21:11pm UTC MAX_BLOBS_PER_BLOCK: 15 - EPOCH: 419072 # January 7, 2026, 01:01:11am UTC MAX_BLOBS_PER_BLOCK: 21 diff --git a/metadata/genesis.json b/metadata/genesis.json index 7de9e61..fc2b885 100644 --- a/metadata/genesis.json +++ b/metadata/genesis.json @@ -23,7 +23,7 @@ "cancunTime": 1710338135, "pragueTime": 1746612311, "osakaTime": 1764798551, - "bpo1Time": 1765978199, + "bpo1Time": 1765290071, "bpo2Time": 1767747671, "ethash": {}, "depositContractAddress": "0x00000000219ab540356cBB839Cbe05303d7705Fa",