The following sections will cover the differences between the Account and UTXO models as well as Findora's implementation of the hybrid model. The purpose of this hybrid model is mainly to take advantage of the security and stateless nature of UTXO transactions while providing compatibility with the EVM network through the accounts model.
- A UTXO model stores its assets as a set of unspent transaction outputs whereas the account model stores a set of addresses with their associated balances.
- UTXO transactions specify the resulting state but in an account model the resulting state is dependent on the previous one.
- The account model simplifies UI/UX implementations in terms of displaying balances for specific addresses where it is a bit more complex to display this information from a UTXO based system. Since most users are familiar with accounts and balances, this needs to be generated by summing up the UTXO's of given addresses.
- With a UTXO based system, the smart contracting abilities are limited. This is because of the nature of the conditions set within the UTXO for spending. This can require signatures that can be difficult to produce.
- When executing transactions in an account based system, each transaction must be processed serially when dealing with the same address. The UTXO model can however process its transactions in parallel since it is impossible for two transactions to affect the same UTXO.
- There is a precaution that must be made for Account based systems to ensure previously signed transactions are not replayed on the network. This is usually in the form of an incrementing nonce that ensures uniqueness. For UTXO based systems this is not an issue since every UTXO gets consumed and can't be spent again.
The hybrid model implemented by Findora allows users to store assets in the form of a UTXO or balance. It is able to do this by using separate storage methods while combining their hashes to maintain integrity within the network.
There are two main transactions that a user can broadcast in order to translate the asset types from one to the other:
- Transfer UTXO assets to account balance
- The transaction is built with a Transfer and Convert operation
- The UTXO is burnt by transferring to a burn address
- Assets are minted for the owner address specified in the transaction
- Transfer to UTXO assets from account balance
- Assets are burnt from the specified address by subtracting the balance
- Minting operations are queued to be processed by the chain
- The Ledger mints UTXOs based on the amounts specified
Once Assets can be transferred between the different models, the system can take advantage of the capabilities provided by both Accounts and UTXO models.
In other words, some of the disadvantages experienced by one model can be overcome by making use of the other. For example:
- The accounts model can provide a contracting environment by integrating an EVM implementation.
- The UTXO model can provide a level security by preventing replay attacks.
- Confidential and anonymous functionality implemented on the Findora chain is available through the UTXO model