Contract 191a9dcfc76dd609c1e086103756aa79abf9b1ebc02744d4fcb4cc3aa26eb574

← Back to Index 📥 Download WASM

Meta

cliver 26.0.0#60f7458e7ecffddf2f2d91dc6d0d2db4fab03ecc
rssdk_spec_shaking 2
rssdkver 26.1.1#8ac18efb681a1c0b4b85a38c5a380300344e3f39
rsver 1.95.0

Instances

  • CC2MTI3REEQUMDJYOLQHK4D6GPGSTGPZOWH3G75SECSOTOH7L7GGLG5O

Interface

Maximum total supply, in base units.

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

Minter: issue amount base units to to. Fails past the cap, and to must be able to hold the token (allowlisted, not blocked, not frozen).

fn mint(
    env: soroban_sdk::Env,
    to: soroban_sdk::Address,
    amount: i128,
    operator: soroban_sdk::Address,
)

Returns the name for this token.

Arguments

  • e - Access to Soroban environment.
fn name(env: soroban_sdk::Env) -> soroban_sdk::String

The access-control admin. None only if the contract was never constructed, which cannot happen on a deployed instance.

fn admin(env: soroban_sdk::Env) -> Option
fn pause(env: soroban_sdk::Env, caller: soroban_sdk::Address)

Returns true if the contract is paused, and false otherwise.

Arguments

  • e - Access to Soroban environment.
fn paused(env: soroban_sdk::Env) -> bool

Returns the symbol for this token.

Arguments

  • e - Access to Soroban environment.
fn symbol(env: soroban_sdk::Env) -> soroban_sdk::String

Returns the allowed status of an account.

Arguments

  • e - Access to the Soroban environment.
  • account - The address to check the allowed status for.
fn allowed(env: soroban_sdk::Env, account: soroban_sdk::Address) -> bool
fn approve(
    env: soroban_sdk::Env,
    owner: soroban_sdk::Address,
    spender: soroban_sdk::Address,
    amount: i128,
    live_until_ledger: u32,
)

Returns the amount of tokens held by account.

Arguments

  • e - Access to the Soroban environment.
  • account - The address for which the balance is being queried.
fn balance(env: soroban_sdk::Env, account: soroban_sdk::Address) -> i128
fn blocked(env: soroban_sdk::Env, account: soroban_sdk::Address) -> bool
fn unpause(env: soroban_sdk::Env, caller: soroban_sdk::Address)

Returns the number of decimals used to represent amounts of this token.

Arguments

  • e - Access to Soroban environment.
fn decimals(env: soroban_sdk::Env) -> u32

Returns Some(index) if the account has the specified role, where index is the position of the account for that role, and can be used to query [AccessControl::get_role_member()]. Returns None if the account does not have the specified role.

Arguments

  • e - Access to Soroban environment.
  • account - The account to check.
  • role - The role to check for.
fn has_role(
    env: soroban_sdk::Env,
    account: soroban_sdk::Address,
    role: soroban_sdk::Symbol,
) -> Option
fn transfer(
    env: soroban_sdk::Env,
    from: soroban_sdk::Address,
    to: soroban_sdk::MuxedAddress,
    amount: i128,
)

Returns the amount of tokens a spender is allowed to spend on behalf of an owner.

Arguments

  • e - Access to Soroban environment.
  • owner - The address holding the tokens.
  • spender - The address authorized to spend the tokens.
fn allowance(
    env: soroban_sdk::Env,
    owner: 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,
)

Returns the admin account.

Arguments

  • e - Access to Soroban environment.
fn get_admin(env: soroban_sdk::Env) -> Option
fn is_frozen(env: soroban_sdk::Env, user: soroban_sdk::Address) -> bool
fn allow_user(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    operator: soroban_sdk::Address,
)

Admin: block user from sending or receiving.

fn block_user(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    operator: soroban_sdk::Address,
)

Grants a role to an account.

Arguments

  • e - Access to Soroban environment.
  • account - The account to grant the role to.
  • role - The role to grant.
  • caller - The address of the caller, must be the admin or have the RoleAdmin for the role.

