Mint a new SBT to to. Returns the new token_id.
metadata_uri is an IPFS URI pointing to the badge JSON.
fn mint(
env: soroban_sdk::Env,
to: soroban_sdk::Address,
metadata_uri: soroban_sdk::String,
) -> u64
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
Get the admin address.
fn admin(env: soroban_sdk::Env) -> soroban_sdk::Address
Check if a token exists (has been minted).
fn exists(env: soroban_sdk::Env, token_id: u64) -> bool
Revoke/burn an SBT (admin only). Removes ownership but token_id remains used.
fn revoke(env: soroban_sdk::Env, token_id: u64)
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String
BLOCKED — SBTs are non-transferable.
fn approve(
env: soroban_sdk::Env,
owner: soroban_sdk::Address,
spender: soroban_sdk::Address,
token_id: u64,
)
Get the SBT balance of an address.
fn balance(env: soroban_sdk::Env, owner: soroban_sdk::Address) -> u64
Upgrade the contract WASM (admin only). Enables future updates without redeployment.
fn upgrade(env: soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>)
SEP-0041: Returns 0 for NFTs/SBTs (non-divisible).
fn decimals(env: soroban_sdk::Env) -> u32
Get the owner of a token.
fn owner_of(env: soroban_sdk::Env, token_id: u64) -> soroban_sdk::Address
BLOCKED — SBTs are non-transferable.
fn transfer(
env: soroban_sdk::Env,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
token_id: u64,
)
Transfer admin role to a new address.
fn set_admin(env: soroban_sdk::Env, new_admin: soroban_sdk::Address)
Get the metadata URI of a token.
fn token_uri(env: soroban_sdk::Env, token_id: u64) -> soroban_sdk::String
Initialize the contract. Only callable once.
fn initialize(
env: soroban_sdk::Env,
admin: soroban_sdk::Address,
name: soroban_sdk::String,
symbol: soroban_sdk::String,
)
Update the metadata URI of an existing token (admin only).
fn update_uri(env: soroban_sdk::Env, token_id: u64, new_uri: soroban_sdk::String)
fn token_count(env: soroban_sdk::Env) -> u64
SEP-0041: Total supply = number of minted tokens.
fn total_supply(env: soroban_sdk::Env) -> u64
BLOCKED — SBTs are non-transferable.
fn transfer_from(
env: soroban_sdk::Env,
spender: soroban_sdk::Address,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
token_id: u64,
)