Skip to main content

Token Operations

Five operations move value, and all of them go through governance (see Governance & Proposals). None can execute without meeting the account's approval threshold.

Mint

Creates new tokens into the STANDBY account — the only account that can mint. Source and token are locked in the /mint flow; the user enters only an amount. On execution the x/cbdc module credits the Standby policy address.

Mint form with locked Standby account and token, plus a live review panel Destination and token are fixed; the review panel updates as you type and shows the threshold/instant-execute outcome before submit.

Burn

Destroys tokens from the STANDBY account (only Standby can burn). The /burn flow offers a max button and caps the amount at the live balance; the backend re-checks balance before submitting. Two burn proposals competing for the same funds is allowed — the second simply fails on-chain at execution.

Burn form showing the Max button and live available balance The Max button and "Available" line cap the amount at the live Standby balance.

Transfer (Send)

Moves tokens between accounts or out to external parties. Allowed destinations are constrained by the source account type:

FromToRule
STANDBY / BRIDGINGDistributionLocked to the Distribution account
DISTRIBUTIONExternal addressMust be on the account whitelist
CUSTOMOwn accounts + address bookFree choice within known recipients

Send form with source/token/amount fields and a destination locked by account type From a Standby source the destination is locked to Distribution; the form enforces the same routing rules the API re-checks server-side.

Convert: disbursement & redemption

Commercial banks move between fiat and CBDC through the BRIDGING account, from the /convert flow:

  • Disbursement (fiat → CBDC)POST /organizations/:id/disbursement-request. CBDC is sent from the bridging account to the commercial bank's exchange address. It is signed by the system bridging identity, so for a single-signer bridging policy it executes instantly.
  • Redemption (CBDC → fiat)POST /organizations/:id/redemption-request. CBDC flows back from the commercial bank to the bridging account (balance-capped) and is recorded as a governed proposal.

Both require the organization's exchange address to be linked and not frozen; a frozen or unlinked exchange address blocks the flow. The mechanics of organizations, exchange addresses and freezing are covered in the Organizations material in the Features section.

Convert form with FIAT to HNL direction toggle and exchange-address field The Convert flow with a direction toggle; when no exchange address is linked the form surfaces a "contact your central bank" notice and blocks submission.

Amount & decimals

On-chain amounts are integers in the base denom (ahnl, "atto-HNL"). The native token uses 18 decimals (NATIVE_TOKEN_DEFAULT_DECIMALS), so a display value of 1 HNL is 1 followed by 18 zeros of ahnl. The token's display symbol comes from CURRENCY_NAME, and the dashboard resolves the native badge/balances from VITE_NATIVE_TOKEN_ID. The staking/consensus denom (apoa) is held only by validators and is invisible to the dashboard.