CHANGELOG: release 0.94.1

This commit is contained in:
Roman Khimov 2021-04-08 15:15:45 +03:00
parent b9fe5d8dae
commit 4c81f4dbc0
2 changed files with 103 additions and 5 deletions

View file

@ -2,6 +2,109 @@
This document outlines major changes between releases. 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) ## 0.94.0 "Tsessebe" (19 Mar 2021)
N3 RC1-compatible release is here. We've implemented all Neo protocol changes N3 RC1-compatible release is here. We've implemented all Neo protocol changes

View file

@ -7,11 +7,6 @@ functionality.
## Versions 0.7X.Y (as needed) ## Versions 0.7X.Y (as needed)
* Neo 2.0 support (bug fixes, minor functionality additions) * 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) ## Version 0.95.0 (TBD)
* Neo N3 RC2-compatible version. * Neo N3 RC2-compatible version.