aere-docs/AERE-PQ-SCREEN-SUMMARY.md
Aere Network e4cead319d 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:01:36 +03:00

4.1 KiB

Spec 7: AerePQ-Screen (post-quantum compliance passport) - SUMMARY

What was built

Institution-grade post-quantum compliance passport for Aere Network, built ON the existing compliance stack (AereZKScreen, AereCompliancePool, AereSanctionsRegistry, AerePQCKeyRegistry) without modifying any deployed contract. Three new contracts + 1 test + 1 doc.

Files (all new)

  • aerenew/contracts/contracts/compliance/AereTrustRegistry.sol
  • aerenew/contracts/contracts/compliance/AereVerifiableCredential.sol
  • aerenew/contracts/contracts/compliance/AereBitstringStatusList.sol
  • aerenew/contracts/test/aere-pq-screen.test.js
  • aerenew/docs/AERE-PQ-SCREEN.md

1. AereTrustRegistry (federated accredited issuers, eIDAS-2.0-in-spirit)

  • Foundation (Ownable, OZ v4.9.6) = trusted-list operator. Federated SET of accredited issuers.
  • Issuer entry: controller/address (issuer id), did:aere DID, scope (bytes32 credential-type tags), status (None/Active/Suspended/Revoked), optional Falcon-512 pqcKeyId in live AerePQCKeyRegistry.
  • Fail-closed isAccredited; append-only status + scope history (no silent rewrite); terminal revocation.
  • verifyIssuerSignature() routes Falcon-512 verify to live AerePQCKeyRegistry.verifyWithKey -> 0x0AE1.

2. AereVerifiableCredential (W3C VC 2.0 anchor + verify)

  • Credential struct: issuerId, subjectDidHash (did:aere, hash only, no PII), credentialType, validFrom/ validUntil, statusListId+statusIndex (W3C BitstringStatusListEntry), claimsHash (off-chain claims commit).
  • verifyPresented / isValid check: accredited + Falcon-512 sig via 0x0AE1 + within-validity + not-revoked.
  • anchorCredential fail-closed, relayable (authorship = PQC sig); isValid re-checks live (flips on suspend/revoke). anchorCredentialWithDid binds+emits did:aere string (enforces prefix + hash match).

3. AereBitstringStatusList (W3C Bitstring Status List + zk non-revocation)

  • On-chain bitset (256-bit words), Revocation (monotonic/terminal) or Suspension (reversible) purpose.
  • Controller-only mutation, no silent no-op. getWord exposes raw words for off-chain commitment.
  • zk non-revocation: INonRevocationVerifier (SP1 gateway ABI: verifyProof reverts on invalid), public-input shape DEFINED (chainId, statusListContract, statusListId, statusRoot, credentialCommitment, purpose), on-chain freshness binding (statusRoot==publishedRoot AND rootEpoch==epoch), fail-closed NonRevocationNotConfigured. The SP1 CIRCUIT itself = [MEASURE].

REAL test result

npx hardhat test test/aere-pq-screen.test.js from aerenew/contracts: 12 passing (2s). solc 0.8.23. Uses repo MockPQCPrecompile at 0x0AE1 (scheme 1 Falcon-512) via hardhat_setCode, same as erc8004-adapters test. Covers: accreditation lifecycle + append-only history + terminal revocation + fail-closed accreditation; PQC-signed credential verify+anchor (0x0AE1), relayable; revocation via status list flips verify to false; wrong-scope issuer cannot issue; tampered Falcon sig fails closed (nothing anchored); issuer-suspension fail-closed + reinstatement recovery; expiry rejection; did:aere subject binding (mismatch + non-aere rejected); zk non-revocation stub shape

  • freshness (mock SP1) + fail-closed unconfigured path.

[MEASURE] flags

  • SP1 non-revocation circuit NOT implemented (interface + public-input shape + freshness binding are).
  • Bitstring status root is controller-attested via publishStatusRoot; on-chain/in-VM derivation pending.

[VERIFY] flags

  • Exact W3C VC 2.0 JSON serialization / member names.
  • ONCHAINID claim-topic <-> credentialType mapping for concrete ERC-3643 interop.
  • Finalized did:aere method registration + full DID Core syntax validation.
  • W3C-recommended minimum status-list size (herd privacy) at deployment.

Scope honesty

  • PQC signature path is REAL (Falcon-512 via live 0x0AE1); consensus stays classical ECDSA QBFT.
  • No PII on chain (DIDs are identifiers; claims committed by hash; status list is anonymous bitset).
  • Institutional ADOPTION / eIDAS accreditation is a partnership/regulatory matter, NOT claimed in code.
  • No em-dashes in prose; brand "Aere Network"/"Aere", ticker AERE.