Skip to content

Commit 4c9aa63

Browse files
LeanSerrarodrigo-o
andauthored
feat: electra sync with testnets (#1445)
Co-authored-by: Rodrigo Oliveri <[email protected]>
1 parent 0c7a072 commit 4c9aa63

File tree

11 files changed

+291
-54
lines changed

11 files changed

+291
-54
lines changed

Makefile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
spec-test-% spec-test spec-test-config-% spec-test-runner-% \
44
spec-test-mainnet-% spec-test-minimal-% spec-test-general-% \
55
clean-tests gen-spec compile-all download-beacon-node-oapi test-iex \
6-
sepolia holesky gnosis
6+
sepolia holesky gnosis hoodi
77

88
# Delete current file when command fails
99
.DELETE_ON_ERROR:
@@ -204,6 +204,14 @@ gnosis: compile-all
204204
gnosis.logfile: compile-all
205205
iex -S mix run -- --checkpoint-sync-url https://checkpoint.gnosischain.com --network gnosis --metrics --metrics-port $(METRICS_PORT) --log-file ./logs/gnosis.log --discovery-port $(DISCOVERY_PORT) --mode $(MODE)
206206

207+
#▶️ hoodi: @ Run an interactive terminal using hoodi network
208+
hoodi: compile-all
209+
iex -S mix run -- --checkpoint-sync-url https://checkpoint-sync.hoodi.ethpandaops.io --network hoodi --metrics --metrics-port $(METRICS_PORT) --discovery-port $(DISCOVERY_PORT) --mode $(MODE)
210+
211+
#▶️ hoodi.logfile: @ Run an interactive terminal using hoodi network with a log file
212+
hoodi.logfile: compile-all
213+
iex -S mix run -- --checkpoint-sync-url https://checkpoint-sync.hoodi.ethpandaops.io --network hoodi --metrics --metrics-port $(METRICS_PORT) --log-file ./logs/hoodi.log --discovery-port $(DISCOVERY_PORT) --mode $(MODE)
214+
207215
#▶️ checkpoint-sync: @ Run an interactive terminal using checkpoint sync for mainnet.
208216
checkpoint-sync: mainnet
209217

config/networks/holesky/config.yaml

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Extends the mainnet preset
2-
PRESET_BASE: "mainnet"
2+
PRESET_BASE: 'mainnet'
33
CONFIG_NAME: holesky
44

55
# Genesis
@@ -12,6 +12,7 @@ GENESIS_FORK_VERSION: 0x01017000
1212
# Genesis delay 5 mins
1313
GENESIS_DELAY: 300
1414

15+
1516
# Forking
1617
# ---------------------------------------------------------------
1718
# Some forks are disabled for now:
@@ -36,6 +37,10 @@ CAPELLA_FORK_EPOCH: 256
3637
DENEB_FORK_VERSION: 0x05017000
3738
DENEB_FORK_EPOCH: 29696
3839

40+
# Electra
41+
ELECTRA_FORK_VERSION: 0x06017000
42+
ELECTRA_FORK_EPOCH: 115968
43+
3944
# Time parameters
4045
# ---------------------------------------------------------------
4146
# 12 seconds
@@ -49,6 +54,7 @@ SHARD_COMMITTEE_PERIOD: 256
4954
# 2**11 (= 2,048) Eth1 blocks ~8 hours
5055
ETH1_FOLLOW_DISTANCE: 2048
5156

57+
5258
# Validator cycle
5359
# ---------------------------------------------------------------
5460
# 2**2 (= 4)
@@ -68,6 +74,12 @@ MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT: 8
6874
# ---------------------------------------------------------------
6975
# 40%
7076
PROPOSER_SCORE_BOOST: 40
77+
# 20%
78+
REORG_HEAD_WEIGHT_THRESHOLD: 20
79+
# 160%
80+
REORG_PARENT_WEIGHT_THRESHOLD: 160
81+
# `2` epochs
82+
REORG_MAX_EPOCHS_SINCE_FINALIZATION: 2
7183

7284
# Deposit contract
7385
# ---------------------------------------------------------------
@@ -78,15 +90,13 @@ DEPOSIT_CONTRACT_ADDRESS: 0x4242424242424242424242424242424242424242
7890
# Networking
7991
# ---------------------------------------------------------------
8092
# `10 * 2**20` (= 10485760, 10 MiB)
81-
GOSSIP_MAX_SIZE: 10485760
93+
MAX_PAYLOAD_SIZE: 10485760
8294
# `2**10` (= 1024)
8395
MAX_REQUEST_BLOCKS: 1024
8496
# `2**8` (= 256)
8597
EPOCHS_PER_SUBNET_SUBSCRIPTION: 256
8698
# `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months)
8799
MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024
88-
# `10 * 2**20` (=10485760, 10 MiB)
89-
MAX_CHUNK_SIZE: 10485760
90100
# 5s
91101
TTFB_TIMEOUT: 5
92102
# 10s
@@ -113,3 +123,15 @@ MAX_REQUEST_BLOB_SIDECARS: 768
113123
MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 4096
114124
# `6`
115125
BLOB_SIDECAR_SUBNET_COUNT: 6
126+
127+
# Electra
128+
# 2**7 * 10**9 (= 128,000,000,000)
129+
MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 128000000000
130+
# 2**8 * 10**9 (= 256,000,000,000)
131+
MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 256000000000
132+
# `9`
133+
BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9
134+
# `uint64(9)`
135+
MAX_BLOBS_PER_BLOCK_ELECTRA: 9
136+
# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA
137+
MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
- enr:-Mq4QLkmuSwbGBUph1r7iHopzRpdqE-gcm5LNZfcE-6T37OCZbRHi22bXZkaqnZ6XdIyEDTelnkmMEQB8w6NbnJUt9GGAZWaowaYh2F0dG5ldHOIABgAAAAAAACEZXRoMpDS8Zl_YAAJEAAIAAAAAAAAgmlkgnY0gmlwhNEmfKCEcXVpY4IyyIlzZWNwMjU2azGhA0hGa4jZJZYQAS-z6ZFK-m4GCFnWS8wfjO0bpSQn6hyEiHN5bmNuZXRzAIN0Y3CCIyiDdWRwgiMo
2+
- enr:-Ku4QLVumWTwyOUVS4ajqq8ZuZz2ik6t3Gtq0Ozxqecj0qNZWpMnudcvTs-4jrlwYRQMQwBS8Pvtmu4ZPP2Lx3i2t7YBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBd9cEGEAAJEP__________gmlkgnY0gmlwhNEmfKCJc2VjcDI1NmsxoQLdRlI8aCa_ELwTJhVN8k7km7IDc3pYu-FMYBs5_FiigIN1ZHCCIyk
3+
- enr:-LK4QAYuLujoiaqCAs0-qNWj9oFws1B4iy-Hff1bRB7wpQCYSS-IIMxLWCn7sWloTJzC1SiH8Y7lMQ5I36ynGV1ASj4Eh2F0dG5ldHOIYAAAAAAAAACEZXRoMpDS8Zl_YAAJEAAIAAAAAAAAgmlkgnY0gmlwhIbRilSJc2VjcDI1NmsxoQOmI5MlAu3f5WEThAYOqoygpS2wYn0XS5NV2aYq7T0a04N0Y3CCIyiDdWRwgiMo
4+
- enr:-Ku4QIC89sMC0o-irosD4_23lJJ4qCGOvdUz7SmoShWx0k6AaxCFTKviEHa-sa7-EzsiXpDp0qP0xzX6nKdXJX3X-IQBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBd9cEGEAAJEP__________gmlkgnY0gmlwhIbRilSJc2VjcDI1NmsxoQK_m0f1DzDc9Cjrspm36zuRa7072HSiMGYWLsKiVSbP34N1ZHCCIyk
5+
- enr:-Ku4QNkWjw5tNzo8DtWqKm7CnDdIq_y7xppD6c1EZSwjB8rMOkSFA1wJPLoKrq5UvA7wcxIotH6Usx3PAugEN2JMncIBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBd9cEGEAAJEP__________gmlkgnY0gmlwhIbHuBeJc2VjcDI1NmsxoQP3FwrhFYB60djwRjAoOjttq6du94DtkQuaN99wvgqaIYN1ZHCCIyk
6+
- enr:-OS4QMJGE13xEROqvKN1xnnt7U-noc51VXyM6wFMuL9LMhQDfo1p1dF_zFdS4OsnXz_vIYk-nQWnqJMWRDKvkSK6_CwDh2F0dG5ldHOIAAAAADAAAACGY2xpZW502IpMaWdodGhvdXNljDcuMC4wLWJldGEuM4RldGgykNLxmX9gAAkQAAgAAAAAAACCaWSCdjSCaXCEhse4F4RxdWljgiMqiXNlY3AyNTZrMaECef77P8k5l3PC_raLw42OAzdXfxeQ-58BJriNaqiRGJSIc3luY25ldHMAg3RjcIIjKIN1ZHCCIyg
7+
- enr:-LK4QDwhXMitMbC8xRiNL-XGMhRyMSOnxej-zGifjv9Nm5G8EF285phTU-CAsMHRRefZimNI7eNpAluijMQP7NDC8kEMh2F0dG5ldHOIAAAAAAAABgCEZXRoMpDS8Zl_YAAJEAAIAAAAAAAAgmlkgnY0gmlwhAOIT_SJc2VjcDI1NmsxoQMoHWNL4MAvh6YpQeM2SUjhUrLIPsAVPB8nyxbmckC6KIN0Y3CCIyiDdWRwgiMo
8+
- enr:-LK4QPYl2HnMPQ7b1es6Nf_tFYkyya5bj9IqAKOEj2cmoqVkN8ANbJJJK40MX4kciL7pZszPHw6vLNyeC-O3HUrLQv8Mh2F0dG5ldHOIAAAAAAAAAMCEZXRoMpDS8Zl_YAAJEAAIAAAAAAAAgmlkgnY0gmlwhAMYRG-Jc2VjcDI1NmsxoQPQ35tjr6q1qUqwAnegQmYQyfqxC_6437CObkZneI9n34N0Y3CCIyiDdWRwgiMo
9+
- enr:-KG4QJk_4IQHQw3DAdKIuGcEauKU8-nmRPPMj_hIQPRHmsFGMPPeOj6_xX09aHCndOzLnOZimVRzNM56_EQWYVbEpJMBgmlkgnY0gmlwhLkvrBODaXA2kP6AAAAAAAAAAhY-__4PR6OJc2VjcDI1NmsxoQPU7g2jQGTz8BYbB2vLTb39S_PrcZAehwMM0b3bWsM5rIN1ZHCCIyiEdWRwNoIjKA

config/networks/hoodi/config.yaml

Lines changed: 163 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,163 @@
1+
# Extends the mainnet preset
2+
PRESET_BASE: mainnet
3+
CONFIG_NAME: hoodi
4+
5+
# Genesis
6+
# ---------------------------------------------------------------
7+
# `2**14` (= 16,384)
8+
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT: 16384
9+
# 2025-Mar-17 12:00:00 PM UTC
10+
MIN_GENESIS_TIME: 1742212800
11+
GENESIS_FORK_VERSION: 0x10000910
12+
GENESIS_DELAY: 600
13+
14+
15+
# Forking
16+
# ---------------------------------------------------------------
17+
# Some forks are disabled for now:
18+
# - These may be re-assigned to another fork-version later
19+
# - Temporarily set to max uint64 value: 2**64 - 1
20+
21+
# Altair
22+
ALTAIR_FORK_VERSION: 0x20000910
23+
ALTAIR_FORK_EPOCH: 0
24+
# Merge
25+
BELLATRIX_FORK_VERSION: 0x30000910
26+
BELLATRIX_FORK_EPOCH: 0
27+
TERMINAL_TOTAL_DIFFICULTY: 0
28+
TERMINAL_BLOCK_HASH: 0x0000000000000000000000000000000000000000000000000000000000000000
29+
TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH: 18446744073709551615
30+
31+
# Capella
32+
CAPELLA_FORK_VERSION: 0x40000910
33+
CAPELLA_FORK_EPOCH: 0
34+
35+
# DENEB
36+
DENEB_FORK_VERSION: 0x50000910
37+
DENEB_FORK_EPOCH: 0
38+
39+
# Electra
40+
ELECTRA_FORK_VERSION: 0x60000910
41+
ELECTRA_FORK_EPOCH: 2048
42+
43+
# Fulu
44+
FULU_FORK_VERSION: 0x70000910
45+
FULU_FORK_EPOCH: 18446744073709551615
46+
47+
48+
# Time parameters
49+
# ---------------------------------------------------------------
50+
# 12 seconds
51+
SECONDS_PER_SLOT: 12
52+
# 14 (estimate from Eth1 mainnet)
53+
SECONDS_PER_ETH1_BLOCK: 12
54+
# 2**8 (= 256) epochs ~27 hours
55+
MIN_VALIDATOR_WITHDRAWABILITY_DELAY: 256
56+
# 2**8 (= 256) epochs ~27 hours
57+
SHARD_COMMITTEE_PERIOD: 256
58+
# 2**11 (= 2,048) Eth1 blocks ~8 hours
59+
ETH1_FOLLOW_DISTANCE: 2048
60+
61+
# Validator cycle
62+
# ---------------------------------------------------------------
63+
# 2**2 (= 4)
64+
INACTIVITY_SCORE_BIAS: 4
65+
# 2**4 (= 16)
66+
INACTIVITY_SCORE_RECOVERY_RATE: 16
67+
# 2**4 * 10**9 (= 16,000,000,000) Gwei
68+
EJECTION_BALANCE: 16000000000
69+
# 2**2 (= 4)
70+
MIN_PER_EPOCH_CHURN_LIMIT: 4
71+
# 2**16 (= 65,536)
72+
CHURN_LIMIT_QUOTIENT: 65536
73+
# [New in Deneb:EIP7514] 2**3 (= 8)
74+
MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT: 8
75+
76+
# Fork choice
77+
# ---------------------------------------------------------------
78+
# 40%
79+
PROPOSER_SCORE_BOOST: 40
80+
# 20%
81+
REORG_HEAD_WEIGHT_THRESHOLD: 20
82+
# 160%
83+
REORG_PARENT_WEIGHT_THRESHOLD: 160
84+
# `2` epochs
85+
REORG_MAX_EPOCHS_SINCE_FINALIZATION: 2
86+
87+
# Deposit contract
88+
# ---------------------------------------------------------------
89+
DEPOSIT_CHAIN_ID: 560048
90+
DEPOSIT_NETWORK_ID: 560048
91+
DEPOSIT_CONTRACT_ADDRESS: 0x00000000219ab540356cBB839Cbe05303d7705Fa
92+
93+
# Networking
94+
# ---------------------------------------------------------------
95+
# `10 * 2**20` (= 10485760, 10 MiB)
96+
MAX_PAYLOAD_SIZE: 10485760
97+
# `2**10` (= 1024)
98+
MAX_REQUEST_BLOCKS: 1024
99+
# `2**8` (= 256)
100+
EPOCHS_PER_SUBNET_SUBSCRIPTION: 256
101+
# `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months)
102+
MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024
103+
# 5s
104+
TTFB_TIMEOUT: 5
105+
# 10s
106+
RESP_TIMEOUT: 10
107+
ATTESTATION_PROPAGATION_SLOT_RANGE: 32
108+
# 500ms
109+
MAXIMUM_GOSSIP_CLOCK_DISPARITY: 500
110+
MESSAGE_DOMAIN_INVALID_SNAPPY: 0x00000000
111+
MESSAGE_DOMAIN_VALID_SNAPPY: 0x01000000
112+
# 2 subnets per node
113+
SUBNETS_PER_NODE: 2
114+
# 2**8 (= 64)
115+
ATTESTATION_SUBNET_COUNT: 64
116+
ATTESTATION_SUBNET_EXTRA_BITS: 0
117+
# ceillog2(ATTESTATION_SUBNET_COUNT) + ATTESTATION_SUBNET_EXTRA_BITS
118+
ATTESTATION_SUBNET_PREFIX_BITS: 6
119+
120+
# Deneb
121+
# `2**7` (=128)
122+
MAX_REQUEST_BLOCKS_DENEB: 128
123+
# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK
124+
MAX_REQUEST_BLOB_SIDECARS: 768
125+
# `2**12` (= 4096 epochs, ~18 days)
126+
MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS: 4096
127+
# `6`
128+
BLOB_SIDECAR_SUBNET_COUNT: 6
129+
## `uint64(6)`
130+
MAX_BLOBS_PER_BLOCK: 6
131+
132+
# Electra
133+
# 2**7 * 10**9 (= 128,000,000,000)
134+
MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 128000000000
135+
# 2**8 * 10**9 (= 256,000,000,000)
136+
MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 256000000000
137+
# `9`
138+
BLOB_SIDECAR_SUBNET_COUNT_ELECTRA: 9
139+
# `uint64(6)`
140+
TARGET_BLOBS_PER_BLOCK_ELECTRA: 6
141+
# `uint64(9)`
142+
MAX_BLOBS_PER_BLOCK_ELECTRA: 9
143+
# MAX_REQUEST_BLOCKS_DENEB * MAX_BLOBS_PER_BLOCK_ELECTRA
144+
MAX_REQUEST_BLOB_SIDECARS_ELECTRA: 1152
145+
146+
# Whisk
147+
# `Epoch(2**8)`
148+
WHISK_EPOCHS_PER_SHUFFLING_PHASE: 256
149+
# `Epoch(2)`
150+
WHISK_PROPOSER_SELECTION_GAP: 2
151+
152+
# Fulu
153+
NUMBER_OF_COLUMNS: 128
154+
NUMBER_OF_CUSTODY_GROUPS: 128
155+
DATA_COLUMN_SIDECAR_SUBNET_COUNT: 128
156+
MAX_REQUEST_DATA_COLUMN_SIDECARS: 16384
157+
SAMPLES_PER_SLOT: 8
158+
CUSTODY_REQUIREMENT: 4
159+
MAX_BLOBS_PER_BLOCK_FULU: 12
160+
MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096
161+
162+
# EIP7732
163+
MAX_REQUEST_PAYLOADS: 128

0 commit comments

Comments
 (0)