Mongrelization
A large update that introduces a major node extension: NeoFS BlockFetcher service and util upload-bin
CLI command implemented as a part of NeoFS snapshot storage proposal. BlockFetcher service, as an alternative to P2P synchronization mechanism, allows to download blocks and sync chain from block dumps stored in NeoFS. Starting from this release, NeoSPCC team maintains chain dumps in NeoFS for N3 and NeoFS public networks. The default NeoGo node configuration for these networks has been changed to use NeoFS BlockFetcher as a synchronization mechanism prior to P2P synchronization. Other than that, this release includes NEP-24 standard support at both compiler and SC bindings generator levels. A large number of tiny user-facing enhancements is rolled out for RPC actor/ivoker, neotest
and unwrap
packages as far as for CLI utilities. Also, this release contains a set of NeoGo VM bug fixes inspired by differential VM fuzzing study conducted by our external contributor @Slava0135 and a set of tiny VM CLI enhancements introduced by @ixje.
Some deprecated functionality has been removed according to the schedule, see more details in the Behaviour changes
section. Also, for those node operators who would like to check out our new NeoFS BlockFetcher node extension, we'd recommend to add corresponding section to the node's configuration (see the default node configuration for N3/NeoFS networks for example).
This release is fully compatible with 3.7.5 version of C# node, no DB resync is needed.
New features:
- new NeoFS BlockFetcher service that allows to sync node from NeoFS chain dump (#3515, #3636, #3637, #3632, #3691, #3706, #3668, #3713)
- new
util upload-bin
CLI command that allows to upload blocks from Neo chains to NeoFS (#3578, #3625, #3626, #3633, #3637, #3638, #3643, #3650, #3662, #3684, #3686, #3691) - new
delete
andib
VM CLI commands for brealpoints management (#3674) - NEP-24 standard support (#3560)
- Echidna hardfork introduced, but not yet enabled (please, note that this is only a preview that includes a part of scheduled changes and will be changed in an incompatible way before the full support, hence, this hardfork may be enabled for experimental purpose only) (#3554)
Behavior changes:
- neotest's AddSystemFee and TestInvoke are bound to Executor state (#3551)
- getversion RPC response is extended with seed list and standby committee (#3540)
- support only two latest versions of Go instead of three (#3567)
- some deprecated functionality is dropped: unmarshalling code for the old
getpeers
RPC response,NEOBalance
stackitem deserializer compatibility code,serv_node_version
Prometheus gauge metric, outdated RPC error codes support, block-based web-socket transaction awaiting (#3690)
Improvements:
- documentation updates (#3545, #3663, #3666, #3678, #3683, #3708)
- netmode package is extended with public NeoFS chain IDs (#3539)
- dBFT library upgrades (#3541, #3711)
- migration to Docker Compose V2 (#3547)
- system fee required for contract deployment in neotest is precisely calculated (#3551)
- ability to customize awaiting options for PollingBased RPC waiter (#3556)
- Go 1.23 support, bump minimum required Go version up to Go 1.22 (#3567)
- a set of dependent libraries upgrades (#3570)
- extend the list of supported SC parameters for RPC actor/invoker (#3583)
- Null stackitem result handling for autogenerated RPC bindings (#3584)
- macos-12 support is removed, macos-14 support is added (#3657)
- allow to get NEP-11/NEP-17 balances via CLI using account address only (#3659)
- expose VM slot getters (#3677)
- add
unwrap.ErrNull
error to handle Null stackitem returned (#3695) - extend web-socket notification subsystem with notification parameter filters (#3689)
- explicitly prohibit unknown configuration fields for
contract generate-*
CLI commands (#3708) - extend compiled smart contract identifier in neotest cache (#3709)
- move
neogo_version
metric out ofnetwork
package (#3712)
Bugs fixed:
- fees of ditched transaction are not cleared from mempool (#3537)
- extension of SC permission descriptor doesn't clear wildcard status (#3544)
- example of NeoGo VM script fails VM execution (#3593)
- a call to
getunclaimedGas
of native Neo contract for account with zero balance results in VM failure (#3589) MODMUL
VM opcode handler returns wrong results for negative arguments (#3599)- neotest coverage extension panics on attempt to collect coverage for contract with missing debug information (#3600)
MODPOW
VM opcode handler returns wrong results for negative base (#3649)- node panic on SIGHUP (#3661)
- HTTP return code of RPC requests diverges from C# RPC server's behaviour (#3665)
- a set of bugs in unit tests (#3442, #3680)
POPITEM
VM opcode handler counts stack references improperly (#3688)PACKMAP
VM opcode handler ignores duplicating map keys (#3685)- chain restore from genesis block fails with StateRootInHeader extension enabled (#3697)
- hardfork-dependent methods are not included into native contract metadata starting from the hardfork height (#3704)
- outdated keyword usage in Dockerfiles (#3710)