From 4c81f4dbc06138bbdc52b196d9540c40d863ed4d Mon Sep 17 00:00:00 2001 From: Roman Khimov Date: Thu, 8 Apr 2021 15:15:45 +0300 Subject: [PATCH] CHANGELOG: release 0.94.1 --- CHANGELOG.md | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ ROADMAP.md | 5 --- 2 files changed, 103 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec45b7e11..98c8d0410 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,109 @@ This document outlines major changes between releases. +## 0.94.1 "Channelization" (08 Apr 2021) + +This is the second and much improved N3 RC1-compatible release. We've mostly +focused on documentation and examples with this release, so there is a number +of updates in this area including oracle contract example and NEP-11 NFT +contract example. At the same time proper testnet network revealed some +implementation inconsistencies between NeoGo and C# especially in oracle and +state validation services, so there are fixes for them also. + +Protocol-wise this release is compatible with 0.94.0, but MPT structures have +changed and there are known state change differences for N3 RC1 testnet, so +you need to do full node resynchronization on update from 0.94.0. Some SDK +APIs have changed also improving developer experience, but they may affect +your code. We don't plan to make more of RC1-compatible releases (the protocol +has slightly changed already since the release). + +New features: + * RPC (*Client).GetDesignatedByRole method to easily get node lists from + RoleManagement contract (#1855) + * `calculatenetworkfee` RPC method support (#1858) + * RPC client now has additional methods for NEP-11 contracts and specifically + for NNS native contract (#1857) + * contract deployment from multisig addresses (#1886) + +Behavior changes: + * node roles for RoleManagement contract were moved into separate package + (#1855) + * NotaryVerificationPrice constant was moved into package of its own (#1855) + * testnet configuration now has proper N3 RC1 testnet magic (#1856) + * crypto.Verifiable interface was removed, now any hash.Hashable thing can be + verified (and signed, #1859) + * Network field was dropped from transaction.Transaction, block.Header, + payload.Extensible, state.MPTRoot, payload.P2PNotaryRequest and + network.Message, it was needed for proper hash calculations before recent + protocol changes (even though this field is not a part of serialized + representation of any of these elements), but now it's only used to + sign/verify data and doesn't affect hashing which allowed to simplify + interface here (#1859) + * RPC server now returns `StateRootInHeader` option in its `getversion` + request answers if it's used by the network (#1862) + * NNS record types were moved to separate package (#1857) + * MaxStorageKeyLen and MaxStorageValueLen constants were moved to storage + package from core (#1871) + * oracle service now accepts complete URL for other nodes RPC services (#1877) + +Improvements: + * RPC (*Client).AddNetworkFee method is now more informative in some error + case (#1852) + * proper NEP-17 support in unit test contract (#1852) + * documentation updates for examples and services (#1854, #1890) + * syscall number is now printed for failed syscalls (#1874) + * better logging (#1883, #1889) + * Oracle native contract interop documentation extended (#1884) + * Oracle native contract interop extended with return codes and constants (#1884) + * oracle smart contract example (#1884) + * NEP-11 NFT smart contract example (#1891) + +Bugs fixed: + * node could simultaneously try to connect to the same peer multiple times in + some cases (#1861) + * uniqueness is enforced now for other node addresses provided by peers (#1861) + * stateroot message hash wasn't calculated the same way as in C# (#1859) + * state validation service P2P messages were not signed properly (#1859) + * state.MPTRoot structure JSON representation was different from C# one (#1859) + * stateroot messages generated by state validation service were not setting + proper message category (#1866) + * block persistence caches were flushed too early by MPT-managing code (#1866) + * validated stateroot data overwrote local one which lead to node not + functioning after restart if states were different (#1866) + * peers delivering P2P message with validated stateroot differing from local + one were disconnected (#1866) + * state dump comparing script was using old Ledger native contract ID (#1869) + * candidate registration check was made in different way from C# in native + NEO contract leading to different execution results for erroneous voting + transactions (#1869) + * state change dumps were different from C# node for erroneous voting + transactions even though contract's state was the same (#1869) + * arguments were not completely removed from stack in erroneous + Runtime.Notify calls leading to different stack state with C# + implementation (#1874) + * in case contract failed execution with THROW the node didn't print the + message from the contract properly (#1874) + * `getproof` RPC call output was not strictly compliant with C# + implementation (#1871) + * MPT node serialization and some constants were out of date wrt C# + implementation (#1871) + * native NEP-17 contracts could use stale balance data in some cases (#1876) + * state validation service could lock the system during shutdown, preventing + proper node exit (#1877) + * state validation and oracle services were started before node reaching full + synchronization which could lead to excessive useless traffic (#1877) + * some native contract calls in function arguments could be miscompiled + (#1880) + * oracle service was accepting http URLs instead of https (#1883) + * neofs URIs were subject to host validation in oracle service even though + there is no host there (#1883) + * neofs URI scheme was differing from C# implementation (#1883) + * no default value was used for NeoFS request timeout if it's not specified + in the configuration (#1883) + * oracle response code was marshalled as integer into JSON (#1884) + * MPT could grow in memory unbounded (#1885) + * Storage.Find results could differ from C# in some cases (#1888) + ## 0.94.0 "Tsessebe" (19 Mar 2021) N3 RC1-compatible release is here. We've implemented all Neo protocol changes diff --git a/ROADMAP.md b/ROADMAP.md index 7fe435ad7..8985a5bf3 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -7,11 +7,6 @@ functionality. ## Versions 0.7X.Y (as needed) * Neo 2.0 support (bug fixes, minor functionality additions) -## Version 0.94.1 (end of March 2021) -* documentation update -* more smart contract examples -* small fixes if any - ## Version 0.95.0 (TBD) * Neo N3 RC2-compatible version.