qp-wormhole-verifier

Crates.ioqp-wormhole-verifier
lib.rsqp-wormhole-verifier
version0.1.2
created_at2025-09-10 11:20:44.378322+00
updated_at2025-09-10 11:59:38.409525+00
descriptionQuantus-Network - Wormhole circuit implementation using Plonky2
homepage
repository
max_upload_size
id1832413
size33,421
Quantus Network CI (quantus-network-ci)

documentation

README

Wormhole Verifier

Verifier logic for the Wormhole circuit.

This crate provides the WormholeVerifier type, which allows for the verification of zero-knowledge proofs generated by the Wormhole circuit.

The typical usage flow involves:

  1. Initializing the verifier (e.g., via WormholeVerifier::default or WormholeVerifier::new).
  2. Generating a ProofWithPublicInputs.
  3. Verifying the proof using WormholeVerifier::verify.

Example

Create a verifier and verify a proof:

use wormhole_circuit::inputs::{CircuitInputs, PrivateCircuitInputs, PublicCircuitInputs};
use wormhole_circuit::nullifier::Nullifier;
use wormhole_circuit::substrate_account::SubstrateAccount;
use wormhole_circuit::unspendable_account::UnspendableAccount;
use wormhole_prover::WormholeProver;
use wormhole_verifier::WormholeVerifier;
use plonky2::plonk::circuit_data::CircuitConfig;

fn main() -> anyhow::Result<()> {
  // Create inputs
  let inputs = CircuitInputs {
      private: PrivateCircuitInputs {
          secret: vec![1u8; 32],
          funding_nonce: 0,
          funding_account: SubstrateAccount::new(&[2u8; 32])?,
          storage_proof: vec![],
          unspendable_account: UnspendableAccount::new(&[1u8; 32]),
      },
      public: PublicCircuitInputs {
          funding_amount: 1000,
          nullifier: Nullifier::new(&[1u8; 32], 0, &[2u8; 32]),
          root_hash: [0u8; 32],
          exit_account: SubstrateAccount::new(&[2u8; 32])?,
      },
  };

  // Generate a proof
  let config = CircuitConfig::standard_recursion_config();
  let prover = WormholeProver::new(config.clone());
  let proof = prover.commit(&inputs)?.prove()?;

  // Verify the proof
  let verifier = WormholeVerifier::new(config, None);
  verifier.verify(proof)?;
  Ok(())
}
Commit count: 0

cargo fmt