Skip to content

Commit 96d8640

Browse files
committed
add a custom kurtosis spec file to test against to replace helder
1 parent 122644c commit 96d8640

3 files changed

Lines changed: 193 additions & 3 deletions

File tree

config.example.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Chain spec ID. Supported values:
55
# A network ID. Supported values: Mainnet, Holesky, Sepolia, Hoodi. Lower case values e.g. "mainnet" are also accepted
66
# A custom object, e.g., chain = { genesis_time_secs = 1695902400, path = "/path/to/spec.json" }, with a path to a chain spec file, either in .json format (e.g., as returned by the beacon endpoint /eth/v1/config/spec), or in .yml format (see examples in tests/data).
7-
# A custom object, e.g., chain = { genesis_time_secs = 1695902400, slot_time_secs = 12, genesis_fork_version = "0x01017000" }.
7+
# A custom object, e.g., chain = { genesis_time_secs = 1695902400, slot_time_secs = 12, genesis_fork_version = "0x01017000", chain_id = 17000 }.
88
chain = "Holesky"
99

1010
# Configuration for the PBS module

crates/common/src/types.rs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,8 @@ impl<'de> Deserialize<'de> for Chain {
346346
}
347347
}
348348

349-
/// Returns seconds_per_slot and genesis_fork_version from a spec, such as
350-
/// returned by /eth/v1/config/spec ref: https://ethereum.github.io/beacon-APIs/#/Config/getSpec
349+
/// Returns seconds_per_slot, genesis_fork_version, fulu_fork_epoch, and
350+
/// deposit_chain_id from a spec, such as returned by /eth/v1/config/spec ref: https://ethereum.github.io/beacon-APIs/#/Config/getSpec
351351
/// Try to load two formats:
352352
/// - JSON as return the getSpec endpoint, either with or without the `data`
353353
/// field
@@ -529,4 +529,26 @@ mod tests {
529529
chain_id: KnownChain::Hoodi.id(),
530530
})
531531
}
532+
533+
#[test]
534+
fn test_spec_kurtosis_data_json() {
535+
let a = env!("CARGO_MANIFEST_DIR");
536+
let mut path = PathBuf::from(a);
537+
538+
path.pop();
539+
path.pop();
540+
path.push("tests/data/kurtosis_spec.json");
541+
542+
let s = format!("chain = {{ genesis_time_secs = 1, path = {path:?}}}");
543+
544+
let decoded: MockConfig = toml::from_str(&s).unwrap();
545+
assert_eq!(decoded.chain.slot_time_sec(), 12);
546+
assert_eq!(decoded.chain, Chain::Custom {
547+
genesis_time_secs: 1,
548+
slot_time_secs: 12,
549+
genesis_fork_version: hex!("0x10000038"),
550+
fulu_fork_slot: 0,
551+
chain_id: 3151908,
552+
})
553+
}
532554
}

