Cardano (ADA), a major blockchain platform for building decentralized applications or dApps, has introduced an extended UTXO accounting model that’s developed specifically to support multi-assets and smart contracts.
As explained in a blog post by IOHK, the term transaction “usually evokes financial echoes.” Although such meaning may apply to Bitcoin (since the Bitcoin or BTC blockchain is used to transfer funds between peers), many other blockchain networks (like Cardano) are “far more versatile,” its developers claim. As noted by IOHK, in these particular cases, the term “transaction” is a lot more “nuanced.” We may think of transactions as transfers of value, the blog post added.
As explained in the blog by IOHK, each blockchain-based transaction may have one or several different inputs, along with one or even multiple outputs. We may think of a transaction as “the action that unlocks previous outputs, and creates new ones.”
A transaction output may include an address (that you may think of as a type of lock) and a value. As noted in the blog post, “in keeping with this analogy, the signature that belongs to the address is the key to unlock the output.” After it has been unlocked, an output may then be used as input. New transactions “spend outputs of previous transactions, and produce new outputs that can be consumed by future transactions” and “each UTXO can only be consumed once, and as a whole.” Each output may then be spent by “exactly one input, and one input only,” the blog post explained.
The post further noted that “a transaction input is the output of a previous transaction.” Transaction inputs include “a pointer and a cryptographic signature that acts as the unlocking key,” the post added while noting that the pointer “points back to a previous transaction output, and the key unlocks this output.”
When an output is “unlocked by an input, the blockchain marks the unlocked output as ‘spent’.” New outputs “created by a given transaction can then be pointed to by new inputs, and so the chain continues,” the blog noted while pointing out that these “new outputs (which have “not yet been unlocked, i.e., spent”) are the UTXOs.” Unspent outputs “are simply that, outputs that have not yet been spent,” the post added.
It also mentioned that in a UTXO accounting model, transactions “consume unspent outputs from previous transactions, and produce new outputs that can be used as inputs for future transactions.”
The users’ wallets “manage these UTXOs and initiate transactions involving the UTXOs owned by the user,” the post explained.
“Every blockchain node maintains a record of the subset of all UTXOs at all times. This is called the UTXO set. In technical terms, this is the chainstate, which is stored in the data directory of every node. When a new block is added to the chain, the chainstate is updated accordingly. This new block contains the list of latest transactions (including of course a record of spent UTXOs, and new ones created since the chainstate was last updated). Every node maintains an exact copy of the chainstate.”
Bitcoin or BTC’s “vanilla” UTXO accounting model may not be suitable for Cardano, as the blockchain network is designed to do a lot more than simply process payments. As explained by its developers, the need for more “programming expressiveness” for the upcoming smart contracts functionality in the Alonzo era needed a novel or better (‘Extended’) solution.
The ‘basic’ UTXO model has “a limited expressiveness of programmability,” the developers noted. They also mentioned that Ethereum’s Account/Balance accounting model addressed this issue with an account-based ledger and related contract accounts. However, with this approach, the semantics of the contract code became really complex, which had the undesired effect of “forcing contract authors to fully grasp the nuances of the semantics to avoid the introduction of potentially very costly vulnerabilities in the code,” Cardano’s developers claim.
An ‘extended’ UTXO solution needs more functionality which the current UTXO model was unable to offer. For instance, it couldn’t provide the ability to “be able to maintain the contract state.” It also couldn’t offer the ability to “enforce that the same contract code is used along the entire sequence of transactions.” Cardano developers refer to this as “continuity.”
As noted in the blog, a “powerful feature of the EUTXO model is that the fees required for a valid transaction can be predicted precisely prior to posting it.” The developers claim that “this is a unique feature not found in account-based models.”
They further noted that “by adding custom data to outputs (in addition to value), and by allowing for more “locks” and “keys” deciding under which condition an input can be unlocked for consumption by a transaction.” They also mentioned that “instead of just having public keys (hashes) for locks and corresponding signatures serving as “keys”, EUTXO enables arbitrary logic in the form of scripts.” This arbitrary logic “inspects the transaction and the data to decide whether the transaction is allowed to use an input or not,” the blog explained.
While clarifying what makes the EUTXO model “innovative” and “relevant”, the developers concluded:
“Cardano’s ledger model extends the UTXO model to support multi-assets and smart contracts without compromising the core advantages of a UTXO model. Our innovative research enables functionality beyond what is supported in any other UTXO ledger, making Cardano a unique competitor in the next-generation blockchain space.”