Skip to main content

Proof systems

A settlement batch's proof system determines what (if anything) a batch carries to demonstrate correctness. The RDK supports four, and ties each to a settlement paradigm through the compatibility matrix.

Proof systemUsed byWhat a batch carries
fraudoptimisticNo proof on submission; a fraud proof is supplied only if the batch is challenged
snarkzkA SNARK validity proof, verified on-chain
starkzkA STARK validity proof, verified on-chain
nonebased, sovereignNo proof

fraud (optimistic)

Optimistic batches are submitted without a proof and finalize after the challenge window. If a batch is challenged, the operator responds with an interactive fraud proof. See Lifecycles for the SUBMITTED → CHALLENGED → REJECTED path.

snark and stark (zk)

ZK batches carry a validity proof in the batch's proof field. ZK settlement requires a valid proof, and on-chain verification gates finalization — a batch only finalizes once the network's verifier accepts its proof.

import type { SubmitBatchInput } from "@qorechain/rdk";

const input: SubmitBatchInput = {
rollupId: "my-defi-rollup",
batchIndex: 0,
stateRoot: "0x...",
prevStateRoot: "0x...",
txCount: 1,
dataHash: "0x...",
proof: "0x...", // the snark/stark validity proof bytes
};

The exact proof encoding is defined by the chain's on-chain verifier; align your prover's output with it. The RDK transports the proof bytes — it does not implement, describe, or second-guess the verifier.

none (based / sovereign)

Based and sovereign batches carry no proof. For based settlement, inclusion is inherited from host-chain proposers; for sovereign settlement, correctness is established by the rollup's own consensus off the Main Chain.

The compatibility matrix

The settlement paradigm fixes the allowed proof system. The RDK enforces this before any batch is submitted:

SettlementProof system
optimisticfraud
zksnark or stark
basednone
sovereignnone

A configuration that pairs, say, optimistic settlement with snark proofs is rejected by validation. Start from a preset to get a matching pair by default.