Skip to content

Commit f506766

Browse files
authored
Merge branch 'column-syncer' into column-metrics
2 parents a9118b9 + 566257e commit f506766

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+573
-2398
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,10 +224,6 @@ jobs:
224224
with:
225225
fetch-depth: 1
226226

227-
- name: Build with developer flags
228-
run: |
229-
make -j nimbus_beacon_node LOG_LEVEL=TRACE NIMFLAGS="-d:has_deposit_root_checks=1"
230-
231227
- name: Build files with isMainModule
232228
run: |
233229
executables=(
@@ -240,6 +236,7 @@ jobs:
240236
"benchmarks/rest_api_benchmark"
241237
"tests/mocking/mock_genesis"
242238
)
239+
make -j update
243240
source env.sh
244241
for executable in "${executables[@]}"; do
245242
nim c --passC:-fsyntax-only --noLinking:on -d:chronicles_log_level=TRACE "${executable}"

AllTests-mainnet.md

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ AllTests-mainnet
8888
+ dependent_root OK
8989
+ get_beacon_proposer_index OK
9090
+ latest_block_root OK
91-
+ merklizer state roundtrip OK
9291
+ process_slots OK
9392
```
9493
## Beacon time
@@ -122,6 +121,7 @@ AllTests-mainnet
122121
```
123122
## Block processor [Preset: mainnet]
124123
```diff
124+
+ Invalidate block root [Preset: mainnet] OK
125125
+ Reverse order block add & get [Preset: mainnet] OK
126126
```
127127
## Block quarantine
@@ -168,13 +168,6 @@ AllTests-mainnet
168168
+ Invalid Authorization Token [Beacon Node] [Preset: mainnet] OK
169169
+ Missing Authorization header [Beacon Node] [Preset: mainnet] OK
170170
```
171-
## DepositContractSnapshot
172-
```diff
173-
+ Migration OK
174-
+ SSZ OK
175-
+ depositCount OK
176-
+ isValid OK
177-
```
178171
## Discovery fork ID
179172
```diff
180173
+ Expected fork IDs OK
@@ -542,14 +535,6 @@ AllTests-mainnet
542535
+ Testing uints inputs - invalid OK
543536
+ Testing uints inputs - valid OK
544537
```
545-
## EIP-4881
546-
```diff
547-
+ deposit_cases OK
548-
+ empty_root OK
549-
+ finalization OK
550-
+ invalid_snapshot OK
551-
+ snapshot_cases OK
552-
```
553538
## EIP-7594 Unit Tests
554539
```diff
555540
+ EIP-7594: Compute Matrix OK
@@ -571,7 +556,6 @@ AllTests-mainnet
571556
```
572557
## Eth1 monitor
573558
```diff
574-
+ Deposits chain OK
575559
+ Rewrite URLs OK
576560
```
577561
## Eth2 specific discovery tests

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
2025-05-08 v25.5.0
2+
==================
3+
4+
Nimbus `v25.5.0` does not alter the beacon node, is a low-urgency release for nodes which don't use the Nimbus validator client with a non-Nimbus BN, and a high-urgency release for nodes which do use the Nimbus validator client with a non-Nimbus beacon node.
5+
6+
### Fixes
7+
8+
- fix missing Eth-Consensus-Version header in validator client publishBlindedBlockV2 beacon API requests:
9+
https://github.com/status-im/nimbus-eth2/pull/7140
10+
111
2025-04-26 v25.4.1
212
==================
313

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,8 @@ local-testnet-minimal:
234234
--signer-nodes 1 \
235235
--remote-validators-count 512 \
236236
--signer-type $(SIGNER_TYPE) \
237-
--deneb-fork-epoch 0 \
238237
--electra-fork-epoch 0 \
238+
--fulu-fork-epoch 100000 \
239239
--stop-at-epoch 6 \
240240
--disable-htop \
241241
--enable-payload-builder \
@@ -263,8 +263,8 @@ local-testnet-mainnet:
263263
./scripts/launch_local_testnet.sh \
264264
--data-dir $@ \
265265
--nodes 2 \
266-
--deneb-fork-epoch 0 \
267266
--electra-fork-epoch 0 \
267+
--fulu-fork-epoch 100000 \
268268
--stop-at-epoch 6 \
269269
--disable-htop \
270270
--base-port $$(( $(MAINNET_TESTNET_BASE_PORT) + EXECUTOR_NUMBER * 400 + 0 )) \

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ _Alternatively, fire up our [experimental Vagrant instance with Nim pre-installe
130130

131131
<!-- TODO: Is this up to date? -->
132132

133-
The [generic instructions from the Nimbus repo](https://github.com/status-im/nimbus/#metric-visualisation) apply here as well.
133+
The [generic instructions from the Nimbus repo](https://github.com/status-im/nimbus-eth1/#metric-visualisation) apply here as well.
134134

135135
Specific steps:
136136

beacon_chain/beacon_chain_db.nim

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# beacon_chain
2-
# Copyright (c) 2018-2024 Status Research & Development GmbH
2+
# Copyright (c) 2018-2025 Status Research & Development GmbH
33
# Licensed and distributed under either of
44
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
55
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
@@ -14,8 +14,7 @@ import
1414
serialization, chronicles, snappy,
1515
eth/db/[kvstore, kvstore_sqlite3],
1616
./networking/network_metadata, ./beacon_chain_db_immutable,
17-
./spec/[deposit_snapshots,
18-
eth2_ssz_serialization,
17+
./spec/[eth2_ssz_serialization,
1918
eth2_merkleization,
2019
forks,
2120
presets,
@@ -27,7 +26,7 @@ from ./spec/datatypes/deneb import TrustedSignedBeaconBlock
2726

2827
export
2928
phase0, altair, eth2_ssz_serialization, eth2_merkleization, kvstore,
30-
kvstore_sqlite3, deposit_snapshots
29+
kvstore_sqlite3
3130

3231
logScope: topics = "bc_db"
3332

@@ -980,38 +979,6 @@ proc putTailBlock*(db: BeaconChainDB, key: Eth2Digest) =
980979
proc putGenesisBlock*(db: BeaconChainDB, key: Eth2Digest) =
981980
db.keyValues.putRaw(subkey(kGenesisBlock), key)
982981

983-
proc putDepositContractSnapshot*(
984-
db: BeaconChainDB, snapshot: DepositContractSnapshot) =
985-
db.withManyWrites:
986-
db.keyValues.putSnappySSZ(subkey(kDepositContractSnapshot),
987-
snapshot)
988-
# TODO: We currently store this redundant old snapshot in order
989-
# to allow the users to rollback to a previous version
990-
# of Nimbus without problems. It would be reasonable
991-
# to remove this in Nimbus 23.2
992-
db.keyValues.putSnappySSZ(subkey(kOldDepositContractSnapshot),
993-
snapshot.toOldDepositContractSnapshot)
994-
995-
proc hasDepositContractSnapshot*(db: BeaconChainDB): bool =
996-
expectDb(subkey(kDepositContractSnapshot) in db.keyValues)
997-
998-
proc getDepositContractSnapshot*(db: BeaconChainDB): Opt[DepositContractSnapshot] =
999-
result.ok(default DepositContractSnapshot)
1000-
let r = db.keyValues.getSnappySSZ(
1001-
subkey(kDepositContractSnapshot), result.get)
1002-
if r != GetResult.found: result.err()
1003-
1004-
proc getUpgradableDepositSnapshot*(db: BeaconChainDB): Option[OldDepositContractSnapshot] =
1005-
var dcs: OldDepositContractSnapshot
1006-
let oldKey = subkey(kOldDepositContractSnapshot)
1007-
if db.keyValues.getSnappySSZ(oldKey, dcs) != GetResult.found:
1008-
# Old record is not present in the current database.
1009-
# We need to take a look in the v0 database as well.
1010-
if db.v0.backend.getSnappySSZ(oldKey, dcs) != GetResult.found:
1011-
return
1012-
1013-
return some dcs
1014-
1015982
proc getPhase0Block(
1016983
db: BeaconChainDBV0, key: Eth2Digest): Opt[phase0.TrustedSignedBeaconBlock] =
1017984
# We only store blocks that we trust in the database
@@ -1131,7 +1098,7 @@ proc getBlobSidecar*(db: BeaconChainDB, root: Eth2Digest, index: BlobIndex,
11311098
value: var BlobSidecar): bool =
11321099
db.blobs.getSZSSZ(blobkey(root, index), value) == GetResult.found
11331100

1134-
proc getDataColumnSidecarSZ*(db: BeaconChainDB, root: Eth2Digest,
1101+
proc getDataColumnSidecarSZ*(db: BeaconChainDB, root: Eth2Digest,
11351102
index: ColumnIndex, data: var seq[byte]): bool =
11361103
let dataPtr = addr data # Short-lived
11371104
func decode(data: openArray[byte]) =

beacon_chain/conf.nim

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -580,6 +580,34 @@ type
580580
defaultValue: false
581581
name: "dump" .}: bool
582582

583+
# Because certain EL (e.g., Geth) may return SYNCING/ACCEPTED even for
584+
# execution payloads that have already been deemed INVALID in the past,
585+
# this flag is needed to avoid optimistically importing beacon blocks
586+
# that contain such payloads into fork choice when Nimbus is restarted.
587+
# This helps manual recovery when the justified checkpoint is advanced
588+
# optimistically based on attestations in blocks with invalid payloads,
589+
# such as the botched Prague/Electra deployment onto the Holesky testnet.
590+
#
591+
# The recovery flow is as follows:
592+
# (1) Upgrade to an EL version that correctly identifies the invalid block
593+
# (2) Restart Nimbus with `--debug-invalidate-block-root` set to the first
594+
# block known to have an invalid execution payload. Multiple blocks
595+
# may be specified if necessary
596+
# (3) If Nimbus is already synced to the canonical (but invalid) branch,
597+
# wait until the EL informs Nimbus that this head is INVALID.
598+
# Nimbus then rewinds back to the latest valid head
599+
# (4) Restart Nimbus again, ensuring that `--debug-invalidate-block-root`
600+
# is set up correctly. Nimbus will re-discover the invalid branch,
601+
# but this time will not optimistically import it, preventing the
602+
# invalid branch to become canonical in its local fork choice
603+
# (5) Wait for a different branch to become canonical, and keep the
604+
# `--debug-invalidate-block-root` flag present until finality has
605+
# advanced beyond the problematic chain segment
606+
invalidBlockRoots* {.
607+
hidden
608+
desc: "List of beacon block roots that, if the EL responds with SYNCING/ACCEPTED, are treated as if their execution payload was INVALID"
609+
name: "debug-invalidate-block-root" .}: seq[Eth2Digest]
610+
583611
directPeers* {.
584612
desc: "The list of privileged, secure and known peers to connect and maintain the connection to. This requires a not random netkey-file. In the multiaddress format like: /ip4/<address>/tcp/<port>/p2p/<peerId-public-key>, or enr format (enr:-xx). Peering agreements are established out of band and must be reciprocal"
585613
name: "direct-peer" .}: seq[string]

beacon_chain/consensus_object_pools/blockchain_dag.nim

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2439,8 +2439,6 @@ proc updateHead*(
24392439
handler()
24402440

24412441
# Policy: Retain back through Mainnet's second latest fork.
2442-
ConsensusFork.Capella.logForkUpgrade(
2443-
dag.vanityLogs.onUpgradeToCapella)
24442442
ConsensusFork.Deneb.logForkUpgrade(
24452443
dag.vanityLogs.onUpgradeToDeneb)
24462444
ConsensusFork.Electra.logForkUpgrade(

beacon_chain/consensus_object_pools/vanity_logs/vanity_logs.nim

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,6 @@ type
1515
LogProc* = proc() {.gcsafe, raises: [].}
1616

1717
VanityLogs* = object
18-
# Gets displayed on upgrade to Capella. May be displayed multiple times
19-
# in case of chain reorgs around the upgrade.
20-
onUpgradeToCapella*: LogProc
21-
2218
# Gets displayed on when a BLS to execution change message for a validator
2319
# known by this node appears in a head block
2420
onKnownBlsToExecutionChange*: LogProc
@@ -41,7 +37,6 @@ type
4137
# Policy: Retain retired art files in the directory, but don't link them anymore
4238

4339
proc capellaMono*() = notice "\n" & staticRead("capella" / "mono.txt")
44-
proc capellaColor*() = notice "\n" & staticRead("capella" / "color.ans")
4540
proc capellaBlink*() = notice "\n" & staticRead("capella" / "blink.ans")
4641

4742
proc denebMono*() = notice "\n" & staticRead("deneb" / "mono.txt")

beacon_chain/el/deposit_contract.nim.cfg

Whitespace-only changes.

0 commit comments

Comments
 (0)