Citations: regenerated CITATIONS-UNRESOLVED.md (O-017, 2026-10-12); the cross-repository citation in the rewrite-bound note written in the side-by-side form; AIP-8 restaged

This commit is contained in:
Aere Network 2026-10-12 06:03:27 +03:00
parent 381c8e508b
commit 19039e5b71
3 changed files with 11 additions and 4 deletions

View File

@ -1,7 +1,7 @@
# Citations in this repository that you cannot open # Citations in this repository that you cannot open
This file is generated by the legaturi-repara.cjs script in the Aere working tree and This file is generated by the legaturi-repara.cjs script in the Aere working tree and
enforced by legaturi.cjs. It is the complete list, measured on 2026-09-24, of every enforced by legaturi.cjs. It is the complete list, measured on 2026-10-12, of every
path cited in this repository that does not resolve to a published file. path cited in this repository that does not resolve to a published file.
A citation is a promise that a claim is checkable. Where the target is not published, A citation is a promise that a claim is checkable. Where the target is not published,
@ -13,10 +13,11 @@ Paths that DO resolve are written relative to a side-by-side checkout of the Aer
repositories, so they begin with a repository name, for example repositories, so they begin with a repository name, for example
`aere-contracts/contracts/pqc/AereCryptoRegistry.sol`. `aere-contracts/contracts/pqc/AereCryptoRegistry.sol`.
Unresolvable distinct paths in this repository: **135**. Unresolvable distinct paths in this repository: **140**.
- `83-binar-nod-f2.sh` cited in: aere-research/aips/AIP-21.md - `83-binar-nod-f2.sh` cited in: aere-research/aips/AIP-21.md
- `89-finalitate-usa-client2.sh` cited in: aere-research/aips/AIP-21.md - `89-finalitate-usa-client2.sh` cited in: aere-research/aips/AIP-21.md
- `addresses.ts` cited in: aere-research/research/specs/spec-account-abstraction.md, aere-research/research/specs/spec-antimev-mempool.md, aere-research/research/specs/spec-eip2935-lookback.md, aere-research/research/specs/spec-full-evm-validity.md, aere-research/research/specs/spec-recursive-aggregation-scale.md, aere-research/research/specs/spec-zk-stack.md, aere-research/results/PROVEN-RESULTS-2026-07-11.md
- `aerenew/basefee-floor-dryrun/basefee-floor.diff` cited in: aere-research/aips/AIP-10.md, aere-research/aips/AIP-17.md - `aerenew/basefee-floor-dryrun/basefee-floor.diff` cited in: aere-research/aips/AIP-10.md, aere-research/aips/AIP-17.md
- `aerenew/consensus-pqc/besu-consensus-pqc-fork-activation.patch` cited in: aere-research/aips/AIP-15.md - `aerenew/consensus-pqc/besu-consensus-pqc-fork-activation.patch` cited in: aere-research/aips/AIP-15.md
- `aerenew/contracts/deployments/falcon-512-verifier.json` cited in: aere-research/research/pqc-onchain-verification.md - `aerenew/contracts/deployments/falcon-512-verifier.json` cited in: aere-research/research/pqc-onchain-verification.md
@ -43,6 +44,7 @@ Unresolvable distinct paths in this repository: **135**.
- `aips/aip21-conformitate/TESTNET-28001-2026-09-18.md` cited in: aere-research/aips/AIP-21.md - `aips/aip21-conformitate/TESTNET-28001-2026-09-18.md` cited in: aere-research/aips/AIP-21.md
- `air.rs` cited in: aere-research/pq-stark/README.md - `air.rs` cited in: aere-research/pq-stark/README.md
- `APLICA-AIP20.sh` cited in: aere-research/aips/AIP-20.md - `APLICA-AIP20.sh` cited in: aere-research/aips/AIP-20.md
- `attestation.json` cited in: aere-research/aips/AIP-23.md
- `audit-package-pq-consensus/evidence/EVIDENCE-INDEX.md` cited in: aere-research/aips/AIP-22.md - `audit-package-pq-consensus/evidence/EVIDENCE-INDEX.md` cited in: aere-research/aips/AIP-22.md
- `batch-prover-recovered/bin/aere-prover/Cargo.toml` cited in: aere-research/pq-stark/export-inner-stark-vector.md - `batch-prover-recovered/bin/aere-prover/Cargo.toml` cited in: aere-research/pq-stark/export-inner-stark-vector.md
- `besu-pqc-precompiles-mlkem-hashtopoint.patch` cited in: aere-research/PQC-FORK-README.md - `besu-pqc-precompiles-mlkem-hashtopoint.patch` cited in: aere-research/PQC-FORK-README.md
@ -119,6 +121,8 @@ Unresolvable distinct paths in this repository: **135**.
- `QUORUM-DESIGN.md` cited in: aere-research/results/PROVEN-RESULTS-2026-07-11.md - `QUORUM-DESIGN.md` cited in: aere-research/results/PROVEN-RESULTS-2026-07-11.md
- `record-aggregation-scale.js` cited in: aere-research/research/specs/spec-recursive-aggregation-scale.md - `record-aggregation-scale.js` cited in: aere-research/research/specs/spec-recursive-aggregation-scale.md
- `recursive-aggregation-scale/agg-program/src/main.rs` cited in: aere-research/research/specs/spec-recursive-aggregation-scale.md - `recursive-aggregation-scale/agg-program/src/main.rs` cited in: aere-research/research/specs/spec-recursive-aggregation-scale.md
- `registry-v3-3080010.json` cited in: aere-research/aips/aip22-conformance/README.md
- `registry-v3-3097600.json` cited in: aere-research/aips/aip22-conformance/README.md
- `rollup-evm-validity/host/Cargo.toml` cited in: aere-research/pq-stark/export-inner-stark-vector.md - `rollup-evm-validity/host/Cargo.toml` cited in: aere-research/pq-stark/export-inner-stark-vector.md
- `rollup-evm-validity/NOTE.md` cited in: aere-research/research/specs/spec-full-evm-validity.md, aere-research/results/PROVEN-RESULTS-2026-07-11.md - `rollup-evm-validity/NOTE.md` cited in: aere-research/research/specs/spec-full-evm-validity.md, aere-research/results/PROVEN-RESULTS-2026-07-11.md
- `rollup-evm-validity/rsp-patches/io.rs` cited in: aere-research/research/specs/spec-full-evm-validity.md - `rollup-evm-validity/rsp-patches/io.rs` cited in: aere-research/research/specs/spec-full-evm-validity.md
@ -126,6 +130,7 @@ Unresolvable distinct paths in this repository: **135**.
- `rollup-sequencer/src/blockstm/example.ts` cited in: aere-research/research/specs/spec-parallel-execution.md - `rollup-sequencer/src/blockstm/example.ts` cited in: aere-research/research/specs/spec-parallel-execution.md
- `run-kats.sh` cited in: aere-research/PQC-FORK-README.md - `run-kats.sh` cited in: aere-research/PQC-FORK-README.md
- `scripts/deschise/pragul-ancorei-e-cvorumul-setului.sh` cited in: aere-research/aips/AIP-22.md - `scripts/deschise/pragul-ancorei-e-cvorumul-setului.sh` cited in: aere-research/aips/AIP-22.md
- `sdk-js/src/addresses.ts` cited in: aere-research/aips/AIP-1.md, aere-research/aips/AIP-11.md, aere-research/aips/AIP-2.md, aere-research/aips/AIP-4.md, aere-research/aips/AIP-5.md, aere-research/aips/AIP-6.md, aere-research/aips/AIP-7.md, aere-research/aips/AIP-8.md, aere-research/aips/CONTRIBUTING.md, aere-research/aips/README.md, aere-research/aips/aip-template.md, aere-research/research/pqc-onchain-verification.md, aere-research/research/specs/spec-account-abstraction.md, aere-research/research/specs/spec-antimev-mempool.md, aere-research/research/specs/spec-eip2935-lookback.md, aere-research/research/specs/spec-flywheel-economics.md, aere-research/research/specs/spec-full-evm-validity.md, aere-research/research/specs/spec-identity-compliance.md, aere-research/research/specs/spec-parallel-execution.md, aere-research/research/specs/spec-recursive-aggregation-scale.md, aere-research/research/specs/spec-zk-stack.md, aere-research/results/PROVEN-RESULTS-2026-07-11.md
- `SealSchemeBench.java` cited in: aere-research/aips/AIP-22.md - `SealSchemeBench.java` cited in: aere-research/aips/AIP-22.md
- `setup-fork.sh` cited in: aere-research/PQC-FORK-README.md - `setup-fork.sh` cited in: aere-research/PQC-FORK-README.md
- `shutter-mempool-v2.json` cited in: aere-research/research/specs/spec-antimev-mempool.md - `shutter-mempool-v2.json` cited in: aere-research/research/specs/spec-antimev-mempool.md

