Skip to main content
An example of how to build an OTC trading app for multi-leg standard token trades. Used as part of the testing infrastructure to test the DvP workflows based on the token standard.

Templates

template OTCTrade
Signatory: venue, tradingParties transferLegs
  • Choice Archive Controller: venue, tradingParties transferLegs Returns: () (no fields)
  • Choice OTCTrade_Cancel
    Controller: venue Returns: TextMap (Optional Allocation_CancelResult)
  • Choice OTCTrade_Settle
    Controller: venue Returns: TextMap Allocation_ExecuteTransferResult
  • interface instance AllocationRequest for OTCTrade
template OTCTradeProposal
Signatory: approvers
  • Choice Archive Controller: approvers Returns: () (no fields)
  • Choice OTCTradeProposal_Accept
    Controller: approver Returns: ContractId OTCTradeProposal
  • Choice OTCTradeProposal_InitiateSettlement
    Controller: venue Returns: ContractId OTCTrade
  • Choice OTCTradeProposal_Reject
    Controller: trader Returns: ()

Functions

tradeAllocations : SettlementInfo -> TextMap TransferLeg -> TextMap AllocationSpecification
tradingParties : TextMap TransferLeg -> Set Party
require : CanAssert m => Text -> Bool -> m ()Check whether a required condition is true. If it’s not, abort the transaction with a message saying that the requirement was not met.
makeTradeRef : ContractId OTCTradeProposal -> Reference
zipTextMaps : TextMap a -> TextMap b -> TextMap (Optional a, Optional b)
forTextMapWithKey : Applicative f => TextMap a -> (Text -> a -> f b) -> f (TextMap b)