Skip to content

XSC-0001: Fungible Token

XSC-0001 is the core fungible-token interface used across the Xian stack.

Required Surface

The standard token surface is:

python
@export
def transfer(amount: float, to: str):
    ...

@export
def approve(amount: float, to: str):
    ...

@export
def transfer_from(amount: float, to: str, main_account: str):
    ...

@export
def balance_of(address: str) -> float:
    ...

Expected Semantics

  • transfer moves balance from ctx.caller to to
  • approve sets an allowance for to
  • transfer_from spends from main_account using the caller's allowance
  • balance_of returns the current balance for an address

The current canonical implementation stores allowances in the same token hash namespace using a two-dimensional key:

python
balances[owner, spender] = amount

Expected Events

The canonical token contract emits:

  • Transfer
  • Approve

Typical indexed fields are sender and recipient/spender so that CometBFT and dashboard subscribers can query them efficiently.

python
balances = Hash(default_value=0)
metadata = Hash()

Common metadata keys in the canonical token are:

  • token_name
  • token_symbol
  • token_logo_url
  • token_website
  • operator

Compatibility Notes

  • validate amount > 0 for transfers
  • approvals may be 0 and should overwrite prior allowance
  • emit events on successful transfer/approval paths
  • keep function names and argument names stable so tooling can introspect them