NeoSPCC implements new RPC client interfaces in NeoGo v0.99.2 update
NeoGo has been updated to v0.99.2, bringing full compatibility with Neo v3.4 for the N3 MainNet and TestNet. Included in the release is an overhaul to the RPC client interfaces and new service management functions that will improve developer experience.
RPC refactoring
The most significant set of changes are in the RPC package. NeoSPCC began its RPC client refactoring in July by addressing unnecessary dependencies and outlining other issues that require breaking changes to amend.
In the plan, the team scopes various improvements to contract wrappers, including non-token methods for native contracts, support for test execution of state-changing methods, and the ability to perform calls against historic states.
NeoGo v0.99.2 brings the first of these improvements, while still offering support for the existing APIs. The Invoker package was added to handle invocations and can be used directly for read-only or historic calls. The new Actor interface was implemented to similarly handle creation and sending of transactions over RPC, and the Unwrap package was added to check execution results and stack item conversions.
Though Actor and Unwrap can be used directly, they are primarily for use under the hood of the high-level contract wrappers. An example is provided that demonstrates how to use the new tools to perform single contract calls with assertion and multiple transactions in a single script.
Other improvements
The release is the first to support Go 1.19 and drops support for Go 1.16 in the process. Users building from source will need to use Go 1.17 or higher moving forward. As the update involves native contract state changes, node operators will be required to resynchronize their nodes to get correct data.
The ability to restart or reconfigure internal node services without restarting the node through the use of signals on Unix-like platforms was also added in v0.99.2. Developers will also find improved help messages in the CLI, better NeoGo-specific data for getversion RPC calls, and manifest correctness checking during contract compilation with the new build.
The full changelog can be viewed at the following link:
https://github.com/nspcc-dev/neo-go/releases/tag/v0.99.2