Skip to main content

Module allocation

Module allocation 

Source
Expand description

Allocations: reserving holdings now so a third party can settle later.

A transfer moves an asset between two parties. An allocation is what a settlement needs instead: the sender commits holdings to one leg of a settlement, and an executor — neither sender nor receiver — settles it afterwards. That is what makes delivery-versus-payment expressible, since both legs can be allocated before either moves.

It follows the same two steps as a transfer, and for the same reason: the factory is the registry’s contract and only the registry knows what the choice needs.

Once an allocation exists, the choices on it — execute, withdraw, cancel — each need a context of their own, and it is fetched per choice. The standard is explicit that a context must not be reused across choices.

Functions§

allocate
Resolve the allocation factory and build the exercise that allocates allocation.
cancel
Build the exercise that cancels an allocation.
execute_transfer
Build the exercise that settles an allocation’s transfer.
withdraw
Build the exercise that withdraws an allocation, releasing the holdings.