Contract a8231e9573e6a4d978f98e30bf6bf23f97f1910a2dc509690dd0a502aedd3cce

← Back to Index 📥 Download WASM

Meta

cliver 25.2.0#28484880988199233a7e8e87c97cb12dac323cb3
rssdkver 25.3.1#e50d95af029c83196dd122f0154bac3f1302394b
rsver 1.93.0

Instances

  • CBMUXOGMG724UVTP54JGR447IDGA47NSRASBXQIWSEFEYB45YC4BIRIT

Interface

fn burn(env: soroban_sdk::Env, from: soroban_sdk::Address, amount: i128)

Mint XLD shares to an address (admin only, for migration/airdrops)

fn mint(env: soroban_sdk::Env, to: soroban_sdk::Address, amount: i128)
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String
fn approve(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    spender: soroban_sdk::Address,
    amount: i128,
    expiration_ledger: u32,
)
fn balance(env: soroban_sdk::Env, id: soroban_sdk::Address) -> i128

Deposit USDC into vault, receive XLD shares (minted internally). Protected against donation attacks via internal accounting + virtual offset.

fn deposit(
    env: soroban_sdk::Env,
    depositor: soroban_sdk::Address,
    usdc_amount: i128,
    domain_node: soroban_sdk::BytesN<32>,
) -> Result

Harvest yield: admin deposits additional USDC (from USTRY appreciation). Increases total_assets without new shares = share price appreciation.

fn harvest(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    yield_amount: i128,
) -> Result<(), soroban_sdk::Error>
fn upgrade(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    new_wasm_hash: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>
fn decimals(env: soroban_sdk::Env) -> u32
fn transfer(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    muxed_to: soroban_sdk::MuxedAddress,
    amount: i128,
)

Withdraw USDC by burning XLD shares (internal burn, no external SAC).

fn withdraw(
    env: soroban_sdk::Env,
    withdrawer: soroban_sdk::Address,
    xld_amount: i128,
) -> Result
fn allowance(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    spender: soroban_sdk::Address,
) -> i128
fn burn_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    amount: i128,
)
fn set_admin(
    env: soroban_sdk::Env,
    current_admin: soroban_sdk::Address,
    new_admin: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn extend_ttl(env: soroban_sdk::Env)

Initialize vault with admin and USDC token address. The vault IS the XLD token — no external token address needed. Sets token metadata: name="XLM Domains Vault Share", symbol="XLD", decimals=7

fn initialize(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    usdc_token: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn vault_rate(env: soroban_sdk::Env) -> i128

Split a domain's vault position into separate PT and YT tokens

fn split_yield(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    domain_node: soroban_sdk::BytesN<32>,
) -> Result<(), soroban_sdk::Error>

Withdraw vault funds to a specified address (registry-authorized, for grace refunds). Burns corresponding XLD shares from recipient's internal balance. NO CLAWBACK — uses internal balance ledger debit.

fn withdraw_to(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    recipient: soroban_sdk::Address,
    usdc_amount: i128,
    shares_to_burn: i128,
) -> Result<(), soroban_sdk::Error>

Set authorized registry contract (admin only)

fn set_registry(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    registry: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
fn total_assets(env: soroban_sdk::Env) -> i128
fn total_shares(env: soroban_sdk::Env) -> i128
fn transfer_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount: i128,
)

Get yield split info for a domain

fn get_yield_split(
    env: soroban_sdk::Env,
    domain_node: soroban_sdk::BytesN<32>,
) -> Result

Imports

WebAssembly Text (WAT) ▶