NGD has announced the release of Neo3 Preview5, the final major update before the formal TestNet version. The Preview5 TestNet upgrade was scheduled for Feb. 4, occurring between 6:00 a.m. and 9:00 a.m. (UTC).
The new update features various new functionality, including the built-in name service, oracle module, and more. Developers will be able to begin testing the oracle service in smart contracts once oracle nodes using the new module are operational. Preview5 is also the first release based on Microsoft’s new .NET 5.0 SDK.
Alongside oracles and the Neo Name Service, Preview5 also brings state root functionality to Neo3 for the first time. This will allow nodes and users to verify the correct execution of blocks without needing to trust third party information. To keep the network accessible, lightweight nodes are supported, which will only keep the latest state data, while historical data is automatically pruned to save disk space. Nodes can instead opt to store the entire state history.
With the addition of state root, users and services can now use SPV (simplified payment verification) to verify whether or not a transaction has been successfully executed on-chain. The tool is also important for cross-chain functionality, which depends on state consistency to protect funds when moving funds between networks.
The new release also brings with it a number of code simplifications. For example, as consensus logic is only used by a small number of full nodes on the network, this logic has been moved to a new plugin module. Users can now decide whether or not to install the dBFT plugin to access consensus logic, while future improvements or alternate consensus algorithms will be easier to support.
Other core data structures have also seen adjustment. Blocks, transactions, and other various information was previously stored across different tables on Neo, unnecessarily complicated the storage logic. Following discussion between developers, a new native contract called LedgerContract has been implemented, which will contain any functionality pertaining to ledger data itself. This is expected to further simplify the codebase.