2019-01-25 17:41:43 +00:00
|
|
|
# Roadmap for neo-go
|
|
|
|
|
2019-09-18 09:06:10 +00:00
|
|
|
This defines approximate plan of neo-go releases and key features planned for
|
2022-04-20 18:30:09 +00:00
|
|
|
them. Things can change if there is a need to push a bugfix or some critical
|
2019-10-25 15:30:17 +00:00
|
|
|
functionality.
|
2019-09-18 09:06:10 +00:00
|
|
|
|
2020-02-06 18:35:43 +00:00
|
|
|
## Versions 0.7X.Y (as needed)
|
|
|
|
* Neo 2.0 support (bug fixes, minor functionality additions)
|
|
|
|
|
2022-11-10 13:18:59 +00:00
|
|
|
## 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 1.0 (2023, TBD)
|
|
|
|
* stable version
|
|
|
|
|
|
|
|
# Deprecated functionality
|
|
|
|
|
|
|
|
As the node and the protocol evolve some external APIs can change. Usually we
|
|
|
|
try keeping backwards compatibility for some time (like half a year) unless
|
|
|
|
it's impossible to do for some reason. But eventually old
|
|
|
|
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
|
|
|
|
(August-September 2022), including very frequently used ones like
|
|
|
|
SignAndPushInvocationTx, AddNetworkFee, TransferNEP17. A new set of
|
|
|
|
invoker/actor/unwrap/nep17/etc packages was introduced decoupling these
|
|
|
|
functions from RPC client and simplifying typical backend code. Please refer
|
|
|
|
to rpcclient package documentation for specific replacements for each of these
|
|
|
|
APIs and convert your code to using them.
|
|
|
|
|
|
|
|
While a lot of the code is already converted to new APIs, old ones still can
|
|
|
|
be used in some code not known to us. Therefore we will remove old APIs not
|
|
|
|
earlier than February-March 2023, with 0.101.0 or 0.102.0 release.
|
|
|
|
|
|
|
|
## util.FromAddress smart contract helper
|
|
|
|
|
|
|
|
`util` smart contract library has a FromAddress function that is one of the
|
|
|
|
oldest lines in the entire NeoGo code base, dating back to 2018. Version
|
|
|
|
0.99.4 of NeoGo (October 2022) has introduced a new `address` package with
|
|
|
|
`ToHash160` function, it covers a bit more use cases but can be used as a
|
|
|
|
direct replacement of the old function, so please update your code.
|
|
|
|
|
|
|
|
util.FromAddress is expected to be removed around March 2023 (~0.102.0
|
|
|
|
release).
|
|
|
|
|
|
|
|
## WSClient Notifications channel and SubscribeFor* APIs
|
|
|
|
|
|
|
|
Version 0.99.5 of NeoGo introduces a new set of subscription APIs that gives
|
|
|
|
more control to the WSClient user that can pass specific channels to be used
|
|
|
|
for specific subscriptions now. Old APIs and generic Notifications channel are
|
|
|
|
still available, but will be removed, so please convert your code to using new
|
|
|
|
Receive* APIs.
|
|
|
|
|
|
|
|
Removal of these APIs is scheduled for March-April 2023 (~0.102.0-0.103.0
|
|
|
|
releases).
|
|
|
|
|
|
|
|
## Prometheus RPC counters
|
|
|
|
|
|
|
|
A number of neogo_${method}_called Prometheus counters are marked as
|
|
|
|
deprecated since version 0.99.5, neogo_rpc_${method}_time histograms can be
|
|
|
|
used instead (that also have a counter).
|
|
|
|
|
|
|
|
It's not a frequently used thing and it's easy to replace it, so removal of
|
|
|
|
old counters is scheduled for January-February 2023 (~0.100.X release).
|
2022-12-02 16:10:45 +00:00
|
|
|
|
|
|
|
## SecondsPerBlock protocol configuration
|
|
|
|
|
|
|
|
With 0.100.0 version SecondsPerBlock protocol configuration setting was
|
|
|
|
deprecated and replaced by a bit more generic and precise TimePerBlock
|
|
|
|
(allowing for subsecond time). An informational message is printed on node
|
|
|
|
startup to inform about this, it's very easy to deal with this configuration
|
|
|
|
change, just replace one line.
|
|
|
|
|
|
|
|
Removal of SecondsPerBlock is scheduled for May-June 2023 (~0.103.0 release).
|
2022-11-25 10:20:53 +00:00
|
|
|
|
2022-11-29 14:43:08 +00:00
|
|
|
## Services/node address and port configuration
|
2022-11-25 10:20:53 +00:00
|
|
|
|
|
|
|
Version 0.100.0 of NeoGo introduces a multiple binding addresses capability to
|
2022-11-29 14:43:08 +00:00
|
|
|
the node's services (RPC server, TLS RPC configuration, Prometheus, Pprof) and
|
|
|
|
the node itself. It allows to specify several listen addresses/ports using an
|
|
|
|
array of "address:port" pairs in the service's `Addresses` config section and
|
|
|
|
array of "address:port:announcedPort" tuples in the `ApplicationConfiguration`'s
|
|
|
|
`Addresses` node config section. Deprecated `Address` and `Port` sections of
|
|
|
|
`RPC`, `Prometheus`, `Pprof` subsections of the `ApplicationConfiguration`
|
|
|
|
as far as the one of RPC server's `TLSConfig` are still available, but will be
|
2022-12-06 19:35:37 +00:00
|
|
|
removed, so please convert your node configuration file to use new `P2P`-level
|
|
|
|
`Addresses` section for the node services. Deprecated `Address`, `NodePort` and
|
|
|
|
`AnnouncedPort` sections of `ApplicationConfiguration` will also be removed
|
|
|
|
eventually, so please update your node configuration file to use `Addresses`
|
|
|
|
section for the P2P addresses configuration.
|
|
|
|
|
|
|
|
Removal of these config sections is scheduled for May-June 2023 (~0.103.0 release).
|
|
|
|
|
|
|
|
## P2P application settings configuration
|
|
|
|
|
|
|
|
Version 0.100.0 of NeoGo marks the following P2P application settings as
|
|
|
|
deprecated: `AttemptConnPeers`, `BroadcastFactor`, `DialTimeout`,
|
|
|
|
`ExtensiblePoolSize`, `MaxPeers`, `MinPeers`, `PingInterval`, `PingTimeout`,
|
|
|
|
`ProtoTickInterval`. These settings are moved to a separate `P2P` section of
|
|
|
|
`ApplicationConfiguration`. The `DialTimeout`, `PingInterval`, `PingTimeout`,
|
|
|
|
`ProtoTickInterval` settings are converted to more precise `Duration` format
|
|
|
|
(allowing for subsecond time). Please, update your node configuration (all you
|
|
|
|
need is to move specified settings under the `P2P` section and convert
|
|
|
|
time-related settings to `Duration` format).
|
|
|
|
|
|
|
|
Removal of deprecated P2P related application settings is scheduled for May-June
|
|
|
|
2023 (~0.103.0 release).
|