| Crates.io | qp-wormhole-verifier |
| lib.rs | qp-wormhole-verifier |
| version | 0.1.2 |
| created_at | 2025-09-10 11:20:44.378322+00 |
| updated_at | 2025-09-10 11:59:38.409525+00 |
| description | Quantus-Network - Wormhole circuit implementation using Plonky2 |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1832413 |
| size | 33,421 |
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:
WormholeVerifier::default or WormholeVerifier::new).ProofWithPublicInputs.WormholeVerifier::verify.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(())
}