Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -784,12 +784,16 @@ behavior.
boundary); `get_signed_block` returns `None` for a pruned finalized block.
- A `StateDiff` omits `config` and `validators`, trusting they never mutate;
breaking that invariant would silently corrupt every reconstructed state.
- `Metadata["config"]` is written once at bootstrap and never rewritten; it
doubles as the DB's genesis-time fingerprint on resume. A beacon resume also
refuses a config file that changes a chain value in it
(`first_config_difference`: fork schedule, slot time, `PRESET_BASE`, ...),
but only warns about a changed `CONFIG_NAME`, a label with no consensus
effect. The stored name is the one the node keeps reporting.
- `Metadata["config"]` is written at bootstrap; it doubles as the DB's
genesis-time fingerprint on resume. A beacon resume also refuses a config
file that changes a chain value in it (`first_config_difference`: slot time,
`PRESET_BASE`, churn limits, ...), but only warns about a changed
`CONFIG_NAME`, a label with no consensus effect. The fork schedule and
`BLOB_SCHEDULE` may change ahead of the chain: a change is refused only when
its old or new epoch is at or before the latest epoch the directory
processed, so a network scheduling a fork does not cost its nodes their
directories. A resume that passes writes the file's config over the stored
one (`Store::replace_config`), since the node runs on the stored config.
- `PendingDataColumns` holds *unverified* sidecars parked until their block's
parent has a post-state. `data_column_indices_for` reads `DataColumns` only,
which is what keeps a parked column from satisfying the availability gate.
Expand Down
39 changes: 39 additions & 0 deletions bin/ethlambda/assets/hoodi/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ ELECTRA_FORK_EPOCH: 2048
FULU_FORK_VERSION: 0x70000910
FULU_FORK_EPOCH: 50688

# Gloas
GLOAS_FORK_VERSION: 0x80000910
GLOAS_FORK_EPOCH: 132352

# Time parameters
# ---------------------------------------------------------------
# 12 seconds (*deprecated*)
Expand Down Expand Up @@ -71,6 +75,22 @@ SYNC_MESSAGE_DUE_BPS: 3333
# 6667 basis points, ~67% of SLOT_DURATION_MS
CONTRIBUTION_DUE_BPS: 6667

# Gloas
# 2**6 (= 64) epochs
MIN_BUILDER_WITHDRAWABILITY_DELAY: 64
# 2500 basis points, 25% of SLOT_DURATION_MS
ATTESTATION_DUE_BPS_GLOAS: 2500
# 5000 basis points, 50% of SLOT_DURATION_MS
AGGREGATE_DUE_BPS_GLOAS: 5000
# 2500 basis points, 25% of SLOT_DURATION_MS
SYNC_MESSAGE_DUE_BPS_GLOAS: 2500
# 5000 basis points, 50% of SLOT_DURATION_MS
CONTRIBUTION_DUE_BPS_GLOAS: 5000
# 5000 basis points, 50% of SLOT_DURATION_MS
PAYLOAD_DUE_BPS: 5000
# 7500 basis points, 75% of SLOT_DURATION_MS
PAYLOAD_ATTESTATION_DUE_BPS: 7500

# Validator cycle
# ---------------------------------------------------------------
# 2**2 (= 4)
Expand All @@ -94,6 +114,14 @@ MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA: 128000000000
# 2**8 * 10**9 (= 256,000,000,000) Gwei
MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT: 256000000000

# Gloas
# 2**15 (= 32,768)
CHURN_LIMIT_QUOTIENT_GLOAS: 32768
# 2**16 (= 65,536)
CONSOLIDATION_CHURN_LIMIT_QUOTIENT: 65536
# 2**8 * 10**9 (= 256,000,000,000) Gwei
MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT_GLOAS: 256000000000

# Fork choice
# ---------------------------------------------------------------
# 40%
Expand Down Expand Up @@ -174,6 +202,10 @@ BALANCE_PER_ADDITIONAL_CUSTODY_GROUP: 32000000000
# 2**12 (= 4,096) epochs
MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS: 4096

# Gloas
# 2**7 (= 128) payloads
MAX_REQUEST_PAYLOADS: 128


# Blob Scheduling
# ---------------------------------------------------------------
Expand All @@ -183,3 +215,10 @@ BLOB_SCHEDULE:
MAX_BLOBS_PER_BLOCK: 15
- EPOCH: 54016
MAX_BLOBS_PER_BLOCK: 21

# Gas limit scheduling
# ---------------------------------------------------------------

GAS_LIMIT_SCHEDULE:
- EPOCH: 132352
GAS_LIMIT: 200000000
12 changes: 7 additions & 5 deletions bin/ethlambda/src/checkpoint_sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -156,11 +156,13 @@ pub enum CheckpointSyncError {
found: ethlambda_storage::Chain,
},
/// The directory is for the right chain, but the network config supplied
/// this run disagrees with the one it was initialized with: most likely a
/// fork epoch was edited in place. A changed fork epoch leaves genesis
/// time and the validators root untouched, so it survives the checks
/// above, while putting this node on a different chain from its peers
/// from that epoch on.
/// this run disagrees with the one it was initialized with in a way the
/// directory's contents rule out: most likely a fork epoch was moved onto
/// or off an epoch the directory already processed. A changed fork epoch
/// leaves genesis time and the validators root untouched, so it survives
/// the checks above, while putting this node on a different chain from
/// its peers from that epoch on. A fork rescheduled ahead of everything
/// the directory holds is not this error; the resume adopts it.
#[error(
"this data directory was initialized with a different configuration ({difference}); \
delete it or point --data-dir elsewhere"
Expand Down
Loading
Loading