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.
61 lines
3.4 KiB
Markdown
61 lines
3.4 KiB
Markdown
# 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.
|