mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-21 23:29:38 +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.
|
||||
|
||||
## 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)
|
||||
|
||||
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)
|
||||
* Neo 2.0 support (bug fixes, minor functionality additions)
|
||||
|
||||
## Version 0.91.0 (August 2020)
|
||||
* Neo 3.0-preview3 compatible version.
|
||||
## Version 0.92.0 (TBD, aligned with preview4 release)
|
||||
* Neo 3.0.0-preview4 compatible version.
|
||||
|
||||
## Version 1.0 (2020, aligned with NEO 3.0 release)
|
||||
* full NEO 3.0 support
|
||||
|
|
Loading…
Reference in a new issue