Release 0.93.0

This commit is contained in:
Roman Khimov 2021-02-12 23:59:42 +03:00
parent 754c985424
commit 6445e4be91

View file

@ -2,6 +2,108 @@
This document outlines major changes between releases.
## 0.93.0 "Hyperproduction" (12 Feb 2021)
This is a 3.0.0-preview5 compatible release with important protocol changes,
improved smart contract interop interface for native contracts (it's much
easier now to use them) and complete Notary subsystem which is a NeoGo
experimental protocol extension for P2P signature collection.
Please note that this release is incompatible with 0.92.0 and there are no
plans for long-term support of it, Neo 3 is still changing and improving.
The release is tested with preview5 testnet data (and one of testnet CNs is
already a neo-go node) up to 48K blocks and it has exactly the same storage
data except for the Ledger contract that technically can differ between nodes
(it's not a part of state proper), and in case of neo-go it's intentionally
different (but this doesn't affect contract's functionality and state roots
compatibility).
New features:
* "ProtocolNotSupported" oracle response code (#1630)
* POPITEM VM opcode (#1670)
* CALLT VM opcode and contract tokens support (#1673)
* extensible P2P payloads (#1667, #1674, #1706, #1709)
* contract method overloading (#1689)
* oracle module (#1427, #1703)
* NNS native contract (#1678, #1712, #1721)
* complete P2P Notary subsytem (experimental protocol extension, use only on
private networks, #1658, #1726)
* Ledger native contract (#1696)
* `getblockheadercount` RPC call (#1718)
* native contract wrappers for Go smart contracts (#1702)
* `getnativecontracts` RPC call (#1724)
Behavior changes:
* VM CLI now supports and requires manifests to properly work with NEF files
(#1642)
* NEP17-related CLI commands now output GAS balance as floating point numbers
(#1654)
* `--from` parameter can be omitted now for NEP17 CLI transfers, the default
wallet address will be used in this case (#1655)
* native contracts now use more specific types for methods arguments (#1657)
* some native contract names and IDs have changed (#1622, #1660)
* NEF file is stored now in contract's state instead of script only which
also affects RPC calls and ContractManagement's interface
* call flag definitions were moved to a package of their own (#1647)
* callback syscalls were removed (#1647)
* calling a contract now requires specifying allowed flags (and `CallEx`
syscall was removed, #1647)
* iterator/enumerator `Concat` calls were removed (#1656)
* `System.Enumerator.*` syscalls were removed (#1656)
* `System.Storage.Find` interface was reworked (#1656)
* NEF file format was changed merging compiler and version fields, adding
reserved fields and tokens (#1672)
* registering as committee/validator candidate now costs 1000 GAS (#1684)
* dbft now uses extensible P2P payloads (#1667)
* contract hashing scheme was changed now including names in the mix (#1686)
* GAS fees JSON marshalling was changed to plain integers (#1687, #1723)
* native methods requiring committee signature now fail the script instead of
returning `false` (#1695)
* native ContractManagement contract now has two `deploy` methods, with
additional data and without it (#1693)
* updated contract manifest now can't change contract's name (#1693)
* default values of native contracts were moved to storage from code (#1703)
* blocked accounts now store empty string instead of `01` byte (#1703)
* testnet magic number was changed for preview5 (#1709, #1715)
* `onPayment` method was renamed to `onNEP17Payment` (#1712)
* manifests are stored and accessed as stack items instead of JSON (#1704)
* zero-length "Headers" packet is a protocol error now (#1716)
* `getstorage` RPC call now uses base64 instead of hex for input/output
(#1717)
* state dumper and comparer now use base64 instead of hex (#1717)
* deployed contracts and manifests are now checked for correctness (#1729)
* transaction scripts are now checked for correctness before execution
(#1729)
Improvements:
* default VM interop prices were adjusted (#1643)
* batched MPT updates (#1641)
* you can use `-m` now for manifest parameter of contract deploying command
(#1690)
* transaction cosigners can be specified with addresses now (#1690)
* compiler documentation was updated (#1690)
Bugs fixed:
* oracle response transaction can't be correctly evicted from the mempool
(#1668)
* the node left with zero peers didn't initiate reconnections to seeds in rare
cases (#1671)
* native contracts supposed to check for committee witness in fact checked
for validators witness (#1679)
* it was allowed for contracts to have non-bool `verify` methods (#1689)
* previous proposal reuse could lead to empty blocks accepted even if there
are transactions in the mempool (#1707)
* NEO contract's `getCommittee` method name was misspelled (#1708)
* CLI wasn't correctly handling escape sequences (#1727)
* init and deploy methods could be misoptimized leading to execution failures
(#1730)
* NEP-17 contract example was missing `onNEP17Payment` invocation (#1732)
* missing state read privilege could lead to transaction failures for
transfers from CLI or when using native contract wrappers (#1734, #1735)
* some native contract methods had different parameter names and return
output types (#1736)
## 0.92.0 "Fermentation" (28 Dec 2020)
NeoGo project is closing year 2020 with 3.0.0-preview4 compatible release that