Commit Graph

25 Commits

Author SHA1 Message Date
Aere Network
c3ef72b82c TR on chain 2800 moved to block 24,148,752 (was 24,127,504, announced earlier the same day and never armed on any node): the fleet series could not finish 48 hours before the earlier height. verify-anchor.mjs (COMMIT_ROUND_BLOCK), run-node.sh and the runbooks carry the new aere.pq.commitRoundBlock 2026-10-21 20:46:21 +03:00
Aere Network
7e6dad4239 TR on chain 2800 from block 24,127,504: the post-quantum commit seal binds the consensus round and the anchor certificate takes the v3 form from that height; verify-anchor.mjs knows the height (COMMIT_ROUND_BLOCK), run-node.sh and the runbooks carry aere.pq.commitRoundBlock 2026-10-21 20:02:04 +03:00
Aere Network
3ff53e4c05 tools/verify-anchor.mjs: the certificate form is judged by height, as the clients do (v1 below V, v2 from V: 17,047,600 on 2800, 176,000 on 28001; v3 from H_r), and the v1/v2 certificate rows are decoded canonically (whole scalar values, known scheme tag, index in four bytes, non-empty signature, at most 64 rows in v2); a v1 height accepts Falcon-512 only. Before this change the tool took the form from the bytes below H_r and accused 20 of 20 healthy v1 anchors of testnet 28001 (175,360 to 175,968). Measured: chain 2800 201 of 201 anchors past V verified, testnet 28001 40 of 40 past V; same verdict as the previous tool on anchor 23,452,880 of chain 2800. 2026-10-19 06:54:55 +03:00
Aere Network
e01ba38e6f tools/verify-anchor.mjs: commit-round height of testnet 28001 is set (6157024); mainnet 2800 unchanged 2026-10-12 12:39:28 +03:00
Aere Network
8de1ab2184 tools/verify-anchor.mjs: a certificate in v3 form below the commit-round height is refused with AERE-PQ-V3-01 before any decoding (form on height first, as both clients do); an index wider than 31 bits and an element 6 that is not a list are named refusals; v1/v2 verdicts unchanged (20 anchors on chain 2800 and 20 on 28001, identical rows) 2026-10-10 23:38:49 +03:00
Aere Network
c05b2ba97b tools/verify-anchor.mjs: certificate form v3 (round-bound commit seal, AIP-22 erratum): dispatcher on the first element, refusal codes AERE-PQ-V3-01..08, validator set of the parent, 'PARENT DECIDED IN ROUND r' only at a QBFT quorum of verified members; v1/v2 verdicts unchanged (20/20 on chain 2800 and 28001 before and after) 2026-10-07 17:11:26 +03:00
Aere Network
88a87df694 tools: the on-chain pin proven under the certified state (mpt.mjs), shared by verify-anchor.mjs and verify-proof.mjs
Copies of aerenew/verificator-falcon at 2026-10-02 (AIP-24 C4 (b)): slot 0 of every anchor contract is proven with eth_getProof
under the state root of the certified parent of the newest verified anchor; nothing is read at `latest` any more. mpt.mjs is the
Merkle-Patricia proof walker both tools import: it must sit next to them.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 06:23:56 +03:00
Aere Network
725aeebb65 Anchor verifier: the two dated historical lapse windows of chain 2800 transcribed from the production client (not enforced at all, then a threshold of one), the fleet's threshold before 13,034,000, and index order required as in production 2026-10-01 20:28:51 +03:00
Aere Network
d56a120462 Anchor verifier: the validator set is read from the parent header the certificate seals (bound to its hash), with no 1000-block cache; distinct members counted once per scheme 2026-10-01 20:03:55 +03:00
Aere Network
1238760940 D-470 / AIP-22 erratum 2026-10-01: the verifier prints POST-QUANTUM CERTIFIED and says what a certificate proves (its signers sealed the block post-quantum, in some round) and what it does not (that the block was decided); SPEC and the anchor README qualified the same way 2026-10-01 17:09:27 +03:00
Aere Network
ea4ebcda5d AIP-22 stages 1 to 3 on chain 2800 in the node package; verifier no longer prints the stage-5 sentence on chain 2800
README, SPEC, RUN-A-NODE, SECURITY, AUDITS and anchor/README now state the live rules: at least seven of
ten seals per scheme from block 20,715,632 (stage 1), Falcon-512 at every 32nd block and SLH-DSA-SHA2-128s
at every 128th from block 20,746,736 (stage 2), post-quantum validator ids in the header and in
qbft_getValidatorsByBlockNumber from block 20,836,228 (stage 3). Stages 4 and 5 are not active on chain 2800.

