diff --git a/CHANGELOG.md b/CHANGELOG.md index dfef09373..39d5db667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,79 @@ This document outlines major changes between releases. +## 0.100.0 "Centuplication" (08 Dec 2022) + +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) + ## 0.99.7 "Hyalinization" (23 Nov 2022) Bugs, terrestrial arthropods with at least six legs. Sometimes we don't notice diff --git a/ROADMAP.md b/ROADMAP.md index 7eeed6c26..1d738738a 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -7,10 +7,8 @@ functionality. ## Versions 0.7X.Y (as needed) * Neo 2.0 support (bug fixes, minor functionality additions) -## Version 0.100.0 (aligned with C# node 3.5.0 release, ~December 2022) - * 3.5.0 protocol changes - * drop some deprecated code (see below) - * RPC wrappers generator with extended type information +## Version 0.100.1 (~January 2022) + * extended data types for iterators to be used by RPC wrapper generator ## Version 1.0 (2023, TBD) * stable version @@ -24,30 +22,6 @@ APIs/commands/configurations will be removed and here is a list of scheduled breaking changes. Consider changing your code/scripts/configurations if you're using anything mentioned here. -## getversion RPC reply Magic and StateRootInHeader fields - -"getversion" RPC reply format was extended to contain "protocol" section in -version 0.97.3. Since then we have deprecated Magic and StateRootInHeader -fields in the Version structure that allows to decode replies from pre-0.97.3 -servers while RPC server implementation populates both old and new fields for -compatibility with pre-0.97.3 clients. - -Version 0.97.3 was released in October 2021 and can't really be used today on -public networks, we expect at least 0.99.0+ to be used in production (0.99.2+ -for C# 3.4.0 compatibility). Therefore these old fields are scheduled to be -removed in version 0.100.0 both client-side and server-side. If any of your -code uses them, just use the Protocol section with the same data. - -## InitialGasDistribution field of getversion RPC reply - -An incompatibility with C# node's InitialGasDistribution representation was -detected and fixed in version 0.99.0 of NeoGo (June 2022). Some compatibility -code was added to handle pre-0.99.0 servers on the client side, however it was -not possible to change pre-0.99.0 clients to work with newer servers. - -We expect all servers to be migrated to 0.99.0+ by now, therefore -compatibility code will be removed in version 0.100.0. - ## Old RPC client APIs A huge set of RPC client APIs was deprecated in versions 0.99.2 and 0.99.3