Before you start
You need:- An IXO account with
uixofor fees on the network you target — see Networks and endpoints. - An offline signer — see the SDK README.
- The granter and grantee bech32 addresses.
Grant a send authorization
SendAuthorization lets the grantee call cosmos.bank.v1beta1.MsgSend from the granter, capped at spend_limit.
cosmos.authz.v1beta1.GenericAuthorization with the target msg type URL.
Execute a granted message
The grantee wraps the message they were authorized to send insidecosmos.authz.v1beta1.MsgExec.
ibc.applications.transfer.v1.MsgTransfer.
Revoke an authorization
Grant a fee allowance
Revoke a fee allowance
feePayer in the transaction’s fee object — the granter is debited instead of the grantee.
Verify the result
Query active grants through the gRPC gateway API:cosmos.authz.v1beta1.Query/Grants— grants between a granter and granteecosmos.authz.v1beta1.Query/GranterGrants— all grants issued by a grantercosmos.authz.v1beta1.Query/GranteeGrants— all grants received by a granteecosmos.feegrant.v1beta1.Query/Allowance— fee allowance status
Troubleshooting
execution failures
execution failures
Confirm the grant has not expired, the grantee’s transaction message URL exactly matches the authorization’s allowed type, and the spend limit has not been exhausted.
fee allowance issues
fee allowance issues
Ensure the granter has sufficient balance for the allowance, the allowance type matches the use case (
BasicAllowance vs PeriodicAllowance vs AllowedMsgAllowance), and the transaction’s feePayer is set to the granter.Next steps
Custom authorizations
Use IXO-specific authz types for entities, claims, and tokens.
Smart accounts
Add programmable authenticators on top of authz.
Cosmos authz module
Full reference for
x/authz.Cosmos feegrant module
Full reference for
x/feegrant.