Skip to content

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 introducted (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 avoids 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 #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 #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 #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

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

Performance optimizations

  • 3b44c66d9b10f30a954dac879e71ce0357b92b5a Remove CTxMemPool::vTxHashes

GUI

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

Data directory changes

None.

Code quality

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

Documentation updates

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

Build / general

  • b9edb72b06a1223f1761989be6ad649467f6ac5c [build][doc] Add Gitian on Docker guide & tidy related build process and docs
  • 4c8d660aa07da63c0d3992f5f10a9077f729beb8 Fix autotools build
  • 8ef1ad67503d526e97c7e04a2eb0ecf52a7630f3 [build] Remove the autotools build system
  • 761dfc4c1a0e9afc3c8e5431a9bef07985178655 Fix fuzzer to compile ok on some newer systems

Build / Linux

  • 703c1aeb50f7a1ad5ef0fdff422ab11794c3b533 Fix compile issue on latest Debian unstable

Build / Windows

None.

Build / MacOSX

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

Tests / test framework

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

Benchmarks

  • e4912e6fe5a3aee9e49f299f40dfc3ae6b57f3fd bench: Added real-world benchmarking of VerifyScript

Seeds / seeder software

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

Maintainer tools

None.

Infrastructure

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

Cleanup

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

Continuous Integration (GitLab CI)

None.

Backports

  • 70752f8e6408661220a3eea4d7a1f99f4683a600 Core PR#12324 [backport] speed up Unserialize_impl for prevector
  • 1c4d5a5a80940fe6895df4b7b3bcd642014ffd31 Core PR#21359 [backport] [wallet] Allow spending of unconfirmed coins in wallet RPC
  • 9b129ffa47609f77e07253bf877f5f9b64a8db92 Core PR#15629 (partial) [backport] init: Throw error when network specific config is ignored
  • e553c9c36db92f227322e74ea9c422d2138707b3 Core PR#15629 (partial) [backport] qa: Add test for missing testnet section in conf file
  • f6aeed9f2d454836758a81414f515cd48e6e8f65 Core PR#16097 (partial) [backport] Refactor InterpretNegatedOption() function
  • 7ef10ed78d345eaebd483513ac6d386a160ef5b6 Core PR#16097 (partial) [backport] Add Flags enum to ArgsManager
  • e984047ab31d72714287ebc17a6e98021f99b6b8 Core PR#16097 (partial) [backport] Remove unused m_debug_only member from Arg struct
  • 471e445c0ead6a68841fc067587cb0721d3e1cf9 Core PR#16097 (partial) [backport] Use ArgsManager::NETWORK_ONLY flag
  • d15caff12dc444eda6c95c2efc020389446f08cf Core PR#16097 (partial) [backport] Replace IsArgKnown() with FlagsOfKnownArg()
  • f21614c9f0b278cb7ee1a925fc24d21b383ca5bd Core PR#16097 (partial) [backport] Revamp option negating policy
  • 137233442f9b9a2c30e1eed791c8af696457efc4 Core PR#16097 (partial) [backport] test: Make tests arg type specific