diff --git a/CHANGELOG.md b/CHANGELOG.md index 11f4a489c..51124368b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,109 @@ This document outlines major changes between releases. +## 0.102.0 "Aberration" (06 Sep 2023) + +Long-awaited feature-packed 3.6.0-compatible version of NeoGo with all the +appropriate protocol updates and a set of tasty improvements and bug +fixes. Groth16 ZKP proof checks are there for contract developers as well as +new opcodes. A huge number of improvements went into the RPC server and +client, new RPCs, improved contract binding generator and standardized +extended error codes make developing dApps much easier. + +Users of smart contract utilities and RPC-related Prometheus metrics are +advised to take a look at the deprecated APIs removal schedule +(ROADMAP.md). This version was delayed for quite some time (waiting for 3.6), +so the next minor release (0.103.0) will remove a substantial amount of +compatibility code. It's expected to be released in November with 3.6 protocol +compatibility (3.7 cycle is likely to require more time). + +This is also the first version that drops support for Go 1.17 and requires +1.18+ to build (with Go 1.20 supported). Using generics in smart contracts is +not supported yet, but some elements of this support can be implemented in +future versions. + +Mainnet and testnet node operators, please pay attention to the Basilisk +hardfork schedule and check your configurations. It will happen at block +2680000 for T5 testnet and 4120000 for mainnet. To ensure compatibility your +node must be configured appropriately. This version requires DB +resynchronization, so schedule your updates accordingly. + +New features: + * ZKP proof checking support via CryptoLib native contract (operations with + BLS12-381 curve points) (#2940, #3042) + * System.Storage.Find interop now support "Backwards" flag to iterate in the + opposite direction (#2952) + * `util ops` CLI utility that pretty-prints VM script (#2965) + * `notarypool_unsorted_tx` Prometheus metric for notary-enabled nodes (#2696) + * `CloseNotificationChannelIfFull` WSClient option allowing the client to + close notification channel on overflow (#2988) + * autogenerated RPC bindings for contract events and conversion code from + stackitem.Item to structure (#3008, #3035, #3036, #3087) + * event type inference from contract code (#3008) + * dynamic contract hashes support for RPC bindings (#3012) + * "Basilisk" protocol hardfork support (#3056, #3080, #3086, #3104) + * ABORTMSG and ASSERTMSG VM opcodes (#3066) + * standardized RPC error codes (#3063) + * `findstorage` and `findstoragehistoric` RPC support (#3099) + * `getstoragehistoric` RPC support (#3099) + * `getrawnotarypool` and `getrawnotarytransaction` RPC (#3098) + +Behaviour changes: + * deprecated `FromAddress` smart contract helper is dropped from the `util` + interop package (#2941) + * a number of deprecated RPC-related Prometheus counters are permanently + removed (#2941) + * NEP-2 account label will be asked on account import via CLI (#2889) + * hashes and states of native contracts are now accessible via native + ContractManagement API (#2991) + * `serv_node_version` gauge Prometheus metric is marked as deprecated and + replaced by `neogo_version` and `server_id` (#3009) + * strict contract script check is back with Basilisk hardfork, it was + previously removed in 0.101.3 for 3.5 protocol compatibility (#3056) + * JSON number deserialization (via StdLib.jsonDeserialize) changes with + Basilisk hardfork allowing for more precision and handling more corner + cases (#3080) + * notification type errors are treated as fatal after Basilisk hardfork, + before it they're just logged (#3086) + * NULL and non-UTF8 items are not allowed for String event types (#3086) + * `Conflicts` and `NotValidBefore` transaction attributes are no longer NeoGo + extensions, they can be used on regular networks (#2962) + +Improvements: + * documentation and example improvements (#2945, #2972, #2979, #3020, #3084, + #3099, #3114, #3116, #3119, #3121) + * `getproof` and `verifyproof` RPC API support in RPC client (#2942) + * Go 1.20 support, bump minimum required Go version up to Go 1.18 (#2908) + * faster state reset process (#2819) + * optimized voting data storage scheme for NEO contract (#2892, #2893) + * NeoFS SDK dependency upgrades (#2995, #3032) + * special exported error returned in case of WSClient disconnection (#3000) + * automatic guessing of contract and manifest filenames for `contract + compile` CLI command and `loadnef` VM CLI command (#3013) + * support for pushing stackitem.Convertible objects via VM script emitter (#3016) + * economic adjustment for ranking of transactions with `Conflicts` attribute (#3031) + * `google.golang.org/grpc` dependency upgrade fixing high severity security + vulnerability (#3055, gRPC is only used to communicate with NeoFS nodes in + the oracle service) + * enforce default RPC server values when it's used as an independent package + (not a part of node) (#3107) + * unwrap.Nothing function for RPC clients (#3117) + * address and reverse hash display in opcode dumps (#3115) + +Bugs fixed: + * invalid peer port type returned by `getpeers` RPC response (#2914) + * invalid data source for `mempool_unsorted_tx` Prometheus metric (#2969) + * dBFT library upgrade fixing the ability of a single node to speed up the + process of new blocks creation for the whole network (#3018, + nspcc-dev/dbft#75) + * failing CALLT instructions in VM CLI for loaded NEF files (#3020) + * missing signers check for on-chain conflicting transactions (#3061) + * incorrect sequence point boundaries in debug data (#3074) + * compiler panic on encountering generic code (#3041) + * potential pooled fallback notary transaction changes (#3108) + * lost LastGasPerVote value on NEO state deserialization for non-voting + accounts (#3122) + ## 0.101.4 "Yarborough" (01 Aug 2023) Another one 3.5.0-compatible version that is aimed to fix T5 testnet state diff --git a/ROADMAP.md b/ROADMAP.md index dbc48f246..87f74a873 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -7,12 +7,12 @@ functionality. ## Versions 0.7X.Y (as needed) * Neo 2.0 support (bug fixes, minor functionality additions) -## Version 0.102.0 (~March 2022) - * 3.6.0 compatibility +## Version 0.102.1 (~October 2023) + * bug fixes -## Version 0.102.1 (~April 2022) - * improved RPC error codes +## Version 0.103.0 (~November 2023) * extended data types for iterators to be used by RPC wrapper generator + * RPC subscription extensions ## Version 1.0 (2023, TBD) * stable version