mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-29 03:41:45 +00:00
update CHANGELOG and ROADMAP, release 0.51.0
This commit is contained in:
parent
67219b9439
commit
89930f45ea
2 changed files with 118 additions and 6 deletions
115
CHANGELOG.md
115
CHANGELOG.md
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue