diff --git a/CHANGELOG.md b/CHANGELOG.md index c0621c8b8..661ddf070 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,111 @@ This document outlines major changes between releases. +## 0.72.0 "Crystallization" (06 Feb 2020) + +Starting at the end of the year 2019 we've spent a lot of effort to +stress-test our node with transaction load and this allowed us to uncover +some problems in various parts of the system. This release addresses all of +them and brings with it updated networking, consensus and mempool components +that can handle quite substantial transaction traffic and successfully produce +new blocks while being stressed. There are also important updates in VM that +fix incompatibilities with C# node and interesting improvements in compiler +based on our experience porting neofs smart contract to Go. + +New features: + * `dump` command for wallet to dump it (replaced non-functional `open` + command, #589) + * support for single-node consensus setup (#595) + * ping/pong P2P messages are now supported with PingInterval and PingTimeout + configuration options (#430, #610, #627, #639) + * VM now fully supports calculating GAS spent during execution (#424, #648) + * Fixed8 type now supports YAML marshalling (#609) + * RPC invoke* calls can now be GAS-limited with MaxGasInvoke configuration + option (#609) + * gas limit for free invocation transactions can now be configured with + FreeGasLimit option which default to 10.0 for mainnet and testnet (#609) + * new compiler interop VerifySignature to verify ECDSA signatures (#617) + * compiler now supports loops with single condition (no init/post, #618) + * memory pool size is now configurable with MemPoolSize option which defaults + to 50000 for all configurations (#614) + * support for variables in slice literals in the compiler (#619) + * support for map literals in the compiler (#620) + * AppCall interop function (#621) + * `string` to `[]byte` conversion was implemented in the compiler (#622) + * Docker images now contain a dump of 1600 blocks for single-node setups and + one can choose which dump to use for restore with ACC environment variable + (#625) + * switch statement support in the compiler (#626) + * panic support in the compiler (#629) + +Behaviour changes: + * NEP2Decrypt function in keys package now returns a pointer to PrivateKey + rather than a WIF-encoded string (#589) + * DecryptAccount function in wallet package was moved to Decrypt method of + Account (#589) + * logging was moved from logrus to zap which changed messages format a little + (#284, #598) + * Block, BlockBase and Header structures were moved into their own `block` + package (#597) + * MemPool was moved into its own `mempool` package (#597) + * Sign method of PrivateKey no longer returns an error (#604) + * wallet is now compatible with C# node wallets (#603) + * consensus service now gets its keys from the wallet file instead of + plain-text WIF in the configuration (#588) + * `image` Makefile target was updated to nspccdev repo (#625) + * serializing invalid Transaction structures (that have no Data) is now + forbidden (#640) + * Item is no longer exposed by the mempool package (#647) + +Improvements: + * better testing of keys, wallet, compiler and mempool packages (#589, #568, + #647) + * smart use of previous proposal for block generation after dBFT's ChangeView + (#591) + * peer-server interaction refactored (#606) + * peer message queues were introduced with different priorities reducing + delays in consensus messages delivery and improving unicast communication + (#590, #615, #639) + * more efficient code generated by the compiler in some cases (#626, #629, + #637) + * mempool redesign leading to better performance (#647), it also doesn't + store unverified transactions now + +Bugs fixed: + * consensus service was not really requesting transactions from peers when it + was missing some locally (#602) + * build failing with newer rfc6979 package (#592) + * wrong integer serialization/deserialization in VM leading to + inconsistencies in state with C# node (#501/#605) + * consensus service was not processing node election results to + enable/disable dBFT (#603) + * in some cases peers were not unregistered after disconnect (#606) + * different execution results with C# node because of missing invocation fee + calculations (#607) + * RPC server now properly returns the amount of gas spent during execution + for invoke* calls (#609) + * FromAddress interop was translated improperly by the compiler (#621) + * compiler emitting wrong integers (#624) + * EOF errors on recovery consensus messages decoding (#632) + * wrong handling of assignments to underscore variable in the compiler (#631) + * wrong answers to getunspents/getaccountstate RPC requests for unknown + addresses (#633) + * multiple dBFT issues leading to consensus stalls, attempts to add wrong + block to the chain, message processing using wrong height and other + problems (#635, #641) + * duplicate connections were not detected before the handshake completion + which can happen too late (#639) + * attempts to connect to peer that has already connected to node (#639) + * unregistration of connected addresses (#639) + * ArrayReverse function was not copying arrays of size 1 (#644) + * race in transaction verification/addition to the mempool leading to + potential double spends (#647) + * wrong concurrent attempts to add new block to the chain (#647) + * blocks were not relayed properly by non-consensus nodes (#647) + * mempool memory leak (#647) + * missing reverification after block acceptance for transactions in mempool + (#647) + ## 0.71.0 "Celebration" (30 Dec 2019) Version 0.71.0 ends the year 2019 of neo-go development with a solid release diff --git a/ROADMAP.md b/ROADMAP.md index 51ce6ceb9..e08821baa 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -4,10 +4,11 @@ This defines approximate plan of neo-go releases and key features planned for them. Things can change if there a need to push a bugfix or some critical functionality. -## Version 0.72.0 (end of January 2019) -* wallet CLI functionality -* completing P2P protocol implementation -* fix remaining inconsistencies in mainnet transaction processing wrt C# implementation +## Versions 0.7X.Y (as needed) +* Neo 2.0 support (bug fixes, minor functionality additions) + +## Version 0.90.0 (April 2020) +* Neo 3.0 features preview ## Version 1.0 (2020, aligned with NEO 3.0 release) * full NEO 3.0 support