Skip to content
Choose a tag to compare


@ftrader ftrader released this
· 2483 commits to master since this release
Choose a tag to compare

Release Notes for Bitcoin Cash Node version 0.21.2

Bitcoin Cash Node version 0.21.2 is now available from:


This release of Bitcoin Cash Node contains many corrections and
improvements that we feel are useful, but it is strictly an optional
installation for those already running previous v0.21.x versions.

Bitcoin Cash Node started as a drop-in replacement for Bitcoin ABC for
the May 2020 network upgrade, to provide an alternative with minimal
changes necessary to disable the Infrastructure Funding Proposal (IFP)
soft forks.

With the network upgrade behind us, Bitcoin Cash Node starts to pursue its
own roadmap of improvement and innovation.

This release delivers performance improvements and a new mining RPC,
the getblocktemplatelight and submitblocklight calls.

GBT Light mining RPC added

Two new light-weight RPC calls were added: getblocktemplatelight and
submitblocklight. These RPCs reduce the round-trip time for mining
software when retrieving new block templates. Transaction data is never
sent between mining software and bitcoind. Instead, job_id's are
returned and bitcoind later reconstructs the full block based on this
job_id and the solved header + coinbase submitted by the miner, leading
to more efficient mining.

A full description and specification for this facility accompanies this

Three new CLI / configuration options were added to manage GBT Light:

  • -gbtcachesize=<n> - Specify how many recent getblocktemplatelight
    jobs to keep cached in memory (default: 10). Jobs not in the memory
    cache will be loaded from disk.
  • -gbtstoredir=<dir> - Specify a directory for storing
    getblocktemplatelight data (default: <datadir>/gbt/).
  • -gbtstoretime=<secs> - Specify time in seconds to keep
    getblocktemplatelight data in the -gbtstoredir before it is
    automatically deleted (0 to disable autodeletion, default: 3600).

As usual, all of the above CLI arguments may also be specified in the
.conf file for the node (but without the preceding - character).

Account API removed

The 'account' API was deprecated in ABC v0.20.6 and has been fully removed
in BCHN v0.21.2.

The 'label' API was introduced in ABC v0.20.6 as a replacement for accounts.

See the release notes from v0.20.6 for a full description of the changes
from the 'account' API to the 'label' API.

CashAddr in bitcoin-tx

The bitcoin-tx tool now has full CashAddr support. CashAddr in JSON output
can be controlled with the new -usecashaddr option, which is turned off
by default, but relying on this default is deprecated. The default will
change to enabled in v0.22. Specify -usecashaddr=0 to retain the old

Generation and publishing of Markdown documentation

New scripts have been introduced which convert UNIX manpage documents,
program help outputs (including RPC call help) to Markdown format.
This generated documentation is committed under the doc/cli and
doc/json-rpc folders.

Additionally, the Markdown files in the doc folder are now converted
to HTML via the mkdocs tool (see mkdocs.yml description file in
base folder of the source tree). The generated HTML is deployed to .

-datacarrier deprecated

The bitcoind/bitcoin-qt option -datacarrier is deprecated and will be
removed in v0.22. Instead, use the existing option -datacarriersize to
control relay and mining of OP_RETURN transactions, e.g. specify
-datacarriersize=0 to reject them all.

Usage recommendations

The update to Bitcoin Cash Node 0.21.2 is optional.

We recommend Bitcoin Cash Node 0.21.2 as a replacement for
Bitcoin ABC 0.21.x

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.

Note regarding BIP9 and getblockchaininfo

BIP9 is inactive due to no available proposals to vote on and it may be
removed in a future release.

New RPC methods

  • listwalletdir returns a list of wallets in the wallet directory which is
    configured with -walletdir parameter.
  • getblocktemplatelight and submitblocklight are described in the
    dedicated section "GBT Light mining RPC added"

Low-level RPC changes

The -usehd option has been finally removed. It was disabled in version
ABC 0.16. From that version onwards, all new wallets created are
hierarchical deterministic wallets.
Version 0.18 made specifying -usehd invalid config.


Bitcoin Cash Node 0.21.2 does not introduce any known regressions compared
to 0.21.1.

