Skip to content

Centuplication

Compare
Choose a tag to compare
@roman-khimov roman-khimov released this 08 Dec 09:05
· 1802 commits to master since this release
628f047

A 3.5.0-compatible version of NeoGo with all the appropriate protocol updates and a number of other changes. The most notable ones are configuration updates. New features and some long-standing inconsistencies required for some changes and this release brings them with it. Old configurations are still supported and will work the same way (except for one minor exception in VerifyBlocks that is only supposed to be used for tests/development), but we'd like to highlight that all of the old settings will be removed in ~6 months, so please review these updates and update your configurations. For public networks the best way to go is to take the new versions from the "config" directory and then adjust for particular scenario if needed.

This release requires a complete resynchronization due to native contract changes, so please schedule your updates appropriately.

New features:

  • System.Runtime.LoadScript syscall (and appropriate smart contract interops) allowing to load/run dynamic code (#2719)
  • PUSHT/PUSHF VM instructions allowing for simpler/cheaper booleans (#2770)
  • ContractManagement native contract was extended with ID->hash mappings and getContractById and getContractHashes methods (#2702, #2837)
  • LogLevel application configuration option that can be changed on SIGHUP (#2831)
  • additional type data generated by the compiler that then can be used by the RPC bindings (SDK/contract wrapper) generator, this allows for complex types (structures/arrays/maps) to be easily represented/handled in contract-specific RPC code (#2828)
  • multiaddress listeners for all services and P2P, this changes the old Address/Port (and AnnouncedPort for P2P) configuration scheme to more generic Addresses list, the old configuration is still supported, but is deprecated and will be removed in future node versions (#2827, #2839)

Behaviour changes:

  • Aspidochelone fork block for NeoFS sidechain mainnet configuration is rescheduled again (#2823, #2830)
  • Blockchain's GetHeaderHash() method now accepts uint32 for parameter (#2814)
  • pre-0.97.3 and pre-0.99.0 deprecated compatibility fields and logic were dropped from the result.Version (getversion RPC result) structure (#2786)
  • SecondsPerBlock protocol configuration variable was replaced with TimePerBlock allowing for sub-second precision, SecondsPerBlock is still supported, but will eventually be removed (#2829)
  • AttemptConnPeers, BroadcastFactor, DialTimeout, ExtensiblePoolSize, MaxPeers, MinPeers, PingInterval, PingTimeout, ProtoTickInterval settings were moved into the new P2P section, timing parameters now use Duration type allowing for more human-friendly values in many cases, old parameters are still supported, but will eventually be removed (#2827)
  • consensus (dBFT) is configured as a separate service now that can be enabled/disabled (and can work in "watch only" mode without a wallet), the old direct "UnlockWallet" specification in "ApplicationConfiguration" is still supported, but is deprecated and will be removed in future versions (#2832)
  • GarbageCollectionPeriod, KeepOnlyLatestState, RemoveUntraceableBlocks, SaveStorageBatch and VerifyBlocks settings were moved from ProtocolConfiguration to ApplicationConfiguration; old configurations are still supported, except for VerifyBlocks which is replaced by SkipBlockVerification with inverted meaning (and hence an inverted default) for security reasons; this also affects NewBlockchain and neotest APIs (#2833)

Improvements:

  • more user-friendly error and help messages in some cases (#2824, #2834)
  • faster node startup time and smaller memory footprint for networks with lots (1-2M+) of blocks (#2814)
  • minor documentation fixes (#2834, #2838)

Bugs fixed:

  • transactions with system fee or more than MaxBlockSystemFee are no longer accepted into the mempool, preventing a form a network-wide DoS (#2826)
  • deprecated WSClient subscription methods not working correctly when filters are being used (#2836)