Bismuth uses the account based system & not UTXO (Unspent transaction output)
The balances of Bismuth user accounts are stored as a global state. This architecture is relying on global state storage of accounts. It is less complicated to code than the UTXO (Bitcoin) approach and might hold benefits when adding decentralized applications.
- a global state stores a list of accounts with balances, code, and internal storage
- a transaction is valid if the sending account has enough balance to pay for it, in which case the sending account is debited and the receiving account is credited with the value
- if the receiving account has code, the code runs, and internal storage may also be changed, or the code may even create additional messages to other accounts which lead to further debits and credits
The benefits of accounts are:
- Large space savings: because every transaction need only make one reference and one signature and produces one output
- Greater fungibility: because there is no blockchain-level concept of the source of a specific set of coins, it becomes less practical to institute a redlist/blacklisting scheme
- Simplicity: easier to code and understand, especially once more complex scripts become involved
- Constant light client reference: light clients can at any point access all data related to an account by scanning down the state tree in a specific direction
One weakness of the account paradigm is that in order to prevent replay attacks, every transaction must have a "nonce" and the account must keep track of the nonces used.