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.
25 KiB
Aere Network: Reproducible Benchmark Report (spec-18)
Status date: 2026-07-19 Chain: Aere Network mainnet, chain ID 2800 (Hyperledger Besu QBFT). Scope: chain performance, zkVM proof-verification economics, and post-quantum cryptographic-operation gas, stated with a hard separation between what is freshly measured, what is cited from a committed repo artifact, and what still needs a measurement command run.
The absolute rule this report obeys
No performance number (TPS, latency, gas, proof size, proving time) appears here
unless it was either (a) freshly measured by running a command this session, or
(b) found in a committed repo artifact that is cited by path. Anything that
cannot be measured or sourced is written as a measurement command and marked
[MEASURE]. Anything sourceable only from memory and not yet confirmed against
code is marked [VERIFY]. A fabricated benchmark would be a catastrophic
failure of this document, so the labels below are load-bearing, not decoration.
Label legend
| Label | Meaning |
|---|---|
[MEASURED-FRESH] |
Run by this report on this machine, output shown or summarized. |
[CITED: path] |
Value read from a committed repo artifact at the cited path. |
[MEASURE: cmd] |
Not measured here. The command that would measure it is given. |
[VERIFY: note] |
Sourceable but needs confirmation against live code or a live node. |
Scope boundary that never moves
Aere Network validators sign classical secp256k1 QBFT consensus messages. Nothing in this report makes Aere consensus post-quantum. The post-quantum work is an application and account layer capability. Any claim of post-quantum consensus would be false and is not made here.
PART A: CHAIN PERFORMANCE
A.0 The one honesty point, stated first
The "273,000 TPS" figure is an ARCHITECTURAL CEILING derived from block-space arithmetic under ideal conditions. It is NOT the live mainnet transaction rate, it has never been a measured result, and it is not asserted as one. Three distinct quantities must never be conflated:
| Quantity | Value | Label |
|---|---|---|
| Architectural ceiling (design maximum) | ~273,000 TPS | [CITED], explicitly labeled a ceiling |
| Testnet-measured L1 throughput | none exists | see A.1 |
| Live-mainnet-observed throughput | far below the ceiling, demand-limited | see A.1 |
[CITED: aerenew/docs/WHITEPAPER-V2.md lines 73, 117, 633; aerenew/docs/wp2-sections/01-overview.md:59; 02-architecture.md:21; 09-governance-roadmap.md:294]
The whitepaper states it verbatim: the block parameters "admit a design ceiling
on the order of 273,000 transactions per second; this is a theoretical maximum
implied by the gas and block configuration, not a measured or sustained figure,
and realized throughput on the live network is a small fraction of it." It is
described as "a design ceiling derived from block-space arithmetic under ideal
conditions" that "has never been a measured result."
On the derivation itself. The repo labels 273,000 as a block-space-arithmetic ceiling but does not publish the explicit factors. The two facts that are sourceable:
- Block period 0.5 s.
[CITED: aerenew/docs/wp2-sections/02-architecture.md:19; genesis-subsecond.json (blockperiodmilliseconds: 500)] - Genesis block gas limit is ambiguous across genesis artifacts:
0x2625a00(40,000,000) inaerenew/genesis.json, versus0x1fffffffffffff(9,007,199,254,740,991, effectively unbounded) inaere-genesis-current.jsonandgenesis-subsecond.json.[VERIFY: which gas limit is live on 2800]
Implied arithmetic (transparent, not a new claim): 273,000 TPS at a 0.5 s block
is 136,500 tx per block, and at the 21,000-gas simple-transfer floor that is
about 2.87 billion gas per block. That is far above the 40M limit and far below
the effectively-unbounded limit, so the ceiling presumes an effectively-
unbounded block gas limit AND the cheapest possible transaction, not the
EIP-7825-capped realistic workload the chain actually runs. [VERIFY: publish the explicit block-space arithmetic behind 273,000 so the ceiling is reproducible]
A.1 Testnet-measured and live-observed throughput (the honest gap)
There is no testnet measurement that validates 273,000 TPS for L1. The closest measured throughput number in the repo is a rollup-executor microbenchmark, and the artifact that produces it says plainly it neither reaches nor implies the ceiling.
[CITED: aerenew/parallel-executor/BLOCKSTM-ENDTOEND-THROUGHPUT-2026-07-13.md section 7]
The Block-STM end-to-end harness measured about 247,000 to 270,000 TPS at
gas=80 on a 16-vCPU box, but this is (a) the rollup executor with a light
commit proxy, not L1, not a real Merkle Patricia Trie, and (b) entirely a
function of the assumed per-transaction cost: the same box reports 115,000 to
500,000 TPS as the per-transaction weight changes. The gas=80 proximity to
273,000 is called out in the artifact as a coincidence, not a validation.
Live mainnet 2800 runs far below the ceiling, and this is by demand, not by
capacity. [CITED: aerenew/research/specs/spec-zk-stack.md section 0.2; aerenew/docs/wp2-sections/01-overview.md:59]
On-chain usage is thin (single-digit proof records for most verifiers; six
genesis user wallets per project memory). Real throughput is demand-limited, not
capacity-limited: the chain has ample block-space headroom and almost no load to
fill it. [MEASURE: sample a live window with eth_getBlockByNumber over N recent blocks against https://rpc.aere.network and divide total tx by elapsed time to publish an observed sustained TPS; expected result is near zero on an idle chain]
A.2 Block time and finality
Deterministic single-slot QBFT finality at a 0.5 s block period. Because QBFT
finalizes on commit rather than by accumulation of work, a transaction is
irreversible in well under a second from inclusion, with no confirmation count
and no reorg. [CITED: aerenew/docs/wp2-sections/02-architecture.md:19]
The 0.5 s period was reached by a mid-chain QBFT parameter change at block
2,138,451, halved from the launch value of one second, with no re-genesis.
[CITED: aerenew/docs/wp2-sections/01-overview.md:59; aerenew/docs/WHITEPAPER-V2.md:73; genesis-subsecond.json (blockperiodseconds: 0, blockperiodmilliseconds: 500)]
Finality is a latency-to-irreversibility claim and is separate from throughput. The 0.5 s finality claim follows mechanically from QBFT plus the block period; it says nothing about TPS.
A.3 Parallel execution (Block-STM): the honest result
The honest result has three parts, and only the first is a mainnet-relevant guarantee. No end-to-end L1 throughput win is claimed, and Block-STM is NOT enabled on L1.
(1) Correctness proven bit-identical to sequential. [MEASURED-FRESH] This
session ran the executor's bench on this Windows dev machine. The
parallel==sequential gate (committed state and keccak state root identical to
the sequential oracle) passed on all four conflict profiles:
LOW-CONFLICT parallel==sequential check: PASS
MEDIUM-CONFLICT parallel==sequential check: PASS
HIGH-CONFLICT parallel==sequential check: PASS
PATHOLOGICAL parallel==sequential check: PASS
This corroborates the cited larger runs: a 6,000-comparison correctness harness
with 0 mismatches, and a re-import plus validation of 253 real exported blocks
with zero state-root mismatch. [CITED: aerenew/parallel-executor/BLOCKSTM-ENDTOEND-THROUGHPUT-2026-07-13.md section 3 and section 8]
(2) Near-linear execution-phase scaling on parallelizable workloads.
[MEASURED-FRESH] on this machine (fewer physical cores than the reference
16-core Linux box, so absolute speedup is lower, which is expected and honest):
| Workload (this box, 16 threads) | speedup vs sequential | abort% |
|---|---|---|
| Low-conflict (~2%) | 4.36x | 0.3% |
| Medium-conflict (~15%) | 4.96x | 2.3% |
| High-conflict (single hot counter) | 1.92x | 24.8% |
| Pathological (all same slot) | 0.43x (correctly slower) | 11.5% |
[CITED: same artifact, section 4-5] The reference 16-core Linux box measured
about 8.3x to 9.4x execution-phase and about 8.3x to 9.1x end-to-end on realistic
0 to 50 percent conflict. The pathological all-same-slot profile is honestly
slower than sequential (correct Block-STM behavior), on both boxes.
(3) No end-to-end throughput win claimed, and not on L1.
[CITED: aerenew/research/specs/spec-parallel-execution.md section 9; BLOCKSTM-ENDTOEND section 7-8]
The Aere L1 mainnet executes sequentially on Besu. The parallel executor is a
bounded four-kind VM (Transfer, Sweep, Increment, AmmSwap) over a balance and
storage map, not a full EVM, and its measured speedups are single-machine
microbenchmarks, not a network throughput or TPS claim. The real forked client's
commit path was separately measured to anti-scale (parallel commit was slower
than sequential), so the real-client end-to-end ceiling is tighter than the Rust
harness, not looser. The invariant deliverable is the correctness gate plus the
speedup curve and its Amdahl bound, not an absolute TPS.
PART B: ZKVM COMPARATIVE (SP1 vs RISC Zero vs Halo2)
Every cell is labeled. Gas and proof-size values that are cited come from repo
deployment artifacts and are measured single-run values, not benchmarked
averages (the source spec states this explicitly). [CITED: aerenew/research/specs/spec-zk-stack.md footer]
B.1 Comparison table
| Prover (version) | Proving time (off-chain) | On-chain gas to verify | Proof size | Verification latency |
|---|---|---|---|---|
| SP1 Groth16 (v6.1.0) | app-dependent, CITED single-runs: zkscreen ~72 to 75 s, over18 ~71 to 73 s, zkml-mnist ~200 to 205 s, aggregation Groth16 526.1 s [CITED: contracts/deployments/proof-aggregator-scale.json] |
~300k typical [CITED: spec-zk-stack section 2]; measured records: storage-proof 348,345, zkML 326,492, aggregation ~390k flat [CITED: proof-aggregator-scale.json, zkml/storage-proof artifacts] |
~260 to 356 bytes [CITED: spec-zk-stack section 2] |
one staticcall, final at next block (~0.5 s) [MEASURE: time eth_call wall-clock] |
| SP1 Plonk (v6.1.0) | [MEASURE: prove a fixture with the Plonk prover] |
"somewhat higher than Groth16" [CITED: spec-zk-stack section 2], exact [MEASURE] |
[MEASURE] |
one staticcall [MEASURE] |
| RISC Zero Groth16 (5.0.0-rc.1) | [MEASURE: r0vm prove the factor-guest], not recorded in repo |
[MEASURE: eth_call gas on RiscZeroVerifierRouter.verify], no gas number committed |
seal 260 bytes [CITED: contracts/deployments/risc0-verifier-fix.json sealLen] |
one staticcall [MEASURE] |
| Halo2 (bn254 / KZG, SHPLONK) | [MEASURE: halo2 prover on the cubic circuit] |
~449,517 gas [CITED: contracts/deployments/halo2-cubic.json; spec-zk-stack section 6] (revm gas ~300,144) |
1,152 bytes [CITED: same] |
one call [MEASURE] |
| KZG / EIP-4844 point-eval precompile (0x0A) | n/a (precompile, no prover) | ~255,719 gas [CITED: contracts/deployments/kzg-verifier.json; spec-zk-stack section 5] |
192-byte precompile input [CITED: same] |
one staticcall |
Notes on the two recursion facts worth keeping, both [CITED: proof-aggregator-scale.json; spec-zk-stack section 7]:
- A 10-proof recursive SP1 aggregation records on-chain in ~393,844 gas, roughly flat versus the 3-proof fold (~387,858 gas). Constant on-chain verification cost regardless of fold count is the point of recursion.
- The proving side of that same 10-fold cost 526.1 s for the aggregation Groth16 plus 988 s of inner proving (measured, off-chain, single run).
B.2 Routing logic (which prover for which job, and why)
[CITED: aerenew/research/specs/spec-zk-stack.md sections 1-3, 7-11] Routing is
by selector: the first 4 bytes of the proof pick the concrete verifier.
SP1VerifierGatewayroutes SP1 proofs by leading selector (Groth16 route0x4388a21c, Plonk0x5a093a2f).RiscZeroVerifierRouterroutes a RISC Zero seal by leading selector (0xef6cb709for 5.0.0-rc.1).
Which prover is chosen:
- SP1 is the workhorse. Every Aere application circuit routes through SP1:
zk-KYC screen, over-18, zkML MNIST, compliance pool, storage-proof coprocessor,
rollup validity anchor, and the recursive aggregator. The reason is concrete:
smallest proofs (~260 to 356 bytes), lowest typical verify gas (~300k), one Rust
guest toolchain, and native recursion via
verify_sp1_proofinside the zkVM. - RISC Zero is the diversity path. A second independent RISC-V zkVM, kept so the verification surface is not single-prover; a real Groth16 factorization receipt is recorded on-chain.
- Halo2 / KZG is the direct-circuit path. For circuits authored directly as a PLONK arithmetization (bn254 / KZG / SHPLONK), plus the raw EIP-4844 point-evaluation precompile for blob and commitment openings.
The honest framing the source insists on: this is a multi-prover verification surface behind one gateway, unusual to have in one place, but not a claim that no other chain can verify any one of these.
B.3 Why the on-chain-gas column motivates the STARK-verifier roadmap
SP1 Groth16, RISC Zero Groth16, and Halo2 all terminate their on-chain check in a BN254 pairing (Groth16 or KZG). Two problems live in that column: the check costs ~300k to ~450k gas, and BN254 pairing security rests on discrete-log / pairing hardness, which is Shor-breakable. That single elliptic-curve link is the only quantum-vulnerable step in an otherwise hash-based SP1 proof chain.
Roadmap item: replace the BN254 Groth16 wrap with a direct hash-based STARK
verifier. [CITED: aerenew/pqc-fork/pq-stark/README.md; aerenew/docs/PQ-STARK-VERIFIER-PRECOMPILE-2026-07-18.md]
The design is a native precompile at 0x0AE8. The generic verifier skeleton built
so far verifies a BabyBear / Plonky3 FRI STARK directly, with no BN254 wrap, so its
security rests only on hash collision-resistance and Reed-Solomon proximity gaps.
Scope caveat (2026-07-19 research finding) [CITED: aerenew/docs/AERE-STARK-SP1-RECURSION-AIR-PORT-SPEC-SUMMARY.md]:
the six generic components confirmed so far verify BabyBear + FRI STARKs
(Aere's OWN Plonky3 circuits), NOT SP1 6.1.0 proofs. The pinned SP1 6.1.0 is a
Hypercube release (KoalaBear multilinear: BaseFold plus sumcheck-zerocheck
plus LogUp-GKR), so its inner proof is hash-based but NOT a BabyBear FRI STARK, and
FRI plus DEEP-ALI do not apply to it. Replacing the SP1 BN254 Groth16 wrap on real
SP1 proofs is therefore a SEPARATE ~22 to 32 person-week retarget and a founder
decision, not a completion of the skeleton below.
Honest status of that roadmap item, stated plainly [CITED: same README, "HONEST STATUS"]:
it is a REFERENCE SKELETON plus DESIGN. It is NOT audited, NOT a working
verifier for SP1 proofs, and NOT activated on any Aere network. It fail-closes
(returns "not verified" for every input, cannot emit a false accept). The
SP1-recursion-specific crypto core is un-ported, and per the caveat above the
SP1 target is a different (Hypercube) proof system entirely. Mainnet 2800 has
exactly the five PQC precompiles 0x0AE1..0x0AE5; 0x0AE8 is not live anywhere.
PART C: CRYPTO-OP GAS (PQC vs ECDSA)
C.1 Table (measured marginal precompile verify-op gas, with sources)
| Operation | Address | Marginal gas | Full verify-and-record tx gasUsed | Source |
|---|---|---|---|---|
| ECDSA (ecrecover) | 0x01 | ~3,000 | n/a | protocol constant [VERIFY: G_ecrecover = 3000 is a fixed EVM constant, not Aere-specific] |
| P-256 / passkey (RIP-7951, aka RIP-7212) | 0x100 | ~3,450 | n/a | [CITED: aerenew/docs/wp2-sections/02-architecture.md:36; aerenew/research/aip-draft-pqc-precompiles.md section 4, "repo-sourced from the Fusaka notes"] |
| SHAKE256 (FIPS 202) | 0x0AE5 | 60 base + 12/word | 21,470 | [CITED: aerenew/pqc-fork/precompiles/HashToPointPrecompiledContract.java lines 51-52 (BASE_GAS=60, GAS_PER_WORD=12); aip-draft section 3 table] |
| Falcon-512 (NIST round-3) | 0x0AE1 | 40,000 | 86,336 | [CITED: aip-draft section 4 and Reference table] |
| ML-DSA-44 (FIPS 204) | 0x0AE3 | 55,000 | 351,050 | [CITED: aip-draft section 6 and Reference table] |
| ML-KEM-768 (FIPS 203, encapsulation) | 0x0AE6 | 60,000 (fixed) | n/a (KEM, testnet-only) | [CITED: aerenew/pqc-fork/precompiles/MLKEM768PrecompiledContract.java line 73 (GAS = 60_000)] |
| Falcon-1024 (NIST round-3) | 0x0AE2 | 75,000 | 145,496 | [CITED: aip-draft section 5 and Reference table] |
| SLH-DSA-SHA2-128s (FIPS 205) | 0x0AE4 | 350,000 | 558,276 | [CITED: aip-draft section 7 and Reference table] |
All marginal-gas values are the scratch-fork (chain 28099) measured constants;
the verify-and-record tx gasUsed values are on-chain receipts. [CITED: aerenew/research/aip-draft-pqc-precompiles.md Reference Implementation table]
The five signature and hash precompiles (0x0AE1..0x0AE5) are live on mainnet
2800, activated at block 9,189,161. ML-KEM-768 (0x0AE6) and Falcon HashToPoint
(0x0AE7) are KAT-validated on an isolated testnet and remain founder-gated for
mainnet. [CITED: aerenew/pqc-fork/README chain, pqc-fork memory]
Scope reminder attached to this table: these precompiles are an application and account layer capability. They do not make Aere consensus post-quantum.
C.2 Two fresh cross-checks run this session
[MEASURED-FRESH] The SHAKE256 gas schedule (60 base plus 12 per word) is
confirmed present in source, and the HashToPoint precompile's own gas was freshly
computed from that exact source formula (gasRequirement, lines 78-93):
Falcon-512 (n=512) 32-byte message, 73-byte input: words=38 -> gasRequirement = 516
Falcon-1024 (n=1024) 32-byte message, 73-byte input: words=73 -> gasRequirement = 936
516 gas matches the source javadoc's "one ~500-gas staticcall" claim, which is the mechanism by which HashToPoint cuts a full Solidity Falcon-512 verify. This is the precompile's own intrinsic gas; it is distinct from the end-to-end verify gas below, and the two must not be conflated.
[CITED: aerenew/pqc-fork/results/bench-results.json] The HashToPoint-precompile
optimization measured on the scratch fork (chain 28777), full Falcon-512 verify:
9,140,858 gas in pure EVM dropping to 7,186,367 gas with the precompile, a 21.4
percent reduction across 8 test vectors, all accept and tamper-reject checks
passing.
C.3 The honest story the numbers tell
Post-quantum verification is materially more expensive than ECDSA. Ratios below are fresh arithmetic from the cited marginal-gas constants divided by the 3,000-gas ecrecover:
| Scheme | Marginal gas | Cost vs ECDSA (3,000) |
|---|---|---|
| Falcon-512 | 40,000 | ~13.3x |
| ML-DSA-44 | 55,000 | ~18.3x |
| ML-KEM-768 | 60,000 | ~20.0x |
| Falcon-1024 | 75,000 | ~25.0x |
| SLH-DSA-SHA2-128s | 350,000 | ~116.7x |
So PQC verification runs roughly 13x (Falcon-512) to about 117x (SLH-DSA-SHA2-128s) the cost of an ECDSA recover. That premium is exactly what motivates two roadmap directions:
- Aggregation. Amortize one expensive PQC verify across many authentications
rather than paying per signature.
[VERIFY: the specific "AerePQAggregate" contract name is not found in the repo; PQC aggregation is a documented roadmap direction, see aerenew/docs/FRONTIER-PROGRAM-2026-07-12.md] - Finality certificate. Carry post-quantum finality as a certificate over a
finalized block rather than re-verifying PQC signatures per transaction. This
ties to the dual-quorum PQ-consensus design work.
[CITED: aerenew/docs/PQ-CONSENSUS-STEP2-2026-07-18.md]Note the scope line: this is design and attestation alongside QBFT, it does not make consensus post-quantum.
PART D: INDEPENDENT REPRODUCTION
D.1 The strongest benchmarks should be third-party reproduced
The credibility of every number above rises sharply when a party other than Aere reruns it. The honest reproduction candidates, in priority order:
- The Nethermind team (warmest angle). Aere already runs a patched Nethermind
as a second client that validates and follows live chain 2800, and it runs the
PQC precompiles and can produce QBFT blocks Besu accepts.
[CITED: aerenew/docs/wp2-sections/09-governance-roadmap.md:199, 253; NETHERMIND-2ND-CLIENT-LIVE memory]That existing relationship makes them the natural first ask for an independent client-side reproduction of the precompile gas and the consensus behavior. - A university lab. Cheap under a research grant and citable in a way a vendor benchmark is not; a good fit for the Block-STM correctness-and-scaling harness and the zkVM proving-time measurements, which are self-contained and need no Aere infrastructure.
- Explicitly NOT the expensive audit firms. The audit-firm budget is reserved
for the security audit, which is a different deliverable from a performance
reproduction.
[CITED: aerenew/docs/mainnet_authority context; AUDIT-OUTREACH-2026-07-12.md]
The outreach kit is prepared by us. The actual third-party run and the relationship are founder and business gated, not something this report initiates.
D.2 The run-it-yourself manifest (REPRODUCE)
This report is the NUMBERS and how they were measured. The run-it-yourself
commands live in the reproducibility bundle. Today that bundle is split across
several committed files rather than one consolidated REPRODUCE.md; the honest
recommendation is to consolidate them, but each is real and runnable now:
| Domain | Where to run it | File |
|---|---|---|
| Block-STM correctness + scaling (Part A.3, freshly run here) | cd aerenew/parallel-executor && cargo test --release && cargo run --release -- bench and -- endtoend |
aerenew/parallel-executor/BLOCKSTM-ENDTOEND-THROUGHPUT-2026-07-13.md section 10 |
| PQC precompile KATs + gas (Part C) | aerenew/pqc-fork/run-kats.sh, aerenew/pqc-fork/bench/bench.py |
aerenew/pqc-fork/ (results in results/bench-results.json, results/kat-results-*.json) |
| Reproducible Besu client build | docker build ... -f aerenew/node/Dockerfile.reproducible then aerenew/scripts/verify-besu-image.sh |
aerenew/node/REPRODUCIBLE.md (note: public digest manifest publication is still roadmap, so the third-party comparison step is not yet live) |
| PQ-consensus reproduction | committed harness | aerenew/research-stage/formal-consensus/REPRODUCE.md, aerenew/audit-package-pq-consensus/REPRODUCE.md |
[MEASURE: create a single top-level aerenew/REPRODUCE.md that indexes all four domains above with pinned commands, so a third party has one entry point]
Appendix: provenance summary of every number
Freshly measured this session [MEASURED-FRESH]:
- Block-STM
parallel==sequentialgate: PASS on all 4 conflict profiles (this Windows box). - Block-STM 16-thread execution-phase speedup this box: low 4.36x, medium 4.96x, high 1.92x, pathological 0.43x.
- HashToPoint precompile intrinsic gas from source formula: 516 gas (Falcon-512, 32-byte message), 936 gas (Falcon-1024).
Cited from committed repo artifacts [CITED]:
- 273,000 TPS is a design ceiling, never measured (WHITEPAPER-V2, wp2-sections).
- 0.5 s block period, halved at block 2,138,451, single-slot QBFT finality (wp2-sections, genesis-subsecond.json).
- Rollup end-to-end harness ~247k to 270k TPS at gas=80, swinging 115k to 500k, not the L1 ceiling (BLOCKSTM-ENDTOEND section 7).
- Reference 16-core Block-STM ~8.3x to 9.4x exec, ~8.3x to 9.1x end-to-end (same artifact).
- SP1 Groth16 ~300k gas, ~260 to 356 byte proofs; measured records storage-proof 348,345, zkML 326,492, aggregation ~390k (spec-zk-stack; deployment artifacts).
- SP1 proving times: zkscreen ~72 to 75 s, over18 ~71 to 73 s, zkml-mnist ~200 to 205 s, aggregation Groth16 526.1 s (proof-aggregator-scale.json).
- RISC Zero Groth16 seal 260 bytes, 5.0.0-rc.1 (risc0-verifier-fix.json).
- Halo2 ~449,517 gas, 1,152-byte proof; KZG point-eval ~255,719 gas (deployment artifacts, spec-zk-stack).
- PQC marginal gas: Falcon-512 40,000, Falcon-1024 75,000, ML-DSA-44 55,000, SLH-DSA-128s 350,000, ML-KEM-768 60,000, SHAKE256 60+12/word; verify-and-record tx: 86,336 / 145,496 / 351,050 / 558,276 / 21,470 (aip-draft, precompile source, bench-results.json).
- P-256 ~3,450 gas (wp2-sections, aip-draft).
- HashToPoint optimization 9,140,858 to 7,186,367 gas, -21.4% (bench-results.json).
To measure [MEASURE] or verify [VERIFY] (open items):
[MEASURE]Observed live mainnet sustained TPS over a real block window.[MEASURE]SP1 Plonk proving time, gas, proof size.[MEASURE]RISC Zero on-chain verify gas and proving time.[MEASURE]Halo2 proving time.[MEASURE]Wall-clock verification latency per prover.[MEASURE]Consolidated top-level aerenew/REPRODUCE.md.[VERIFY]The explicit block-space arithmetic behind 273,000 TPS.[VERIFY]Which genesis gas limit is live on 2800 (40M vs effectively unbounded).[VERIFY]ECDSA ecrecover 3,000 is a fixed protocol constant (not Aere-specific).[VERIFY]The "AerePQAggregate" contract name (not found in repo; aggregation is a documented roadmap direction).