bdagscan node — climbing toward the tip

Test node: stock v1.0.0 (May-10) syncing from peers with --acctmode OFF, on a disposable copy of the verified 12,085,922 backup. Every imported block is checked against the local bdagscan archive, and the early checkpoints are re-read from the freezer every cycle. Both layers are shown throughout: the EVM chain and the DAG it is derived from run at different numbers (DAG order ≈ 1.296 × DAG height), and mixing them is how a node gets mistaken for being ahead of its peers.
Chain check
ON BDAGSCAN
Last 8 imported blocks match the archive, and all 3 early checkpoints are intact.
EVM head15,002,403
DAG order
DAG height
Blocks / sec0.0 10 min
Blocks / sec0.0 1 hr
ETA to tip
To tip2,850,012 EVM blocks
Behind by45d 1h chain time
Peers now2
Imported this run6,880,305
Test nodeinactive
Canon guardactive
84.036% of the way to the live tip (17,852,415) · we import 0.0 blk/s while the chain produces 0.84 blk/s, so the gap closes at — blk/s · 0 blocks in 6d 23h of sampling · 7 handshake rejections
Known archive checkpoints (recorded in the bdagscan archive and verified field-by-field — see the comparison table below): the consensus split at 14,391,951 and the decisive works↔bdagscan discriminator at 14,412,749. These are archive reference points, not heights this node has reached — the witness head is (EVM), still below them.

Bounded-witness qualification

This is a bounded witness: it independently reproduces the bdagscan lineage from peers and will stop at the approved safe height rather than sync indefinitely. All heights below are EVM heights (not DAG order).
Current witness headEVM
Current freezer head14,911,973 EVM settled
Next qualification checkpoint14,412,749 EVM
Distance to itEVM blocks
Post-fork stateunknown (RPC unavailable)
Decisive discriminator14,412,749 archive ref
Approved safe stop15,000,000 EVM
Post-fork BDAGSCAN qualification: PENDING — below the decisive discriminator (14,412,749) the restored witness has not yet independently reproduced the post-fork region. (An earlier run previously reproduced BDAGSCAN beyond it; that run was intentionally bounded and restored.) EVM height and DAG order are different units.

Tips — both layers

The EVM chain is derived from the DAG, so the two run at different numbers: DAG main order is roughly 1.29× the EVM height. Both are ours, live.
EVM tip
DAG tip (main order)
bdagscan EVM tip17,852,415
Best peer DAG order0
LayerTipHashNote
EVM (importing)0xd63bf4..6a9aa5 from eth_blockNumber; hash abbreviated from the import log
EVM (settled)14,911,9730xc7a2e29298558570df832f1e8eab67a9… chain time 2026-07-20 17:31 UTC · 45d 22h behind now
DAG main order; the DAG selects the chain the EVM is derived from
The settled row is the freezer — it trails the importing tip by ~90k blocks and is what every verification reads. eth_getBlockByNumber("latest") is not usable on this node: without --acctmode it is pinned at block 1,065,434 while the node imports at 12.8M.

Early checkpoints — the thing that broke last time

BlockHash in freezerStatus
316,0020xe2c7a9b0ff6206e6correct
1,320,1670xdbec6c4c76f8d3dccorrect
11,000,0000x637abdbd6097ebb1correct

Full-field comparison — every layer, not one green light

A fork can agree on height and hash prefix while diverging on stateRoot or reward, so each checkpoint is compared field by field: the whole EVM header (parentHash, sha3Uncles, miner, stateRoot, transactionsRoot, receiptsRoot, logsBloom, difficulty, number, gasLimit, gasUsed, timestamp, extraData, mixHash, nonce, baseFeePerGas), the block hash, totalDifficulty from the freezer's own diffs table, and the credited block reward. Headers are decoded straight out of the freezer — this node serves almost no historical blocks over RPC without --acctmode. The decode is self-validating: parentHash must equal the stored hash of N−1.
ALL MATCH — 18 fields compared per block.
CheckpointFields checkedResult Block reward (bdagscan)
316,00218all match260.000000000 BDAG
1,320,16718all match180.873349020 BDAG
11,000,00018all match172.107626691 BDAG
12,000,00018all match171.042213356 BDAG
12,341,33918all match170.511982494 BDAG
12,942,59218all match169.983395344 BDAG
13,545,92618all match169.456446817 BDAG
14,391,95118all match168.931131831 BDAG
14,412,74918all match168.931131831 BDAG
14,906,97318all match168.407445318 BDAG

Field-by-field detail — block 14,906,973

