EOS.IO software will first be the platform that coordinates the delivery of authentication messages (called "operations") to accounts. The details of the scripting language and virtual machine are implementation-specific details, and most of these details are independent of the design of EOS.IO technology. Any language or virtual machine can be integrated with EOS.IO software API. These languages or virtual machines have sufficient performance, and have a deterministic and correct sandbox effect.
8.1 Clear instruction structure
All commands sent between accounts are defined by the blockchain consensus state model. This architecture allows seamless conversion between binary and JSON representations.
8.2 Define the architecture of the database
The database state is also defined using a similar pattern. This ensures that the data stored by all applications can be interpreted as human-readable JSON format, but stored and manipulated with binary efficiency.
8.3 General multi-index database API
The development of smart contracts requires a certain database model to track, store and find data. Developers usually need to sort or index the same data on multiple fields and maintain consistency between all indexes.
8.4 Separate authentication from application
In order to maximize parallel opportunities and minimize the computational debt associated with regenerating application state in the transaction log, EOS.IO software divides logic verification into three parts:
Verify that the Action is internally consistent;
Verify that all prerequisites are valid;
Modify the application status.
Verifying the internal consistency of the Action is read-only and does not require access to the blockchain state. This means that it can be executed with maximum parallelism. The prerequisites for verification (such as the required balance) are read-only, so you can also benefit from concurrency. Write permission is only required to modify the application state, and each application must be processed in sequence.
Authentication is a read-only process that verifies that operations can be applied. In fact, the application is doing this work, both calculations need to be performed in real time, but once the transaction is included in the blockchain, there is no longer a need to perform authentication operations.