swimchain.io
Live simulation · consensus layer

Partition & reconverge, running for real.

Two groups get separated, each builds its own history, then a bridge appears. Swimchain's fork choice is dead simple: heaviest accumulated work wins — and the losing tip's actions return to the mempool, nothing destroyed. Slide the two partitions' work, flip the bridge, and watch. The outcome is the real rule, validated by an integration test against the node.

Running swimchain-core::forkchoice · validated by tests/partition_reconverge.rs
shared prefix partition A partition B orphaned (actions re-anchor)

What you're looking at

Both stacks grow from a shared prefix (the history everyone agrees on). While unbridged, the two partitions never see each other — two divergent tips, no reconciliation. That's a real network partition, the kind any split (a netsplit, an offline group) can create.

Flip bridge and blocks gossip across. The page hands both tips' cumulative work to swimchain_core::forkchoice::evaluate_reconverge — the same rule the node runs (heavier cumulative_pow wins; exact ties break on lower hash). The heavier tip becomes canonical; the lighter tip's blocks orphan, and its actions are returned to the mempool to re-anchor under the winner. The integration test that backs this asserts exactly that against the real router: the tip switches and the loser's actions come back — content is re-ordered, never obliterated.

One global chain, one heaviest-work rule for everyone — no per-group carve-outs. Any partition reconciles safely the moment a path reappears, which is exactly why the network stays one chain. Companion sims: behavioral, size.