47 lines
4.2 KiB
Markdown
47 lines
4.2 KiB
Markdown
# Exec sync: the executor's state after the pruning point left genesis (6 October 2026)
|
|
|
|
## What happened
|
|
|
|
The devnet's pruning point left genesis on 6 October 2026 at about 11:40Z (chain block 27,276, DAA 45,537). Every
|
|
node pruned the block bodies and acceptance rows below it and kept the headers and ghostdag rows. The execution
|
|
layer's state lived only in memory and was rebuilt from genesis at every start; every node had restarted for
|
|
0.3.11 and 0.3.12. From 11:40Z every node read `eth_blockNumber` 0x0 and `igneum_getProvingStatus` active false:
|
|
no balances, no proving work list, no payouts, mining untouched. No hand ran `--archival`, so no data dir on the
|
|
network holds the bodies the state was built from, and the state cannot be rebuilt from genesis anywhere.
|
|
|
|
## The fix, fork branch `exec-sync-0313` (off the 0.3.12 node 83089544), node only
|
|
|
|
| Commit | What |
|
|
|---|---|
|
|
| 4f05e56a | the exec state persisted to the data dir every 5 minutes and at stop (two generations; resumed at start when its tip is still a chain block); `--igneum-exec-snapshot=<path>[,<sha256>]` and `igneum_exportExecSnapshot`; the loud status when the follower cannot execute (warn every minute, `igneum_getExecStatus.blocked`, the proving status's `execSync`) |
|
|
| 3bd31a20 | the snapshot served and fetched over p2p at protocol 16 (messages 76 and 77, 1 MiB chunks, the sha256 on every chunk); a blocked executor asks one peer every 20 s; `--igneum-exec-snapshot=peer` |
|
|
| efa6924d, 7cb712f5, 80674943 | the archival walk: the selected-parent chain read from the ghostdag store when the virtual-chain query refuses a tip below the retention root; the mergeset order rebuilt from ghostdag rows when the acceptance row is pruned |
|
|
| 3dd9b2c9 | the exec restart: `exec_restart_number` and `exec_restart_hash` in the override object (in the digest once set): header-only records below R, the EVM state fresh at R, executed from R's body on; the status reports the pruning point and the retention root with their chain block numbers |
|
|
| 05e93f0e | `exec_restart_trust_daa`: a shard record carried below it pays as carried, without the native-statement veto and the assignee check |
|
|
|
|
## Measured on a copy of node 1's data dir (the Mac, `tools/lock/with-lock.sh run`)
|
|
|
|
| Figure | Value |
|
|
|---|---|
|
|
| The pruning point and retention root, node 1 and the observer | chain block 27,276, hash bb45cf0dd2d7cc97ebfa5a2701527c09a8ede5d32de74efead9caa293b15688a, DAA 45,537; its body held on both |
|
|
| Bodies below it | gone ("cannot find full block" at chain block 1) |
|
|
| Replay from 27,276 to the sink (130,073, then 130,272) | 92 s and 93 s wall from the node's start, over 2,000 chain blocks a second |
|
|
| Without the trust rule | paidShards 0: every historical record vetoed (the records attest the original state roots) |
|
|
| With `exec_restart_trust_daa` 200,000 | paidShards 1,482, paidWei 1,825.70 IGN (node 1 read 1,261 and 1,573 at 08:30Z; the chain moved on) |
|
|
| PC 2's payout address at the tip | 267,648 IGN |
|
|
| The persisted file | 114,830,936 bytes, 130,273 records (1,200 full), 31 accounts |
|
|
| Resume after a restart | 9 s, no replay |
|
|
|
|
## What it means
|
|
|
|
| Tier | Before the fix | After the cut with the three fields |
|
|
|---|---|---|
|
|
| Every node, home miner, rig, pool | an empty EVM since 11:40Z: no balances, no proving, no payouts; mining fine | the chain's state from chain block 27,276 on, rebuilt in about 90 s at the switch; every restart after that resumes in seconds |
|
|
| Miners | rewards invisible | rewards since R back (PC 2: 267,648 IGN); the rewards of chain blocks 0 to 27,275 (the devnet's first 12 hours) lost, the project lead's call on seeding them |
|
|
| Provers | payouts invisible | every carried record since proving v0 paid as carried (1,482 shards); new proofs verify against the new state from the trust DAA on |
|
|
| Joiners today | an empty EVM for ever | IBD gives the pruning point 27,276 and the bodies from it, so a fresh node replays the same 90 s with no snapshot; once the pruning point moves past R the p2p snapshot (protocol 16) starts it |
|
|
|
|
## Open
|
|
|
|
The fresh-join time on a rented box (in progress); the trust DAA's value (at or above the switch); the first 12
|
|
hours' rewards (the project lead); the p2p snapshot's fast-time harness case; `--archival` on at least one hand from now on.
|