Summary
Field report from active featurenet operation suggests a PoW sync / fork-choice failure mode under sparse solo mining.
A node at tip mined a competing block at height 202921, accepted it locally, then continued extending that local branch for thousands of blocks instead of reorging back to the network branch after peers moved ahead. This makes solo mining at the tip operationally risky when there are very few miners online.
Motivating Report
Reported shape:
- Last matching height:
202920
- Last matching hash:
00490cfa56dc627ad92b2efed1e566a23d94ca9681c2f517754e473d63997bdd
- First divergent height:
202921
- Local self-mined hash:
01117e8991d3ea9efeb904cb747506d15181d7d478cb913543e9bde8bd1525ca
- Reference/explorer hash:
0058a975e8b669efa8c82d4275704e876313993692d3ae4f5f5d99c858526877
- Both h202921 blocks reportedly shared the same parent at h202920.
- Immediately after accepting the local block, peers were still advertising h202920.
- The node then mined consecutive local heights for roughly 3k blocks.
- Later, peers were ahead on the network branch, but the node remained on its local branch and did not reorg.
The operator recovered by restoring a known-good snapshot from before the divergence and resyncing from peers.
Why This Matters
If a miner wins a single sparse race at the tip and then keeps extending its own branch, there may be no practical reorg trigger even when peers later advertise a different/heavier branch. That undermines the practical instruction to mine up to the activation height, because the miners most likely to help advance the chain can silently self-fork.
Local operational response on one node: mining was disabled and the external cTAZ submitter was stopped until this behavior is understood. After stopping the submitter, there was a quiet window with zero new submitblock, mined-broadcast, or internal solver/template-mining log lines.
Questions
- What fork-choice rule should pull a node back when peers advertise a competing/heavier branch after the node self-mines ahead?
- Is solo mining at tip currently expected to be unsafe under sparse network participation, or is this a sync/reorg bug?
- Should block production pause/throttle when peers are behind or branch disagreement is detected?
- Can PoW sync add explicit tests for:
- same-parent competing block at tip,
- local branch extended for many heights,
- peers later advertising a higher/heavier competing branch,
- node reorging back without manual state restore?
Related
This is separate from BFT transport cleanup in PR #36 and BFT replay hardening in issue #37. Those address finality/transport failure modes; this one is PoW sync/fork-choice.
Summary
Field report from active featurenet operation suggests a PoW sync / fork-choice failure mode under sparse solo mining.
A node at tip mined a competing block at height 202921, accepted it locally, then continued extending that local branch for thousands of blocks instead of reorging back to the network branch after peers moved ahead. This makes solo mining at the tip operationally risky when there are very few miners online.
Motivating Report
Reported shape:
20292000490cfa56dc627ad92b2efed1e566a23d94ca9681c2f517754e473d63997bdd20292101117e8991d3ea9efeb904cb747506d15181d7d478cb913543e9bde8bd1525ca0058a975e8b669efa8c82d4275704e876313993692d3ae4f5f5d99c858526877The operator recovered by restoring a known-good snapshot from before the divergence and resyncing from peers.
Why This Matters
If a miner wins a single sparse race at the tip and then keeps extending its own branch, there may be no practical reorg trigger even when peers later advertise a different/heavier branch. That undermines the practical instruction to mine up to the activation height, because the miners most likely to help advance the chain can silently self-fork.
Local operational response on one node: mining was disabled and the external cTAZ submitter was stopped until this behavior is understood. After stopping the submitter, there was a quiet window with zero new
submitblock, mined-broadcast, or internal solver/template-mining log lines.Questions
Related
This is separate from BFT transport cleanup in PR #36 and BFT replay hardening in issue #37. Those address finality/transport failure modes; this one is PoW sync/fork-choice.