Checkpoints & finality
Arrekta adds an optional finality layer on top of proof of work, modelled on Dash ChainLocks
(DIP-0008): a public group of up to 32 ML-DSA keys signs checkpoints, and a checkpoint with m
valid signatures is final (§9.8).
What a checkpoint is
checkpoint = u8 1 ‖ u32 height ‖ block_hash 32 ‖ u8 has_next ‖ [var next_set] ‖ k × (signer_index ‖ signature)
- Signers sign independently. Partial signature sets for the same
(height, hash, next_set)merge, over P2P (CHECKPOINTmessages) orPOST /v1/checkpoints. - A signer signs the active block at every multiple of the interval (default 10) once it is
depthdeep (default 6). First seen wins, and a signer never signs two hashes at one height.
The finality floor
When a block at height h becomes final:
- blocks at
hwith another hash, and their descendants, become invalid; - a node on a conflicting branch disconnects back below
hand follows the best valid chain, even one with less work; - no reorganisation ever crosses the floor.
A snapshot import also sets the floor at the snapshot height. GET /v1/checkpoints shows the
signer group, the latest final checkpoint, pending signatures and the floor.
Trust model
| The group can | The group cannot |
|---|---|
| make an existing block final | create blocks |
hand over to a new group (next_set) without a software release | move coins |
| end a reorg attack by checkpointing the honest chain early | reverse a checkpoint it already signed |
If the group goes offline, the chain continues under plain proof of work. If m keys turned
malicious they could finalise one honest-looking fork, which is why the group is public,
multi-party and rotatable, and why "finality lagging" alerts exist. Checkpoints are policy-free
consensus inputs: a node that never sees one still follows the most-work chain.
Per network
| Network | Signer group |
|---|---|
| mainnet, testnet | none until the genesis ceremony |
| regtest | 2-of-3 public test seeds 0x31…, 0x32…, 0x33… (never reuse them) |
Related
- Guide: Run a checkpoint signer
- Operations: Checkpoint group