View File

@ -1,5 +1,7 @@
# AIP-8: Post-Quantum-Authorized Transaction Envelope (EIP-2718 Type 0x2A) # AIP-8: Post-Quantum-Authorized Transaction Envelope (EIP-2718 Type 0x2A)
> **Note added 2026-09-24 (consensus).** Where this document says that consensus is classical secp256k1 ECDSA and not post-quantum, read it as the per-block finality statement it still is: each block is committed with classical ECDSA seals. It no longer describes all of consensus on chain 2800: since 2026-08-14 every anchor block must carry a certificate of validator post-quantum seals under its hash (Falcon-512, with SLH-DSA as well since 2026-09-04), and since 2026-09-05 every QBFT consensus message must carry a valid Falcon-512 seal of its author. (Note applied to this document on 2026-09-27.)
> **Note added 2026-08-19.** Statements in this document that consensus on chain 2800 is (or remains) classical secp256k1 ECDSA QBFT were written before the post-quantum header anchor went live, and remain true for block-by-block finality. Since block 13,014,000 anchor blocks (every 32nd block, on every one since block 13,889,296) also carry, under the block hash, a certificate of validator Falcon-512 seals, and since 2026-08-14 a node rejects an anchor block with fewer than three valid seals (f+1 of nine; eight or nine are carried in practice). That is a post-quantum checkpoint about every 16 seconds, not a per-block quorum: the claim published on 2026-08-15 that from block 14,050,000 no block finalizes without a post-quantum quorum was wrong (the per-block rule armed at that height is retired in the shipped code in favour of the anchor rules) and was withdrawn on 2026-08-19. Details: https://aere.network/quantum.html and the aere-node repository, anchor/README.md. > **Note added 2026-08-19.** Statements in this document that consensus on chain 2800 is (or remains) classical secp256k1 ECDSA QBFT were written before the post-quantum header anchor went live, and remain true for block-by-block finality. Since block 13,014,000 anchor blocks (every 32nd block, on every one since block 13,889,296) also carry, under the block hash, a certificate of validator Falcon-512 seals, and since 2026-08-14 a node rejects an anchor block with fewer than three valid seals (f+1 of nine; eight or nine are carried in practice). That is a post-quantum checkpoint about every 16 seconds, not a per-block quorum: the claim published on 2026-08-15 that from block 14,050,000 no block finalizes without a post-quantum quorum was wrong (the per-block rule armed at that height is retired in the shipped code in favour of the anchor rules) and was withdrawn on 2026-08-19. Details: https://aere.network/quantum.html and the aere-node repository, anchor/README.md.
## Preamble ## Preamble

