Both instantaneous use and long-term use of these two types of components consume bandwidth and computation. The blockchain system will maintain a log of all messages, which will be downloaded and stored by all full nodes. Through the log information, the state of all applications can be reconstructed.
Calculating the debt is the calculation that must be performed in order to regenerate the state from the operation log. If the amount of accountable debt increases too much, then it is necessary to take a snapshot of the current state of the blockchain and abandon the historical state of the blockchain. If the calculated debt grows too fast, it may take 6 months for the blockchain to replay 1 year of transactions. Therefore, careful management of calculated debt is essential.
Blockchain storage state is information that can be accessed from application logic. It includes information such as orders and account balances. If the application has never read the state, it should not be stored. For example, the application logic does not read blog post content and comments, so it should not be stored in the blockchain state. At the same time, releases/comments, the number of votes and the existence of other attributes will be stored as part of the blockchain state.
Block producers can publish their available bandwidth, computing resources and state capacity. The EOS.IO system allows each account to consume a certain percentage of available capacity in a three-day gambling contract. For example: Suppose a blockchain application based on the EOS.IO system is launched. If an account holds 1% of the total tokens provided by the blockchain, then this account can use 1% of the blockchain's state storage capacity.
Using the EOS.IO system in the activated blockchain, bandwidth and computing power will be allocated to a partial reserve base because they are temporary (unused capacity cannot be stored for future use). The EOS.IO system will use an algorithm similar to Steem to limit the bandwidth usage rate.
6.1 Objective and subjective measurement
As mentioned earlier, the use of measurement calculations has a significant impact on performance and optimization. Therefore, all resource usage restrictions are ultimately subjective and are executed by the block producers according to their respective algorithms and estimates, usually by the block producers. Write custom plugins to execute.
That being said, there are some things that are trivial to measure objectively. The number of operations delivered and the size of the data stored in the internal database are cheap to objectively measure. The EOS.IO software enables block producers to apply the same algorithm to these objective measurements, but can choose to apply more rigorous subjective algorithms to subjective measurements.