-

@ hoppe
2025-04-27 10:31:36
Normalization is a principle of database design that aims to eliminate redundancy. It means that if data can be derived from the source data, it should not be stored in the database (although this is often ignored for performance reasons). In this context, considering the differences between the UTXO model (represented by Bitcoin) and the account model (represented by Ethereum), the latter may seem more convenient and intuitive for usage, but from the perspective of data normalization, it has its drawbacks.
In Ethereum, the balance of my address is 'recorded' on the blockchain, so I can immediately know how much it is, and development is easier. However, in Bitcoin, the concept of account balance does not exist; the balance is simply the sum of the UTXOs that I control. I have to calculate and display the total every time.
But if you think about it, the account balance is not a piece of data that originally exists. The balance is merely the cumulative sum of the amounts that have come and gone from my address. Ultimately, it is storing separate aggregate information redundantly. This carries the risk of data integrity issues. Of course, the calculation of the cumulative amount and the balance is designed to be atomic, but that does not come for free; it consumes additional computational resources.
The most representative trade-off is that Ethereum must permanently maintain the nonce value of an account. In Bitcoin, each UTXO exists completely independently, so a transaction using a UTXO only needs to validate its own transaction. However, in Ethereum, the balance is literally the sum of previously received values, so it is not a matter of using a specific coin. Therefore, it cannot be validated separately, and all transactions occurring in an account must be processed sequentially, adhering to the nonce values in order. The account balance must be updated in sequence.
The nonce value cannot be deleted by the network even if the address is no longer in use, so it remains permanently. Assuming that there is no need to look for past transactions and that I only need to handle what I will receive, I can aggressively delete everything else while maintaining the UTXO set in Bitcoin. However, this is not possible in Ethereum (various attempts have been made to mitigate this, but ultimately, it requires sacrificing something else to achieve it).
For these reasons, the amount of hard disk space required to verify transactions and my account without relying on anyone else is slightly over 12GB for Bitcoin, while for Ethereum, as far as I know, it exceeds 100GB.