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 head— EVM
Current freezer head14,911,973 EVM settled
Next qualification checkpoint14,412,749 EVM
Distance to it— EVM 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
Layer
Tip
Hash
Note
EVM (importing)
—
0xd63bf4..6a9aa5
from eth_blockNumber; hash abbreviated from the import log
EVM (settled)
14,911,973
0xc7a2e29298558570df832f1e8eab67a9…
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
Block
Hash in freezer
Status
316,002
0xe2c7a9b0ff6206e6
correct
1,320,167
0xdbec6c4c76f8d3dc
correct
11,000,000
0x637abdbd6097ebb1
correct
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.
Checkpoint
Fields checked
Result
Block reward (bdagscan)
316,002
18
all match
260.000000000 BDAG
1,320,167
18
all match
180.873349020 BDAG
11,000,000
18
all match
172.107626691 BDAG
12,000,000
18
all match
171.042213356 BDAG
12,341,339
18
all match
170.511982494 BDAG
12,942,592
18
all match
169.983395344 BDAG
13,545,926
18
all match
169.456446817 BDAG
14,391,951
18
all match
168.931131831 BDAG
14,412,749
18
all match
168.931131831 BDAG
14,906,973
18
all match
168.407445318 BDAG
Field-by-field detail — block 14,906,973
Field
Our value
vs bdagscan
parentHash
0x8c5b2495456438a424f4d3…bb6bf0a6
match
sha3Uncles
0x1dcc4de8dec75d7aab85b5…40d49347
match
miner
0x4be5b1a9100cf96dea7cca4109051ba015d56580
match
stateRoot
0xdcf2f8474e669442a59196…fafc0c16
match
transactionsRoot
0x56e81f171bcc55a6ff8345…e363b421
match
receiptsRoot
0x56e81f171bcc55a6ff8345…e363b421
match
logsBloom
0x0000000000000000000000…00000000
match
difficulty
1
match
number
14906973
match
gasLimit
45000000
match
gasUsed
0
match
timestamp
1784564677
match
extraData
0x0000000599fb190a
match
mixHash
0x0000000000000000000000…00000000
match
nonce
0x0000000000000000
match
baseFeePerGas
7
match
hash
0xe8f74e624afd1da4958799…215f143a
match
parentHash==hash(N-1)
0x8c5b2495456438a424f4d3…bb6bf0a6
match
totalDifficulty
14906973
not 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.
Peer
Proto
Version
Services
Their DAG height
Verdict
Last seen
5.194.94.239
45
1.0.0
Full|CF
14,483,216 +6.1/s
serves v1.0.0
9d 15h ago
47.156.12.105
45
1.0.0
Full|CF
14,409,266 +1.0/s
serves v1.0.0
10d 8h ago
15.222.103.172
45
1.0.0
Full|CF
951,100
serves v1.0.0
10d 20h ago
3.214.202.100
45
1.0.0
Full|CF
14,489,446 +0.5/s
serves v1.0.0
13d 18h ago
80.141.136.235
45
1.0.0
Full|CF
9,272,364 +6.3/s
serves v1.0.0
15d 7h ago
5.194.94.239
45
1.0.0
Full|CF
12,903,795
serves v1.0.0
21d 7h ago
5.194.94.239
46
1.0.8-v45-candidate-a1
Full|CF
14,846,047 +1.0/s
proto46
10d 8h ago
79.198.147.140
46
1.0.8-v45-candidate-a1
Full|CF
14,827,217 +8.3/s
proto46
10d 13h ago
102.182.123.210
46
node-1.0.8-independent.2
Full|CF
14,789,306
proto46
11d 0h ago
197.88.248.72
46
1.0.8-v45-candidate-a1
Full|CF
14,729,671 +1.0/s
proto46
11d 9h ago
127.0.0.1
46
1.0.8-v45-candidate-a1
Full|CF
14,506,260 +8.5/s
proto46
14d 7h ago
79.198.158.240
46
1.0.8-v45-candidate-a1
Full|CF
14,480,766 +45.5/s
proto46
14d 14h ago
162.35.167.159
46
1.0.8-v45-candidate-a1
Full|CF
11,385,026
proto46
14d 19h ago
153.75.235.34
46
1.0.8-v45-candidate-a1
Full|CF
11,388,893
proto46
14d 19h ago
Recent imports vs local bdagscan archive
Imported block
Hash (log)
vs archive
15,002,396
e2e62a..167b17
MATCH bdagscan
15,002,397
acaf61..0d2846
MATCH bdagscan
15,002,398
e227a2..47f729
MATCH bdagscan
15,002,399
dd55c8..c2c57f
MATCH bdagscan
15,002,400
a6b2d7..c55b6e
MATCH bdagscan
15,002,401
e66c0e..d854db
MATCH bdagscan
15,002,402
06d17a..ec560e
MATCH bdagscan
15,002,403
d63bf4..6a9aa5
MATCH 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