Contract 3dedff985dce28f210bd359afa9b7f5bd137bd69337cd5db9076be80ad388096

← Back to Index 📥 Download WASM

Meta

rssdkver 25.1.1#94c2a3b3a5ded6b9cf9cef0c207bf8804f3eb294
rsver 1.91.1

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,
)

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

Imports

WebAssembly Text (WAT) ▶