Known Issues

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

  • doc/ needs revision (to be fixed in Issue 68).

  • doc/ needs revision (to be fixed in Issue 65).

  • arc lint will advise that some src/ files are in need of reformatting or
    contain errors - this is because code style checking is currently a work in
    progress while we adjust it to our own project requirements (see Issue 75).

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

  • We discovered a functional failure in Windows environment under a specific
    condition 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.

  • 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.

  • BCHN project is currently considering improvements to specification and
    RPC outputs related to the SigOps -> SigChecks change that took effect
    on 15 May 2020. (ref. Issues 71, 72)

Changes since Bitcoin Cash Node 0.21.1

New documents:

  • doc/cli/ : command line program documentation (manual pages converted to Markdown)
    • bitcoin-seeder.1
  • docs/json-rpc/ : RPC API documents (one help file for each call)

Removed documents:


Notable commits grouped by functionality:

Security or consensus relevant fixes

  • No changes

Interfaces / RPC

  • fdf771a New RPCs: getblocktemplatelight and submitblocklight
  • 01cec0d Accept CashAddr prefixes in bitcoin-tx input
  • 918b068 Enable CashAddr by default in all binaries, add -usecashaddr option to bitcoin-tx
  • 0669b99 Deprecate -datacarrier CLI option

Peformance optimizations

  • c7bd2aa RPC performance enhancement for getmininginfo
  • c0ae6e6 Minor performance fix for uint256 (base_blob) type
  • dd08df5 Update default assume valid and minimum chain work (chain params) after Phonon activation


  • No changes

