Contract 717d58eea5f3c7c81f9d11b47a329fb958472e78fb52d549fd8ae30497eeaa34

← Back to Index 📥 Download WASM

Meta

rssdkver 25.3.1#e50d95af029c83196dd122f0154bac3f1302394b
rsver 1.93.0

Instances

  • CDIBN26XZYINKMF4CI64727LPCDTYLD3DHJEKVIFLJONOTDJMGBSEWX2

Interface

Burn an NFT. Only the owner can burn their token. Removes ownership and metadata, decrements supply.

fn burn(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    token_id: u32,
) -> Result<(), MerchError>

Mint a new merch NFT. Only callable by admin (the relayer). Returns the new token ID (1-indexed).

fn mint(
    env: soroban_sdk::Env,
    to: soroban_sdk::Address,
    token_uri: soroban_sdk::String,
) -> Result
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
fn admin(env: soroban_sdk::Env) -> Result
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String

Migration function for schema evolution across versions.

fn migrate(env: soroban_sdk::Env) -> Result<(), MerchError>

Upgrade the contract WASM. Admin-gated, upgrade-safe. CRITICAL: This function reads Admin as a standalone Address (not a struct) to prevent bricking on schema evolution.

fn upgrade(
    env: soroban_sdk::Env,
    new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), MerchError>
fn version(env: soroban_sdk::Env) -> u32
fn owner_of(
    env: soroban_sdk::Env,
    token_id: u32,
) -> Result

Transfer an NFT. Only the current owner can transfer.

fn transfer(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    token_id: u32,
) -> Result<(), MerchError>

Admin can update admin address (key rotation).

fn set_admin(
    env: soroban_sdk::Env,
    current_admin: soroban_sdk::Address,
    new_admin: soroban_sdk::Address,
) -> Result<(), MerchError>
fn token_uri(
    env: soroban_sdk::Env,
    token_id: u32,
) -> Result

O(1) enumeration — returns all token IDs owned by an address.

fn tokens_of(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
) -> soroban_sdk::Vec

Public TTL extension — anyone can call to keep the contract alive.

fn extend_ttl(env: soroban_sdk::Env)

Initialize the contract. Called once after deployment. Admin = the relayer address (GAAGGREYKXZEWGI2FAU6GEDZROHAPAKSFKIDKF2KIFS5OYLJXI6AK27P).

fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    name: soroban_sdk::String,
    symbol: soroban_sdk::String,
) -> Result<(), MerchError>
fn total_burned(env: soroban_sdk::Env) -> u32
fn total_minted(env: soroban_sdk::Env) -> u32

Active supply = total_minted - total_burned

fn total_supply(env: soroban_sdk::Env) -> u32

Admin can update token_uri for corrections (critic fix C7).

fn set_token_uri(
    env: soroban_sdk::Env,
    token_id: u32,
    new_uri: soroban_sdk::String,
) -> Result<(), MerchError>

Extend TTL for a specific token's persistent data.

fn extend_token_ttl(env: soroban_sdk::Env, token_id: u32)

Imports

WebAssembly Text (WAT) ▶