Errors

  • [AccessControlError::Unauthorized] - If the caller does not have enough privileges.
  • [AccessControlError::MaxRolesExceeded] - If adding a new role would exceed the maximum allowed number of roles.

Events

  • topics - ["role_granted", role: Symbol, account: Address]
  • data - [caller: Address]
fn grant_role(
    env: soroban_sdk::Env,
    account: soroban_sdk::Address,
    role: soroban_sdk::Symbol,
    caller: soroban_sdk::Address,
)

Balance minus partially-frozen tokens.

fn free_tokens(env: soroban_sdk::Env, user: soroban_sdk::Address) -> i128

Revokes a role from an account. To revoke the caller's own role, use [AccessControl::renounce_role()] instead.

Arguments

  • e - Access to Soroban environment.
  • account - The account to revoke the role from.
  • role - The role to revoke.
  • caller - The address of the caller, must be the admin or has the RoleAdmin for the role.

Errors

  • [AccessControlError::Unauthorized] - If the caller does not have enough privileges.
  • [AccessControlError::RoleNotHeld] - If the account doesn't have the role.
  • [AccessControlError::RoleIsEmpty] - If the role has no members.

Events

  • topics - ["role_revoked", role: Symbol, account: Address]
  • data - [caller: Address]
fn revoke_role(
    env: soroban_sdk::Env,
    account: soroban_sdk::Address,
    role: soroban_sdk::Symbol,
    caller: soroban_sdk::Address,
)

Returns the total amount of tokens in circulation.

Arguments

  • e - Access to the Soroban environment.
fn total_supply(env: soroban_sdk::Env) -> i128

Admin: lift a block.

fn unblock_user(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    operator: soroban_sdk::Address,
)

Runs once at deploy.

cap is expressed in base units: a "share" is one whole unit, so an asset split into n shares with d decimals has cap = n * 10^d.

Nobody is allowlisted at this point — not even admin. The deploy pipeline allowlists the distributor before minting to it.

fn __constructor(
    env: soroban_sdk::Env,
    admin: soroban_sdk::Address,
    minter: soroban_sdk::Address,
    name: soroban_sdk::String,
    symbol: soroban_sdk::String,
    decimals: u32,
    cap: i128,
)
fn disallow_user(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    operator: soroban_sdk::Address,
)

Base units frozen on user (excludes a full-address freeze, which blocks the whole balance regardless of this number).

fn frozen_tokens(env: soroban_sdk::Env, user: soroban_sdk::Address) -> i128

Allows an account to renounce a role assigned to itself. Users can only renounce roles for their own account.

Arguments

  • e - Access to Soroban environment.
  • role - The role to renounce.
  • caller - The address of the caller, must be the account that has the role.

Errors

  • [AccessControlError::RoleNotHeld] - If the caller doesn't have the role.
  • [AccessControlError::RoleIsEmpty] - If the role has no members.

Events

  • topics - ["role_revoked", role: Symbol, account: Address]
  • data - [caller: Address]
fn renounce_role(
    env: soroban_sdk::Env,
    role: soroban_sdk::Symbol,
    caller: soroban_sdk::Address,
)
fn transfer_from(
    env: soroban_sdk::Env,
    spender: soroban_sdk::Address,
    from: soroban_sdk::Address,
    to: soroban_sdk::Address,
    amount: i128,
)

Returns the admin role for a specific role. If no admin role is explicitly set, returns None.

Arguments

  • e - Access to Soroban environment.
  • role - The role to query the admin role for.
fn get_role_admin(
    env: soroban_sdk::Env,
    role: soroban_sdk::Symbol,
) -> Option

Allows the current admin to renounce their role, making the contract permanently admin-less. This is useful for decentralization purposes or when the admin role is no longer needed. Once the admin is renounced, it cannot be reinstated.

Arguments

  • e - Access to Soroban environment.

Errors

  • [AccessControlError::AdminNotSet] - If no admin account is set.

Events

  • topics - ["admin_renounced", admin: Address]
  • data - []

Notes

  • Authorization for the current admin is required.
