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