66 lines
4.5 KiB
Markdown
66 lines
4.5 KiB
Markdown
# Falcon and SLH-DSA validator registries for chain 2800
|
|
|
|
These files are the **public** Falcon-512 validator registries that a node must hold to validate the
|
|
post-quantum certificate anchor (see `../anchor/README.md` and `../RUN-A-NODE.md`). Without them a
|
|
from-genesis node imports fine up to block **13,014,000**, the first anchor, and then refuses every
|
|
anchor block, because the seal-validation rule cannot map a certificate's seal indices to validator
|
|
addresses. The refusal is deliberate and fail-closed: `AERE-PQC-REG-BLOCK-01`.
|
|
|
|
## What is in a registry, and why it is safe to publish
|
|
|
|
Each entry binds a validator index to:
|
|
|
|
- `pk` / the row value: the validator's Falcon-512 **public** key.
|
|
- `.addr`: the validator's chain-2800 account address (already public on-chain in every seal).
|
|
- `.pop`: a Falcon proof-of-possession, signed by that row's key. Proves someone holds the private
|
|
key for this public key.
|
|
- `.claim`: an ECDSA signature by the validator's own account. Proves the validator asked for this
|
|
key, so that whoever writes the file cannot credit a seal to an index they do not control.
|
|
|
|
There is no private key material here. Falcon signing keys are never in this repository and are not
|
|
on the same footing as these files on the hosts: the registries are world-readable, the signing keys
|
|
are mode 600 and stay on the validators. The repository's secret gate passes on this directory
|
|
(0 findings) precisely because every byte is public.
|
|
|
|
## Files
|
|
|
|
| File | Bind height | Keys | Role |
|
|
|---|---|---|---|
|
|
| `manifest-13014000.json` | 13,014,000 | 7 | the registry in force from the first anchor; carried in `registry.history` |
|
|
| `registru-2800-v2-13600000.properties` | 13,600,000 | 9 | the nine-validator registry from the set expansion; carried in `registry.history` |
|
|
| `manifest-13600000.json` | 13,600,000 | 9 | the head registry until 2026-09-10; kept for provenance, not wired by `run-node.sh` (its nine keys are those of `registru-2800-v2-13600000.properties`) |
|
|
| `manifest-18082816.json` | 18,082,816 | 10 | the head registry since 2026-09-10, passed as `aere.falcon.manifest`: the ten validators bound at 18,082,816 (the tenth, index 9, admitted to the set on 2026-09-11) |
|
|
| `hibrid-10.properties` | 18,082,816 | 10 | the SLH-DSA-SHA2-128s public keys for the same ten indices (`formatVersion=hybrid-1`), passed as `aere.pq.hybridRegistry` since 2026-09-10; `hibrid-1.properties` is the nine-key file it replaces |
|
|
| `hibrid-1.properties` | 17,047,568 | 9 | the SLH-DSA-SHA2-128s public keys of the same nine validators (`formatVersion=hybrid-1`), passed as `aere.pq.hybridRegistry` until 2026-09-10 (`hibrid-10.properties` since); needed from the first hybrid anchor, block 17,047,600; kept for provenance |
|
|
|
|
`SHA256SUMS` carries the digests. Verify after copying:
|
|
|
|
```
|
|
sha256sum -c SHA256SUMS
|
|
```
|
|
|
|
```
|
|
006b1b3fb814ed84622539160956263faca7c0b76585c22f2e8acb926c0bcb7f manifest-13014000.json
|
|
23736b7d4ba1d3213496f8b5a5f756d5c958b08efebdeb1329b24d7dfa45fb6e manifest-13600000.json
|
|
c9a215d294e106f69fb2f16e3af21f9787523969e4b7260a3098f4b2cf458059 registru-2800-v2-13600000.properties
|
|
f155bd46958cd533e710f79aac4fd96549d7b6ca54df17df71a4e5d876012c59 hibrid-1.properties
|
|
c6601ae5159875a090066946991517c9a38e5d6206da76b018c0917e1ca6f12f manifest-18082816.json
|
|
35d69f60e357d405aff39fd33858de901dfb21327b0c4aeb18be17ffdaa115d6 hibrid-10.properties
|
|
```
|
|
|
|
## Provenance
|
|
|
|
Fetched from the running fleet and cross-checked so that these are the bytes the network validates
|
|
against, not a local rebuild. Each of the three files was read from three independent validator hosts
|
|
and produced the **same** sha256 on all three. A registry is only meaningful if it is the one the
|
|
chain was signed against; a fingerprint that agrees across three independently operated hosts is that
|
|
evidence. The digests above are those agreed fingerprints. `manifest-18082816.json` and `hibrid-10.properties`, added 2026-09-10, were read from inside the running node containers, on the paths the nodes actually load, on four independent hosts (the archive node and three validators), with the same sha256 on all four.
|
|
|
|
## How a node uses them
|
|
|
|
A following node wires the head registry through `aere.falcon.manifest` and the older registries
|
|
through `aere.falcon.registry.history` (comma-separated, never pruned: a node syncing from genesis
|
|
verifies every block ever produced, so every registry ever scheduled has to stay reachable forever).
|
|
`run-node.sh` in the parent directory does this for you. The exact flags are printed there and echoed
|
|
at start.
|