Skip to Content
ConceptsSettlement (DvP)

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, MsgCancelReference → 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