aere-research/PQC-FORK-README.md
Aere Network 4a0b48588c Initial public release
Aere Network public source. Everything here can be checked against the live
chain (chain id 2800, https://rpc.aere.network).

Scope note, stated up front rather than buried: consensus on chain 2800 is
classical secp256k1 ECDSA QBFT. The post-quantum work in this repository is at
the signature, precompile, account and transport layers. Nothing here makes the
consensus post-quantum, and no document in it should be read as claiming so.
2026-07-20 01:02:30 +03:00

44 lines
2.1 KiB
Markdown

# aerenew/pqc-fork - AERE Besu PQC EVM precompiles
Two new native post-quantum precompiles for the AERE Besu PQC fork, built and
KAT-verified on an isolated testnet (2026-07-18). They extend the existing five
(`0x0AE1`..`0x0AE5`). Full write-up: `../docs/PQC-PRECOMPILES-MLKEM-SHAKE-2026-07-18.md`.
| Address | Precompile | KAT |
|---|---|---|
| `0x0AE6` | ML-KEM-768 (FIPS 203) deterministic encapsulation | 25/25 NIST ACVP |
| `0x0AE7` | Falcon HashToPoint (SHAKE256 rejection sampler) | 12/12 (BC vs Python SHAKE256) |
Headline benchmark: native HashToPoint drops a full on-chain Falcon-512 verify from
~9.14M to ~7.19M gas (-21.4%); the HashToPoint step itself drops ~86% (2.28M -> 311k).
## Layout
* `precompiles/*.java` - the two fork EVM precompile classes.
* `besu-pqc-precompiles-mlkem-hashtopoint.patch` - fork -> fork+2 (4 files). Base
commit `d203201`. Adds the two `Address` constants, registers both in
`MainnetPrecompiledContracts.populateForFutureEIPs`, and adds the two classes.
* `kat/` - KAT harnesses: NIST ACVP fetch + ML-KEM runner, HashToPoint generator +
Python SHAKE256 oracle, and a Bouncy-Castle decaps-confirmed ML-KEM backup generator.
* `bench/` - the precompile-backed Falcon verifier variant + gas benchmark (QBFT
single-node genesis, `make-htp-variant.py`, `bench.py`).
* `vectors/` - the exact vectors used. `results/` - JSON pass counts + gas numbers.
* `setup-fork.sh` / `build-dist.sh` / `run-kats.sh` - reproduce the isolated build.
Solidity view wrapper for `0x0AE6`: `../contracts/contracts/pqc/AereMLKEM768.sol`.
## Reproduce
```
bash setup-fork.sh # clone besu@d203201, overlay fork EVM layer, add 2 precompiles, emit patch, compile evm
bash build-dist.sh # ./gradlew installDist (one full build)
bash run-kats.sh # ML-KEM (NIST ACVP) + HashToPoint (Python cross-check) KATs
bash bench/start-node.sh && python3 bench/bench.py # Falcon verify gas with/without 0x0AE7
```
## Scope / honesty
BUILT + KAT-verified on an ISOLATED single-validator QBFT testnet only. Mainnet
precompile activation on chain 2800 is founder-gated and out of scope. Live chain,
validators, gold binary, and infra were touched read-only only.