Settlement (delivery versus payment)
A settlement is a bilateral trade whose legs all move in one transaction or not at all. The proposer lists what it gives and what it gets; the counterparty accepts, declines, or lets it expire.
- Escrow at propose. The proposer’s right legs are locked under
settlement/<id>(they stay in the proposer’s position, locked) and its coin legs move to the settlement module account. The counterparty’s side is not escrowed. - Policy at accept. No policy is evaluated at propose — it would be stale by accept. At accept, every right leg’s recipient is checked on the state after all legs, so a holder cap sees the final counts.
- All or nothing. Any failing leg at accept aborts the whole transaction: the settlement stays PENDING with its escrow intact.
- Release always works. Cancel and expiry release the escrow even while the asset is frozen; freezing blocks only accept.
- Bilateral only. No third parties, no open offers, no partial fills.
Legs
A leg is give or get, then either a right (right:<asset>:<kind>:<units>)
or a coin (coin:<amount><denom>):
# the proposer gives 400 units of kind 1 and gets 1000 aeUSD
aevad tx settlement propose <counterparty> \
"give:right:<asset-id>:1:400,get:coin:1000000000aeusd" --expires-in 1h --from alice
aevad tx settlement accept <id> --from bob
aevad tx settlement cancel <id> --from alice
aevad query settlement settlement <id>Coin amounts are in base units: 1 aeUSD is 1000000aeusd.
Messages
MsgPropose, MsgAccept, MsgCancel —
Reference → Messages.
On the explorer
/settlements/<id> — the two sides, the status timeline, the escrow and the
transactions. The home page lists the latest settlements; /settlements
filters by status.
Last updated