Commit Graph

105 Commits

Author SHA1 Message Date
Aere Network
31604bab02 tools/verify-proof.mjs: exit 1 from verify-anchor.mjs counts as a failed anchor only with its own verdict line (FAIL:/PROBLEMS:); a verify-anchor.mjs that cannot start (a dependency not installed) now gives UNMEASURED instead of INVALID. proof-vectors/README.md: the notary on chain 2800 holds other digests (since 2026-09-17), none of these vectors; the earlier line said nothing was notarized there. 2026-09-29 11:43:27 +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
c239cbd750 tools/verify-proof.mjs: the chain comes from --chain, else from the chain the envelope's notarization declares (when known), else 2800. An envelope notarized on the testnet 28001 and checked without --chain used to be looked up on 2800 and reported INVALID. The notary stays the known contract of that chain (or --notary); an address written in the envelope is never trusted as the notary. 2026-09-27 20:48:58 +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
71bce697d1 tools/verify-proof.mjs: reference verifier of the AERE Proof Protocol (AIP-23), finality from a state a verified post-quantum certificate covers (anchor via verify-anchor.mjs, parent header bound by hash, Merkle proof of the notary storage); tools/proof-vectors/: conformance envelopes with expected verdicts 2026-09-27 06:43:30 +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
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
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
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
387615b0fb Citations: declaration regenerated against the whole published family (paths in sdk-js and aere-client2 resolve and are no longer listed) 2026-09-24 17:36:27 +03:00
Aere Network
294a041276 Citations: the declaration of unpublished paths regenerated (2026-09-24); cross-repository citations written with their repository name 2026-09-24 17:34:13 +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
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
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
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
5c99d51a3c RUN-A-NODE: the follower BESU_OPTS block carries -Daere.pqtx.forkBlock=19900000 like run-node.sh (the script already set it; the documented block lagged); SPEC 2.7: the seal-window journal opt-out is described as a property value, with its default read from PqSealWindowStore 2026-09-23 12:24:50 +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
0d22adbd62 Patches 0006 (AIP-20, native post-quantum transactions, type 0x50) and 0007 (AIP-21, per-block post-quantum finality record): the recipe now reproduces the chain-2800 fleet distribution of 2026-09-22 (wt3f12ef0d) class for class on consensus and on both AIPs, with the Apache 4(b) notice inside every modified upstream file and 20 lines of context; run-node.sh arms aere.pqtx.forkBlock=19900000 for followers of chain 2800; SPEC 2.7 and 5.3; RUN-A-NODE carries the measured record; LICENSING regenerated 2026-09-23 01:28:43 +03:00
Aere Network
54774eb719 SPEC 1.2.0 amended 2026-09-17: the four enforcement heights have passed (17,250,000 / 17,400,000 / 17,550,000 / 17,700,000, 5-8 September), hybrid keys live since 17,047,600; 'emission only' is dated history; LICENSING regenerated 2026-09-17 21:25:42 +03:00
Aere Network
690340357d LICENSING.md: the regenerator is cited by a path this package does not ship; the citation now names the file a reader can open. Unresolved-citation disclosure regenerated against the full published family 2026-09-12 09:50:41 +03:00
Aere Network
17eee07493 RUN-A-NODE: your clock is the fifth requirement, with the BREACH_OF_PROTOCOL line it produces when it is a second behind 2026-09-12 08:10:31 +03:00
Aere Network
aeee182204 LICENSING: lista fisierelor cu copyright strain e generata din fisierele pachetului, nu scrisa de mana; peticul 0003 arata antetul amontelui pentru build.gradle 2026-09-12 02:22:24 +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
50bf1a07ca precompiles: withdraw the uncitable 'audited' adjective from the patch and the published sources (O-006, D-376) 2026-09-11 21:33:52 +03:00
Aere Network
ba7f09d46d RUN-A-NODE: banda de heap masurata iar la 8,4 milioane (2400m intra in colaps de colectare, 3400m zero colectari complete) 2026-09-11 19:02:55 +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
a2d2db9693 SPEC.md, registries/README.md: ten validators since 2026-09-11 (the tenth is the Nethermind client): f=3, QBFT quorum 7 of 10; the anchor certificate minimum stays 6 seals, now below the quorum; dated history kept 2026-09-11 14:18:32 +03:00
Aere Network
3b085911fa RUN-A-NODE.md: dated note (2026-09-11) on the bootnodes: the second accepts only its configured peers; a node behind NAT keeps one peer and Besu does not fetch transaction-bearing bodies from a single busy peer; forward the P2P port and set --p2p-host 2026-09-11 12:39:33 +03:00
Aere Network
cbaf4e15b9 run-node.sh: GENESIS_SHA256 pinned to the v10 fleet genesis (e5038e6a...) that this package ships since 2026-09-10; the old pin (361709dc...) made run-node.sh refuse its own genesis.json at step 2/6 for ~13 hours (found 2026-09-11 by the from-genesis import proof) 2026-09-11 09:34:49 +03:00
Aere Network
5839eb0468 patches 0001/0003/0004: original messages with the Apache-2.0 section 4(b) notice restored, regenerated from the production tree whose modified upstream files now carry the in-file section 4(b) notice; 20 lines of context so the upstream headers are visible 2026-09-10 22:40:48 +03:00
Aere Network
bc8dc80946 patches 0001/0003/0004 regenerated from the production tree over the same file sets (section 4(b) notices); measured: a build from this recipe reproduces the fleet's consensus jars class by class 2026-09-10 22:08:27 +03:00
Aere Network
5aac751be5 registries/README: the nine-key hybrid registry is dated (superseded by hibrid-10.properties on 2026-09-10) 2026-09-10 21:06:47 +03:00
Aere Network
b54aba6381 follower options re-derived after the fleet dropped attachBlockAcknowledgePast (21 properties) 2026-09-10 20:28:30 +03:00
Aere Network
72468c4c47 registries: manifest-18082816.json and hibrid-10.properties (ten indices, bound at 18,082,816); genesis.json with the third pqRegistryHash entry; follower options re-derived from the live archive node (22 properties) 2026-09-10 20:20:23 +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
367d44d21b SPEC.md was a THIRD copy of the follower configuration, and it had drifted: it was missing aere.pq.hybridRegistry entirely, without which no SLH-DSA seal in a v2 certificate can be verified, and its anchorMinSeals still lacked the two dated steps from 4 September. It is now generated from the same live source as run-node.sh and RUN-A-NODE.md, and the gate compares all three: a value that lives in three places drifts in at least one 2026-09-06 21:24:13 +03:00
Aere Network
b46c815398 RUN-A-NODE: the measured RAM figure for a from-genesis import. The requirement grows with the height: the same import that ran comfortably at 3 M blocks was, at 12.2 M, using 5.96 GB resident with a 3.4 GB heap, old generation 99.8 percent full, four full GCs every five seconds, and no room left to raise the heap. 8 GB is the floor at which a full import stops being practical, not a comfortable size 2026-09-06 20:14:52 +03:00
Aere Network
84a6093517 The heap note, corrected: the first version gave a fraction-of-RAM rule, and the measurement does not support it. Same machine, same database, four values at two heights: 2400m ran at ~82,000 blocks/min up to 8 M and then collapsed to ~640 with the old generation 99.88 percent full and 1,409 full GCs, while 3400m past 9.7 M did zero full GCs at ~28,800. Too large dies of OutOfMemoryError because the storage engine lives off-heap; too small dies of full GC once the post-quantum precompiles make blocks heavier. The advice is now to read jstat, not to pick a fraction 2026-09-06 18:31:54 +03:00
Aere Network
76095a942e RUN-A-NODE: a measured note on JVM heap sizing. On one machine, one database and one chain within a single hour: -Xmx4500m gave 89 OutOfMemoryError and a dead import, 3200m gave ~1,500 blocks/min with repeated download failures, 2400m gave ~82,000 blocks/min with no OOM at all. Heap is not memory: the storage engine keeps its cache off-heap, and at six million blocks that part is larger than the heap. If you see OutOfMemoryError, try a SMALLER -Xmx 2026-09-06 16:23:04 +03:00
Aere Network
46d2a1cfa5 LICENSING.md now records every file that carries a third-party copyright header: 49 rows added, derived by scanning the shipped tree for the same criterion the licence gate applies (its own message truncates the list at five names, so reading the message was not enough) 2026-09-06 14:23:11 +03:00
Aere Network
65611c15a5 Patch 0004 regenerated so the patch ITSELF carries the Apache-2.0 4(b) change notice in the file header, with enough context that the upstream copyright line is visible in the diff: sections 4(c) and 4(d) were previously NOT MEASURABLE from the patch, because the repository does not ship LondonFeeMarket.java and the diff never showed its header. Self-checked: applied to the clean upstream file it reproduces the production file exactly 2026-09-06 14:20:12 +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