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.
5.3 KiB
spec-31: Aere Quantum Migration Toolkit
Status date: 2026-07-19
Location: aerenew/pqc-migration-toolkit/
Runtime: pure Node built-ins (Node 18+), zero runtime dependencies.
What it is
A real, runnable toolkit that helps anyone assess and migrate an EVM account toward post-quantum readiness on Aere Network (chain 2800) or any EVM chain via RPC. It extends Aere's internal account-migration work outward into a usable tool. Three parts plus a self-test and a README.
The four deliverables
-
PQC-readiness scanner,
scan.js. Given an EVM address, detects EOA vs contract, and for contracts scans bytecode for quantum-vulnerable signature primitives (ecrecover 0x01, P-256 0x100) versus Aere's live post-quantum precompiles (0x0AE1..0x0AE5). Outputs RED (classical-only), YELLOW (hybrid), GREEN (PQC-capable). Runnable:node scan.js <address> --rpc <url>, plus offline--bytecode 0x..and--fixture <name>paths. -
Migration SDK,
lib/migrate.js+plan.js. CREATE2 address derivation mirroringAerePQCAccountFactory.predictAddress, calldata builders forcreateAccount(PQC account) andregisterIdentity(hybrid ECDSA+Falcon), and a step-by-step migration plan over Aere's existing live primitives (AerePQCAccount/Factory, AereHybridAuth, AerePQCKeyRegistry, EIP-7702). -
Migration cost simulator,
simulate.js. Estimates migration gas from the MEASURED PQC verify costs (Falcon-512 86,336 verify-and-record tx / 40,000 marginal; hybrid 89,336 / 43,000; Falcon-1024 145,496; ML-DSA-44 351,050; SLH-DSA-128s 558,276), plus the CREATE2 deploy (1,493,084) and the deployed Solidity-verifier path (~10.5M), at the 1 Gwei floor. -
README,
README.md. Honest positioning: Aere is the post-quantum EVM L1 (five live NIST PQC precompiles + a live Falcon-owned account and factory), so it is the natural home for PQC migration tooling. This is a STARTING toolkit, not a finished product.
How the scanner is genuinely honest (not a grep)
- Opcode-aware decoding: walks the instruction stream skipping PUSH immediates,
so a matched constant is a real push (a naive
610ae1substring search false-positives). - Local stack simulation: for every CALL/STATICCALL/DELEGATECALL/CALLCODE it recovers the address argument (2nd stack item) per basic block, so it flags an actual call to 0x0AE1 rather than the number 0x0AE5 used as a memory length. An earlier proximity-only version misread AereHybridAuth as YELLOW for exactly that reason; the stack-simulation version reads it RED correctly.
- Signature-verify addresses 0x0AE1..0x0AE4 are distinctive, so a bare push is a medium-confidence fallback. The common literals 0x01, 0x100, 0x0AE5 count only when resolved as an actual CALL target.
What actually ran (real results, this session)
node selftest.js (no network) ALL PASS:
- keccak256("") == c5d2460186f7233c... (zero-dep keccak is correct).
- predictPqcAccountAddress re-derived the LIVE sample AerePQCAccount address 0xa42a5e7F72E46BadC11367650Ec34D676194326f from its real 897-byte Falcon key (CREATE2 math byte-correct vs a real deployment).
- Scanner on 4 REAL bytecode fixtures: AerePQCAttestation GREEN, AerePQCTxAccount GREEN, AereHybridAuth RED (Solidity-verifier scope limit), AereFalcon512Verifier RED (0x0100 are literals). Synthetic hybrid YELLOW; empty code RED (EOA).
Live against https://rpc.aere.network (the --rpc path is NOT [MEASURE]; it ran):
- AerePQCAttestation 0x465d... => GREEN, chainId 2800, 4402 bytes (matches fixture).
- Foundation EOA 0x0243... => RED, 0 bytes of code.
- createAccount(bytes,uint256) selector 0x0fd8377b computed by the zero-dep keccak is present in the live factory's deployed bytecode.
Scope boundary (restated in tool output)
Migrating account authentication to a PQC scheme does NOT make Aere consensus post-quantum. Mainnet 2800 still seals blocks with classical secp256k1 QBFT, and the ZK verifiers (BN254 Groth16) are classical.
[VERIFY] / [MEASURE] flags carried
- [VERIFY] AereHybridAuth is repo source only; no mainnet address in the address book as of 2026-07-19, so the hybrid path's deploy step is founder/deployer gated (flagged in plan output).
- [VERIFY] Scanner cannot see Falcon verification done via the SOLIDITY AereFalcon512Verifier (a contract call, not a precompile), so such contracts read RED; confirm auth paths against source.
- [VERIFY] ecrecover (0x01) is resolved by stack sim, but the literal 1 is common; a contract with no signature precompile call correctly reads RED.
- [VERIFY] Testnet-only precompiles 0x0AE6..0x0AE8 are not on mainnet 2800.
- [MEASURE] Only the live scan needs network; offline scans and the whole self-test run with no RPC.
Founder-gated caveat
The AerePQCAccountFactory (0xd5315Ea7...CE58) is live and createAccount is permissionless, so deploying a PQC account is possible today. Deploying NEW contracts or a corrected V2 redeploy of an account factory is signed by the Foundation/deployer key, not by this toolkit.
Files
scan.js, plan.js, simulate.js, selftest.js, README.md, package.json, lib/{keccak,bytecode,scanner,migrate,simulate,precompiles,rpc}.js, fixtures/{AerePQCAttestation,AerePQCTxAccount,AereHybridAuth,AereFalcon512Verifier}.hex
- fixtures/index.json (real deployed bytecode extracted from repo artifacts).