Skip to content

Recalibration

Compare
Choose a tag to compare
@roman-khimov roman-khimov released this 12 Aug 16:08
· 2022 commits to master since this release

This is a 3.4.0-compatible (tested for mainnet and testnet) update to NeoGo that implements all of the required protocol changes, adds a lot of new RPC client interfaces and provides additional service management functions. This is also the first version to support the recently released Go 1.19. Support for Go 1.16 is removed at the same time, so you need Go 1.17+ to build NeoGo now.

With this version you can turn on/off, restart or reconfigure internal node services like RPC or Oracle without full node shutdown/startup. Node operators can send an appropriate Unix signal and that'll do the job. At the same time node operators must resynchronize their nodes when updating to 0.99.2 due to native contract state change.

A number of RPC client's methods are now deprecated (but still available to simplify transition), please explore new APIs, try them and leave feedback in #2597 if any. We expect new APIs to better fit the needs of various backend RPC client use cases while allowing to remove some repetitive code from applications at the same time. This release only contains generic NEP-17 call wrapper, so it doesn't cover all of the things currently provided by the old client API, but this will be fixed in future releases.

New features:

  • signal-based configuration and service reloads (#2612)
  • new APIs in smartcontract package to convert Go types into NEP-14 parameters (#2621, #2632)
  • invoker package to deal with invocations via RPC in various contexts (mostly useful for read-only and/or historic calls when used directly, #2621)
  • hasMethod method in the ContractManagement native contract (#2598, #2619, #2640)
  • actor package that helps in creating and sending transactions to the network via RPC using the same set of signers (can be used directly, but mostly intended to be used by higher-order contract wrappers, #2632, #2637)
  • unwrap package in the RPC client that checks for execution results and
    converts returned stack items to expected Go types (can be used directly, but more useful when being used by upper-layer contract wrappers, #2638)
  • nep17 RPC client package for simple remote access to NEP-17 contract methods via RPC, both safe and state-changing (#2642)

Behavior changes:

  • smartcontract.Params type and (*Parameter).TryParse APIs were removed completely as unused and not useful (#2621)
  • compiler now rejects unnamed parameter for exported methods (but they didn't work properly anyway, #2601)
  • restored deploy-time out of bounds script checks (#2538, #2619)
  • dynamic scripts (like entry scripts) no longer can emit notifications (#2613)
  • db dump and db restore CLI commands now reject --debug option (it was ignored previously, #2625)

Improvements:

  • manifest correctness check during compilation (#2601)
  • more robust CalledByEntry scope check (#2613)
  • a check for excessive arguments in CLI (#2625)
  • better help messages for CLI commands (#2625)
  • Go 1.19 support (#2634)
  • saved transactions created via CLI (--out) now use the maximum possible ValidUntilBlock values (#2632)
  • RPC server now returns more data about NeoGo-specific protocol extensions in getversion reply (#2632)

Bugs fixed:

  • NEP-6 wallet version was wrong wrt the standard and C# implementation (#2633)
  • smart contract invocations from the CLI didn't compensate for interactive prompt wait time which could lead to transaction expiration before it was sent (#2632)
  • Oracle native contract's finish method reentrancy problem (#2639)