View File

@ -30,13 +30,13 @@ The victim either (a) holds the honest chain up to some head and will switch to
All three are rules a node applies to every header at an anchor height; none is a property of the live network's behaviour. Each is cited to the published code (the patch set of the `aere-node` package, at its commit of 2026-10-05) and to the specification. All three are rules a node applies to every header at an anchor height; none is a property of the live network's behaviour. Each is cited to the published code (the patch set of the `aere-node` package, at its commit of 2026-10-05) and to the specification.
**Fact 1 (R1): the certificate's digest is under the anchor's hash.** An anchor block carries, in `vanityData`, the 32 bytes that sit inside the hashed pre-image of the header, the digest of the certificate it carries for its parent: `D = keccak256(RLP["AERE-PQ-ANCHOR-2", chainId, parentNumber, parentHash, rlp(certificate)])` for the v2 (scheme-tagged) form in force since block 17,047,600. The rule recomputes `D` from the certificate the header carries and refuses the header if it differs. Consequences: a certificate cannot be stripped, swapped or reordered under a given anchor hash; and, through the parent-hash chain, every later block hash commits to every earlier certificate. **Fact 1 (R1): the certificate's digest is under the anchor's hash.** An anchor block carries, in `vanityData`, the 32 bytes that sit inside the hashed pre-image of the header, the digest of the certificate it carries for its parent: `D = keccak256(RLP["AERE-PQ-ANCHOR-2", chainId, parentNumber, parentHash, rlp(certificate)])` for the v2 (scheme-tagged) form in force since block 17,047,600. The rule recomputes `D` from the certificate the header carries and refuses the header if it differs. Consequences: a certificate cannot be stripped, swapped or reordered under a given anchor hash; and, through the parent-hash chain, every later block hash commits to every earlier certificate.
- Code: `patches/0003-aere-pq-anchor.patch`, `PqAnchorDigestRule` (class at patch line 39523; the height and grid gate at 39550; the acceptable index order at 39598, which is "strictly increasing", relaxed to "distinct" only inside the dated disarmed window D4, `PqAnchor.hasAcceptableIndices` at 6980 to 6986; recompute and compare at 39611 to 39615 for v1, at 39657 for the v2 digest). The digest functions: `PqAnchor.anchorDigest` at patch lines 6658 to 6682, `PqAnchorV2.anchorDigestV2` at 9660 to 9680. (Patch 0008 touches this rule only to add AIP-22 forms; the digest check is unchanged.) - Code: `aere-node/patches/0003-aere-pq-anchor.patch`, `PqAnchorDigestRule` (class at patch line 39523; the height and grid gate at 39550; the acceptable index order at 39598, which is "strictly increasing", relaxed to "distinct" only inside the dated disarmed window D4, `PqAnchor.hasAcceptableIndices` at 6980 to 6986; recompute and compare at 39611 to 39615 for v1, at 39657 for the v2 digest). The digest functions: `PqAnchor.anchorDigest` at patch lines 6658 to 6682, `PqAnchorV2.anchorDigestV2` at 9660 to 9680. (Patch 0008 touches this rule only to add AIP-22 forms; the digest check is unchanged.)
- Specification: `aere-node/SPEC.md` 3.3 ("The two pre-images") and 3.4 ("R1"); AIP-15 ("certificate under the block hash"). - Specification: `aere-node/SPEC.md` 3.3 ("The two pre-images") and 3.4 ("R1"); AIP-15 ("certificate under the block hash").
**Fact 2 (R2): at an anchor height, at least `K_eff` seals from distinct members of the parent's validator set, verified against the registry epoch bound at the parent's height, over a message that names the parent's hash.** The rule reads `required = K_eff = min(schedule K, emergency ceiling)` (7 from the schedule since block 20,715,632; the ceiling, if set, only lowers it, and a configuration whose highest effective threshold over the whole schedule would be below 1 is refused at startup), refuses a certificate with fewer Falcon-512 seals, resolves each seal's index to the validator bound to it in the registry epoch at the parent's height, refuses an index the epoch does not bind, refuses a validator that is not in the parent block's validator set, refuses two indices that resolve to one validator (one validator counts once), and verifies each signature over **Fact 2 (R2): at an anchor height, at least `K_eff` seals from distinct members of the parent's validator set, verified against the registry epoch bound at the parent's height, over a message that names the parent's hash.** The rule reads `required = K_eff = min(schedule K, emergency ceiling)` (7 from the schedule since block 20,715,632; the ceiling, if set, only lowers it, and a configuration whose highest effective threshold over the whole schedule would be below 1 is refused at startup), refuses a certificate with fewer Falcon-512 seals, resolves each seal's index to the validator bound to it in the registry epoch at the parent's height, refuses an index the epoch does not bind, refuses a validator that is not in the parent block's validator set, refuses two indices that resolve to one validator (one validator counts once), and verifies each signature over
`M(parent) = keccak256(RLP["AERE-PQ-COMMIT-1", chainId, number(parent), hash(parent)])`. `M(parent) = keccak256(RLP["AERE-PQ-COMMIT-1", chainId, number(parent), hash(parent)])`.
`M` names the parent's on-chain hash and nothing else: no round, no local state. `M` names the parent's on-chain hash and nothing else: no round, no local state.
- Code: `patches/0003-aere-pq-anchor.patch`, `PqAnchorSealsRule` (class at patch line 39833; gate at 39873; `required = config.minSealsAt(number)` at 39943, the threshold check to 39956; the parent's validator set at 39991; `M` at 40003; registry resolution at the parent's height at 40061; set membership at 40071; distinctness at 40081; verification at 40091; the same for the v2 form at 40127, 40136, 40147, 40158). `minSealsAt` (schedule after the ceiling) at 8260, the ceiling property at 7147, the floor refusal `REFUSAL_MIN_SEALS_FLOOR` at 7264, the startup guard `PqAnchorThresholdGuard` at 9329 (the "threshold above what the set can reach" refusal at 9432). `M` itself: `PqAnchor.commitMessage`, patch lines 6695 to 6715, domain `AERE-PQ-COMMIT-1` at 6544. Patch 0008 (`0008-aere-pq-aip22.patch`) changes this rule in four places, none of them the count, the distinctness or the message (its hunk on the rule is patch lines 15181 to 15493): the dated lapse windows are keyed by chain id; the SLH-DSA scheme is counted as a second requirement on its grid; the keys come from the v3 epoch in force at the parent's height (15405 to 15420); and from AIP-22 stage 3 (block 20,836,228 on chain 2800) the parent's validator set the rule reads is the set translated to post-quantum ids by the vote tally (`VoteTally.translateToIds`, patch line 7389, calling `AerePqIdentity.translateSetAfter`, defined at 2005), so each index resolves to an id rather than a classical address. - Code: `aere-node/patches/0003-aere-pq-anchor.patch`, `PqAnchorSealsRule` (class at patch line 39833; gate at 39873; `required = config.minSealsAt(number)` at 39943, the threshold check to 39956; the parent's validator set at 39991; `M` at 40003; registry resolution at the parent's height at 40061; set membership at 40071; distinctness at 40081; verification at 40091; the same for the v2 form at 40127, 40136, 40147, 40158). `minSealsAt` (schedule after the ceiling) at 8260, the ceiling property at 7147, the floor refusal `REFUSAL_MIN_SEALS_FLOOR` at 7264, the startup guard `PqAnchorThresholdGuard` at 9329 (the "threshold above what the set can reach" refusal at 9432). `M` itself: `PqAnchor.commitMessage`, patch lines 6695 to 6715, domain `AERE-PQ-COMMIT-1` at 6544. Patch 0008 (`0008-aere-pq-aip22.patch`) changes this rule in four places, none of them the count, the distinctness or the message (its hunk on the rule is patch lines 15181 to 15493): the dated lapse windows are keyed by chain id; the SLH-DSA scheme is counted as a second requirement on its grid; the keys come from the v3 epoch in force at the parent's height (15405 to 15420); and from AIP-22 stage 3 (block 20,836,228 on chain 2800) the parent's validator set the rule reads is the set translated to post-quantum ids by the vote tally (`VoteTally.translateToIds`, patch line 7389, calling `AerePqIdentity.translateSetAfter`, defined at 2005), so each index resolves to an id rather than a classical address.
- What the registry-writer key buys the adversary: a rogue epoch pinned in its tail and new ids voted in (one vote per header; AIP-22, Security Considerations, "Registry writer"). What it does not buy: the victim verifies against the epochs it holds, pinned by hash, and an epoch it does not hold is refused fail-closed (AIP-15, "activates the pending registry only if the observed hash matches. Any mismatch fails closed"; `SPEC.md` 3.5; `RUN-A-NODE.md`, the `registries/` row and `aere.falcon.registry.history`; the v3 epochs are each verified by the rotation signatures of the previous keys, which are post-quantum). An adversary who could install an epoch on the victim would be an adversary with post-quantum keys (negative control N2). - What the registry-writer key buys the adversary: a rogue epoch pinned in its tail and new ids voted in (one vote per header; AIP-22, Security Considerations, "Registry writer"). What it does not buy: the victim verifies against the epochs it holds, pinned by hash, and an epoch it does not hold is refused fail-closed (AIP-15, "activates the pending registry only if the observed hash matches. Any mismatch fails closed"; `SPEC.md` 3.5; `RUN-A-NODE.md`, the `registries/` row and `aere.falcon.registry.history`; the v3 epochs are each verified by the rotation signatures of the previous keys, which are post-quantum). An adversary who could install an epoch on the victim would be an adversary with post-quantum keys (negative control N2).
- Specification: `SPEC.md` 3.3, 3.4 ("R2", steps 4 to 9), 3.5, 3.7 and 6.4; AIP-15 (the registry bound to on-chain state); AIP-22 Specification, Notation (`M(B)`), section 3 (identity), and the erratum of 2026-10-01; AIP-21, erratum of 2026-10-01. - Specification: `SPEC.md` 3.3, 3.4 ("R2", steps 4 to 9), 3.5, 3.7 and 6.4; AIP-15 (the registry bound to on-chain state); AIP-22 Specification, Notation (`M(B)`), section 3 (identity), and the erratum of 2026-10-01; AIP-21, erratum of 2026-10-01.