Proof Generation

After scanning for incoming transfers (see Receiving), you generate a zero-knowledge proof to claim your tokens on-chain. The SDK handles proof generation internally -- you supply the data from collectRedeemContext and get back ready-to-submit calldata.

Two Proof Modes

Mode
Use case
Gas cost

Single (Groth16)

Claiming one transfer

Higher per-transfer

Batch (Nova + Decider)

Claiming multiple transfers at once

Lower per-transfer

Single Proof

Use this when redeeming a single eligible transfer.

const sdk = createSdk();

// `redeemContext` comes from collectRedeemContext() -- see Receiving page
const artifacts = await sdk.teleportProofs.createSingleTeleportProof({
  aggregationState: redeemContext.aggregationState,
  recipientFr,
  secretHex,
  event: redeemContext.events.eligible[0],
  proof: redeemContext.globalProofs[0],
});

Submit on-chain:

Batch Proof

Use this when redeeming multiple eligible transfers at once. Batch proofs are finalized through a Decider service that converts the Nova IVC proof into a Groth16 proof for on-chain verification.

Submit on-chain:

Next Steps

Last updated