Skip to content

Zephyranthes

Compare
Choose a tag to compare
@AnnaShaleva AnnaShaleva released this 21 May 12:57
· 305 commits to master since this release
5cbfe21

We're rolling out a large set of updates including all of Neo 3.7.4 protocol changes: native contracts update functionality and extended native contract APIs united under the upcoming Cockatrice hardfork. For smart contract developers an ability to generate smart contract bindings with dynamic hash is supported as well as a number of useful extensions for unwrap package, compatible NNS smart contract RPC binding and a lot of other handy enhancements. This release also includes a couple of severe regression bug fixes affecting the node state. As a bonus of fixing a wide range of failing tests, we've refactored the node services start and shutdown procedures to make it more stable. This version drops support for Go 1.19 and requires 1.20+ to build (with Go 1.22 supported).

Notice that this release requires full node resynchronization for both mainnet and testnet nodes. Please pay special attention to the Cockatrice hardfork schedule and check your configurations. It should be configured for 3967000 of T5 testnet and 5450000 of mainnet. To ensure compatibility your node must be configured appropriately.

New features:

  • native contracts update functionality bound to hardforks (#3402, #3444)
  • Cockatrice hardfork planned for 5450000 block of mainnet and 3967000 block of T5 testnet (#3402, #3448, #3402, #3446)
  • CommitteeChanged events are emitted by NeoToken native contract starting from Cockatrice hardfork (#3351, #3448)
  • getCommitteeAddress method of NeoToken native contract is available starting from Cockatrice hardfork (#3362, #3402)
  • keccak256 method of CryptoLib native contract is available starting from Cockatrice hardfork (#3301, #3402)
  • dynamic contract hash support for smart contract bindings (#3405)
  • support StringCompressed API for crypto.PublicKey (#3408)
  • support Copy API for transaction.Transaction and payload.P2PNotaryRequest (#3407)
  • extend verifyWithECDsa method of native CryptoLib contract with Keccak256 hasher starting from Cockatrice and add an example of custom Koblitz-based and Keccak256-based transaction witness verification (#3425)
  • autogenerated nativehashes package (#3402, #3431)
  • introduce unwrap.Exception type for better RPC invocation result exceptions detection (#3438)

Behavior changes:

  • Neo Name Service smart contract RPC binding follows the official N3 implementation (#3291)
  • clear LastGasPerVote NeoToken account info on unvoting (#3349)
  • return fault exception (if any) in unwrap RPC client helpers (#3356)
  • move P2PNotary designation role out of P2PSigExtensions (#3452)

Improvements:

  • support smartcontract.Convertible interface as RPC Actor and Invoker call parameters (#3297)
  • allow to import multisignature account into wallet without WIF and password specified (#3293)
  • upgrade go-ordered-json dependency to avoid possible node state incompatibility issues caused by smart contract manifest marshalling (#3331, #3333)
  • Go 1.22 support, bump minimum required Go version up to Go 1.20 (#3336)
  • a number of dependent libraries are updated to the fresh versions (#3338, #3418)
  • improve error message of System.Crypto.CheckMultisig interop API handler (#3374)
  • upgrade dBFT library to v0.2.0 (#3371, #3413)
  • increase ValidUntilBlock value for transactions generated by CLI commands (#3376)
  • documentation updates (#3375, #3382)
  • let default Notary Actor options be customizable (#3394)
  • extend getversion RPC response with RPC server settings (#3386)
  • make errors related to wallet opening more detailed (#3389)
  • adjust error messages of setExecFeeFactor and setStoragePrice methods of native PolicyContract (#3406)
  • make neotest chain constructor options customizable (#3404)
  • format improvements for CLI commands description (#3410)
  • make state dumps comparator script more verbose (#3411)
  • refactor storage Get implementation for BoltDB (#3441)
  • add updatecounter field to the resulting items of getnativecontracts RPC API call (#3439)

Bugs fixed:

  • node panic on committee missing from node configuration (#3294)
  • autogenerated RPC bindings do not follow Go naming convention (#3299)
  • a batch of failing tests is fixed (#3306, #3313, #3321, #3332, #3337, #3335, #3344, #3340, #3350, #3355, #3364, #3368, #3377, #3393, #3397, #3392, #3398, #3400)
  • outdated minimum required Go version of boilerplate contract generated by neo-go contract init (#3318)
  • outdated address used as an example in RPC client documentation (#3327)
  • ungraceful node services shutdown procedure (#3307)
  • logging data race on node services shutdown (#3307)
  • Map parameter support is missing from RPC server handlers (#3329)
  • smart contract storage iterator prefix wasn't copied while iterating over values (#3336)
  • RPC error with -511 code (insufficient funds) returned on sendrawtransaction RPC request should cover multiple cases of sender's insufficient funds (#3360, #3361)
  • reentrancy possibility for Notary deposit withdrawal (#3357)
  • null findstorage RPC response in case of missing storage items (#3385)
  • uninitialized named return variables in compiler (#3401)
  • wrong debug sequence points after JUMP* instructions shortening by compiler (#3412)
  • corrupted genesis block record and application log caused by improper Conflicts attribute processing (#3437)
  • false positive DB-based blocked accounts detection in native PolicyContract leaded to invalid committee computations and reward distribution made by NeoToken (#3443)