mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-29 13:41:47 +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.
|
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)
|
## 0.50.0 "Consolidation" (19 Sep 2019)
|
||||||
|
|
||||||
The first release from the new team focuses on bringing all related
|
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
|
This defines approximate plan of neo-go releases and key features planned for
|
||||||
them.
|
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)
|
## Version 0.60.0 (mid-November 2019)
|
||||||
* consensus node
|
* 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)
|
## Version 1.0 (2020, aligned with NEO 3.0 release)
|
||||||
* full NEO 3.0 support
|
* full NEO 3.0 support
|
||||||
|
|
Loading…
Reference in a new issue