Skip to content

Commit a4a21ed

Browse files
committed
feat: add hoodi
1 parent cf84a26 commit a4a21ed

File tree

12 files changed

+225
-0
lines changed

12 files changed

+225
-0
lines changed

.github/workflows/backend-publish-docker-deploy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ on:
1111
- deploy-v2-pectra-devnet-6
1212
- deploy-v2-staging-holesky
1313
- deploy-v2-staging-sepolia
14+
- hoodi
1415

1516
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
1617
env:

.github/workflows/frontend-publish-docker-deploy.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ on:
1111
- deploy-v2-pectra-devnet-6
1212
- deploy-v2-staging-holesky
1313
- deploy-v2-staging-sepolia
14+
- hoodi
1415

1516
# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds.
1617
env:

backend/cmd/evm_node_indexer/main.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ const GOERLI_CHAINID = 5
4444
const OPTIMISM_CHAINID = 10
4545
const GNOSIS_CHAINID = 100
4646
const HOLESKY_CHAINID = 17000
47+
const HOODI_CHAINID = 560048
4748
const ARBITRUM_CHAINID = 42161
4849
const ARBITRUM_NITRO_BLOCKNUMBER = 22207815
4950
const SEPOLIA_CHAINID = 11155111
@@ -678,6 +679,8 @@ func getChainNamePretty() string {
678679
return "<:gnosis:1184470353947398155> GNOSIS mainnet"
679680
case HOLESKY_CHAINID:
680681
return "HOLESKY testnet"
682+
case HOODI_CHAINID:
683+
return "HOODI testnet"
681684
case ARBITRUM_CHAINID:
682685
return "<:arbitrum:1184470344506036334> ARBITRUM mainnet"
683686
case SEPOLIA_CHAINID:

backend/pkg/api/data_access/dummy.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,11 @@ func (*DummyService) GetAllNetworks() ([]t.NetworkInfo, error) {
422422
Name: "holesky",
423423
NotificationsName: "holesky",
424424
},
425+
{
426+
ChainId: 560048,
427+
Name: "hoodi",
428+
NotificationsName: "hoodi",
429+
},
425430
}, nil
426431
}
427432

backend/pkg/api/data_access/networks.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ func (d *DataAccessService) GetAllNetworks() ([]types.NetworkInfo, error) {
2626
Name: "holesky",
2727
NotificationsName: "holesky",
2828
},
29+
{
30+
ChainId: 560048,
31+
Name: "hoodi",
32+
NotificationsName: "hoodi",
33+
},
2934
{
3035
ChainId: 11155111,
3136
Name: "sepolia",

backend/pkg/api/data_access/networks_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ func TestGetAllNetworks(t *testing.T) {
2727
Name: "holesky",
2828
NotificationsName: "holesky",
2929
})
30+
assert.Contains(t, networks, types.NetworkInfo{
31+
ChainId: 560048,
32+
Name: "hoodi",
33+
NotificationsName: "hoodi",
34+
})
3035
assert.Contains(t, networks, types.NetworkInfo{
3136
ChainId: 11155111,
3237
Name: "sepolia",

backend/pkg/commons/chain/chainID.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ type IDGetter struct {
1111
Optimistic *big.Int
1212
Arbitrum *big.Int
1313
Holesky *big.Int
14+
Hoodi *big.Int
1415
}
1516

1617
var DefaultIDs = IDGetter{
@@ -20,6 +21,7 @@ var DefaultIDs = IDGetter{
2021
Optimistic: big.NewInt(10),
2122
Arbitrum: big.NewInt(42161),
2223
Holesky: big.NewInt(17000),
24+
Hoodi: big.NewInt(560048),
2325
}
2426

2527
// IDs is a global variable containing all the chain ids

backend/pkg/commons/config/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ var GnosisChainYml string
3232
//go:embed holesky.chain.yml
3333
var HoleskyChainYml string
3434

35+
//go:embed hoodi.chain.yml
36+
var HoodiChainYml string
37+
3538
//go:embed mekong.chain.yml
3639
var MekongChainYml string
3740

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

backend/pkg/commons/utils/config.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ func ReadConfig(cfg *types.Config, path string) error {
151151
cfg.Chain.GenesisTimestamp = 1638993340
152152
case "holesky":
153153
cfg.Chain.GenesisTimestamp = 1695902400
154+
case "hoodi":
155+
cfg.Chain.GenesisTimestamp = 1742213400
154156
case "pectra-devnet-5":
155157
cfg.Chain.GenesisTimestamp = 1737034260
156158
case "pectra-devnet-6":
@@ -174,6 +176,8 @@ func ReadConfig(cfg *types.Config, path string) error {
174176
cfg.Chain.GenesisValidatorsRoot = "0xf5dcb5564e829aab27264b9becd5dfaa017085611224cb3036f573368dbb9d47"
175177
case "holesky":
176178
cfg.Chain.GenesisValidatorsRoot = "0x9143aa7c615a7f7115e2b6aac319c03529df8242ae705fba9df39b79c59fa8b1"
179+
case "hoodi":
180+
cfg.Chain.GenesisValidatorsRoot = "0x212f13fc4df078b6cb7db228f1c8307566dcecf900867401a92023d7ba99cb5f"
177181
default:
178182
return fmt.Errorf("tried to set known genesis-validators-root, but unknown chain-name")
179183
}
@@ -255,6 +259,8 @@ func ReadConfig(cfg *types.Config, path string) error {
255259
cfg.Chain.Id = 5
256260
case "holesky":
257261
cfg.Chain.Id = 17000
262+
case "hoodi":
263+
cfg.Chain.Id = 560048
258264
case "sepolia":
259265
cfg.Chain.Id = 11155111
260266
case "gnosis":
@@ -337,6 +343,8 @@ func setELConfig(cfg *types.Config) error {
337343
err = yaml.Unmarshal([]byte(config.GnosisChainYml), &minimalCfg)
338344
case "holesky":
339345
err = yaml.Unmarshal([]byte(config.HoleskyChainYml), &minimalCfg)
346+
case "hoodi":
347+
err = yaml.Unmarshal([]byte(config.HoodiChainYml), &minimalCfg)
340348
case "mekong":
341349
err = yaml.Unmarshal([]byte(config.MekongChainYml), &minimalCfg)
342350
case "pectra-devnet-5":
@@ -395,6 +403,8 @@ func setCLConfig(cfg *types.Config) error {
395403
err = yaml.Unmarshal([]byte(config.GnosisChainYml), &cfg.Chain.ClConfig)
396404
case "holesky":
397405
err = yaml.Unmarshal([]byte(config.HoleskyChainYml), &cfg.Chain.ClConfig)
406+
case "hoodi":
407+
err = yaml.Unmarshal([]byte(config.HoodiChainYml), &cfg.Chain.ClConfig)
398408
case "pectra-devnet-5":
399409
err = yaml.Unmarshal([]byte(config.PectraDevnet5ChainYml), &cfg.Chain.ClConfig)
400410
case "pectra-devnet-6":

0 commit comments

Comments
 (0)