Project TXA

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