Whether an email/proof carrying this nullifier has already been sealed.
fn is_sealed(env: soroban_sdk::Env, nullifier: soroban_sdk::BytesN<32>) -> bool
Verify a proof AND seal it as a public attestation.
This is the real entry point. Order matters:
pub_signals trustworthy
(a valid proof cryptographically binds them; they are not free input);Returns the attestation id (== the nullifier) used by the public /p/:id page.
fn submit_proof(
env: soroban_sdk::Env,
proof: Proof,
pub_signals: soroban_sdk::Vec>,
) -> Result, soroban_sdk::Error>
Pure verification: is proof valid for pub_signals under the embedded VK?
Read-only, changes no state. Useful for clients/tests; the real flow is
submit_proof, which also seals the result.
fn verify_proof(
env: soroban_sdk::Env,
proof: Proof,
pub_signals: soroban_sdk::Vec>,
) -> Result
Read a sealed attestation by id (== nullifier). Powers the public /p/:id page with REAL on-chain state. Returns None if nothing was sealed under that id.
fn get_attestation(
env: soroban_sdk::Env,
id: soroban_sdk::BytesN<32>,
) -> Option