Skip to content

Releases: nspcc-dev/neo-go

Granulation

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 01 Sep 07:02
809ef55

This version drops support for Go 1.25 and requires 1.26+ to build (with Go 1.27 supported) remaining fully compatible with v3.10+ of the C# node. It brings filtering functionality to the getrawmempool and getnotarypool RPC handlers and drops deprecated range/hash NeoFS operations from Oracle service.

No configuration changes or resync is required on upgrade.

Behaviour changes:

  • getrawmempool and getnotarypool RPC handlers are extended with signer filter (#4149)
  • range and hash support is dropped from the Oracle service (#4382)

Improvements:

  • reusable native contract types in auto-generated RPC bindings (#4385)
  • Go 1.26 upgrade (#4396)
  • dependencies upgrade (#4396)

Bugs fixed:

  • panic on attempt to change casted byte-slice struct field (#4364)
  • panic on immediately-invoked function literals compilation (#4363)
  • always-true conflicting payer fee check in memory pool (#4391)

Vitalization

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 03 Aug 17:12
6d7bd0c

This version mostly focuses on potential state difference problems. Also, it delivers a set of compiler improvements: arrays support, enhanced type checks for notification event arguments and more. It's fully compatible with the C# node v3.10+.

No configuration update or resynchronisation is required on upgrade. Automatic runtime.Notify arguments type casting is not supported by the compiler any more. Smart contract developers should explicitly convert runtime.Notify arguments to the desired types manually. DApp developers should migrate to neorpc.FaultException since actor.ErrExecFailed is removed according to the schedule.

New features:

  • arrays support in compiler (#4358)

Behaviour changes:

  • fail compilation if runtime.Notify parameter types don't match the configured values (#4369)
  • deprecated actor.ErrExecFailed is removed (#4378)

Bugs fixed:

  • missing errors handling in imported packages in compiler (#4361)
  • error on an attempt to re-deploy the contract via neotest (#4362)
  • incompatibility in ISTYPE and ROLL VM instructions handling (#4365)
  • potential native Oracle contract state difference (#4366)
  • potential native StdLib contract state difference (#4367)
  • potential native CryptoLib contract state difference (#4368)
  • VM types are used instead of SC types in debug info file (#4379)
  • divergence in scientific numbers parsing from JSON (#4384)

Benediction

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 09 Jul 17:25
c7275ae

This version is fully compatible with the C# node 3.10.1. It extends and enables Gorgon hardfork, introduces metrics updates and fixes a set of security vulnerabilities.

Node operators should review and update node configuration. For N3 chains Gorgon hardfork is enabled at block 12020000 of Mainnet and 17960000 block of Testnet; for NeoFS networks Gorgon height is 20700000 for Mainnet and 20200000 for Testnet. Please consider upgrading your nodes before Gorgon height; otherwise you'll need to resynchronize the DB. DevOps and developers should pay attention to P2P and RPC Prometheus metrics renaming. Also, deprecated --decrypt flag of wallet export CLI command is removed.

New features:

  • script for RPC-based application logs comparison (#4287)
  • rpc_notification_subscriber_cnt Prometheus metric (#4335)
  • Gorgon hardfork is enabled in public networks (#4346)
  • new unstable Huyao hardfork (#4331)

Behaviour changes:

  • Prometheus metrics for P2P command and RPC request processing duration are migrated to labeled p2p_commands_time and rpc_requests_time correspondingly without transition period (#4271)
  • ChangeView dBFT message format change (#4206)
  • deprecated --decrypt flag of wallet export CLI command is removed (#4346)

Improvements:

  • wsconnections_count Prometheus metric is extended with labels (#4335)
  • (*Client).Network API is exposed (#4316)
  • documentation updates (#4317)
  • VM unit-tests upgrade (#4318)
  • log rejected hashes on dBFT view change (#4260)
  • include lambda expressions in debug info during compilation (#4207)
  • support for index expressions and selectors in range loops in compiler (#4345, #4350)
  • log RPC server version in states/applogs comparator utilities (#4352)

Bugs fixed:

  • initialized global variables overwrite in compiler (#4213)
  • non-informative application log diff output of compare-states.go (#4216)
  • possible negative VM reference counter value (#4312)
  • primitive types double-counting in CLEARITEMS VM instruction (#4313)
  • race between header and execution result awaiting in RPC client waiter (#4320)
  • notary deposit overdraw (#4321)
  • improper reward calculation for voting committee member (#4332)
  • some debug info sequence points cover the whole function body (#4207)
  • "invalid label target" error on lambda compilation (#4353)

Amortization

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 15 Jun 12:49
12bd120

This is an urgent release fixing a set of vulnerabilities that may affect the process of node functioning. It also contains a set of VM opcodes optimizations and other minor bug fixes.

No resync is required on upgrade, this release is fully compatible with v3.10.0 of the C# node. Default MaxRequestBodyBytes RPC server setting was decreased, consider updating the node configuration file if custom limit is needed.

Behaviour changes:

  • decrease default MaxRequestBodyBytes RPC server setting (#4308)
  • extend the list of forbidden IPs for Oracle service (#4310)

Improvements:

  • DUP VM opcode optimisation (#4264)
  • NEWSTRUCT and NEWARRAYT VM opcodes optimisation (#4252)
  • global documentation format update (#4268)
  • distinguish NotYetValid transaction verification result from Expired (#4304)
  • check witness deserialization limits on the RPC server side (#4305)
  • check block/transaction deserialization limits on the RPC server side (#4308)
  • restrict the maximum MPT node depth on deserialization (#4309)

Bugs fixed:

  • web-socket readers and writers are not awaited on RPC server shutdown (#4272)
  • flaky unit-tests (#4266, #4275, #4278)
  • execution state difference in a failed candidate registration process (#4273)
  • invalid output hash endianness in util canceltx CLI command (#4277)
  • duplicates of Conflicts attribute are not prohibited (#4292)
  • prohibit an overflow of consumed gas on the VM side (#4306)
  • invalid return type of storage.LocalGet interop wrapper (#4307)
  • difference in transaction mocking behaviour for invoke* RPC calls (#4311)

Yawl

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 14 May 10:45
0919449

This version brings a set of Gorgon-related protocol changes along with microoptimisations of the memory pool and P2P layer, empowering faster transactions broadcast. Also, it fixes a set of bugs related to VM refcounting.

This version is fully compatible with v3.9.2 of the C# node and does not require a DB resync. Node operators should update MaxTransactionsPerBlock protocol configuration value to 200 for mainnet (if didn't yet) and should be aware that sd_notify support is enabled. A set of prometheus metrics has been renamed without a transition period. We'd also recommend to enable DirectRelay setting of RPC server to speed up the broadcast of transactions submitted via sendrawtransaction RPC call. DApp developers should migrate their applications from deprecated actor.ErrExecFailed to neorpc.FaultException error.

New features:

  • wsconnections_count Prometheus metric showing the number of active web-socket connections for RPC server (#4239)
  • sd_notify support (#4245)

Behavior changes:

  • actor.ErrExecFailed is deprecated and replaced by neorpc.FaultException error (#4212)
  • stackitem.Map underlying implementation optimization (#4223)
  • panic on invalid arguments of CryptoLib's verifyWithECDsa, verifyWithEd25519 and System.Crypto.CheckSig, System.Crypto.CheckMultisig interops starting from Gorgon (#4236)
  • MaxTransactionsPerBlock is set to 200 for mainnet (#4227)
  • update ContractManagement's cache prior to contract block on destroy starting from Gorgon (#4228)
  • block contract account prior to contract destruction in ContractManagement starting from Gorgon (#4233)
  • current_state_height, current_block_height, current_persisted_height and current_header_height Prometheus metrics are renamed to verified_state_height, block_height, persisted_height and header_height respectively (#4239)

Improvements:

  • enhanced consensus message delivery (#4240)
  • avoid requests for empty iterator sessions at the RPC client side (#4194)
  • optimize refcounting for VALUES VM instruction (#4193)
  • support empty sender/receiver for (*TransferEvent).FromStackItem (#4200)
  • BoltDB upgrade to allocation-optimized version (#4214)
  • distinguish native contract name in contract [test]invokefunction CLI handler (#4232)
  • log opened and closed web-socket connections on the RPC server side (#4239)
  • support block/mutex profiling (EnableBlock and EnableMutex Pprof settings) (#4242)
  • mempool microoptimisations (#4244, #4247)
  • DirectRelay RPC server option enabling direct newly submitted transaction broadcast (#4256)

Bugs fixed:

  • panic on access to a field of structure initialized in slice (#4203, #4205)
  • panic on start type assertion (#4204)
  • missing operand check for SHR/SHL VM instructions (fix included to Gorgon) (#4197)
  • missing index bounds check for HASKEY VM instruction (fix included to Gorgon) (#4197)
  • invalid refcounting of PACKMAP VM instruction (#4202)
  • regression of neotest coverage calculation (#4211)
  • improper execution of System.Contract.CallNative contract callbacks (#4219)
  • panic in Ledger's getBlock on too high block index (#4238)
  • sequential parsing of SYSCALL VM instruction arguments (#4231)
  • missing VM slot bounds check in store operations (#4231)
  • missing validation of method's return value type on contract call handling (#4253)
  • invalid refcounting of SETITEM VM instruction (#4257)

Yumminess

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 13 Mar 12:34
9dbcfad

This release focuses on VM refcounter optimizations and improvements across SDK and CLI: scparser package is extended with NEP-11/NEP17 transfer parsers and script end checks, neorpc package is extended with FaultException error type allowing to distinguish VM exceptions in application logs or invocation results, PEM private key export format is supported in wallet export CLI command and more. This version drops support for Go 1.24 and requires 1.25+ to build (with Go 1.26 supported) remaining fully compatible with v3.9.2 of the C# node.

No resync is required on upgrade. MaxBlockSystemFee value was changed for both N3 and FS networks; however, only NeoFS network requires config update on upgrade; N3 configuration upgrade schedule will be published later. dApp developers should migrate to the new way of "GAS limit exceeded" related VM exceptions detection. DevOps and CLI users should migrate from deprecated --decrypt flag of wallet export CLI command to --format flag.

Behavior changes:

  • Go 1.25 upgrade (#4179, #4187)
  • prohibit duplicate keys in native RoleManagement's designateAsRole (#4185)
  • MaxBlockSystemFee updates for default, N3 and FS networks (#4181)
  • MaxGASInvoke upgrade for FS networks (#4181)
  • the text of "GAS limit exceeded"-related VM exceptions is unified (#4189)
  • --decrypt flag of wallet excport CLI command is deprecated in favour of --format (#4190)

Improvements:

  • VM refcounter optimisations (#4156, #4177)
  • NEP-11/NEP17 transfer and script end checks support in scparser (#4171)
  • TimePerBlock documentation adjustment (#4172)
  • extend P2PNotaryRequest verification error text (#4184)
  • remove unreachable nil check for stackitem.Map keys (#4183)
  • VM fault exceptions can be distinguished with neorpc.FaultException (#4189)
  • support PEM format in wallet export CLI command (#4190)

Bugs fixed:

  • REVERSEITEMS support for primitive types in scparser (#4169)
  • invalid call flag of native Policy's recoverFund (#4178)
  • accepted transactions are checked against MaxBlockSystemFee (#4181)
  • Actor's attribute slice mutation on concurrent usage (#4186)

Exponentiation

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 17 Feb 17:27
9998ddb

One more 3.9.2 compatible version that brings a number of important bug fixes along with compiler improvements and performance optimisations. It also introduces support for custom System.Contract.Call-based witnesses for notary service and a set of extensions for scparser package that can be used for static VM scripts reverse-engineering (System.Contract.Call with arbitrary number of nested arguments is supported).

No resync or configuration change is required on upgrade.

Behavior changes:

  • storage dump format is adjusted to follow StorageDumper plugin output (#4143)

Improvements:

  • add VM script parsing extensions to scparser package (#4122)
  • export default native contract constructors (#4145)
  • export default native NeoToken contract implementation (#4146)
  • support parallel coverage collection in neotest (#4101)
  • support signing with custom verification scripts in wallet (#4147)
  • optimize public key method allocations (#4154)
  • support embedded struct fields in compiler (#4160)
  • support custom System.Contract.Call-based witness collection by notary service (#4155)

Bugs fixed:

  • invalid MPT traversal order leading to incorrect findstates and findstoragehistoric results (#4151)
  • invalid handling of switch with non-last default case in compiler (#4078)
  • missing CALLT parameters verification (#4165)
  • invalid reference counting for unreferenced elements (#4152, #4153)
  • improper parametrized contract witness collection (#4157)

Shimmeriness

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 21 Jan 15:00
0648a3b

This version is fully compatible with the C# node 3.9.2. It extends and enables Faun hardfork, introduces P2P-level optimisations and fixes a couple of critical bugs.

Node operators should review and update node configuration. For N3 chains Faun hardfork is enabled at block 8800000 of Mainnet and 12960000 block of Testnet; for NeoFS networks Faun height is 19725000 for Mainnet and 19340000 for Testnet. Please consider upgrading your nodes before Faun height; otherwise you'll need to resynchronize the DB. Also, this release fixes a state difference at block 2940927 of N3 Mainnet introduced by Faun preview in v0.115.0 release; if you haven't resynchronized your node on v0.115.0 upgrade, then you may safely skip resynchronisation for this release as far.

New features:

  • add recoverFund method to native Policy starting from Faun (#4139)
  • enable Faun hardfork for public networks (#4142)
  • introduce Gorgon hardfork in a preview mode (#4142)

Behavior changes:

  • NEP-30 support for native contracts starting from Faun (#4114)
  • adjust whitelist fee contract storage scheme (#4129)
  • attach NeoFS state object witness conditionally (#4131)

Improvements:

  • add tolerance to non-critical P2P errors (#4134)
  • accept native contract name in getstorage* and findstorage* RPC handlers (#4130)
  • optimize P2PNotaryRequest payloads processing (#4135)

Bugs fixed:

  • panic on channel close in RPC Waiter (#4133)
  • state difference at block 2940927 caused by missing Faun fork switch in Policy's blockAccount handler (#4141)
  • fix premature call to NeoFS pool's Close() method (#4128)

Shininess

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 29 Dec 23:21
4160cac

Bringing NeoGo up to date with recently added Faun preview changes, this release also improves CLI and RPC client/server parts. Other than that, it introduces witnessed state objects used by the experimental NeoFS state sync extension and optimizes P2PNotaryRequest payloads processing in Notary service.

This release is fully compatible with v0.114.0. Please note that MaxBlockSystemFee value of default mainnet configuration was upgraded, ensure your mainnet node config is aligned with this change. Also note that the format of NeoFS state sync checkpoint used to store the progress of the state sync process has been changed, so resync is required for those NeoFSStateSyncExtensions-enabled nodes that are upgraded in the middle of the state sync process (which is not expected in practice).

New features:

  • clear votes of a blocked account starting from Faun (#4115)
  • native Treasury contract is added to Faun preview (#4113)
  • fractional ExecFeeFactor support is added to native Policy contract starting from Faun (#4057)
  • contract fee whitelists are supported starting from Faun (#4052)
  • query notarypool CLI command (#4103)

Behavior changes:

  • ErrAlreadyExists RPC error code is used instead of raw RPC error text comparison in RPC client related packages (#4106)

Improvements:

  • serializers of stackitem.Convertible are added to dao package (#4118)
  • extended debug logs for util audit-bin CLI command (#4120)
  • multiple BoltDB stores support for a single DB (#4112)
  • neotest coverage documentation improvements (#4109)
  • immediate empty iterator session disposal (#4095)
  • SC standard compliance check errors are improved (#4091)
  • stateroot witness support for NeoFS state objects (#4099)
  • optimization of P2PNotaryRequest payloads handling in Notary service (#4093)

Bugs fixed:

  • supported standard wrappers conflict in auto-generated RPC bindings (#4086)
  • custom native contracts are not properly supported in neotest (#4117)
  • RPC iterator's Truncated field misuse on session-enabled servers (#4095)
  • MaxBlockSystemFee misconfiguration in default mainnet config (#4097)
  • invalid signature order in SC parameter context (#4089)
  • util audit-bin search cursor reset on temporary search failures (#4121)

Chemosorption

Choose a tag to compare

@AnnaShaleva AnnaShaleva released this 17 Nov 17:18
ddffeda

This version fixes the state difference at block 11074661 of testnet caused by improper handling of native NEP-17 token transfer. It also fixes a deadlock caused by inability to terminate an expired iterator session. It's fully compatible with the C# node 3.8+ and delivers a set of improvements for compiler, NeoFS block storage audit and uploader along with a preview of Faun changes.

Deprecated functionality has been removed according to the schedule (math.Max and math.Min interop functions along with SessionExpirationTime RPC server config), consider upgrading affected smart contracts and node config correspondingly. The default ports of Prometheus and pprof services have been changed for mainnet config. Testnet node resynchronisation (or state reset to block 11074660 for full nodes) is recommended but not required since the state is the same at higher block (starting from 11091272), and the only real difference now is two application logs for two transactions.

New features:

  • local analogs of System.Storage.* interop API added to Faun preview (#4031)

Behavior changes:

  • migrate to single threaded search in NeoFS block storage uploader (#4030)
  • adjust Prometheus and pprof ports in default mainnet config (#4074)
  • removal of deprecated math.Max and math.Min interop functions (#4083)
  • removal of deprecated SessionExpirationTime RPC server config (#4083)

Improvements:

  • documentation updates (#4035, #4045, #4079)
  • NeoFS SDK Go update to RC15 (#4028)
  • dependencies upgrade (#4067)
  • support assignment operators &=, |=, >>=, <<= in compiler (#4059)
  • add an example of NeoFS usage to smart contracts (#4064)
  • refactor NeoFS block storage uploader (#4070, #4080)
  • improve NeoFS block storage audit CLI tool (#4019)
  • properly handle circular reference in stackitem JSON serialization (#4044)

Bugs fixed:

  • RPC bindings generator generates incorrect bindings for NEP-22/NEP-31 (#4022, #4024, #4048)
  • panic in the compiler on missing external package in the imported one (#4027)
  • execution error caused by iteration over nil slice (#4026)
  • add source URL to NEF file on compilation in neotest (#4042)
  • getnextblockvalidator RPC handler returns result only for enrollments (#4047)
  • negative native NEP-17 transfer doesn't lead to VM FAULT (#4073)
  • inability to force-terminate expired iterator session (#4082)