Contract f201f0df6d7f78dc31f01186ef017390e74d55f885a6c861ced27b1428bb5071

← Back to Index 📥 Download WASM

Meta

binver 0.0.1
rssdkver 22.0.8#f46e9e0610213bbb72285566f9dd960ff96d03d8
rsver 1.87.0

Instances

  • CAX3B3SYBHMOF7JFR226NJZYRIRHSGHYLV3ZRRWXX6WXPLOUQP22OQOR

Interface

fn upgrade(
    env: soroban_sdk::Env,
    new_wasm_hash: soroban_sdk::BytesN<32>,
    operator: soroban_sdk::Address,
)

Initialize the bridged token wrapper contract.

Roles

  • admin - Contract admin, can set Axelar config and grant/revoke roles
  • upgrader - Can upgrade the contract WASM

Important

epoch_op and minter roles must NEVER be assigned to the same address. mint_from uses caller's role to distinguish between token mint and K update.

fn __constructor(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    upgrader: soroban_sdk::Address,
    code: soroban_sdk::String,
    name: soroban_sdk::String,
    decimals: u32,
)

Update K manually (for admin/epoch_op use before Axelar bridge is ready). K must be monotonically non-increasing (scaled decimal, K_SCALE = 1.0).

fn update_k(env: soroban_sdk::Env, epoch_op: soroban_sdk::Address, new_k: i128)

Get current K coefficient (scaled decimal, K_SCALE = 1.0)

fn get_current_k(env: soroban_sdk::Env) -> i128

Get current epoch

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

Convert base shares to rebased tokens at current K. rebased = shares * K_SCALE / K (floor)

fn to_rebased(env: soroban_sdk::Env, base_amount: i128) -> i128

Convert rebased tokens to base shares at current K (ceil rounding).

fn to_base_ceil(env: soroban_sdk::Env, rebased_amount: i128) -> i128

Mint new shares OR update K from bridge.

This function serves dual purpose based on caller's role:

  • minter: Mints shares to account (token bridge via Axelar Token Manager A)
  • epoch_op: Updates K to amount_base value (epoch bridge via Axelar Token Manager B)

Operator and minter must be different addresses to avoid ambiguity.

fn mint_from(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    account: soroban_sdk::Address,
    amount: i128,
)
fn has_role(
    env: soroban_sdk::Env,
    account: soroban_sdk::Address,
    role: soroban_sdk::Symbol,
) -> Option
fn get_role_member_count(env: soroban_sdk::Env, role: soroban_sdk::Symbol) -> u32
fn get_role_member(
    env: soroban_sdk::Env,
    role: soroban_sdk::Symbol,
    index: u32,
) -> soroban_sdk::Address
fn get_role_admin(
    env: soroban_sdk::Env,
    role: soroban_sdk::Symbol,
) -> Option
fn get_admin(env: soroban_sdk::Env) -> Option
fn grant_role(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    account: soroban_sdk::Address,
    role: soroban_sdk::Symbol,
)
fn revoke_role(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    account: soroban_sdk::Address,
    role: soroban_sdk::Symbol,
)
fn renounce_role(
    env: soroban_sdk::Env,
    caller: soroban_sdk::Address,
    role: soroban_sdk::Symbol,
)
fn renounce_admin(env: soroban_sdk::Env)
fn transfer_admin_role(
    env: soroban_sdk::Env,
    new_admin: soroban_sdk::Address,
    live_until_ledger: u32,
)
fn accept_admin_transfer(env: soroban_sdk::Env)
fn set_role_admin(
    env: soroban_sdk::Env,
    role: soroban_sdk::Symbol,
    admin_role: soroban_sdk::Symbol,
)
fn total_supply(env: soroban_sdk::Env) -> i128
fn balance(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn allowance(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    spender: soroban_sdk::Address,
) -> i128
fn transfer(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount_rebased: i128,
)
fn transfer_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount_rebased: i128,
)
fn approve(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    spender: soroban_sdk::Address,
    amount_rebased: i128,
    live_until_ledger: u32,
)
fn decimals(env: soroban_sdk::Env) -> u32
fn name(env: soroban_sdk::Env) -> soroban_sdk::String
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String
fn burn(env: soroban_sdk::Env, from: soroban_sdk::Address, amount_rebased: i128)
fn burn_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    amount_rebased: i128,
)
fn set_axelar_config(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    its: soroban_sdk::Address,
    dest_chain: soroban_sdk::String,
    token_id: soroban_sdk::BytesN<32>,
    gas_token: soroban_sdk::Address,
)
fn token_id(env: soroban_sdk::Env) -> soroban_sdk::BytesN<32>
fn get_axelar_its(env: soroban_sdk::Env) -> soroban_sdk::Address
fn get_axelar_chain(env: soroban_sdk::Env) -> soroban_sdk::String
fn get_axelar_gas_token(env: soroban_sdk::Env) -> soroban_sdk::Address

Imports

WebAssembly Text (WAT) ▶