diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e5b84e8a..dca542367 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,105 @@ This document outlines major changes between releases. +## 0.106.0 "Zephyranthes" (21 May 2024) + +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 a 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) + ## 0.105.1 "Enumeration" (12 Jan 2024) This is another v3.6.2-compatible release that fixes mainnet state difference at diff --git a/ROADMAP.md b/ROADMAP.md index b9be568a9..baae16fba 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -7,10 +7,11 @@ functionality. ## Versions 0.7X.Y (as needed) * Neo 2.0 support (bug fixes, minor functionality additions) -## Version 0.106.0 (~February 2023) - * extended data types for iterators to be used by RPC wrapper generator +## Version 0.107.0 (~Jun-Jul 2024) * protocol updates - * test fixes + * bug fixes + * node resynchronisation from local DB + * CLI library upgrade ## Version 1.0 (2024, TBD) * stable version @@ -30,15 +31,15 @@ GetPeers RPC command returns a list of Peers where the port type has changed fro string to uint16 to match C#. The RPC client currently supports unmarshalling both formats. -Removal of Peer unmarshalling with string based ports is scheduled for ~September 2023 -(~0.105.0 release). +Removal of Peer unmarshalling with string based ports is scheduled for Jun-Jul 2024 +(~0.107.0 release). ## `NEOBalance` from stack item We check struct items count before convert LastGasPerVote to let RPC client be compatible with old versions. -Removal of this compatiblility code is scheduled for Sep-Oct 2023. +Removal of this compatiblility code is scheduled for Jun-Jul 2024. ## `serv_node_version` Prometheus gauge metric @@ -47,7 +48,7 @@ metrics with proper version formatting. `neogo_version` contains NeoGo version hidden under `version` label and `server_id` contains network server ID hidden under `server_id` label. -Removal of `serv_node_version` is scheduled for Sep-Oct 2023 (~0.105.0 release). +Removal of `serv_node_version` is scheduled for Jun-Jul 2024 (~0.107.0 release). ## RPC error codes returned by old versions and C#-nodes @@ -55,7 +56,8 @@ NeoGo retains certain deprecated error codes: `neorpc.ErrCompatGeneric`, `neorpc.ErrCompatNoOpenedWallet`. They returned by nodes not compliant with the neo-project/proposals#156 (NeoGo pre-0.102.0 and all known C# versions). -Removal of the deprecated RPC error codes is planned once all nodes adopt the new error standard. +Removal of the deprecated RPC error codes is planned for Jun-Jul 2024 (~0.107.0 +release). ## Block based web-socket waiter transaction awaiting @@ -66,4 +68,4 @@ event-based waiter fallbacks to the old way of block monitoring with `block_added` notifications subscription. Removal of stale RPC server compatibility code from `waiter.EventWaiter` is -scheduled for May-June 2024 (~0.107.0 release). \ No newline at end of file +scheduled for Jun-Jul 2024 (~0.107.0 release). \ No newline at end of file diff --git a/docs/release-instruction.md b/docs/release-instruction.md index fc7c0dc36..2ccc0f441 100644 --- a/docs/release-instruction.md +++ b/docs/release-instruction.md @@ -10,7 +10,8 @@ These should run successfully: * unit-tests * lint * privnet with consensus nodes - * mainnet synchronization + * testnet and mainnet synchronization + * NeoFS testnet and mainnet synchronisation and containers compatibility tests ## Update CHANGELOG and ROADMAP