It is important to keep track
of the state, e.g., in order to perform verification of transactions. While it is possible to reconstruct
the most updated state by starting from the initial state and replaying all transactions recorded
in the ledger, this would be a time-consuming and inefficient process, especially since the ledger
size is continuously growing.
As a result, all blockchain systems store explicit information about
the current state in addition to the transactions. For example, Bitcoin uses a UTXO set database in addition to storing its blockchain, and Ethereum and Hyperledger Fabric have a world state database for holding the current value of the accounts in addition to their blockchain database. Now, I want to know what was the state tracking approach in IOTA IRI version:
1- Was IOTA IRI using a UTXO set model or an account-based model?
2- Is there any separate database for storing and tracking the current state of the Tangle (in addition to Tangle's RocksDB database which holds the whole history of transactions)? If yes, is it again another RocksDB database?
3- If the answer to the above question is yes, then what is the trigger and frequency of updating the state database?
getBalances
API of the node to get the confirmed balance. Which in most cases only checks the state and not the tangle. Only when there is currently a milestone applied it will have to check both the state and the recently confirmed tangle transactions. It will also check unconfirmed transactions (from the Tangle) and display them, but not update the balance from them.