UTXO DAG Description

The history of the entire ledger representing balances collateralized on a Participating Interface can be represented as a direct acyclic graph with the following properties:

  • every node is either a UTXO or a TraderIntent

    • a UTXO represents the state of an entry in the ledger

    • a TraderIntent represents an action initiated by the owner of the ledger entry

  • a TraderIntent can only have vertices that connect to a UTXO

  • a UTXO must have 1 input vertices and 0 or 1 output vertices

  • a TraderIntent must have 0 or more input vertices and 1 or more output vertices

  • a Deposit:

    • is a TraderIntent that has no input vertices and 1 output vertex

    • must output a DepositUTXO

  • a DepositUTXO:

    • has 1 input and 0 or 1 outputs

    • is a UTXO that represents a digital asset first entering the ledger of a PI through an AssetCustody contract

    • every UTXO either is a DepositUTXO or is a descendant of a DepositUTXO (meaning if you follow the inputs of any UTXO, you will eventually reach a DepositUTXO)

    • no descendant of a UTXO can be a DepositUTXO

  • a Trade:

    • represents a PI matching two trader-signed orders and including them in the ledger

    • is a TraderIntent that has at least 2 input vertices and 4 output vertices:

      • each input must be either a DepositUTXO or an ObligationUTXO

      • each output must be either an ObligationUTXO or a FeeUTXO

    • swaps ownership of UTXOs between two traders, creating the new ledger entries as well as entries for any fees paid

  • a ObligationUTXO:

    • has 1 input and 0 or 1 outputs

    • is a UTXO that represents a ledger entry in the PI that is "out-of-sync" with the AssetCustody contract. It will either continue to be transferred on the ledger as a result of a Trade, or it will become a SettledUTXO

  • a FeeUTXO:

    • has 1 input and 0 outputs

    • is a UTXO that represents a fee paid by a trader

Last updated