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.
Concrete verifiers behind the gateway:
v6.1.0 Groth16 → 0xb545…71aD
v6.0.0 Groth16 → 0xa9BD…0ca6
v6.1.0 Plonk → 0x24a7…d29B
Groth16 verifier → 0x95cB…a1FD
Selector 0xc27d1bc0
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.
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}`);
});