FieldOur valuevs bdagscan
parentHash0x8c5b2495456438a424f4d3…bb6bf0a6match
sha3Uncles0x1dcc4de8dec75d7aab85b5…40d49347match
miner0x4be5b1a9100cf96dea7cca4109051ba015d56580match
stateRoot0xdcf2f8474e669442a59196…fafc0c16match
transactionsRoot0x56e81f171bcc55a6ff8345…e363b421match
receiptsRoot0x56e81f171bcc55a6ff8345…e363b421match
logsBloom0x0000000000000000000000…00000000match
difficulty1match
number14906973match
gasLimit45000000match
gasUsed0match
timestamp1784564677match
extraData0x0000000599fb190amatch
mixHash0x0000000000000000000000…00000000match
nonce0x0000000000000000match
baseFeePerGas7match
hash0xe8f74e624afd1da4958799…215f143amatch
parentHash==hash(N-1)0x8c5b2495456438a424f4d3…bb6bf0a6match
totalDifficulty14906973not compared

DAG layer

Our main order 0, tip ?…. bdagscan publishes no DAG RPC, so DAG hashes can only be cross-checked peer-to-peer — each peer's advertised order and tip is in the peer table above.

Peers — who will talk to v1.0.0

v1.0.0 speaks protocol 45. Peers on 46 mostly reset us during the libp2p handshake. 6 full nodes serve us, 0 are observers/crawlers, 1 addresses have refused. Registry holds 33 peers; the pinnable list is /home/bdag/good-peers.txt.
Protocol-46 guard: active — 26 address(es) firewalled off tcp/8291 so mainline nodes cannot feed this chain. Scoped to the test node's port only, so the localhost-bound serving node is untouched.
Can our peers carry us to the tip?
14,846,047
Best peer's DAG height (peers advertise DAG order and height, never an EVM height — so this compares against our DAG height of ?, not our EVM head). Best peer DAG order is 19,376,724 against our 0. It is at or below us. If our blocks/sec falls to roughly the production rate, we have drained what these peers hold and whatever gap remains is where we stall.
PeerProtoVersionServices Their DAG heightVerdictLast seen
5.194.94.239451.0.0Full|CF14,483,216 +6.1/sserves v1.0.09d 15h ago
47.156.12.105451.0.0Full|CF14,409,266 +1.0/sserves v1.0.010d 8h ago
15.222.103.172451.0.0Full|CF951,100serves v1.0.010d 20h ago
3.214.202.100451.0.0Full|CF14,489,446 +0.5/sserves v1.0.013d 18h ago
80.141.136.235451.0.0Full|CF9,272,364 +6.3/sserves v1.0.015d 7h ago
5.194.94.239451.0.0Full|CF12,903,795serves v1.0.021d 7h ago
5.194.94.239461.0.8-v45-candidate-a1Full|CF14,846,047 +1.0/sproto4610d 8h ago
79.198.147.140461.0.8-v45-candidate-a1Full|CF14,827,217 +8.3/sproto4610d 13h ago
102.182.123.21046node-1.0.8-independent.2Full|CF14,789,306proto4611d 0h ago
197.88.248.72461.0.8-v45-candidate-a1Full|CF14,729,671 +1.0/sproto4611d 9h ago
127.0.0.1461.0.8-v45-candidate-a1Full|CF14,506,260 +8.5/sproto4614d 7h ago
79.198.158.240461.0.8-v45-candidate-a1Full|CF14,480,766 +45.5/sproto4614d 14h ago
162.35.167.159461.0.8-v45-candidate-a1Full|CF11,385,026proto4614d 19h ago
153.75.235.34461.0.8-v45-candidate-a1Full|CF11,388,893proto4614d 19h ago

Recent imports vs local bdagscan archive

Imported blockHash (log)vs archive
15,002,396e2e62a..167b17MATCH bdagscan
15,002,397acaf61..0d2846MATCH bdagscan
15,002,398e227a2..47f729MATCH bdagscan
15,002,399dd55c8..c2c57fMATCH bdagscan
15,002,400a6b2d7..c55b6eMATCH bdagscan
15,002,401e66c0e..d854dbMATCH bdagscan
15,002,40206d17a..ec560eMATCH bdagscan
15,002,403d63bf4..6a9aa5MATCH bdagscan

Serving node — the clean springboard

Head (no peers)12,085,922
Serving nodeactive
Canon guardactive
Disk free577 GB

Backups held: canon-12085922
Guard: [2026-09-04T15:53:40Z] OK head=12085922, 8 checkpoints clean
Test datadir: 24.8 GB