fn renounce_admin(env: soroban_sdk::Env)

Sets admin_role as the admin role of role.

Arguments

  • e - Access to Soroban environment.
  • role - The role to set the admin for.
  • admin_role - The new admin role.

Events

  • topics - ["role_admin_changed", role: Symbol]
  • data - [previous_admin_role: Symbol, new_admin_role: Symbol]

Errors

  • [AccessControlError::AdminNotSet] - If admin account is not set.

Notes

  • Authorization for the current admin is required.
fn set_role_admin(
    env: soroban_sdk::Env,
    role: soroban_sdk::Symbol,
    admin_role: soroban_sdk::Symbol,
)

Returns the account at the specified index for a given role.

A function to get all members of a role is not provided because that would be unbounded. To enumerate all members of a role, use [AccessControl::get_role_member_count()] to get the total number of members and then use [AccessControl::get_role_member()] to retrieve each member one by one.

Arguments

  • e - Access to Soroban environment.
  • role - The role to query.
  • index - The index of the account to retrieve.

Errors

  • [AccessControlError::IndexOutOfBounds] - If the index is out of bounds for the role's member list.
fn get_role_member(
    env: soroban_sdk::Env,
    role: soroban_sdk::Symbol,
    index: u32,
) -> soroban_sdk::Address

Returns a vector containing all existing roles. Defaults to empty vector if no roles exist.

Arguments

  • e - Access to Soroban environment.

Notes

This function returns all roles that currently have at least one member. The maximum number of roles is limited by [MAX_ROLES].

fn get_existing_roles(env: soroban_sdk::Env) -> soroban_sdk::Vec

Admin: freeze (or unfreeze) user entirely — a frozen address can neither send nor receive.

fn set_address_frozen(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    freeze: bool,
    operator: soroban_sdk::Address,
)

Initiates the admin role transfer. Admin privileges for the current admin are not revoked until the recipient accepts the transfer. Overrides the previous pending transfer if there is one.

Arguments

  • e - Access to Soroban environment.
  • new_admin - The account to transfer the admin privileges to.
  • live_until_ledger - The ledger number at which the pending transfer expires. If live_until_ledger is 0, the pending transfer is cancelled. live_until_ledger argument is implicitly bounded by the maximum allowed TTL extension for a temporary storage entry and specifying a higher value will cause the code to panic.

Errors

  • [crate::role_transfer::RoleTransferError::NoPendingTransfer] - If trying to cancel a transfer that doesn't exist.
  • [crate::role_transfer::RoleTransferError::InvalidLiveUntilLedger] - If the specified ledger is in the past.
  • [crate::role_transfer::RoleTransferError::InvalidPendingAccount] - If the specified pending account is not the same as the provided new address.
fn transfer_admin_role(
    env: soroban_sdk::Env,
    new_admin: soroban_sdk::Address,
    live_until_ledger: u32,
)

Completes the 2-step admin transfer.

Arguments

  • e - Access to Soroban environment.

Events

  • topics - ["admin_transfer_completed", new_admin: Address]
  • data - [previous_admin: Address]

Errors

  • [crate::role_transfer::RoleTransferError::NoPendingTransfer] - If there is no pending transfer to accept.
  • [AccessControlError::AdminNotSet] - If admin account is not set.
fn accept_admin_transfer(env: soroban_sdk::Env)

Admin: freeze amount base units held by user. The rest of the balance stays transferable.

fn freeze_partial_tokens(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    amount: i128,
    operator: soroban_sdk::Address,
)

Returns the total number of accounts that have the specified role. If the role does not exist, returns 0.

Arguments

  • e - Access to Soroban environment.
  • role - The role to get the count for.
fn get_role_member_count(env: soroban_sdk::Env, role: soroban_sdk::Symbol) -> u32

Admin: release amount base units previously frozen on user.

fn unfreeze_partial_tokens(
    env: soroban_sdk::Env,
    user: soroban_sdk::Address,
    amount: i128,
    operator: soroban_sdk::Address,
)

Imports

WebAssembly Text (WAT) ▶