fn is_sealed(env: soroban_sdk::Env, nullifier: soroban_sdk::BytesN<32>) -> bool
Verify a body proof AND seal it as a public attestation.
Check order is cheap-to-expensive (canonical form → replay → SHA over the suffix → pairing) so invalid submissions cost the sponsor as little as possible; nothing is persisted until every check has passed.
NOTE: suffix rides in the transaction, so it is public forever in the
ledger history. The client audits it for personal data and shows the user
exactly what will be published before submitting.
fn seal_body(
env: soroban_sdk::Env,
proof: Proof,
pub_signals: soroban_sdk::Vec>,
suffix: soroban_sdk::Bytes,
) -> Result, soroban_sdk::Error>
Pure verification of proof + suffix, no state change. Returns true only if BOTH the pairing check and the SHA completion against bh= pass.
fn verify_proof(
env: soroban_sdk::Env,
proof: Proof,
pub_signals: soroban_sdk::Vec>,
suffix: soroban_sdk::Bytes,
) -> Result
Read a sealed attestation by id (== nullifier) — same ABI as the header verifier so the /p page readers work against either contract.
fn get_attestation(
env: soroban_sdk::Env,
id: soroban_sdk::BytesN<32>,
) -> Option