Globalization
We're updating NeoGo to push out a number of useful updates and protocol extensions as well as make it compatible with 3.6.2 version of C# node. The most invasive behaviour changes are VM-level protocol constraints imposed on the size of serialized stackitems and NativeActivations
node setting removal. This version also delivers a set of smaller useful changes in the interoperability layer and native contract functionality including System.Runtime.CurrentSigners interop, strLen
StdLib method and PolicyContract-based transaction attributes pricing as far as a user-facing canceltx
CLI command and community-requested --relative-path
CLI option.
Node operators must resynchronize their nodes to get fully compatible state (which is confirmed to be compatible with 3.6.2 for current mainnet up to block 4483627 and T5 testnet up to block 3078762). Please, ensure your node configuration doesn't contain NativeActivations
protocol configuration section as this logic is hidden under Hardforks
starting from the current release.
New features:
- System.Runtime.CurrentSigners interop allowing to get signers of the currently loaded transaction (#3058)
strLen
method of native StdLib contract (#3208)- transaction attributes pricing regulation via native PolicyContract (#3155)
canceltx
CLI command as an alternative to unsupportedcanceltransaction
RPC request (#3223, #3214)
Behaviour changes:
- reduce maximum allowed stackitem.Item size (#3185)
- restrict maximum allowed NEF file size and prohibit large contracts deployment (#3186)
- bind
NativeActivations
node setting to theHardforks
setting (#3212) - introduce serialization limit to stackitem.Item and fail large contracts deploy wrt this setting (#3218)
- add customizable
MaxRequestBodyBytes
andMaxRequestHeaderBytes
RPC server configuration setting (#3221)
Improvements:
- provide more detailed error on attempt to read non-existent service wallet specified via node configuration file (#3210)
- optimize emit of imported code for autogenerated RPC bindings (#3215)
- documentation update (#3203, #3222)
- add
--relative-path
CLI flag allowing to override configuration-specific relative paths (#3206) - update code owners (#3216, @fyrchik will live in our hearts forever)
Bugs fixed:
- unify messages of RPC errors according to the RPC errors NEP (#3199)
- limit maximum allowed number and depth of transaction signers and witnesses per RPC request that accept transaction (#3207, #3221)
- forbid unknown fields usage in the node configuration file (#3209)
- enable hardfork-dependant code starting exactly from the block height specified in the node configuration (#3211)
- require Notary native deposit to be valid for at least one subsequent block after deposit transaction acceptance (#3211)
- deduplicate unnamed event types for autogenerated RPC bindings and make the binding generation order strictly defined and stable (#3215, #3220)
- do not panic on trying to compile an import cycle (#3215)
- state difference at block 3002333 of T5 testnet caused by difference at characters escaping during manifest's
Extra
field JSON serialisation (#3225) - properly start node services that depend on native RoleManagement contract data with genesis
Roles
protocol configuration setting specified (#3229)