|
2 | 2 |
|
3 | 3 | This document outlines major changes between releases.
|
4 | 4 |
|
| 5 | +## 0.102.0 "Aberration" (06 Sep 2023) |
| 6 | + |
| 7 | +Long-awaited feature-packed 3.6.0-compatible version of NeoGo with all the |
| 8 | +appropriate protocol updates and a set of tasty improvements and bug |
| 9 | +fixes. Groth16 ZKP proof checks are there for contract developers as well as |
| 10 | +new opcodes. A huge number of improvements went into the RPC server and |
| 11 | +client, new RPCs, improved contract binding generator and standardized |
| 12 | +extended error codes make developing dApps much easier. |
| 13 | + |
| 14 | +Users of smart contract utilities and RPC-related Prometheus metrics are |
| 15 | +advised to take a look at the deprecated APIs removal schedule |
| 16 | +(ROADMAP.md). This version was delayed for quite some time (waiting for 3.6), |
| 17 | +so the next minor release (0.103.0) will remove a substantial amount of |
| 18 | +compatibility code. It's expected to be released in November with 3.6 protocol |
| 19 | +compatibility (3.7 cycle is likely to require more time). |
| 20 | + |
| 21 | +This is also the first version that drops support for Go 1.17 and requires |
| 22 | +1.18+ to build (with Go 1.20 supported). Using generics in smart contracts is |
| 23 | +not supported yet, but some elements of this support can be implemented in |
| 24 | +future versions. |
| 25 | + |
| 26 | +Mainnet and testnet node operators, please pay attention to the Basilisk |
| 27 | +hardfork schedule and check your configurations. It will happen at block |
| 28 | +2680000 for T5 testnet and 4120000 for mainnet. To ensure compatibility your |
| 29 | +node must be configured appropriately. This version requires DB |
| 30 | +resynchronization, so schedule your updates accordingly. |
| 31 | + |
| 32 | +New features: |
| 33 | + * ZKP proof checking support via CryptoLib native contract (operations with |
| 34 | + BLS12-381 curve points) (#2940, #3042) |
| 35 | + * System.Storage.Find interop now support "Backwards" flag to iterate in the |
| 36 | + opposite direction (#2952) |
| 37 | + * `util ops` CLI utility that pretty-prints VM script (#2965) |
| 38 | + * `notarypool_unsorted_tx` Prometheus metric for notary-enabled nodes (#2696) |
| 39 | + * `CloseNotificationChannelIfFull` WSClient option allowing the client to |
| 40 | + close notification channel on overflow (#2988) |
| 41 | + * autogenerated RPC bindings for contract events and conversion code from |
| 42 | + stackitem.Item to structure (#3008, #3035, #3036, #3087) |
| 43 | + * event type inference from contract code (#3008) |
| 44 | + * dynamic contract hashes support for RPC bindings (#3012) |
| 45 | + * "Basilisk" protocol hardfork support (#3056, #3080, #3086, #3104) |
| 46 | + * ABORTMSG and ASSERTMSG VM opcodes (#3066) |
| 47 | + * standardized RPC error codes (#3063) |
| 48 | + * `findstorage` and `findstoragehistoric` RPC support (#3099) |
| 49 | + * `getstoragehistoric` RPC support (#3099) |
| 50 | + * `getrawnotarypool` and `getrawnotarytransaction` RPC (#3098) |
| 51 | + |
| 52 | +Behaviour changes: |
| 53 | + * deprecated `FromAddress` smart contract helper is dropped from the `util` |
| 54 | + interop package (#2941) |
| 55 | + * a number of deprecated RPC-related Prometheus counters are permanently |
| 56 | + removed (#2941) |
| 57 | + * NEP-2 account label will be asked on account import via CLI (#2889) |
| 58 | + * hashes and states of native contracts are now accessible via native |
| 59 | + ContractManagement API (#2991) |
| 60 | + * `serv_node_version` gauge Prometheus metric is marked as deprecated and |
| 61 | + replaced by `neogo_version` and `server_id` (#3009) |
| 62 | + * strict contract script check is back with Basilisk hardfork, it was |
| 63 | + previously removed in 0.101.3 for 3.5 protocol compatibility (#3056) |
| 64 | + * JSON number deserialization (via StdLib.jsonDeserialize) changes with |
| 65 | + Basilisk hardfork allowing for more precision and handling more corner |
| 66 | + cases (#3080) |
| 67 | + * notification type errors are treated as fatal after Basilisk hardfork, |
| 68 | + before it they're just logged (#3086) |
| 69 | + * NULL and non-UTF8 items are not allowed for String event types (#3086) |
| 70 | + * `Conflicts` and `NotValidBefore` transaction attributes are no longer NeoGo |
| 71 | + extensions, they can be used on regular networks (#2962) |
| 72 | + |
| 73 | +Improvements: |
| 74 | + * documentation and example improvements (#2945, #2972, #2979, #3020, #3084, |
| 75 | + #3099, #3114, #3116, #3119, #3121) |
| 76 | + * `getproof` and `verifyproof` RPC API support in RPC client (#2942) |
| 77 | + * Go 1.20 support, bump minimum required Go version up to Go 1.18 (#2908) |
| 78 | + * faster state reset process (#2819) |
| 79 | + * optimized voting data storage scheme for NEO contract (#2892, #2893) |
| 80 | + * NeoFS SDK dependency upgrades (#2995, #3032) |
| 81 | + * special exported error returned in case of WSClient disconnection (#3000) |
| 82 | + * automatic guessing of contract and manifest filenames for `contract |
| 83 | + compile` CLI command and `loadnef` VM CLI command (#3013) |
| 84 | + * support for pushing stackitem.Convertible objects via VM script emitter (#3016) |
| 85 | + * economic adjustment for ranking of transactions with `Conflicts` attribute (#3031) |
| 86 | + * `google.golang.org/grpc` dependency upgrade fixing high severity security |
| 87 | + vulnerability (#3055, gRPC is only used to communicate with NeoFS nodes in |
| 88 | + the oracle service) |
| 89 | + * enforce default RPC server values when it's used as an independent package |
| 90 | + (not a part of node) (#3107) |
| 91 | + * unwrap.Nothing function for RPC clients (#3117) |
| 92 | + * address and reverse hash display in opcode dumps (#3115) |
| 93 | + |
| 94 | +Bugs fixed: |
| 95 | + * invalid peer port type returned by `getpeers` RPC response (#2914) |
| 96 | + * invalid data source for `mempool_unsorted_tx` Prometheus metric (#2969) |
| 97 | + * dBFT library upgrade fixing the ability of a single node to speed up the |
| 98 | + process of new blocks creation for the whole network (#3018, |
| 99 | + nspcc-dev/dbft#75) |
| 100 | + * failing CALLT instructions in VM CLI for loaded NEF files (#3020) |
| 101 | + * missing signers check for on-chain conflicting transactions (#3061) |
| 102 | + * incorrect sequence point boundaries in debug data (#3074) |
| 103 | + * compiler panic on encountering generic code (#3041) |
| 104 | + * potential pooled fallback notary transaction changes (#3108) |
| 105 | + * lost LastGasPerVote value on NEO state deserialization for non-voting |
| 106 | + accounts (#3122) |
| 107 | + |
5 | 108 | ## 0.101.4 "Yarborough" (01 Aug 2023)
|
6 | 109 |
|
7 | 110 | Another one 3.5.0-compatible version that is aimed to fix T5 testnet state
|
|
0 commit comments