Skip to content

24.0.0

Compare
Choose a tag to compare
@ftrader ftrader released this 21 Nov 19:51
· 1035 commits to master since this release

Release Notes for Bitcoin Cash Node version 24.0.0

Bitcoin Cash Node version 24.0.0 is now available from:

https://bitcoincashnode.org

Overview

This is a major release of Bitcoin Cash Node (BCHN) that implements the May 15, 2022 Network Upgrade. This release implements the following two consensus CHIPs:

This version contains further corrections and improvements, such as:

  • BIP69 (privacy) lexicographical sorting of transaction inputs/outputs
  • A new wallet RPC call attribute ('include_unsafe') which enables creation of transactions which spend unconfirmed outputs (the default is still to spend only confirmed transactions)
  • New settings, confirmation and error messages for the GUI to detect and warn the user about error-prone legacy address types.
  • Update of the seeds and addition of a new seeder (bitjson.com)

Users who are running any of our previous releases (23.x.y) are urged to upgrade to v24.0.0 ahead of May 2022.

Usage recommendations

The update to Bitcoin Cash Node 24.0.0 is required for the May 15, 2022 Bitcoin Cash network upgrade.

Network changes

This release brings two consensus CHIPs (increased precision for arithmetic operations and native introspection opcodes) and one optional network change - BIP69 - the sorting of inputs and output in transactions generated by the wallet.

The first two (consensus changes) take effect with the upgrade in 15 May 2022.

BIP69 is effective immediately and enabled by default in this release. The pre-BIP69 behavior can be obtained by passing -usebip69=0 on startup.

Added functionality

  • After activation of the May 2022 upgrade, smart contract designers will be able to use OP_MUL, native introspection opcodes and higher-precision integers in Script code.

  • coinsel option has been added to sendmany RPC call. This was done to keep uniformity with 'sendtoaddress'.

  • A new option -usebip69 has been added to toggle BIP69 usage (it is enabled by default). This sorts the inputs and outputs of a transaction
    in lexicographical order to increase transactional privacy.

  • The fundrawtransaction, sendmany, sendtoaddress and walletcreatefundedpsbt RPCs now support an include_unsafe option that, when true, allows using "unsafe inputs" to fund the transaction. The term "unsafe inputs" is a synonym for unconfirmed inputs not originating from the wallet. Note that the resulting transaction may become invalid if one of the "unsafe" inputs disappears due to a double-spend. This is a very unlikely scenario, however, on account of the strong zero-conf properties of the BCH network. However, if that happens, the transaction must be funded with different inputs and republished.

  • Two new options have been added to make legacy address handling safer in the GUI wallet: "Allow legacy P2PKH addresses" under Options > Wallet and the -allowlegacyp2sh configuration option.

  • A new CLI argument -bytespersigcheck has been introduced (conf file: bytespersigcheck). It is identical to the existing argument -bytespersigop (which has been deprecated), and the two arguments are now aliases for one other.

  • A new option -upgrade9activationtime has been added to control the timestamp of the tentative upgrade in May 2023. This value is also used
    to set the software expiry time.

Deprecated functionality

  • The CLI argument -bytespersigop (conf file: bytespersigop) has been deprecated. Use -bytespersigcheck instead.

Modified functionality

  • The software expiry deadline has now been shifted from 15 May 2022 to 15 May 2023.

Removed functionality

autotools build system

The autotools build system is no longer supported by BCHN and has been removed. Please use the CMake / ninja build system.

Mempool acceptance 'height' field in RPC calls

The getmempoolentry RPC call, the verbose modes of the getrawmempool/getmempoolancestors/getmempooldescendants RPC calls, and the JSON mode of the mempool REST call no longer include the height field. This used to indicate the block height upon mempool acceptance. However, it was not guaranteed to be accurate after a node restart or reorg, thus limiting its usefulness. Since it has been marked as deprecated for some time, it has been removed in the interests of efficiency.

No more PPA support for Ubuntu 16.04

Ubuntu 16.04 is no longer supported via a PPA.

Users are encouraged to migrate to a more recent version of Ubuntu if they wish to use the Ubuntu PPAs.

Users who wish to compile from source are advised that the autotools build system is no longer supported from this release onwards.

New RPC methods

None.

User interface changes

Legacy address handling has been made safer in the GUI wallet. The aim is to save users from losing coins while using the error-prone legacy P2PKH and P2SH address types.

Such receiving address types are detected and the user is given relevant confirmation dialogs and error messages. For this legacy address handling, two new settings are introduced, one for P2PKH and one for P2SH addresses, to configure whether or not use of these legacy address types is allowed. These settings are:

  • "Allow legacy P2PKH addresses" under Options > Wallet
  • -allowlegacyp2sh configuration option

Regressions

Bitcoin Cash Node 24.0.0 does not introduce any known regressions as compared to 23.1.0.

Known Issues

