mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-25 13:47:19 +00:00
CHANGELOG: release 0.91.0
This commit is contained in:
parent
6cc61099b6
commit
72795716bf
2 changed files with 165 additions and 2 deletions
163
CHANGELOG.md
163
CHANGELOG.md
|
@ -2,6 +2,169 @@
|
||||||
|
|
||||||
This document outlines major changes between releases.
|
This document outlines major changes between releases.
|
||||||
|
|
||||||
|
## 0.91.0 "Ululation" (18 August 2020)
|
||||||
|
|
||||||
|
We've updated NeoGo for 3.0.0-preview3 compatibility implementing all the
|
||||||
|
appropriate protocol changes as well as improving NeoGo-specific
|
||||||
|
components. This release brings with it significant changes for smart
|
||||||
|
contracts, both in terms of Neo protocol changes (no more there is a single
|
||||||
|
entry point! execution environment has also changed in lots of ways) and Go
|
||||||
|
smart contract compiler updates and fixes.
|
||||||
|
|
||||||
|
Please note that this release is incompatible with 0.90.0 and there will be no
|
||||||
|
long-term support provided for it, Neo 3 is still changing and
|
||||||
|
improving. If you have any wallets used with 0.90.0 release you'll need to
|
||||||
|
regenerate them from private keys because of changes to verification scripts
|
||||||
|
that also changed hashes and addresses.
|
||||||
|
|
||||||
|
But nonetheless it is tested to be compatible with preview3 testnet for up to
|
||||||
|
68K of blocks in terms of storage changes, with neo-debugger for debug data
|
||||||
|
produced by the compiler and with consensus process for heterogeneous setups
|
||||||
|
(like 2 neo-go CNs with 2 C# CNs).
|
||||||
|
|
||||||
|
New features:
|
||||||
|
* secp256k1 signature checks added to interop functions
|
||||||
|
(Neo.Crypto.VerifyWithECDsaSecp256k1 and
|
||||||
|
Neo.Crypto.CheckMultisigWithECDsaSecp256k1 syscalls,
|
||||||
|
crypto.ECDsaSecp256k1Verify and crypto.ECDSASecp256k1CheckMultisig interop
|
||||||
|
functions, #918)
|
||||||
|
* RIPEMD160 hash added to interop functions (Neo.Crypto.RIPEMD160 syscall,
|
||||||
|
crypto.RIPEMD160 interop function, #918, #1193)
|
||||||
|
* "NotFound" P2P message (#1135, #1333)
|
||||||
|
* base64 encoding/decoding interop functions (binary.Base64Encode and
|
||||||
|
binary.Base64Decode, #1187)
|
||||||
|
* new contract.GetCallFlags interop (System.Contract.GetCallFlags syscall)
|
||||||
|
implemented (#1187)
|
||||||
|
* it is possible now to create iterators and enumerators over primitive VM
|
||||||
|
types in smart contracts (#1218)
|
||||||
|
* runtime.Platform interop (System.Runtime.Platform syscall) is now available
|
||||||
|
to smart contracts in Go (#1218)
|
||||||
|
* storage.PutEx interop (System.Storage.PutEx syscall) is now available to
|
||||||
|
smart contracts in Go (#1221)
|
||||||
|
* exceptions support in VM (#885)
|
||||||
|
* CLI conversion utility functions for addresses/hashes/etc (#1207, #1258)
|
||||||
|
* multitransfer transactions now can be generated with RPC client or CLI
|
||||||
|
(#940, #1260)
|
||||||
|
* System.Callback.* syscalls for callback creation and execution (callback.*
|
||||||
|
interop functions, #1197)
|
||||||
|
* MPT implementation was added (#1235)
|
||||||
|
* Policy native contract now also contains MaxBlockSystemFee setting (#1195)
|
||||||
|
* getting blocks by indexes via P2P is now supported (#1192)
|
||||||
|
* limited pointer support was added to the compiler (#1247)
|
||||||
|
* voting support in CLI (#1206, #1286)
|
||||||
|
|
||||||
|
Behavior changes:
|
||||||
|
* crypto.ECDsaVerify interop function was renamed to
|
||||||
|
crypto.ECDsaSecp256r1Verify now that we have support for secp256k1 curve
|
||||||
|
(#918)
|
||||||
|
* many RPC requests/responses changed names used for data fields (#1169)
|
||||||
|
* runtime.Notify interop function now requires a mandatory UTF8 name
|
||||||
|
parameter (#1052) and this name can be used to filter notifications (#1266)
|
||||||
|
* sendrawtransaction and submitblock RPC calls now return a hash instead of
|
||||||
|
boolean value in case of success (#1216)
|
||||||
|
* System.Runtime.Log syscall now only accepts valid UTF8 strings no longer
|
||||||
|
than 1024 bytes (#1218)
|
||||||
|
* System.Storage.Put syscall now limits keys to 64 bytes and values to 1024
|
||||||
|
bytes (#1221)
|
||||||
|
* PUSHA instruction now works with relative code offset (#1226)
|
||||||
|
* EQUAL instruction no longer does type conversions, so that values of
|
||||||
|
different types are always unequal (#1225)
|
||||||
|
* verification scripts now can't use more than 0.5 GAS (#1202)
|
||||||
|
* contracts no longer have single entry point, rather they export a set of
|
||||||
|
methods with specific offsets. Go smart contract compiler has been changed
|
||||||
|
accordingly to add all exported (as in Go) methods to the manifest
|
||||||
|
(but with the first letter being lowercased to match NEP-5 expections,
|
||||||
|
#1228). Please also refer to examples changes to better see how it affects
|
||||||
|
contracts, manifests and configuration files (#1296)
|
||||||
|
* native contracts are now called via Neo.Native.Call syscall (#1191)
|
||||||
|
* compressed P2P payloads now also contain their uncompressed size (#1212,
|
||||||
|
#1255)
|
||||||
|
* NEF files now use double SHA256 for checksums (#1203)
|
||||||
|
* VM's map keys and contract methods now can only contain valid UTF-8 strings
|
||||||
|
(#1198)
|
||||||
|
* stack items now can be converted to/from JSON natively (without
|
||||||
|
smartcontract.ContractParameters intermediate) which is now used for
|
||||||
|
invoke* RPC calls and application execution logs (#1242, #1317)
|
||||||
|
* invoking Policy native contracts now requires AllowsStates (to get
|
||||||
|
settings) or AllowModifyStates (to change setting) flags (#1254)
|
||||||
|
* Transaction now has Signers field unifying Sender (the first Signer) and
|
||||||
|
Cosigners, a Signer can have FeeOnly or any other regular witness scope
|
||||||
|
(#1184)
|
||||||
|
* verification scripts no longer have access to blockchain's state (#1277)
|
||||||
|
* governance scheme was changed to delegated committee-based one. The number
|
||||||
|
of validators is now specified with ValidatorsCount configuration option,
|
||||||
|
standby validators are no longer being registered by default (#867, #1300)
|
||||||
|
* Go 1.13+ is now required to build neo-go (#1281)
|
||||||
|
* public contract methods now always return some value and this is being
|
||||||
|
checked by the VM (#1196, #1331, #1332)
|
||||||
|
* runtime interop package now exports triggers as proper constants rather
|
||||||
|
than functions (#1299)
|
||||||
|
* RPC client no longer has SetWIF/WIF methods that didn't do anything useful
|
||||||
|
anyway (#1328)
|
||||||
|
|
||||||
|
Improvements:
|
||||||
|
* Neo.Crypto.CheckMultisigWithECDsaSecp256r1 syscall is now available via
|
||||||
|
crypto.ECDSASecp256r1CheckMultisig interop function (#1175)
|
||||||
|
* System.Contract.IsStandard syscall now also checks script's container (#1187)
|
||||||
|
* syscalls no longer have allowed triggers limitations (#1205)
|
||||||
|
* better testing coverage (#1232, #1318, #1328)
|
||||||
|
* getrawmempool RPC call now also supports verbose parameter (#1182)
|
||||||
|
* VMState is no longer being stored as a string for application execution
|
||||||
|
results (#1236)
|
||||||
|
* manifest now contains a list of supported standards (#1204)
|
||||||
|
* notifications can't be changed now by a contract after emitting them
|
||||||
|
(#1199)
|
||||||
|
* it is possible to call other contracts from native contracts now (#1271)
|
||||||
|
* getnep5transfers now supports timing parameters (#1289)
|
||||||
|
* smartcontract package now has CreateDefaultMultiSigRedeemScript that should
|
||||||
|
be used for BFT-compliant "m out of n" multisignature script generation
|
||||||
|
(#1300)
|
||||||
|
* validators are always sorted now (standby validators were not previously,
|
||||||
|
#1300)
|
||||||
|
* debug information now contains all file names (#1295)
|
||||||
|
* compiler now accepts directory to compile a package, only one file could be
|
||||||
|
passed previously (#1295)
|
||||||
|
* some old no longer used functions and structures were removed (#1303)
|
||||||
|
* contract inspection output was improved for new Neo 3 VM instructions (#1231)
|
||||||
|
* ping P2P message handling was changed to trigger block requests (#1326)
|
||||||
|
|
||||||
|
Bugs fixed:
|
||||||
|
* inability to transfer NEO/GAS from deployed contract's address (#1180)
|
||||||
|
* System.Blockchain.GetTransactionFromBlock syscall didn't pick all of its
|
||||||
|
arguments from the stack in some error cases (#1187)
|
||||||
|
* System.Contract.CallEx syscall didn't properly check call flags (#1187)
|
||||||
|
* System.Blockchain.GetContract and System.Contract.Create syscalls returned
|
||||||
|
an interop interface instead of plain well-defined structure (#1187)
|
||||||
|
* System.Contract.Update syscall's manifest checks were improved, return
|
||||||
|
value was fixed (#1187)
|
||||||
|
* getnep5balances and getnep5transfers RPC calls now support addresses in
|
||||||
|
their parameters (#1188)
|
||||||
|
* rare panic during node's shutdown (#1188)
|
||||||
|
* System.Runtime.CheckWitness, System.Runtime.GetTime syscalls are only allowed to be called with
|
||||||
|
AllowStates flag (#1218)
|
||||||
|
* System.Runtime.GasLeft syscall result for test VM mode was wrong (#1218)
|
||||||
|
* getrawtransaction RPC call now also returns its VM state after execution
|
||||||
|
(#1183)
|
||||||
|
* getnep5balances and getnep5transfers RPC calls now correctly work for
|
||||||
|
migrated contracts (#1188, #1239)
|
||||||
|
* compiler now generates correct code for global variables from multiple
|
||||||
|
files (#1240)
|
||||||
|
* compiler now correctly supports exported contracts and variables in
|
||||||
|
packages (#1154)
|
||||||
|
* compiler no longer confuses functions with the same name from different
|
||||||
|
packages (#1150)
|
||||||
|
* MaxBlockSize policy setting was not enforced (#1254)
|
||||||
|
* missing scope check for signers (#1244)
|
||||||
|
* compiler now properly supports init() functions (#1253, #1295)
|
||||||
|
* getvalidators RPC call now returns zero-length array of validators when
|
||||||
|
there are no registered candidates instead of null value (#1300)
|
||||||
|
* events were not added to the debug data (#1311, #1315)
|
||||||
|
* RPC client's BalanceOf method was lacking account parameter (#1323)
|
||||||
|
* VM CLI debugging commands didn't really allow to step through the contract
|
||||||
|
(#1328)
|
||||||
|
* recovery message decoding created incorrect PrepareRequest payload that
|
||||||
|
lead to consensus failures (#1334)
|
||||||
|
|
||||||
## 0.90.0 "Tantalization" (14 July 2020)
|
## 0.90.0 "Tantalization" (14 July 2020)
|
||||||
|
|
||||||
The first Neo 3 compatible release of neo-go! We've targeted to make it
|
The first Neo 3 compatible release of neo-go! We've targeted to make it
|
||||||
|
|
|
@ -7,8 +7,8 @@ functionality.
|
||||||
## Versions 0.7X.Y (as needed)
|
## Versions 0.7X.Y (as needed)
|
||||||
* Neo 2.0 support (bug fixes, minor functionality additions)
|
* Neo 2.0 support (bug fixes, minor functionality additions)
|
||||||
|
|
||||||
## Version 0.91.0 (August 2020)
|
## Version 0.92.0 (TBD, aligned with preview4 release)
|
||||||
* Neo 3.0-preview3 compatible version.
|
* Neo 3.0.0-preview4 compatible version.
|
||||||
|
|
||||||
## 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