tests/data/kurtosis_spec.json

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
{
2+
"data": {
3+
"CONFIG_NAME": "testnet",
4+
"PRESET_BASE": "mainnet",
5+
"TERMINAL_TOTAL_DIFFICULTY": "0",
6+
"TERMINAL_BLOCK_HASH": "0x0000000000000000000000000000000000000000000000000000000000000000",
7+
"TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH": "18446744073709551615",
8+
"MIN_GENESIS_ACTIVE_VALIDATOR_COUNT": "4",
9+
"MIN_GENESIS_TIME": "1772130224",
10+
"GENESIS_FORK_VERSION": "0x10000038",
11+
"GENESIS_DELAY": "0",
12+
"ALTAIR_FORK_VERSION": "0x20000038",
13+
"ALTAIR_FORK_EPOCH": "0",
14+
"BELLATRIX_FORK_VERSION": "0x30000038",
15+
"BELLATRIX_FORK_EPOCH": "0",
16+
"CAPELLA_FORK_VERSION": "0x40000038",
17+
"CAPELLA_FORK_EPOCH": "0",
18+
"DENEB_FORK_VERSION": "0x50000038",
19+
"DENEB_FORK_EPOCH": "0",
20+
"ELECTRA_FORK_VERSION": "0x60000038",
21+
"ELECTRA_FORK_EPOCH": "0",
22+
"FULU_FORK_VERSION": "0x70000038",
23+
"FULU_FORK_EPOCH": "0",
24+
"GLOAS_FORK_VERSION": "0x80000038",
25+
"GLOAS_FORK_EPOCH": "18446744073709551615",
26+
"SECONDS_PER_SLOT": "12",
27+
"SECONDS_PER_ETH1_BLOCK": "12",
28+
"MIN_VALIDATOR_WITHDRAWABILITY_DELAY": "256",
29+
"SHARD_COMMITTEE_PERIOD": "256",
30+
"ETH1_FOLLOW_DISTANCE": "2048",
31+
"SUBNETS_PER_NODE": "2",
32+
"INACTIVITY_SCORE_BIAS": "4",
33+
"INACTIVITY_SCORE_RECOVERY_RATE": "16",
34+
"EJECTION_BALANCE": "16000000000",
35+
"MIN_PER_EPOCH_CHURN_LIMIT": "4",
36+
"MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT": "8",
37+
"CHURN_LIMIT_QUOTIENT": "65536",
38+
"PROPOSER_SCORE_BOOST": "40",
39+
"DEPOSIT_CHAIN_ID": "3151908",
40+
"DEPOSIT_NETWORK_ID": "3151908",
41+
"DEPOSIT_CONTRACT_ADDRESS": "0x00000000219ab540356cbb839cbe05303d7705fa",
42+
"GAS_LIMIT_ADJUSTMENT_FACTOR": "1024",
43+
"MAX_PAYLOAD_SIZE": "10485760",
44+
"MAX_REQUEST_BLOCKS": "1024",
45+
"MIN_EPOCHS_FOR_BLOCK_REQUESTS": "33024",
46+
"TTFB_TIMEOUT": "5",
47+
"RESP_TIMEOUT": "10",
48+
"ATTESTATION_PROPAGATION_SLOT_RANGE": "32",
49+
"MAXIMUM_GOSSIP_CLOCK_DISPARITY": "500",
50+
"MESSAGE_DOMAIN_INVALID_SNAPPY": "0x00000000",
51+
"MESSAGE_DOMAIN_VALID_SNAPPY": "0x01000000",
52+
"ATTESTATION_SUBNET_PREFIX_BITS": "6",
53+
"MAX_REQUEST_BLOCKS_DENEB": "128",
54+
"MAX_REQUEST_BLOB_SIDECARS": "768",
55+
"MAX_REQUEST_DATA_COLUMN_SIDECARS": "16384",
56+
"MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS": "4096",
57+
"BLOB_SIDECAR_SUBNET_COUNT": "6",
58+
"MAX_BLOBS_PER_BLOCK": "6",
59+
"MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "128000000000",
60+
"MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": "256000000000",
61+
"MAX_BLOBS_PER_BLOCK_ELECTRA": "9",
62+
"BLOB_SIDECAR_SUBNET_COUNT_ELECTRA": "9",
63+
"MAX_REQUEST_BLOB_SIDECARS_ELECTRA": "1152",
64+
"NUMBER_OF_CUSTODY_GROUPS": "128",
65+
"DATA_COLUMN_SIDECAR_SUBNET_COUNT": "128",
66+
"SAMPLES_PER_SLOT": "8",
67+
"CUSTODY_REQUIREMENT": "4",
68+
"BLOB_SCHEDULE": [
69+
{
70+
"EPOCH": "0",
71+
"MAX_BLOBS_PER_BLOCK": "15"
72+
}
73+
],
74+
"VALIDATOR_CUSTODY_REQUIREMENT": "8",
75+
"BALANCE_PER_ADDITIONAL_CUSTODY_GROUP": "32000000000",
76+
"MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS": "4096",
77+
"MAX_COMMITTEES_PER_SLOT": "64",
78+
"TARGET_COMMITTEE_SIZE": "128",
79+
"MAX_VALIDATORS_PER_COMMITTEE": "2048",
80+
"SHUFFLE_ROUND_COUNT": "90",
81+
"HYSTERESIS_QUOTIENT": "4",
82+
"HYSTERESIS_DOWNWARD_MULTIPLIER": "1",
83+
"HYSTERESIS_UPWARD_MULTIPLIER": "5",
84+
"MIN_DEPOSIT_AMOUNT": "1000000000",
85+
"MAX_EFFECTIVE_BALANCE": "32000000000",
86+
"EFFECTIVE_BALANCE_INCREMENT": "1000000000",
87+
"MIN_ATTESTATION_INCLUSION_DELAY": "1",
88+
"SLOTS_PER_EPOCH": "32",
89+
"MIN_SEED_LOOKAHEAD": "1",
90+
"MAX_SEED_LOOKAHEAD": "4",
91+
"EPOCHS_PER_ETH1_VOTING_PERIOD": "64",
92+
"SLOTS_PER_HISTORICAL_ROOT": "8192",
93+
"MIN_EPOCHS_TO_INACTIVITY_PENALTY": "4",
94+
"EPOCHS_PER_HISTORICAL_VECTOR": "65536",
95+
"EPOCHS_PER_SLASHINGS_VECTOR": "8192",
96+
"HISTORICAL_ROOTS_LIMIT": "16777216",
97+
"VALIDATOR_REGISTRY_LIMIT": "1099511627776",
98+
"BASE_REWARD_FACTOR": "64",
99+
"WHISTLEBLOWER_REWARD_QUOTIENT": "512",
100+
"PROPOSER_REWARD_QUOTIENT": "8",
101+
"INACTIVITY_PENALTY_QUOTIENT": "67108864",
102+
"MIN_SLASHING_PENALTY_QUOTIENT": "128",
103+
"PROPORTIONAL_SLASHING_MULTIPLIER": "1",
104+
"MAX_PROPOSER_SLASHINGS": "16",
105+
"MAX_ATTESTER_SLASHINGS": "2",
106+
"MAX_ATTESTATIONS": "128",
107+
"MAX_DEPOSITS": "16",
108+
"MAX_VOLUNTARY_EXITS": "16",
109+
"INACTIVITY_PENALTY_QUOTIENT_ALTAIR": "50331648",
110+
"MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR": "64",
111+
"PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR": "2",
112+
"SYNC_COMMITTEE_SIZE": "512",
113+
"EPOCHS_PER_SYNC_COMMITTEE_PERIOD": "256",
114+
"MIN_SYNC_COMMITTEE_PARTICIPANTS": "1",
115+
"INACTIVITY_PENALTY_QUOTIENT_BELLATRIX": "16777216",
116+
"MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX": "32",
117+
"PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX": "3",
118+
"MAX_BYTES_PER_TRANSACTION": "1073741824",
119+
"MAX_TRANSACTIONS_PER_PAYLOAD": "1048576",
120+
"BYTES_PER_LOGS_BLOOM": "256",
121+
"MAX_EXTRA_DATA_BYTES": "32",
122+
"MAX_BLS_TO_EXECUTION_CHANGES": "16",
123+
"MAX_WITHDRAWALS_PER_PAYLOAD": "16",
124+
"MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP": "16384",
125+
"MAX_BLOB_COMMITMENTS_PER_BLOCK": "4096",
126+
"KZG_COMMITMENT_INCLUSION_PROOF_DEPTH": "17",
127+
"FIELD_ELEMENTS_PER_BLOB": "4096",
128+
"MIN_ACTIVATION_BALANCE": "32000000000",
129+
"MAX_EFFECTIVE_BALANCE_ELECTRA": "2048000000000",
130+
"MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "4096",
131+
"WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "4096",
132+
"PENDING_DEPOSITS_LIMIT": "134217728",
133+
"PENDING_PARTIAL_WITHDRAWALS_LIMIT": "134217728",
134+
"PENDING_CONSOLIDATIONS_LIMIT": "262144",
135+
"MAX_ATTESTER_SLASHINGS_ELECTRA": "1",
136+
"MAX_ATTESTATIONS_ELECTRA": "8",
137+
"MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "8192",
138+
"MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "16",
139+
"MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "2",
140+
"MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "8",
141+
"MAX_PENDING_DEPOSITS_PER_EPOCH": "16",
142+
"FIELD_ELEMENTS_PER_CELL": "64",
143+
"FIELD_ELEMENTS_PER_EXT_BLOB": "8192",
144+
"KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH": "4",
145+
"CELLS_PER_EXT_BLOB": "128",
146+
"NUMBER_OF_COLUMNS": "128",
147+
"DOMAIN_DEPOSIT": "0x03000000",
148+
"DOMAIN_BEACON_ATTESTER": "0x01000000",
149+
"ETH1_ADDRESS_WITHDRAWAL_PREFIX": "0x01",
150+
"BLS_WITHDRAWAL_PREFIX": "0x00",
151+
"DOMAIN_AGGREGATE_AND_PROOF": "0x06000000",
152+
"DOMAIN_SELECTION_PROOF": "0x05000000",
153+
"TARGET_AGGREGATORS_PER_COMMITTEE": "16",
154+
"DOMAIN_CONTRIBUTION_AND_PROOF": "0x09000000",
155+
"SYNC_COMMITTEE_SUBNET_COUNT": "4",
156+
"UNSET_DEPOSIT_REQUESTS_START_INDEX": "18446744073709551615",
157+
"DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF": "0x08000000",
158+
"DOMAIN_APPLICATION_MASK": "0x00000001",
159+
"DOMAIN_VOLUNTARY_EXIT": "0x04000000",
160+
"DOMAIN_BEACON_PROPOSER": "0x00000000",
161+
"VERSIONED_HASH_VERSION_KZG": "1",
162+
"COMPOUNDING_WITHDRAWAL_PREFIX": "0x02",
163+
"DOMAIN_SYNC_COMMITTEE": "0x07000000",
164+
"FULL_EXIT_REQUEST_AMOUNT": "0",
165+
"DOMAIN_RANDAO": "0x02000000",
166+
"TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE": "16"
167+
}
168+
}

0 commit comments

Comments
 (0)