Commit Graph

5 Commits

Author SHA1 Message Date
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
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
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
Liviu
820ae134f7 Carry the Apache 4(b) and 4(d) notices the anchor was missing
Caught by our own licence gate the minute the anchor went up, which is the only
reason this is a same-day correction rather than something a reader finds first.

Two separate requirements, both real:

- section 4(b): the twenty upstream files this overlay modifies must carry a
  prominent notice that we changed them. They did not. They do now, placed after
  the upstream copyright header rather than over it, because 4(c) requires that
  header to survive untouched. It does: eighteen still read "Copyright ConsenSys
  AG.", two "Copyright contributors to Besu."

- section 4(d): NOTICE must carry the attribution notices of the work this
  derives from. It named Hyperledger Besu only, while the files themselves carry
  three distinct notices. All three are now reproduced. Naming one of three was a
  smaller truth than the files tell.

The patch is regenerated from the corrected files and re-verified end to end, not
assumed: git apply --check and git apply both 0 on a pristine d2032017 checkout,
the resulting tree byte-identical to anchor/ (75 files compared, 0 differences),
and 605 tests with 0 failures across consensus:common and consensus:qbft.
2026-08-12 02:28:48 +03:00
Liviu
56a02656aa Add the post-quantum certificate anchor for QBFT
This is the code that puts a post-quantum validator certificate under the block
hash. It is the thing this project exists to do, and it is published so that the
claim can be checked rather than believed.

What it is. In QBFT the block hash is computed over a re-encoding of the decoded
extraData with the seals removed, so anything the decoder does not know about is
dropped before hashing. Appending a certificate as a new element gives you a
certificate that is stored, gossiped, and entirely absent from the hash. The
design that works instead puts a 32-byte digest of the certificate into
vanityData, which is already under keccak. anchor/README.md sets out the four
designs that died before this one and why.

Scope, stated in the README and repeated here because it matters: consensus on
chain 2800 is classical secp256k1 ECDSA. This binds a post-quantum certificate to
the block hash. It does not make consensus post-quantum and is never described as
such.

What is here: the anchor, the validation rules, the wiring, and the tests,
including the negative controls. Applied to upstream d2032017bb, the pinned base
named in anchor/BASE.txt. One build file changes, by one line, and the README says
which and why. No cryptography is implemented here; Falcon verification calls
Bouncy Castle.

What is not here: no keys, no fleet configuration, and nothing about what is armed
on any running network.

Measured before publishing, on upstream d2032017bb with this overlay applied:
consensus:common and consensus:qbft, 605 tests, 0 failures, identical to the same
tree before this work, class by class.

Three things were found while preparing it, and all three are fixed here:
- the code spoke Romanian in 134 comment lines and 43 strings, 37 of them on
  production paths, which is to say in the messages a node prints when it refuses
  to start. An auditor given the code to check the guards could not read the
  guards.
- ten test classes carried internal issue numbers in their names. They now say
  what they test.
- the suite was green partly by ordering luck. One class cleared its system
  properties but not the configuration PqAnchorProducer remembers, so it left the
  anchor armed for whichever class ran next. Renaming the classes changed the
  order and four tests began failing on a guard that was firing correctly. Fixed
  where it leaks, with the negative control measured: remove the line and the
  pair goes red, restore it and it goes green.
2026-08-12 01:43:58 +03:00