zk-Proofs on AERE

AERE Network natively verifies zero-knowledge proofs from SP1 (Succinct Labs) and RISC Zero zkVM. Real Groth16 pairing math runs on the EVM's alt_bn128 precompiles. Every successful verification is recorded permanently on chain 2800. Apps build against the stable gateway/router addresses below, future prover versions plug in via addRoute without downstream migration.

Verifier stack

SP1 Verifier Gateway

Stable address · routes by proof selector

Concrete verifiers behind the gateway:

v6.1.0 Groth16 → 0xb545…71aD

v6.0.0 Groth16 → 0xa9BD…0ca6

v6.1.0 Plonk   → 0x24a7…d29B

RISC Zero Router

Stable address · routes by RISC Zero selector

Groth16 verifier → 0x95cB…a1FD
Selector 0xc27d1bc0

AereProofRegistry

Multi-prover attestation log

Permissionless program registration. Anyone can register their vkey (SP1) or imageId (RISC Zero) with a name + URL. Successful proofs are recorded as ProofVerified events with the program key indexed for cheap subscription.

Recently verified proofs

Loading from chain 2800…
For developers, submitting a proof

Register your program (one-time, permissionless):

// SP1 program
await registry.registerSP1Program(vkey, "MyApp", "https://myapp.example");

// RISC Zero program
await registry.registerRiscZeroProgram(imageId, "MyApp", "https://myapp.example");

Submit a proof (verifies via gateway then records permanently):

await registry.submitSP1Proof(vkey, publicValues, proofBytes, "human-readable description");
// or
await registry.submitRiscZeroProof(imageId, journalDigest, seal, "human-readable description");

Free verification without recording (view function, no gas if called via eth_call):

await registry.verifySP1Only(vkey, publicValues, proofBytes);
await registry.verifyRiscZeroOnly(imageId, journalDigest, seal);

Subscribe to events for your program of interest:

const filter = registry.filters.ProofVerified(null, null, myProgramKey);
registry.on(filter, (id, submitter, programKey, system, pvDigest, description) => {
  console.log(`Proof ${id} verified for ${myProgramKey}: ${description}`);
});