Transactions

The stablecoin module adds a single native transaction payload type, Convert (type 7), contiguous with the core types (transfer, bond, sortition, unbond, withdraw, batch-transfer). A Convert carries an operation enum that selects which stablecoin conversion it performs, plus a uniform amount (the operation’s input quantity) and min_out (a slippage bound). There is no price-attestation transaction — the oracle price rides in the block’s OracleData section, not in a transaction.

Opamount is…min_out is…Purpose
MINT_STABLEANM deposited (Gust)min stablecoin out (NanoUSD)Deposit ANM at the oracle price and mint stablecoin, if the post-mint collateral ratio stays above the floor.
REDEEM_STABLEstablecoin burned (NanoUSD)min ANM out (Gust)Burn stablecoin and withdraw ANM at the oracle price.
MINT_RESERVEANM deposited (Gust)unused (0)Mint reserve-coin (the junior/equity tranche) by contributing ANM to the reserve.
REDEEM_RESERVEreserve-coin shares to burnmin ANM out (Gust)Burn reserve-coin and withdraw the corresponding ANM.
REDEEM_RECOVERYrecovery-token face (NanoUSD)min ANM out (Gust)Redeem recovery tokens (a deferred senior claim issued during a debt restructuring) pro-rata from the recovery fund.
ℹ️
During an earlier intermediate design these were five separate transaction types. They were folded into one Convert tx (type 7, with the op enum above) so the protocol keeps its small, fixed set of transaction types; the on-chain math and gating are identical. The taxonomy is 11 contiguous types (1–11) with no reserved gapsConvert is type 7, the protocol-only Coinbase mint is type 8, and the pooled-delegation Delegate / Undelegate / ClaimReward payloads are types 9–11 (the last type); any future type would append at 12.

Convert reuses the existing signature/auth machinery — it is an ordinary signed transaction, decoded by the same switch as every other payload type. Because mint/redeem move value against the committed oracle price and the reserve, they are gated by the module’s circuit breaker (a per-period net mint/redeem cap) and the operating mode (mint/redeem halt below the collateral floor or during the terminal wind-down).

At launch: bootstrap funding before minting opens

On a fresh network these transactions follow the two-phase reserve bootstrap (see Overview). During Phase 1, MintReserve is the bootstrap funding transaction: it seeds the reserve toward the genesis target (BootstrapReserveTarget, default 75,000 ANM) with the anti-hype cap bypassed. While the bootstrap is incomplete, MintStable is rejected — minting is gated until the reserve first reaches the target and the BootstrapDone latch flips. Once it does, MintStable opens under the normal collateral floor and MintReserve is subject to the anti-hype cap again.

See Overview for the mechanism and Oracle for how the price these transactions use is derived.

Transferring USD and reserve coin (peer-to-peer)

Convert changes the supply of an asset (mint/redeem against the reserve). Moving an asset between holders is a different operation: the unified Transfer (type 1) now carries an asset selector, so the senior USD stablecoin and the reserve coin (RC) are peer-to-peer transferable for the first time — the same one transfer path that moves native ANM.

Assetamount is…What moves
ANMGustthe native account balance (unchanged from before)
USDdisplayed NanoUSDsenior stablecoin shares (converted from the displayed amount at the current senior index)
RCreserve-coin sharesjunior-equity shares directly

A transfer is a pure move: it debits the sender and credits the recipient with no change to any global supply counter (it mints and burns nothing). Conservation is exact — Σ holder.Shares equals the unchanged senior TotalShares, and Σ ReserveCoinShares equals the unchanged ReserveCoinSupply. The recipient’s stablecoin account is created if it doesn’t exist yet, and the fee is always paid in native ANM regardless of the asset moved.

ℹ️
The recovery token (RT) is reserved in the asset enum but not yet transferable — its lazily-settled debt accounting makes a safe move more involved, so RT transfer is deferred to a later phase and rejected by the protocol for now.

From the wallet: anemos-wallet send transfer <FROM> <TO> <AMOUNT> --asset {anm|usd|rc} (the --asset flag defaults to anm).

Using it from the wallet

Each of the Convert operations maps to an anemos-wallet send subcommand — mint-stable, redeem-stable, mint-reserve, redeem-reserve, and redeem-recovery. For the exact command syntax, arguments, and a worked example against the public testnet endpoint, see Stablecoin transactions in the wallet tutorial.

Last updated on