Authority Service Overview (Group 21)
Telling a workstation which server is authoritative for a coin — without adding a round trip to authentication.
Design-stage — not yet implemented
Group 21 is a proposed command group with a brand-new group ID (21 / 0x15). It is documented here so client and server teams can build in parallel. Byte layouts are drafted from the design notes (raidax/ideas_for_suspect_raida_servers.txt, Addendum 5) and have not been verified against an implementation.
The latency problem
If a workstation had to ask “who is authoritative for this coin?” before every authentication — and worse, ask all 25 RAIDA — it would add roughly a second to each auth. The Authority Service removes that cost entirely by making authority a slowly-changing dataset the client already holds. At authentication time there are zero extra round trips: the client looks up the coin in a locally-cached map.
Epochs
Coin moves take effect only at a fixed boundary — an epoch (the recommended default is 00:00 UTC on the 1st of each month). Within an epoch the authority map is frozen, so a client downloads the list once per epoch from any one reachable mirror and caches it. Because the list is identical on every mirror, this is one download and one CMAC verification, not 25 calls. Most epochs the client pulls only a small delta.
The cached map lists only coins that have moved (absent ⇒ the coin is on root), so it stays small.
Commands
Development phases
Phase I is what authentication needs to work at all (publish the list, fetch it, check freshness, answer a relying party). Phase II adds optimizations (delta updates) and a single-coin fallback. The Phase column marks each.
| Code | Name | Phase | Direction | Purpose |
|---|---|---|---|---|
| 1 (0x01) | GET_AUTHORITY_EPOCH | I | client → mirror | Current epoch id + snapshot hash/sizes; lets a client detect it is stale. |
| 2 (0x02) | GET_AUTHORITY_SNAPSHOT | I | client → mirror | Full authority list for an epoch, with CMAC. |
| 3 (0x03) | GET_AUTHORITY_DELTA | II | client → mirror | Incremental change set between two epochs, with CMAC. |
| 4 (0x04) | VERIFY_AUTHORITY_PROOF | II | client → root | Single-coin fallback lookup; not used on the hot path. |
| 10 (0x0A) | PUSH_AUTHORITY_SNAPSHOT | I | root → mirror | Publish a new snapshot to a trusted mirror (ENC 7 / K_rs). |
| 11 (0x0B) | MIRROR_ACK | I | mirror → root | Confirm the snapshot stored, so root knows it propagated. |
| 12 (0x0C) | WHO_IS_AUTHORITATIVE | I | workstation → root | CMAC'd authority answer for a single coin. |
List authentication (AES only)
Mirrors serve the list but must not be able to forge it. Root computes an AES-CMAC over the whole snapshot (epoch ‖ entries) under a key it shares with each client — either the client's own coin AN, or a per-epoch broadcast key for large populations. A tampering mirror breaks the CMAC; a mirror cannot author a list because it lacks root's key. Symmetric, quantum-safe, same trust anchor as the rest of the protocol.