update CHANGELOG and ROADMAP, release 0.51.0

This commit is contained in:
Roman Khimov 2019-10-17 19:45:20 +03:00
parent 67219b9439
commit 89930f45ea
2 changed files with 118 additions and 6 deletions

View file

@ -2,6 +2,121 @@
This document outlines major changes between releases.
## 0.51.0 "Confirmation" (17 Oct 2019)
With over a 100 commits made since 0.50.0 release 0.51.0 brings with it full
block verification, improved and fixed transaction verifications,
implementation of most of interop functions and VM improvements. Block
verification is an important milestone on the road to full consensus node
support and it required implementing a lot of other associated functionality.
New features:
* CHECKSIG, VERIFY and CHECKMULTISIG instructions in VM (#269)
* witness verification logic for transactions (#368)
* NEWMAP, HASKEY, KEYS and VALUES instructions, support for Map type in
PICKITEM, SETITEM, REMOVE, EQUAL, ARRAYSIZE (#359)
* configurable transaction verification on block addition (#415, #418)
* contract storage and support for VM to call contracts via APPCALL/TAILCALL
(#417)
* support for Interop type in VM (#417)
* VM now has stepInto/stepOver/stepOut method implementations for debugging
matching neo-vm behavior (#187)
* storage support for contracts (#418)
* added around 90% of interop functions (#418)
* Invocation TX processing now really does invoke contracts using internal VM
(#418)
* blocks are now completely verified when added to the chain (if not
configured otherwise; #12, #418)
Behavior changes:
* full block verification is now enabled for all network types
* block's transaction verification enabled for privnet setups, mainnet and
testnet don't have it enabled
Technical improvements:
* GetVarIntSize and GetVarStringSize were removed from the io package (use
GetVarSize instead; #408)
* OVER implementation was optimized to not pop the top element from the stack
(#406, part of #196 work)
* vm.VM was extended with HasFailed() method to check its state (previously
external VM users couldn't do it; #411)
* redesigned input block queue mechanism, now it's completely moved out of
the Blockchain, which only accepts the next block via AddBlock() (#414)
* unpersisted blocks are now fully available with the Blockchain (thus we
have symmetry now in AddBlock/GetBlock APIs; #414, #366)
* removed duplicating batch structures from BoltDB and Redis code, now all of
them use the same batch as MemoryStore does (#414)
* MemoryStore was exporting its mutex for no good reason, now it's hidden
(#414)
* storage layer now returns ErrKeyNotFound for all DBs in appropriate
situations (#414)
* VM's PopResult() now doesn't panic if there is no result (#417)
* VM's Element now has a Value() method to quickly get the item value (#417)
* VM's stack PushVal() method now accepts uint8/16/32/64 (#417, #418)
* VM's Element now has TryBool() method similar to Bool(), but without a
panic (for external VM users; #417)
* VM has now completely separated instruction read and execution phases
(#417)
* Store interface now has Delete method (#418)
* Store tests were reimplemented to use one test set for all Store
implementations, including LevelDB that was not tested at all previously
(#418)
* Batch interface doesn't have Len method now as it's not used at all (#418)
* New*FromRawBytes functions were renamed to New*FromASN1 in the keys
package, previous naming made it easy to confuse them with functions
operating with NEO serialization format (#418)
* PublicKey's IsInfinity method is exported now (#418)
* smartcontract package now has CreateSignatureRedeemScript() matching C#
code (#418)
* vm package now has helper functions
IsSignatureContract/IsMultiSigContract/IsStandardContract matching C# code
(#418)
* Blockchain's GetBlock() now returns full block with transactions (#418)
* Block's Verify() was changed to return specific error (#418)
* Blockchain's GetTransationResults was renamed into GetTransactionResults
(#418)
* Blockchainer interface was extended with GetUnspentCoinState,
GetContractState and GetScriptHashesForVerifying methods (#418)
* introduced generic MemCacheStore that is used now for write caching
(including temporary stores for transaction processing) and batched
persistence (#425)
Bugs fixed:
* useless persistence failure message printed with no error (#409)
* persistence error message being printed twice (#409)
* segmentation fault upon receival of message that is not currently handled
properly (like "consensus" message; #409)
* BoltDB's Put for a batch wasn't copying data which could lead to data
corruption (#409)
* APPEND instruction applied to struct element was not copying it like neo-vm
does (#405, part of #196 work)
* EQUAL instruction was comparing array contents, while it should've compared
references (#405, part of #196 work)
* SUBSTR instruction was failing for out of bounds length parameters while it
should've truncated them to string length (#406, part of #196 work)
* SHL and SHR implementations had no limits, neo-vm restricts them to
-256/+256 (#406, part of #196 work)
* minor VM state mismatches with neo-vm on failures (#405, #406)
* deadlock on Blockchain init when headers pointer is not in sync with the
hashes list (#414)
* node failed to request blocks when headers list was exactly one position
ahead of block count (#414)
* TestRPC/getassetstate_positive failed occasionally (#410)
* panic on block verification with no transactions inside (#415)
* DutyFlag check in GetScriptHashesForVerifying was not done correctly (#415)
* default asset expiration for assets created with Register TX was wrong, now
it matches C# code (#415)
* Claim transactions needed specific GetScriptHashesForVerifying logic to
be verified correctly (#415)
* VerifyWitnesses wasn't properly sorting hashes and witnesses (#415)
* transactions referring to two outputs of some other transaction were
failing to verify (#415)
* wrong program dumps (#295)
* potential data race in logging code (#418)
* bogus port check during handshake (#432)
* missing max size checks in NEWARRAY, NEWSTRUCT, APPEND, PACK, SETITEM
(#427, part of #373)
## 0.50.0 "Consolidation" (19 Sep 2019)
The first release from the new team focuses on bringing all related

View file

@ -3,14 +3,11 @@
This defines approximate plan of neo-go releases and key features planned for
them.
## Version 0.51.0 (mid-October 2019)
* VM compabitibility with neo-vm for all JSON-based tests in neo-vm
* further refactoring the code
* block verification
* implementing missing protocol messages
## Version 0.60.0 (mid-November 2019)
* consensus node
* finish work on VM compabitibility with neo-vm for all JSON-based tests in neo-vm
* implementing missing protocol messages
* improve wallet implementation
## Version 1.0 (2020, aligned with NEO 3.0 release)
* full NEO 3.0 support