Thoughts on Bytom Design: Extension of UTXO Structure
Gavin Guo, the author of the article and the developer of Bytom, explains the new UTXO model of Bytom.
14th June, Hanghzou – The user model is an important data structure that needs to be settled down at the very beginning of Bytom’s design. Two typical options are available for the team: the Account model and the UTXO model. Just like most other blockchain designs, model selection will determine the design protocol layer. These two models have their own pros and cons and therefore suitable for different application scenarios.
The origin of UTXO (from the well-known Satoshi Nakamoto)
Satoshi Nakamoto led us into the world of digital currency with Bitcoin, from which UTXO is originated. The advantage of UTXO is:
In terms of version control considerations, svn is a centralized database with one copy of ledger, which is naturally contrary to the design of the blockchain. Git is a decentralized database but with too much redundant data, performance of which is certainly less satisfactory. UTXO is Git-type database that abandons historical data. It keeps the latest version only and therefore simple and practical.
UTXO is anonymous in nature. It’s difficult to identify an unspent transaction and its corresponding account. For example, Monroe use of coin-mix to achieve anonymity.
In terms of performance, since UTXO is a separate data record, it has great potential to achieve parallelism that can improve the speed of transaction validation.
Ethereum abandons UTXO and turn to account model
Gavin Wood, the designer of the Ethereum Yellowpaper, has a profound understanding of UTXO. Then why he abandoned UTXO despite its merits? At this point you should ask a question, what is the biggest highlight of Ethereum? You will definitely answer: smart contract. It is difficulty for Gavin Wood build Turing complete smart contract based on UTXO (super computer with diversified functions). The account model is object-oriented naturally. Each transaction will be recorded in the corresponding account (nonce ++). In order to facilitate the management of accounts, the world state is introduced in the design. Each transaction will change the state of the world. This is a projection of the real world as every tiny change will change the world.
The pursuit for higher performance
The Account model of Ethereum makes it easy to implement the supercomputer model. However, performance has always been an insurmountable hurdle. In terms of performance, utxo can run in parallel while the world state of Ethereum is difficult to scale. Gavin Wood, of course, is aware of this, but it’s hard to change. It would be better to use RUST, the functional programming language, to recode Ethereum, which can be considered a compromise.
As described in Marxism philosophy, things are progressing in spiral upwards, which also applies to realm of blockchain. One step forward usually requires half a step backward. A stack-type virtual machines based on UTXO will lose its flexibility. It’s also difficult and impractical trying to integrate UTXO with Ethereum EVM. It is like to code object-oriented programming in cpp style with Haskell language. There is no silver bullet in this world. Bytom has to give up and compromise to a certain extent to be better adapted by the environment.
Aside from the UTXO-based model that is friendly to parallel computing, targeted improvement has been proposed. An asset number field is introduced so that different assets can be processed and exchanged in the same transaction, as long as the total input is equal to the total output.
We introduce the concept of the world state in Ethereum for easy management and coding. Each asset is to maintain a global world state, which is quick to search, immutable and easy to prove. Its implementation will refer to the PAT tree of Ethereum (an extended base tree), the merkle tree of Bitcoin and the IAVL tree of cosmos (an unchangeable balanced binary tree). All output of an asset will have an index count in a global UTXO database (each output count cannot exceed 1 to ensure one output can only be used by one BVM instance and data consistency in the processing parallel computing). BVM is a smart contract virtual machine for Bytom. Execution of each transaction is substantiated by a BVM instance. Only in BVM substance, the world state of each asset can be updated while maintain the validity and consistency. BVM can create multiple instances of “contract sandboxes” in parallel, and the operation of the contract in the sandbox is not affected by the external conditions.
Bytom is created to solve the problem of registration and circulation of digital assets. Simplicity, efficiency is equal to security for a public blockchain project. The new UTXO model is created and improved to realize such scenario.