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?

  • 1
    While IRI is outdated for now, I believe the RocksDB database of IRI also contained the state database (balance for each address, and which milstone number it referred to), which was updated whenever a solid milestone was detected. So only transactions that were not included in this milestone were needed to be replayed to get the current balance and verify outgoing transactions. – mihi May 7 at 21:46
  • Thanks for the precise answer. Then, do you know the relation between trinity wallet and this state database? It is mentioned here that the trinity wallet is always up-to-date with the latest state on the tangle. Does it mean that the wallet is checked with the tangle database instead of the state database? If yes, it would be time-consuming and not reasonable! – MHT May 8 at 14:36
  • The trinity wallet called the 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. – mihi May 8 at 20:21

premise I am not an engineer.

What I know is that IRI is deprecated for some time now.

The actual node software are:
HORNET - IOTA Community project and written in Golang
Bee - IOTA Foundation project and written in Rustlang

The IOTA architecture has gone through a complete rework (codename Chrysalis) that has been activated on the mainnet the 28th of April 2021.

More information about Chrysalis is available here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.