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.
404 lines
25 KiB
Markdown
404 lines
25 KiB
Markdown
# 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) in `aerenew/genesis.json`, versus `0x1fffffffffffff`
|
|
(9,007,199,254,740,991, effectively unbounded) in `aere-genesis-current.json`
|
|
and `genesis-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.
|
|
|
|
- `SP1VerifierGateway` routes SP1 proofs by leading selector (Groth16 route
|
|
`0x4388a21c`, Plonk `0x5a093a2f`).
|
|
- `RiscZeroVerifierRouter` routes a RISC Zero seal by leading selector
|
|
(`0xef6cb709` for 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_proof` inside 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==sequential` gate: 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).
|