UTxO

UTxO

In a UTxO-based blockchain, a Transaction is a binding between inputs and outputs.

                  input #1  >---*         *---> output #1 
                                \        /
                  input #2  >---*--------* 
                                /        \
                  input #3  >---*         *---> output #2

In a standard payment, outputs are a combination of:

  • A value
  • A reference (a.k.a address, a “proof” of ownership telling who owns the output).
                input #1  >---*         *---> (123, DdzFFzCqr...) 
                              \        /
                input #2  >---*--------* 
                              /        \
                input #3  >---*         *---> (456, hswdEoQCp...) 

About address encoding

We usually represent addresses as encoded text strings. An address has a structure and a binary representation that is defined by the underlying blockchain. Yet, since they are often used in user-facing interfaces, addresses are usually encoded in a human-friendly format to be easily shared between users.

An address does not uniquely identify an output. As a matter of fact, multiple transactions could send funds to a same output address! We can however uniquely identify an output by:

  • Its host transaction id
  • Its index within that transaction

This combination is also called an input. Said differently, inputs are outputs of previous transactions.

                 *---------------- tx#42 ----------------------*
                 |                                             |
 (tx#14, ix#2) >-----------------*       *--> (123, DdzFFqr...)--- (tx#42, ix#0)
                 |               \      /                      |
 (tx#41, ix#0) >-----------------*-----*                       |
                 |               /      \                      |
 (tx#04, ix#0) >----------------*        *--> (456, hswdQCp...)--- (tx#42, ix#1)
                 |                                             |
                 *---------------------------------------------*

Therefore, new transactions spend outputs of previous transactions, and produce new outputs that can be consumed by future transactions. An unspent transaction output (i.e. not used as an input of any transaction) is called a UTxO (as in Unspent Tx Output) and represents an amount of money owned by a participant.

FAQ