Neo3 Preview5 has been released with the implementation of MPT-based state services with automatic pruning to ensure consistent data execution results for blocks. A new Neo domain name service compatible with traditional IP domain names is also included in this release, which can be used to translate sophisticated address strings to easy-to-remember domain names. Moreover, Oracle and consensus plugins have been added in this release to facilitate subsequent system upgrade and replacement.
NGD will perform the Neo3 Preview5 TestNet upgrade from UTC 6:00AM to 9:00AM, 4th February 2021. The TestNet might be temporarily unstable during this period. We are sorry for any inconvenience caused.
The comprehensive list of improvements and optimizations in this version:
We have implemented the MPT-based state tree to ensure the consistency of block execution data. Normal nodes can only keep the latest state data, with the old historical state data is automatically cropped out, keeping nodes light weighted. At the same time, StateRoot will be used to verify if a transaction is successfully executed on-chain, such as SPV for light nodes, validation for cross-chain transactions, and so on.
We have been storing some core data such as blocks, transactions, and etc., in various tables on Neo. This is actually unnecessary and will complicate the storage logic. After thorough consideration a new native contract, LedgerContract is added in this version. This contract contains all “ledger-related” functionalities (e.g., Block/TrimmedBlock, Transaction, and etc.) and will help to simplify the overall code logic.
Presented in Hex strings, contract account addresses on Neo are inconvenient for users to remember and use. To improve user friendliness and promote adoption, a new native contract, NameService is included in this version. This contract introduced a domain name system: Neo Name Service (NNS). This service can translate difficult-to-remember Hex strings to user-friendly domain names so that users can initiate a transaction to an easy-to-remember domain name rather than a random string.
As consensus logic is only needed by part of all full nodes, we decided to move consensus logic from neo-core to a new plugin: dBFT module, in order to simplify the code logic for consensus algorithm choosing as well as future upgrading. Unlike the default configuration within config.json, users can now choose whether to install the dBFT plugin to utilize consensus logic.
The Oracle enables smart contracts to access external information. Oracle obtains corresponding information in a decentralized way as requested by smart contracts. The Oracle contract and logic have already been released in Neo3 Preview4. In Neo3 Preview5, the Oracle module is officially released for the utilization of Oracle service. Oracle nodes can now participate in Oracle services by installing this module.
Other improvements and optimizations
- Allow plugins to send custom messages
- Allow block synchronization using index or hash