The introduction of a voting-based consensus requires a fast and easy way to determine a node's initial opinion for every received transaction. This includes the ability to both detect double spends and transactions that try to spend non-existing funds. These conditions are fulfilled by the introduction of a Unspent Transaction Output (UTXO) model for record-keeping, which enables the validation of transactions in real time.
The UTXO model defines a ledger state where balances are not directly associated with addresses but with the outputs of transactions. In this model, transactions specify the outputs of previous transactions as inputs, which are consumed in order to create new outputs. This allows users to specify which funds are to be spent even if multiple parties have sent funds to the same address.
To deal with double spends, we introduced a new “reality based ledger state.” In this approach, we model the different perceptions of the ledger state that exist in the Tangle. In each “reality” on its own there are zero conflicting transactions, and the composition of all realities defines the Realities Ledger State. Nodes are thus enabled to know which possible outcomes for the Tangle exist, where they split, how they relate to each other, if they can be merged and which messages are valid tips. All of this information can be retrieved in a fast and efficient way without having to walk the Tangle.
In order to enable the Realities Ledger State our true love and addiction to DAGs is shown: we capitalize on the existence of the UTXO DAG and the corresponding reality DAG, whose branches come to existence from double spends. The information contained within these is then projected onto the Tangle, which captures the information from the UTXO layer onto the messages themselves.