aere-docs/AERE-COMPUTE-MARKET-V3-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

3.4 KiB

Spec 10: Aere Compute Market V3 (proof-carrying DePIN)

Delivered

  1. aerenew/contracts/contracts/depin/AereComputeMarketV3.sol (new; deployed V1/V2 untouched)
  2. aerenew/contracts/test/AereComputeMarketV3.test.js (13 tests, all passing)
  3. aerenew/docs/AERE-COMPUTE-MARKET-V3.md

What it does

Proof-carrying compute marketplace. Requester posts a job (specHash, reward escrow, deadline, verification mode); provider claims + runs off-chain; result acceptance depends on the mode:

  • REPLAY (0): deterministic recompute. Result bytes emitted; challenge window; dispute records the challenger's recomputed hash; arbiter resolves.
  • ZK_VERIFIED (1): SP1 proof verified on-chain via the deployed SP1 gateway (ISP1Verifier). publicValues bound to the job (abi.encode(specHash, resultHash), specHash must match). Paid in the SAME tx, only on a valid proof. No other pay path exists for a ZK job.
  • OPTIMISTIC (2): challenge window + provider bond. Successful dispute slashes provider bond to the challenger, refunds requester.

PQC settlement path: any job can set pqcSettlement + an 897-byte Falcon-512 key. Final payout then requires a Falcon-512 signature (verified via live precompile 0x0AE1) over a digest binding (chainId, contract, jobId, provider, token, amount, resultHash). Fail-closed. This is payout authorization only; it does NOT make consensus post-quantum (documented).

Settlement asset: native AERE (address(0)) or an allowlisted ERC-20 (governance-gated allowlist). Bonds always native AERE. No new token.

Fail-closed / invariants (all tested)

  • Escrow solvency: totalLiabilities[token] = sum(open rewards + posted bonds); contract balance always

    = liabilities per asset. isSolvent() view. Asserted after every mutating step in every test.

  • No double-pay: terminal statuses (Paid/Refunded/Slashed) reached once; nonReentrant; CEI ordering.
  • No pay-without-proof (ZK): settle inside submitResultZK after verifyProof (reverts on invalid).
  • No admin drain: no owner, no sweep. Arbiter only routes a DISPUTED job's escrow; governance only flips a token-allowlist bool.
  • Fee-on-transfer/rebasing reward tokens rejected at escrow (received must equal stated reward).

Real test result

npx hardhat test test/AereComputeMarketV3.test.js (from aerenew/contracts): 13 passing (~2s). Covers: ZK pay-on-valid + reject-invalid + wrong-spec rejection; OPTIMISTIC finalize + dispute-slash; REPLAY dispute (provider upheld) + off-chain re-run match; ERC-20 reward allowlist accept/reject; Falcon valid-accept + tampered-reject + wrong-amount-reject + sig-on-nonpqc-job reject; solvency across a mixed batch; deadline reclaim with bond slash.

Grounding used

  • Built on AereComputeMarketV2 job/escrow model (depin/).
  • ZK: ISP1Verifier.sol + SP1VerifierGateway.sol; deployed gateway 0x9ca479C8c52C0EbB4599319a36a5a017BCC70628.
  • Falcon: input encoding + fail-closed raw-32-byte return pattern from AerePQCMessageVerifier.sol; test uses MockPQCPrecompile(1) @0x0AE1 and MockSp1Verifier (reverts on invalid), MockERC20Lending.

Flags

  • [VERIFY] ZK path tested vs MockSp1Verifier (mirrors gateway revert-on-invalid); real gateway wired at deploy.
  • [VERIFY] Falcon path tested vs MockPQCPrecompile; real wire encoding KAT-proven elsewhere; 0x0AE1 live on 2800.
  • [MEASURE] Real GPU supply, off-chain provers, real SP1 proving are external (adoption, not code).
  • Not deployed; founder-gated.