Code quality

  • 2b9d92e Do not translate any CLI options
  • 5f36558 Make -regtest CLI option visible
  • ae6d398 Nit help text for CLI option -help-debug
  • bb46f30 Add CLI option -?? as shorthand for -help-debug and make it imply -?/-help/-h
  • 26a79e8 Nits for -acceptnonstdtxn and -debuglogfile help texts
  • 6965dcf Rename listtransactions first argument to keep consistency
  • eab6dd1 Removed globals.cpp and globals.h
  • c43727d Add CLI help text for -phononactivationtime and -replayprotectionactivationtime
  • 5027e0a Remove -help-debug since !242 removed the last debugging option
  • 8414f9d Use SetupHelpOptions (!254)
  • 75aa2ad Do not translate CLI help texts (!166)
  • 669a431 Use strprintf to substitute defaults
  • 6328557 Add boolean defaults to help text
  • a7f17c6 Use constexpr for CLI argument defaults when possible
  • c27c75c Update ancient help text for -usecashaddr
  • fb38782 Add -h, -help, -help-debug to list of hidden arguments in test/lint/ (Bitcoin-ABC#88)
  • 676307b Remove the obsoleted code pointed out by Dagur
  • 0ab61b0 Show CLI argument aliases in help text, add -hh (Bitcoin-ABC#84)
  • 50df1dd Include possible range for -maxsigcachesize/-maxscriptcachesize in CLI help
  • 441e39e GUI CLI options nits
  • 805bb69 Change some CLI options to advanced debugging, and some nits

Documentation updates

  • 564389b Add CLI documentation to mkdocs
  • 74521fc [doc] Remove Fedora gitian building docs
  • 5b8d8c2 Added instructions for obtaining MacOSX10.14.sdk.tar.xz
  • 5a04df0 Updated macdeploy/
  • 612d898 Update Windows build notes
  • b4eb448 [doc] Initial getblocktemplatelight specification
  • 33ed9f9 [doc] Add reference to BU getminingcandidate / submitminingsolution
  • c56141a [doc] Set a project rule that maintainers must leave merge request up at least 24 hrs for review
  • b49fdf3 Markdown CLI documentation generator
  • 3e64ad1 [doc] Remove ABC reference from doc/
  • 458722f Add bitcoin-seeder to Markdown CLI documentation generator
  • 47ad7ea [doc] Document how documentation is published
  • ddf5b30 Autogenerated JSON-RPC Markdown help
  • 73ed2d5 Add subheadings to CLI docs for easy mkdocs navigation
  • 234adae mkdocs: Fix code blocks rendering
  • 62380db mkdocs navigation: group versions by brand

Build / general

  • 65ef877 Univalue lib: Require C++14 in autoconf
  • fab4276 Gitian build broke for linux, this fixes it.
  • 42dd536 [build] Fix gitian-builder folder initialization; add warning if script differs
  • 3ac4d02 Disable bitcoin-qt L10n in manpage generator

Build / Linux

  • No changes

Build / MacOSX

  • c15849c Follow-up: Make sure MacOS Info.plist also declares 10.12 minimum

Tests / test framework

  • fbaa4bc Improve the listtransactions test for labels
  • 2057a68 [tests] Add explicit tests for getblocktemplate error modes and caching behaviour
  • 685a7e1 [test] Add test for RPC_CLIENT_NOT_CONNECTED error


  • No changes

Seeds / seeder software

  • 6f5f6cf Update the ABC node versions which MAY remain compatible with BCHN after May (if IFP does not activate)
  • 31dee01 Seeder nits

Maintainer tools

  • No changes


  • No changes


  • No changes

Continuous Integration (GitLab CI)

  • 80be5f2 [ci] Add build step for unix makefiles
  • d2d25b3 [ci] Run functional tests for no-wallet build
  • e47dff1 [CI] Add 'needs' to depends builds
  • 3298d17 [ci] Generate & deploy documentation


  • ec92ca6 ABC: D5590 Turn off ASM by default on target with no ASM support
  • 602a7cd ABC: D5521 Fix typo in error message
  • 4b5dab2 ABC: D5542 Disable ASM for native executables
  • f985d44 ABC: D5480 CMake: Build the ARM ASM field implementation
  • 41f98f2 ABC: D5729 Speed up OP_REVERSEBYTES test significantly
  • 1490237 ABC: D5504 Core: PR#12402, PR#12466 expat 2.2.5, miniupnpc 2.0.20180203
  • 4d1ebac ABC: D5494 Core: PR#15788 Rename test_bitcoin to test/setup_common
  • 7829f18 ABC: D5454 Improve FindZeroMQ
  • 8f2cf54 ABC: D5453 Improve FindSHLWAPI
  • ad98e4a ABC: D5451 Improve FindQREncode
  • 5c6e3d7 ABC: D5450 Improve FindMiniUPnPc
  • 52335ee ABC: D5449 Improve FindGMP
  • c077fc4 ABC: D5778 Core: PR#14272 init: Remove deprecated args from hidden args
  • 696e5a7 ABC: D5452 Make the FindRapicheck module consistent with the other modules
  • 0776206 ABC: D5527 Core: PR#14291 wallet: Add ListWalletDir utility function
  • d1bf0aa Core PR#15358 util: Add SetupHelpOptions()
  • ddfb4f2 ABC: D5373 Core: PR#15948 scripted-diff: replace chainActive -> ::ChainActive()
  • 8e40443 ABC: D5056 Core: PR#15948 refactoring: introduce unused ChainActive()
  • ed06027 ABC: D5445 Core: PR#16046 util: Add type safe GetTime
  • 26601c5 ABC: D5507 Core: PR#14411 [wallet] Restore ability to list incoming transactions by label
  • 72a5275 ABC: D5517 Core: PR#14373 Consistency fixes for RPC descriptions
  • 05ac2e0 ABC: D5338 [CMAKE] Fix the build with Xcode as a generator
  • a6c6a79 ABC: D5326 Core: PR#16654 build: update RapidCheck Makefile
  • 7fa1429 ABC: D5325 Core: PR#16271 build: dont compile rapidcheck with -Wall
  • 971ca32 ABC: D5324 Core: PR#14853 depends: latest rapidcheck, use INSTALL_ALL_EXTRAS
  • 9613af3 ABC: D5323 Core: PR#12775, PR#16622, PR#16645 Integration of property based testing into Bitcoin Cash Node
  • 4e61af7 ABC: D5531 Core: PR#16392 build: macOS toolchain update
  • e899768 ABC: D5422 Core: PR#13825 Remove CAccount and Update zapwallettxes comment
  • 0b0b639 ABC: D5421 Core: PR#13825 Remove strFromAccount and strSentAccount
  • a2c0a70 ABC: D5420 Core: PR#13825 Remove fromAccount argument from CommitTransaction()
  • 1074ec0 ABC: D5419 Core: PR#13825 Delete unused account functions
  • 98659d9 ABC: D5418 Core: PR#13825 Remove CAccountingEntry class
  • e6f000c ABC: D5416 Core: PR#13825 Remove ListAccountCreditDebit()
  • d5b5322 ABC: D5414 Core: PR#13825 Don't rewrite accounting entries when reordering wallet transactions and remove WriteAccountingEntry()
  • 588b4da ABC: D5413 Core: PR#13825 Remove AddAccountingEntry()
  • 842d0d6 ABC: D5684 Use CPubKey::PUBLIC_KEY_SIZE & al when apropriate.
  • aceee4b ABC: D5308 [libsecp256k1: PR595] Allow to use external default callbacks
  • 4cfeb97 ABC: D5446 Fix FindBerkeleyDB suffix paths
  • c6d8b31 ABC: D5339 Improve FindBerkeleyDB
  • fcdc673 ABC: D5443 check-symbols => symbol-check
  • e941638 ABC: D5387 [libsecp256k1: PR704] README: add a section for test coverage
  • 350accc ABC: D5389 [libsecp256k1: PR714] doc: document the length requirements of output parameter.
  • ae92f0b ABC: D5345 Various nits in the cmake build
  • d07fae9 ABC: D5377 [libsecp256k1: PR679] Add
  • 740f17b ABC: D5415 Core: PR#13825 Don't read acentry key-values from wallet on load.
  • 44edc0c ABC: D5412 Core: PR#13825 Remove CWallet::ListAccountCreditDebit() and GetAccountCreditDebit()
  • defd398 ABC: D5411 Core: PR#13825 Remove AccountMove()
  • a3d06f7 ABC: D5410 Core: PR#13825 Remove 'account' argument from GetLegacyBalance()
  • e636e8c ABC: D5464 Core: PR#14838 Use const in COutPoint class
  • 967f01e ABC: D5514 Core: PR#17550 build: set minimum supported macOS to 10.12
  • 66960ba ABC: D5617 Add version number to the seeder
  • 5b294a8 ABC: D5529 Update autotools for new seeder tests
  • 84d32dd ABC: D5469 Add some unit tests for write_name() for seeder
  • 75e78be ABC: D5471 Add enum for parse_name() return value
  • 573b60b ABC: D5459 Add constants to dns.h
  • 31e5986 ABC: D5466 Simplify max query name length check in parse_name()
  • acacc57 ABC: D5401 Rename seeder_tests to p2p_messaging_tests
  • 2fd101d ABC: D5091 Make parse_name() fail when passed buffer size = 0
  • 041694e ABC: D5329 Enforce maximum name length for parse_name() and add unit tests
  • 8bfa083 ABC: D5328 Label length unit tests for parse_name()
  • 1989fb5 ABC: D5402 Move code in seeder_test.cpp close to where it is used
  • 000c8f9 ABC: D5344 Remove GotVersion()
  • fde4619 ABC: D5489 Core: PR#14244 amount: Move CAmount CENT to unit test header
  • 0052ac3 ABC: D5538 Core: PR#14192 utils: Convert fs error messages from multibyte to utf-8
  • e0187fd ABC: D5536 Add verification routine to the test framework schnorr signature facility
  • 04f2cfe ABC: D5533 Nits in rwcollection.h
  • fba296c ABC: D5518 Core: PR#14208 [build] Actually remove ENABLE_WALLET
  • 6380b4c ABC: D5520 Core: PR#12490 Some left overs from PR12490
  • 9b14543 ABC: D5526 Remove unused misc.h
  • 2084301 ABC: D5523 Core: PR#14718 Remove unreferenced boost headers
  • 4d8b6f1 ABC: D4627 Core: PR#15295 qa: Add test/fuzz/
  • 8246209 ABC: D5503 Core: PR#12607 depends: Remove ccache
  • 4e76373 ABC: D5502 Core: PR#10628 expat 2.2.1
  • 39edaef ABC: D5501 Improve the toolchain files
  • 4e67706 ABC: D5488 Core: PR#14282 [wallet] Remove -usehd
  • 9d2f684 ABC: D5487 Core: PR#14215 [qa] Use correct python index slices in example test
  • f62ac93 ABC: D5485 Core: PR#14013 [doc] Add new regtest ports in man following #10825 ports reattributions
  • 4adf56d ABC: D5470 Add << operator overload for PeerMessagingState
  • 93570b9 ABC: D5481 Core: PR#15504 test: Remove useless test_bitcoin_main.cpp
  • b956282 ABC: D5458 Adds PeerMessagingState enum to seeder/bitcoin.*
  • a9f08fa ABC: D5468 Various nits in arith_uint256.h
  • 5ff926e ABC: D5463 Update dependencies in debian/control
  • 95d3c79 ABC: D5467 Bump debian package compat level to 9
  • 83f65b7 ABC: D5457 Nits to streams.h
  • e723b38 ABC: D5447 Core PR#17266 Rename DecodeDumpTime to ParseISO8601DateTime and move to time.cpp
  • 8e1180c ABC: D5448 Misuse of the Visual Studio version preprocessor macro
  • 49bf599 ABC: D5399 Move PackageOptions out of cmake/modules
  • f0f6bd8 ABC: D5442 Don't enable the secp256k1 multiset module when building bitcoin abc
  • 5ecfa80 ABC: D5441 check-security => security-check
  • 41a71b7 ABC: D5435 Core PR#13265 wallet: Exit SyncMetaData if there are no transactions to sync
  • e2d0c38 ABC: D5316 Core PR#14023 Remove accounts rpcs
  • 1843ea1 Core #13282 trivial: Mark overrides as such.
  • 2b0502c ABC: D5408 Fix Travis failures due to APT addon
  • 1c2ba18 ABC: D5407 Fix travis failure on ECMULT_GEN_PRECISION
  • 6cc1acb Core: PR#13592 Docs: Modify policy to not translate command-line help
  • 28ae2ff ABC: D5397 Various updates to cmake/ninja
  • ea6d34d ABC: D4418 Add simple unit tests for parse_name()
  • 9123db3 ABC: D5374 [libsecp256k1: PR678] Preventing compiler optimizations in benchmarks without a memory fence
  • 10ce328 ABC: D5378 [libsecp256k1: PR689] Convert bench.h to fixed-point math
  • 093aeaf ABC: D5390 [libsecp256k1: PR718] Clarify that a secp256k1_ecdh_hash_function must return 0 or 1
  • 5859c03 ABC: D5362 [libsecp256k1: PR337] variable signing precompute table
  • 13c28a9 ABC: D5388 [libsecp256k1: PR713] Docstrings
  • 358200c ABC: D5055 [Core (partial): PR#15948] rename: CChainState.chainActive -> m_chain
  • f5c4241 ABC: D5371 Make CPack email available for all generators
  • 15f32b9 ABC: D5376 Fix make dist by finishing RPM cleanup
  • 9578be2 ABC: D5375 Add comment on libsecp256k1 benchamrks
  • 73021d2 ABC: D5365 [libsecp256k1: PR647] Increase robustness against UB in secp256k1_scalar_cadd_bit
  • a86134e ABC: D5364 Remove mention of ec_privkey_export because it doesn't exist
  • a9615da ABC: D5366 Remove note about heap allocation in secp256k1_ecmult_odd_multiples_table_storage_var
  • aeeb46a ABC: D5319 Move to cmake/utils
  • b7b0b65 ABC: D5333 Fix build with make as a generator
  • 312d894 ABC: D5363 Fix the benchmark build when wallet is disabled
  • 56bb0b7 ABC: D5353 [libsecp256k1: PR583] JNI: fix use sig array
  • 13bcd57 ABC: D5340 Make the test python scripts depend on targets and not on files
  • f91260b ABC: D5347 [libsecp256k1: PR629] Avoid calling secp256k1_is_zero when secp256k1_set_b32 fails.
  • 2f5fe9f ABC: D5349 [libsecp256k1: PR634] Add a descriptive comment for secp256k1_ecmult_const.
  • 2b7c674 ABC: D5356 [libsecp256k1: PR650] secp256k1/src/tests.c: Properly handle sscanf return value
  • 201d325 ABC: D5351 [libsecp256k1: PR651] Fix typo in secp256k1_preallocated.h
  • 4822db0 ABC: D5357 [libsecp256k1: PR657] Fix a nit in the recovery tests
  • f5b2b1f ABC: D5350 [libsecp256k1: PR640] scalar_impl.h: fix includes
  • a3d6deb ABC: D5352 [libsecp256k1: PR644] Moved a dereference so the null check will be before the dereferencing
  • 569848a ABC: D5295 Core: PR#14307 Consolidate redundant implementations of ParseHashStr
  • 020cbab ABC: D5312 Make the list of tests a property of the test suite
  • 96fae32 ABC: D5303 Core: PR#17647 lcov: filter depends from coverage report
  • 25acd3c ABC: D5302 Core: PR#16207 Failing functional tests stop lcov
  • ca25e2d ABC: D6090 Fix incorrect mocktime set in [no] miner fund test
  • e32b9ad ABC: D6094 Add checkpoints for phonon activation