Commit Graph

58 Commits

Author SHA1 Message Date
Aere Network
528f88b53f AIP-22 T5 pe 2800 (H_hdr 25.080.000, 2026-10-30): proza scrisa de proza-trepte.py T5 --scrie --formulare 1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 14:28:21 +02:00
Aere Network
3b06139f6d Runda 11 a reviziei prozei (2026-10-28): anchor/README (treapta 5, clientul 2), tools/verify-proof.mjs (prefixul de integritate), vectors/SURSE.md in engleza, declaratia de citari 2026-10-29 00:25:55 +02:00
Aere Network
521210c71b Dated corrections (2026-10-28): SPEC.md, SECURITY.md, AUDITS.md and anchor/README.md state what an anchor certificate is bound by (its digest sits in the hashed part of the header, so a node that validates the header refuses a detached or replaced certificate, while the block hash does not change); tools/verify-proof.mjs and tools/verify-anchor.mjs are the same files as those served at aere.network/tools 2026-10-28 12:46:28 +02:00
Aere Network
cdc523ea64 Dated corrections (2026-10-27): anchor/README.md, the number of Falcon-512 seals an anchor carried in practice is stated with its measured ranges and dates (up to five, most three to five, under the write cap of five until 2026-08-16; eight or nine at nine validators; eight to ten at ten validators, over 400 anchors measured 2026-10-27). tools/verify-anchor.mjs: the ROUND leg names where it is active (testnet 28001 since block 6,157,024; chain 2800 since block 24,148,752), element 6 is counted from 0, and the tool exits 2 (UNMEASURED, with the reason) when the endpoint serves another chain than CHAIN_ID or does not say which. Correction to the message of 9820765 (2026-10-27): it also listed 'the follower's rewrite bound', which belonged to the previous round, and said 'three to five' where the text says 'three or more'. 2026-10-28 00:04:54 +02:00
Aere Network
9820765ebb Dated corrections (2026-10-27): the package publishes one bootnode (since 2026-08-25) and run-node.sh uses it by default; two addresses from 2026-08-25 to 2026-09-11, one since; the follower's rewrite bound and the threshold ceiling comment brought to the measured anchors (most carried three to five valid seals before 2026-08-14, only some in the lowered window one or two); SPEC and anchor/README the same 2026-10-27 15:00:44 +02:00
Aere Network
6ece1f2a6c Dated corrections (2026-10-27): a validator, not every node, refuses an anchor below the threshold (a node started from this package lowers the count to one seal; SPEC 6.4); the startup guard refuses above the quorum and only warns below it; anchors carry at least one seal in the warm-up and three or more after; the follower's rewrite bound is 33 from stage R; run-node.sh comment and verify-live-precompiles.mjs brought to the same form 2026-10-27 06:47:47 +02:00
Aere Network
7ba8334ecf AIP-22 stage R and stage 4 in force on chain 2800: SPEC amended 2026-10-26 (stage R since 24,148,752, stage 4 since 24,300,000; below H_hdr a header is still admitted on the ECDSA commit seals of one round), README and anchor/README dated 2026-10-26 06:27:51 +02:00
Aere Network
6c13bb314d anchor/README: remove the duplicated stage R row of the armed-on-2800 table (introduced by the previous commit); the row stays once 2026-10-25 23:57:23 +02:00
Aere Network
3e49753b31 Dated: below block 24,148,752 the anchor certificate seals proved signing, not decision; from that block (AIP-22 stage R) a certificate carrying the quorum of one round proves it. SPEC rows 5 and 3.4 and the anchor table carry stage R as set on chain 2800 2026-10-25 22:52:21 +02:00
Aere Network
c4771b6b32 AIP-22 stage 4 in force on chain 2800 since block 24,300,000 (2026-10-25): READMEs, SPEC and RUN-A-NODE say so, dated 2026-10-25 08:14:30 +02:00
Aere Network
89d557000a anchor/README: stage R (the round-bound post-quantum commit seal and the v3 anchor certificate) is live on chain 2800 since block 24,148,752 (2026-10-24); the armed-on-2800 table carries the row 2026-10-24 12:16:21 +03:00
Aere Network
07bee6902e anchor/README: validatorii sunt numiti prin id-urile post-cuantice AIP-22 din blocul 20,836,228 (treapta 3); corectie datata 2026-10-22 2026-10-22 19:45:44 +03:00
Aere Network
9a65dce22f Inaltimile AIP-22 anuntate pe 2026-10-22: H_r = 24.148.752 (purtat de run-node.sh si de validatori din 2026-10-21) si H_fin = 24.300.000; RUN-A-NODE nu mai spune ca H_r nu e setat (nota datata, inclusiv promisiunea de publicare in aceeasi ora, netinuta), SPEC: amendamentul din 2026-10-22, README si runbook-ul ancorei cu forma anuntata 2026-10-22 17:43:14 +03:00
Aere Network
60ffd69de2 Patch 0010: the chain-2800 fleet distribution of 2026-10-14 (AIP-22 stage R: the round-bound post-quantum commit seal, the v3 anchor certificate and the decided head, inert until aere.pq.commitRoundBlock is set, which run-node.sh does not do; active on testnet 28001 from block 6,157,024 since 2026-10-14); run-node.sh applies 0010; anchor corpus restaged from the recipe (353 .java files, identical to the recipe); LICENSING regenerated; SPEC.md (2.3 certificate element in one place v1/v2/v3, 2.6, 2.7, 3.1, 3.3, 3.4, 3.5, 6.4, 7, 8 D13, 9 G11), RUN-A-NODE.md and README.md with dated notes; measured: patches 0001 and 0003 to 0010 on a pristine d2032017 reproduce the generator's tree exactly (same tree id), the build equals the fleet distribution class for class (3,602 classes, no class with different code)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-14 19:44:51 +03:00
Aere Network
9fe4dac73e SPEC 2.6 and 3.1, README, anchor/README: message-layer enforcement stated per client (corrected 2026-10-09; from 2026-09-17 the text said all four message types are refused on both clients, while the second client enforces commits since block 18,131,633 and applies the other three types from AIP-22 stage 4, whose height is not yet set on chain 2800; on testnet 28001 since 1,314,403 and 3,117,000); dated notes, nothing removed 2026-10-10 00:02:37 +03:00
Aere Network
76a70f6422 Patch 0009: the chain-2800 fleet distribution of 2026-10-02 (heard-seal judge and pending-commit buffer, both acting only from the AIP-22 stage 4 height; snap-request cap, GHSA-pcv4-pxhv-99m7); fifteen 4(b) notices of patch 0008 now name patch 0008; run-node.sh applies 0009; anchor corpus restaged from the recipe; measured: the recipe build equals the fleet distribution class for class 2026-10-09 14:25:20 +03:00
Aere Network
a406a193f6 anchor/BASE.txt: the date of the restaging is 2026-10-01 (UTC), not 2026-10-02 (the author's local date) 2026-10-02 01:15:12 +03:00
Aere Network
f4b0a3ce08 Anchor corpus restaged from the published recipe itself (base tree plus the patches run-node.sh applies, not the working overlay): every file the patches change is here, modified upstream files carry their Apache 4(b) notices, one internal reference is gone; BASE.txt says what the directory holds 2026-10-02 00:50:15 +03:00
Aere Network
e63135ed39 Seals stated as many as the quorum, proving that those validators signed, not that the block was decided (AIP-22 erratum of 2026-10-01) 2026-10-01 19:11:34 +03:00
Aere Network
1bd3f5b587 SPEC and anchor README: the certificate exception stated exactly (an anchor can be certified over the undecided sibling of the decided block; measured in a fixture, not exercised), with both adversaries; internal finding identifiers replaced by descriptions 2026-10-01 18:33:22 +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
6765c0d2b2 anchor corpus: the consensus sources the fleet runs today (commit seal signed once per round, round-change round cap, anchor lapse guard, tests) 2026-09-29 16:20:57 +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
a7fa601e97 docs: the anchor cadence is every 128th block from 17,225,968 (2026-09-05), not every 32nd; the minimum is six of each scheme, of ten validators since 2026-09-11; fork depth bound and checkpoint period restated for 128 2026-09-28 01:15:22 +03:00
Aere Network
93f9d5839b anchor: the propagation adoption gate (rule C, D-412) is OBSERVE by default - it computes the same verdict and adopts, logging 'would NOT adopt'; ENFORCE only with aere.d412.adoptionGate=enforce. On the public testnet the enforcing form froze a validator that had missed one height's commit messages (D-419). Adds PqTipAdoptionGateModeTest. LICENSING.md regenerated over the 209 files the package carries. 2026-09-27 20:35:53 +03:00
Aere Network
846f437724 anchor: finality tags (B1), propagated-tip adoption gate (Rule C), parallel SLH-DSA signing; stage-5 re-proposal and codec fixes
- AerePqFinalityTags: eth_getBlockByNumber("finalized"/"safe") answers the parent of the last canonical anchor that carries a
  post-quantum certificate (v1 Falcon list or v2 scheme-tagged); monotonic, never moved back by a reorg. Fork choice, validity
  and import are untouched.
- PqTipAdoptionGate / PropagatedBlockAdoptionGate: from the header-seal stage, a validator does not adopt a propagated block at
  its own consensus tip without a post-quantum commit quorum for that exact hash, re-verified against the anchored registry.
  Inert below that stage; readers and the sync path are not gated.
- ParallelSigning: SLH-DSA-SHA2-128s signing spreads the message-independent work (the hypertree layers' authentication paths
  and the FORS trees) over the available cores; the output is byte-identical to Bouncy Castle 1.80 (SlhDsaParallelSigningTest
  compares against the original for several keys and message lengths and counts the tasks that ran on the pool). Kill switch:
  -Daere.pq.slhdsa.parallel=false. The engine files are regenerated from the pinned Bouncy Castle sources; the MIT licence stays
  alongside them.
- Header-seal stage: a block re-proposed in a later round carries the seal of that round's proposer; the QBFT codec requires a
  32-byte vanity field at every height. Comments translated to English throughout.
2026-09-27 04:23:45 +03:00
Aere Network
c0e6b62d71 anchor/README.md: ancora la fiecare al 128-lea bloc (la 32 pana la 17.225.968) 2026-09-24 22:38:50 +03:00
Aere Network
344ba39314 anchor: the corpus carries AIP-22 stage 5 (headers sealed by the proposer's post-quantum seal, no ECDSA committed seals) and the stage-3b correction (a commit's hybrid seal judged with the v3 epoch's key) 2026-09-24 02:29:37 +03:00
Aere Network
71412b9792 anchor: the corpus carries AIP-22 stage 4 (message authorship from VERIFIED post-quantum seals, the startup guards AERE-PQC-FIN-01/02/03, the checkpoint option), unarmed on chain 2800 and proven on testnet 28001 (H_fin 3,117,000); the armed-on-2800 table says so row by row; LICENSING.md lists the new files 2026-09-23 22:48:38 +03:00
Aere Network
099908a4ca anchor: the corpus carries the AIP-22 stage 1 to 3b code (per-scheme intervals, post-quantum validator identity, v3 key registry, key rotation under an id), unarmed on chain 2800 and proven on testnet 28001; the armed-on-2800 table says so row by row; LICENSING.md lists the new files 2026-09-23 20:08:22 +03:00
Aere Network
1fba9df623 anchor/README: the six-of-nine quorum sentence is dated now that the set is ten; RUN-A-NODE: what the emergency-ceiling ERROR stream is and what a real refusal looks like 2026-09-12 01:51:12 +03:00
Aere Network
7d40356aeb bootnodes: the second published address is withdrawn since 2026-09-11 (its host no longer fits the rule that a bootnode is not a validator; a replacement public read host follows); anchor corpus re-staged from the overlay (read-path classes and their tests, controller import-time retry) 2026-09-11 15:00:59 +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
Aere Network
e604ca0387 anchor: translate the last Romanian comment on a production path
BlockTimer.java carried a Romanian one-liner explaining why the anchor
proposal-delay configuration is loaded at construction rather than lazily. The
explanation matters and is kept in full, in English: a lazily-loaded consensus
setting turned an unreadable file into 125 seconds of halted chain on 2026-09-03,
while every configuration gate stayed green because the files existed.

Production strings and comments are read by people who do not speak Romanian.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-08 17:01:32 +03:00
Aere Network
1df188ab98 Apache-2.0 section 4(b): the nine upstream files this package ships as modified copies now carry the change notice, next to the upstream copyright header, which is left exactly as found (4(c)). The list was derived from the licence gate's own output, not written by hand 2026-09-06 14:13:51 +03:00
Aere Network
32ca7453e0 Anchor corpus at the live overlay: hybrid v2 certificate (Falcon-512 + SLH-DSA-SHA2-128s), in-tree SLH-DSA engine on the JDK digest (Bouncy Castle licence alongside), seal-store fix (D-339), anchor interval schedule; docs and SPEC 1.2.0 state the arming heights measured on the fleet on 2026-09-05 2026-09-05 07:48:07 +03:00
Aere Network
985bc961f4 anchor/README: the staging script is cited as an operator-repository path and declared 2026-09-02 21:46:50 +03:00
Aere Network
2b73bcb961 Prove that consensus safety does not depend on the transport
The network layer authenticates peers by their secp256k1 node key, and consensus
messages are routed by the address derived from it. An adversary who recovers a
validator's ECDSA key therefore gets everything the transport can give: it completes
the handshake as that validator and signs syntactically perfect messages that recover
to its address. This test models exactly that adversary - full ECDSA compromise, no
Falcon key - and requires all four hot-path messages to be refused while the
post-quantum enforcement is armed, with a harvested seal replayed across message
kinds, blocks, heights, rounds, chains, and from another validator entirely.

The honest form of the claim: the transport is not post-quantum, and breaking it
does not buy a break of safety. It says nothing about liveness.
2026-09-01 01:52:18 +03:00
Aere Network
2ac6ecc316 Prove scheme agility of the proposal and round-change enforcements
One shared harness for both surfaces (the twin-class lesson applied in advance):
a seal made with SLH-DSA passes through the same untouched consensus code, and a
Falcon seal against an SLH-DSA registry is refused on both surfaces. The Falcon
nail sits only in the production wiring, for all three message enforcements.
2026-09-01 00:28:13 +03:00
Aere Network
473832438c Consolidate twin test classes: one copy of each proof
Twelve test classes existed twice, under a neutral name and under an internal
inventory name, ~4,600 duplicated lines. Two copies of the same proof diverge
silently: one receives a repair and the other does not - which is exactly what
happened once, and what the cache-hygiene test below documents. The neutral
names survive; per pair the test counts are identical, and the only code
difference (a warm-up window constant) exercises the same path and the same
assertion. The cache-hygiene reproduction now runs the surviving class's
lifecycle, unchanged in what it asserts.
2026-09-01 00:13:42 +03:00
Aere Network
7242a2c388 The round-change now carries an optional post-quantum seal, disarmed by default
The last hot-path QBFT message under the same pattern as prepare and proposal:
its own domain AERE-PQ-ROUNDCHANGE-1 over (chainId, height, targetRound, prepared
metadata - so a bare 'move on' seal cannot be replayed as 'move on and re-propose
THIS block'), a separate emission gate (aere.pq.roundChangePq.attachBlock), a
separate enforcement height (aere.pq.roundChangePq.forkBlock) self-wired into the
payload validator so it also judges round-changes inside proposal justifications,
and byte-for-byte upstream encoding when no seal is present. The seal is signed
once and the same object goes on the wire; Falcon signatures are randomised, so
a re-signing would put a different message on the wire than the one handled
locally.
2026-09-01 00:03:54 +03:00
Aere Network
a9af2de488 The wire copy of a sealed proposal now carries the seal, proven on a test network
The first witness run caught a real gap: the proposal was signed twice - once for the
local copy, once for the wire - and only the local copy carried the proposer's Falcon
seal. Locally sealed, unsealed on the wire: with enforcement armed, the fleet stopped at
the enforcement height even though every node was emitting. Falcon signatures are
randomised, so the fix is structural rather than cosmetic: the proposal is built once,
seal included, and the transmitter sends that same object - two signings would produce
two valid and different proposals from the same proposer.

A new plumbing test refuses the defect's return: it fails if the transmitter's wire path
ever builds its own payload again. On the test network after the fix: emission covered
seven of seven proposers, each sealing exactly its first proposal past the gate; with
enforcement armed and emission on, the chain crossed the enforcement height with zero
refusals; with emission off it stopped exactly one block short of the height, every
refusal logged; and one unarmed node could not keep the chain alive.

Still armed nowhere: the properties are unset, and unset means never.
2026-08-31 15:36:42 +03:00
Aere Network
3afe906fb2 The proposal now carries an optional post-quantum seal, disarmed by default
The remaining hot-path gap, stated precisely because the imprecise version oversells: with
PREPARE enforcement armed, an ECDSA-breaking adversary cannot finalize anything, since
"prepared" needs a full quorum of PREPAREs. What forged proposals could still do is OPEN
rounds and waste them. With proposal enforcement armed, a proposal without a valid Falcon
seal from its own proposer does not open a round.

Same pattern as the PREPARE layer, deliberately: an optional fifth payload element that
leaves the unsealed encoding byte-identical to upstream; a third, separate emission gate;
enforcement self-wired in the payload validator so no refactor can drop it silently; its
own domain over (chainId, height, round, digest), tested in both directions so an honest
offer seal cannot be replayed as a vote nor a vote seal as an offer.

Nothing is armed anywhere: the properties are unset, and unset means never. The armed-
layers table in the README says so, and says what stays classical: the ROUND-CHANGE
message itself and node-level devp2p authentication.

1,042 tests, 0 failures, counted from the XML. The enforcement's negative control ran at
5 of 5: four planted defects each turned the suite red, the untouched source stayed green.
2026-08-30 13:38:33 +03:00
Aere Network
4ef6565275 Apply the isolation guard one twin had and the other lacked
D140FleetRestartArmingTest did not clear the aere.pq.* properties and the per-JVM anchor
config cache in setUp, while its twin PqFleetRestartArmingTest has done so since 20 August
2026. Without it the class is green on its own and red inside the full suite, on identical
sources, because a neighbouring class leaves an armed anchor config cached.

That is the concrete cost of keeping two copies of a test: a repair lands in one and not
the other, and nothing fails to say so.

1,012 tests, 0 failures.
2026-08-29 18:50:10 +03:00
Aere Network
a7b24b8f30 Bring the published anchor overlay level with the tree we run, and say which layers are armed
The first publication of this directory, on 11 August 2026, was staged by hand and was
never refreshed. Measured on 29 August: of the 78 files published here, only 14 were still
identical to the tree we run, 63 had changed, and 50 files had never been published at all.
Nobody was hiding anything; there was simply no tool that could redo the selection, so
nobody redid it. There is one now, and it derives this directory from the authoritative
overlay rather than from anyone's memory.

Two things in here contradicted themselves, and both are fixed rather than trimmed.

The README withdrew, in one section, a claim that the source next to it still made: that
from block 14,050,000 a per-block 2f+1 Falcon quorum was required for a block to finalize.
The rule that property arms is retired at the anchor block, so it was inert on arrival.
Three places in the code said otherwise and now carry the correction with its date. The
old text is kept, not deleted: the rule is real code and can be armed on a chain that never
reached an anchor block. What was missing was that on chain 2800 it does not apply.

The terminology section said the certificate is signed by f+1 validators and "not by a
quorum", and invited the reader to count. Since 14,961,456 the enforced minimum is six of
nine, which is a quorum, and the paragraph had not been revised. It now says so, with the
date it changed, and adds the two things that make the claim defensible: the word applies
only at anchor heights, and the higher threshold costs liveness margin.

New in this directory: the post-quantum seal on PREPARE, the hybrid Falcon + SLH-DSA scheme
layer, and the test suites for both. Neither is armed on any network, and the README now
carries a table saying which layers are armed on chain 2800 and which are only present.
They are disarmed by absence rather than by a flag: the properties that arm them are unset,
and unset means never.

Not published, and it is the same three files every time: the negative-control harnesses.
They plant a defect on purpose to prove a guard can fail, which makes them a recipe for
disabling a guard rather than a description of one. What they prove is stated in the README.

Per-file SHA-256 in MANIFEST-sha256.txt. 1,012 tests, 0 failures, counted from the XML.
2026-08-29 18:39:31 +03:00
Aere Network
249da4ff7c Terminology: the anchor certificate is a quorum since 14,961,456, and this document said both
Line 23 stated the enforced minimum is six of nine, a full 2f+1 quorum. Line 192 stated
the certificate is signed by f+1 validators, not by a quorum, and that we do not call it
one - inviting the reader to count. The terminology paragraph was written when the
threshold was three, where it was true, and was not revised when the threshold was raised
on 21 August 2026. A document that asks to be counted and does not survive the count loses
more than the paragraph.

Corrected without deleting the distinction, and with the two things that were missing and
without which the claim is not defensible: the word quorum applies only at anchor heights,
about every 32nd block, and the blocks between them carry no Falcon seals at all; and the
higher threshold costs liveness margin, since at six of nine three late validators stall an
anchor block where three of nine tolerated six.

Not pushed. Publishing is the founder's decision.
2026-08-29 18:18:15 +03:00
Aere Network
9109adce96 Anchor threshold raised to a full 2f+1 quorum: since block 14,961,456 (August 21, 2026) an anchor block does not finalize without at least six of nine valid Falcon-512 validator seals; measured on-chain before this text changed 2026-08-22 12:49:41 +03:00
Aere Network
ac7c0adaa5 Precision fix 2026-08-19: the three-seal anchor minimum has been enforced since 2026-08-14 (the schedule step is at block 13,034,000 but an emergency ceiling held the effective minimum to one until then); anchors universal since block 13,889,296 2026-08-19 15:46:53 +03:00