Skip to content

Investigate PoW sync/reorg behavior under sparse solo mining #38

Description

@Zk-nd3r

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions