Contract 50907cd027a8b23a2c506244b8f31bfeebc5cfdbf1c14a0dd65596de2ec0d61f

← Back to Index 📥 Download WASM

Meta

rssdkver 25.1.1#94c2a3b3a5ded6b9cf9cef0c207bf8804f3eb294
rsver 1.91.1

Instances

  • CDVJZSMI5KSRK7T6D6GGYVB6UPFCDQLAZAYRGXVJKDBOHLAZOPHHX2FR

Interface

fn get(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    system: soroban_sdk::Symbol,
    tier: soroban_sdk::Symbol,
) -> Option
fn has(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    system: soroban_sdk::Symbol,
    tier: soroban_sdk::Symbol,
    statement_hash: soroban_sdk::BytesN<32>,
) -> bool
fn admin(env: soroban_sdk::Env) -> soroban_sdk::Address
fn attest(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    system: soroban_sdk::Symbol,
    tier: soroban_sdk::Symbol,
    statement_hash: soroban_sdk::BytesN<32>,
    verifier_hash: soroban_sdk::BytesN<32>,
) -> u64
fn upgrade(env: soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>)
fn version(env: soroban_sdk::Env) -> u32
fn set_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address)

Extend instance TTL (admin/nonce). Anyone may call to keep the contract alive.

fn extend_ttl(env: soroban_sdk::Env)
fn init_admin(env: soroban_sdk::Env, admin: soroban_sdk::Address)

Extend TTL of a specific Groth16 VK (persistent storage). Anyone may call; no state changes besides TTL.

fn extend_vk_ttl(env: soroban_sdk::Env, vk_id: soroban_sdk::Symbol)
fn has_groth16_vk(env: soroban_sdk::Env, vk_id: soroban_sdk::Symbol) -> bool
fn is_initialized(env: soroban_sdk::Env) -> bool

Verify Groth16 proof against registered VK, without storing anything.

fn verify_groth16(
    env: soroban_sdk::Env,
    vk_id: soroban_sdk::Symbol,
    public_inputs: soroban_sdk::Vec>,
    proof: Groth16Proof,
) -> Result

Extend TTL of a specific attestation entry (persistent storage). Anyone may call; no state changes besides TTL.

fn extend_entry_ttl(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    system: soroban_sdk::Symbol,
    tier: soroban_sdk::Symbol,
)

Register or replace a Groth16 verification key under vk_id.

This is the "universal" on-chain verification strategy for SMOL Labs: anything that can be represented as a BN254 Groth16 proof (Circom, and wrapped proofs like RISC0 receipts) can be verified here without new contracts.

fn register_groth16_vk(
    env: soroban_sdk::Env,
    vk_id: soroban_sdk::Symbol,
    vk: Groth16VerificationKey,
)
fn get_ultrahonk_verifier(env: soroban_sdk::Env) -> Option

Set the (upgradeable) UltraHonk verifier contract address used by verify_ultrahonk_and_attest.

This is the "bridge" strategy: keep this contract as the SSOT for attestations, while delegating UltraHonk verification to a dedicated verifier contract.

fn set_ultrahonk_verifier(env: soroban_sdk::Env, verifier: soroban_sdk::Address)

Verify Groth16 proof and then store an attestation record (same schema as attest).

This keeps the existing farm-attestations contract as the SSOT for "claims", while making some claims cryptographically verified on-chain.

fn verify_groth16_and_attest(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    system: soroban_sdk::Symbol,
    tier: soroban_sdk::Symbol,
    statement_hash: soroban_sdk::BytesN<32>,
    verifier_hash: soroban_sdk::BytesN<32>,
    vk_id: soroban_sdk::Symbol,
    public_inputs: soroban_sdk::Vec>,
    proof: Groth16Proof,
) -> Result

Verify an UltraHonk proof via the configured verifier contract, then store an attestation record.

IMPORTANT: this verifies cryptographically on-chain (in the verifier contract), not a digest-only record. The proof system is still identified by system, typically "NOIR".

fn verify_ultrahonk_and_attest(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    system: soroban_sdk::Symbol,
    tier: soroban_sdk::Symbol,
    statement_hash: soroban_sdk::BytesN<32>,
    verifier_hash: soroban_sdk::BytesN<32>,
    public_inputs: soroban_sdk::Bytes,
    proof_bytes: soroban_sdk::Bytes,
) -> Result

Verify an UltraHonk proof via the configured verifier contract and a specific vk_id, then store an attestation record.

This is the multi-circuit-friendly variant: it targets ultrahonk-verifier.verify_proof_vk.

fn verify_ultrahonk_vk_and_attest(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    system: soroban_sdk::Symbol,
    tier: soroban_sdk::Symbol,
    statement_hash: soroban_sdk::BytesN<32>,
    verifier_hash: soroban_sdk::BytesN<32>,
    vk_id: soroban_sdk::Symbol,
    public_inputs: soroban_sdk::Bytes,
    proof_bytes: soroban_sdk::Bytes,
) -> Result

Imports

WebAssembly Text (WAT) ▶