function_type and function_parameters), accept one or more reserve_tokens, and pass through a lifecycle of HATCH → OPEN → SETTLE (or FAILED). Alpha bonds add risk-adjustment via the oracle_did-controlled MsgSetNextAlpha.
Before you start
You need:- An IXO account with sufficient
uixofor fees on the network you target — see Networks and endpoints. - An offline signer — see the SDK README on creating signers.
- For
MsgCreateBond: a controller DID, a creator DID, optional oracle DID for alpha bonds, and reserve token denoms. - For
MsgWithdrawReserve: the bond’sallow_reserve_withdrawalsflag must betrue.
Create a bond
Edit, set alpha, transition state
HATCH (initial fundraising), OPEN (active trading), SETTLE (settlement), FAILED.
Buy, sell, swap
Outcome payments and withdrawals
Verify the result
Query bond state through the Blocksync GraphQL API orixo.bonds.v1beta1 query endpoints on the gRPC gateway API.
Troubleshooting
invalid function type or parameters
invalid function type or parameters
function_type must be one of the supported curve types (power_function, sigmoid_function, swapper_function, augmented_function). Each requires a specific set of function_parameters — see the bonds proto.state transition rejected
state transition rejected
State transitions are constrained by the bond’s lifecycle.
HATCH → OPEN requires the hatch threshold to be met. OPEN → SETTLE is typically called once the outcome obligation is met or the bond expires.reserve withdrawal not allowed
reserve withdrawal not allowed
MsgWithdrawReserve fails when allow_reserve_withdrawals is false on MsgCreateBond. This flag is immutable.alpha update unauthorized
alpha update unauthorized
Next steps
IXO MultiClient SDK
Module-level features and types.
Bonds proto definitions
Source of truth for bond messages.
Manage tokens
Mint outcome tokens against settled bonds.
Liquid staking
Stake IXO tokens for use in bonded protocols.