Checkpoint signer
Checkpoint signers make blocks final (Checkpoints & finality). Each signer is an ordinary synced node with a signing seed.
Set up a signer
- Generate a 32-byte seed offline, from a hardware RNG, one per signer.
- Give the group's public keys and threshold to the network parameters (at the genesis ceremony for mainnet and testnet).
- Run a synced node with the seed:
ARREKTA_CHECKPOINT_SEED=<64 hex chars> \
ARREKTA_CHECKPOINT_INTERVAL=10 \
ARREKTA_CHECKPOINT_DEPTH=6 \
arrekta-node-rsThe node signs the active block at every multiple of the interval once it is depth blocks
deep, and relays its partial signature over P2P. At m signatures the checkpoint is final.
Rules for signers
- Never sign two different hashes at one height. The node enforces "first seen wins"; don't run two nodes with the same seed.
- Never reuse the public regtest seeds (
0x31…,0x32…,0x33…). - Keep the signer connected and synced: too few online signers trigger the
ArrektaFinalityLaggingandArrektaCheckpointStuckalerts.
Check status
curl -s http://127.0.0.1:28332/v1/checkpointsShows the signer group, the latest final checkpoint, pending signatures and the finality floor.
Rotate the group
- Build the new group's encoded signer set (
u8 m ‖ varint n ‖ n × serialized public key). - Have
mcurrent signers sign a checkpoint carrying it asnext_set(for example with the reference'sarrekta_core.checkpoint.sign(...)). - POST each partial signature to
/v1/checkpoints(hex body).
Once final, only the new group counts for later heights; no release is needed. New peers receive every hand-over after connecting.
In an incident
During a reorg attack, signers may checkpoint the honest chain early to end it; see Incident response.