Readiness¶
Once a launch is GENESIS_READY, approved validators confirm they're set up with the correct genesis and
binary — the committee's launch go/no-go signal.
Confirming readiness¶
An approved validator submits POST /api/v1/launch/{id}/ready with a signed attestation:
- The operator signs (secp256k1, with a nonce + timestamp for replay protection) that
genesis_hash_confirmedequals the launch'sFinalGenesisSHA256, andbinary_hash_confirmedequals the record'sBinarySHA256(the binary check is enforced only when the record declares a hash). - The caller must have an
APPROVEDjoin request and the launch must beGENESIS_READY. - There is one valid confirmation per operator per genesis version.
Invalidation¶
A confirmation is invalidated (the validator must re-confirm) when what it attested to changes:
UPDATE_GENESIS_TIME, REVISE_GENESIS, or a cancel from GENESIS_READY.
The dashboard¶
GET /api/v1/launch/{id}/dashboard merges the launch state (status, genesis time, countdown, final genesis hash)
with readiness aggregation: per-validator voting-power share, ConfirmedReady, VotingPowerConfirmed, and
a ThresholdStatus:
| Status | Meaning |
|---|---|
CONFIRMED |
≥ ⅔ of voting power has confirmed |
AT_RISK |
< 50 % confirmed |
REACHABLE |
in between |
GET /api/v1/launch/{id}/peers returns approved validators' peer addresses (JSON, or ?format=text for a
persistent_peers list).