tools/verify-anchor.mjs: the FINALIZED line said on every chain that a header between anchors carries only
its proposer's seal, which is true only where AIP-22 stage 5 is active (testnet 28001). It now reports what
it measured: on chain 2800 headers between anchors carry the validators' classical ECDSA commit seals.
Checked on both chains on 2026-10-01: chain 2800, 4/4 anchors verified, ECDSA branch printed; testnet 28001,
2/2 anchors and 20/20 proposer seals verified, stage-5 branch printed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 13:27:11 +03:00
Aere Network
9fd694b888 AIP-22 stage 2 on chain 2800: from block 20,746,736 a Falcon-512 anchor certificate every 32 blocks and the SLH-DSA-SHA2-128s layer every 128 (schemeSchedule falcon-512/32+slh-dsa-sha2-128s/128) 2026-09-29 21:09:36 +03:00
Aere Network
1779ac8a8b AIP-22 stage 1 on chain 2800: anchor certificate threshold K=7, the QBFT quorum of ten validators, from block 20,715,632 2026-09-29 16:07:49 +03:00
Aere Network
54ab30407c verify-anchor.mjs: ANCHOR_REPORT=<file> writes the most recent verified anchor and the parent hash its seals signed, as JSON, for tools that build on it (nothing printed changes) 2026-09-27 06:36:36 +03:00
Aere Network
75b2872e13 verify-anchor.mjs: early refusals stop without process.exit() (on Windows it returned 127 instead of 1 after a network request); any other uncaught error still fails the run 2026-09-27 05:32:06 +03:00
Aere Network
0b36247051 verify-anchor.mjs: step 6 admits a re-proposed block sealed by its round's proposer (AIP-22 section 5 as corrected 2026-09-25, now running on testnet 28001); builder rule, round bound and canonical round on every header; exit code set, not process.exit 2026-09-27 05:14:52 +03:00
Aere Network
4250738290 verify-anchor: FINALIZED (post-quantum) summary line; probes proba-pe-lant/control-negativ repaired upstream, 2026-09-26 2026-09-26 16:20:11 +03:00
Aere Network
0f6ec82fa1 verify-anchor.mjs: step 6, the proposer's Falcon-512 seal on every recent header (AIP-22 stage 5), verified against the v3 registry key of its index and bound to the coinbase; proven on testnet 28001 with two planted forgeries rejected 2026-09-24 23:01:51 +03:00
Aere Network
ab90cc5b06 verify-anchor: a certificate is a NON-EMPTY item 6 (AIP-22 stage 5 headers carry an empty certificate slot between anchors) 2026-09-24 00:03:31 +03:00
Aere Network
a94c0f2686 verify-anchor: from KEYS_FROM the OK line names the registry v3 epoch whose keys verified the seals, not the key manifest 2026-09-23 18:35:06 +03:00
Aere Network
089dc9803c verify-anchor.mjs: AIP-22 stage 3b read path, inert until an index marks it - from KEYS_FROM (or the v3 epoch whose index entry carries keysFrom) the key and the id of a seal's index come from the v3 epoch in force at the parent, as both clients read them; the ECDSA link of an id is inherited across epochs that omit it, and an id linked again drops its older address. Without keysFrom anywhere nothing changes: chain 2800 5/5, testnet 28001 5/5 re-run on 2026-09-23. 2026-09-23 16:05:24 +03:00
Aere Network
944dc0bba6 tools: verify-anchor.mjs discovers registry v3 epochs (AIP-22 stage 3, formatVersion 3 entries of the same manifest index) and verifies each in full with registry-v3.mjs (every proof of possession, every ECDSA link, the rotation chain, the Merkle registry hash), then requires every v3 row to carry exactly the Falcon-512 key, SLH-DSA key and address of the key manifest that signs at its height; the identity height is the first epoch's bindHeight, IDENTITY_BLOCK=none disables it as a negative control. Adds tools/registry-v3.mjs and tools/falcon512.mjs, which verify-anchor.mjs imports and the package did not carry. Checked 2026-09-23: testnet 28001 20/20 with its published v3 epoch (registry hash 0xd19eef4a..., identity from 3,080,010); chain 2800 20/20 unchanged; a byte-altered epoch and an epoch whose SLH-DSA key differs from the signing manifest both refused with the reason. 2026-09-23 15:33:49 +03:00
Aere Network
79e5dafd53 verify-anchor.mjs: per-scheme anchor intervals (AIP-22 stage 2: SCHEME_SCHEDULE entries like falcon-512/32+slh-dsa-sha2-128s/128; a scheme off its own grid at an anchor is surplus, verified but not required) and post-quantum validator identity (AIP-22 stage 3: IDENTITY_BLOCK + REGISTRY_V3 translate the validator set to ids from H_id); testnet 28001 default gains the stage-2 step 3070656. Proven 2026-09-23 12:07Z on 28001: 11 of 11 anchors after 3,070,656 accepted (3 hybrid on the 128 grid, 8 Falcon-only at 32), and the pre-stage-2 schedule refuses exactly the 8 Falcon-only; 20 of 20 on chain 2800 unchanged. 2026-09-23 15:08:45 +03:00
Aere Network
b8e9bdf971 verify-anchor.mjs: the testnet 28001 default seal-threshold schedule gains the AIP-22 stage-1 rehearsal step 2988864:4 (the per-scheme minimum becomes the QBFT quorum, 4 of 5); chain 2800 unchanged, and any value is still overridable via MIN_SEALS_SCHEDULE 2026-09-23 02:51:21 +03:00
Aere Network
665b86365e O-017: the anchor verifier ships in tools/, the Bouncy Castle licence is cited at its real path, two operator-repository scripts are declared as unpublished 2026-09-10 15:38:34 +03:00