Some issues could not be closed in time for release, but we are tracking all of them on our GitLab repository.

  • MacOS versions earlier than 10.12 are no longer supported. Additionally, Bitcoin Cash Node does not yet change appearance when macOS "dark mode" is activated.

  • Windows users are recommended not to run multiple instances of bitcoin-qt or bitcoind on the same machine if the wallet feature is enabled.
    There is risk of data corruption if instances are configured to use the same wallet folder.

  • Some users have encountered unit tests failures when running in WSL environments (e.g. WSL/Ubuntu). At this time, WSL is not considered a supported environment for the software. This may change in future. The functional failure on WSL is tracked in Issue #33. It arises when competing node program instances are not prevented from opening the same wallet folder. Running multiple program instances with the same configured walletdir could potentially lead to data corruption. The failure has not been observed on other operating systems so far.

  • doc/dependencies.md needs revision (Issue #65).

  • test_bitcoin can collide with temporary files if used by more than one user on the same system simultaneously. (Issue #43)

  • For users running from sources built with BerkeleyDB releases newer than the 5.3 which is used in this release, please take into consideration the database format compatibility issues described in Issue #34. When building from source it is recommended to use BerkeleyDB 5.3 as this voids wallet database incompatibility issues with the official release.

  • The test_bitcoin-qt test executable fails on Linux Mint 20 (see Issue #144). This does not otherwise appear to impact the functioning of the BCHN software on that platform.

  • With a certain combination of build flags that included disabling the QR code library, a build failure was observed where an erroneous linking against the QR code library (not present) was attempted (Issue #138).

  • Some functional tests are known to fail spuriously with varying probability. (see e.g. Issue #148, and a fuller listing in Issue #162).

  • Possible out-of-memory error when starting bitcoind with high excessiveblocksize value (Issue #156)

  • A problem was observed on scalenet where nodes would sometimes hang for around 10 minutes, accepting RPC connections but not responding to them (see Issue #210).

  • Startup and shutdown time of nodes on scalenet can be long (see Issue #313).

  • On some platforms, the splash screen can be maximized, but it cannot be unmaximized again (see Issue #255). This has only been observed on Mac OSX, not on Linux or Windows builds.

  • There is an issue with git-lfs that may interfere with the refreshing of source code checkouts which have not been updated for a longer time (see Issues #326, #333). A known workaround is to do a fresh clone of the repository.


Changes since Bitcoin Cash Node 23.1.0

New documents

The following are new documents in the BCHN software repository:

Removed documents

None.

Notable commits grouped by functionality

Security or consensus relevant fixes

None.

Interfaces / RPC

  • af8ee26 Bigger script integers (64-bit) implementation
  • 05681fd Implement bip69 and use in CWallet::CreateTransaction by default
  • 4044ae2 Implementation of the Native Introspection proposal
  • eff23d7 Remove mempool acceptance block height field

Performance optimizations

  • 3b44c66 Remove CTxMemPool::vTxHashes

GUI

  • 7046078 [qt][wallet] Safer legacy address handling for the GUI wallet
  • 4e48ab0 Add guards and replace removed QWidget dependency

Data directory changes

None.

Code quality

  • 60ae4cb [qa] Fix compile warning about shadowed local in wallet_tests.cpp
  • 5aba2e5 [tests] Trivial: End object lifetime properly in a uint256 test
  • ddfe6f4 Fix UB use of reinterpret_cast when working with sockets
  • cfeb409 Fix compile warnings on newer clang
  • bc30e7a Remove old check for 3-byte shifted IP addresses from pre-0.2.9 node messages
  • 234798d [qa] Update blockchain data sizes for mainnet, scalenet for v24.0.0
  • fdb053f [qa] Update chain params (assumed valid and chainwork) for v24.0.0

Documentation updates

  • b9edb72 [build][doc] Add Gitian on Docker guide & tidy related build process and docs
  • a26e540 [doc] Update BIPs and BCH upgrades (CHIPs etc) manifests for v24.0.0
  • db9c8a7 [doc] Update the release process document

Build / general

  • b9edb72 [build][doc] Add Gitian on Docker guide & tidy related build process and docs
  • 4c8d660 Fix autotools build
  • 8ef1ad6 [build] Remove the autotools build system
  • 761dfc4 Fix fuzzer to compile ok on some newer systems

Build / Linux

  • 703c1ae Fix compile issue on latest Debian unstable

Build / Windows

None.

Build / MacOSX

  • 1789e3f [build] Allow gitian-build.py to run on macOS

Tests / test framework

  • 3f1df11 Fix rpc_tests unit test to not have rare spurious failures
  • f3d73f5 [tests] Add ability to check for failed assert() to unit test framework
  • a226c7f Fix testlib_tests failing when compiling with ASAN and/or TSAN

Benchmarks

  • e4912e6 bench: Added real-world benchmarking of VerifyScript

Seeds / seeder software

  • f12548a [seeder] Fix stats display issues (garbled text)
  • 024667e [seeder] Only print ANSI control characters when stdout is a terminal

Maintainer tools

None.

Infrastructure

  • 396f9af Add bitjson DNS seeds
  • 02e7048 [qa] Update static seeds for v24.0.0

Cleanup

  • 901a862 Removed incorrect mentions and usages of "sigops"
  • 31ec64d Bump node expiry time to May 15 2023, add -upgrade9activationtime

Continuous Integration (GitLab CI)

None.

Backports

  • 70752f8 Core PR#12324 [backport] speed up Unserialize_impl for prevector
  • 1c4d5a5 Core PR#21359 [backport] [wallet] Allow spending of unconfirmed coins in wallet RPC
  • 9b129ff Core PR#15629 (partial) [backport] init: Throw error when network specific config is ignored
  • e553c9c Core PR#15629 (partial) [backport] qa: Add test for missing testnet section in conf file
  • f6aeed9 Core PR#16097 (partial) [backport] Refactor InterpretNegatedOption() function
  • 7ef10ed Core PR#16097 (partial) [backport] Add Flags enum to ArgsManager
  • e984047 Core PR#16097 (partial) [backport] Remove unused m_debug_only member from Arg struct
  • 471e445 Core PR#16097 (partial) [backport] Use ArgsManager::NETWORK_ONLY flag
  • d15caff Core PR#16097 (partial) [backport] Replace IsArgKnown() with FlagsOfKnownArg()
  • f21614c Core PR#16097 (partial) [backport] Revamp option negating policy
  • 1372334 Core PR#16097 (partial) [backport] test: Make tests arg type specific