Neo SPCC has released NeoGo v0.99.0, a major upgrade offering compatibility with Neo-CLI v3.3.0. The update also features new RPC methods for performing invocations against old chain states.

The latest NeoGo release contains many of the same improvements added to the reference implementation. Examples include contract call isolation to allow for state rollbacks when exceptions occur, new native contract methods such as the Murmur32 hash function, and vote/candidate state change events in the NeoToken contract.

Most notably in v0.99.0, Neo SPCC introduces counterparts to the invokefunction, invokescript, and invokecontractverify calls for use with historic data. This will greatly improve the practicality of working with old chain states for developers.

Previous N3 updates introduced the state services, adding RPC methods that enable retrieval of previous contract states from the MPT. This makes it possible to get raw contract storage values for previous blocks, such as a token balance for a particular address at a certain block height.

However, in many cases, stored values will need further processing before they yield useful information, which would normally be handled by a contract method on-chain. Further, developers may want to observe the outcomes of specific contract invocations or custom scripts as they are executed at different points in time (and therefore at different chain states).

Historic invocation results for GasToken total supply calls (Left: Block 1, Right: Block 1.5M)

With the new APIs, this process becomes as easy as performing a regular invocation at the current chain height; users simply specify a block height, hash, or state root alongside the usual parameters. If the historic request is performed using states from block N, then the result of the historic request will be as if the request was the first transaction in block N+1.

Like the recent C# node update, the new NeoGo version will also require a full resynchronization for the T5 TestNet and MainNet. Users are also encouraged to check their config files to ensure that the Aspidechelone hard fork is enabled at the correct height for the network they are using. Node operators on the T4 TestNet should continue using NeoGo v0.98.5.

The full changelog and downloads can be found at the following link:
https://github.com/nspcc-dev/neo-go/releases/tag/v0.99.0