Skip to content

Commit

Permalink
Merge pull request #2840 from nspcc-dev/release-0.100.0
Browse files Browse the repository at this point in the history
CHANGELOG: release 0.100.0
  • Loading branch information
roman-khimov authored Dec 8, 2022
2 parents bbb35f5 + 31b8635 commit 628f047
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 28 deletions.
73 changes: 73 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
30 changes: 2 additions & 28 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit 628f047

Please sign in to comment.