gitlab bitcoin-cash-node/bitcoin-cash-node v0.21.1

latest releases: v27.0.0, v26.1.0, v26.0.0...
4 years ago

Release Notes for Bitcoin Cash Node version 0.21.1

Bitcoin Cash Node version 0.21.1 is now available from:

https://bitcoincashnode.org

Overview

This is a second, minor release of Bitcoin Cash Node before the May 2020 network upgrade. While it contains many corrections and improvements that we feel are useful, it is not a required installation for the May 2020 network upgrade.

Bitcoin Cash Node is a drop-in replacement for Bitcoin ABC. It is based on Bitcoin ABC 0.21.0, with minimal changes necessary to disable the Infrastructure Funding Proposal (IFP) soft forks. For exchanges and users, this client will follow the longest chain whether it includes IFP soft forks or not. For miners, running this client ensures the getblocktemplate RPC call will return a block with version bits that vote "NO" for the IFP soft forks. Additionally, unlike Bitcoin ABC, getblocktemplate will not automatically insert IFP white-list addresses into the coinbase transaction.

This release contains one security fix and one correction which has been identified as potentially relevant to consensus.

Security fix

This release contains a patch for a denial-of-service security vulnerability in CVE-2019-18936 UniValue::read() in UniValue 1.0.3 and 1.0.4 allows a segfault via malformed JSON.

Attackers with limited JSON RPC access could exploit this vulnerability to crash the node with a malicious JSON RPC instruction. Attackers with full JSON RPC access do not need to exploit - they would be able to simply stop a node. Attackers without JSON RPC access cannot exploit this vulnerability. As a mitigation, untrusted inputs can be sanitised before sending them on to the JSON RPC server. Note that the "malformed" JSON is technically valid, just deeply nested. Upstream fix first released in Bitcoin Core 0.19.1.

Consensus-relevant fix

The backport of D4936 from Bitcoin ABC ("update 'cousins' during UpdateFlags") corrects a problem where some blocks incorrectly retained invalid markings when reconsiderblock was called.

This is a not a consensus change that affects unattended operation, but it can be relevant in certain operational and maintenance scenarios.

Usage recommendations

We recommend Bitcoin Cash Node 0.21.1 as a drop-in replacement for Bitcoin ABC 0.21.0.

The update from Bitcoin Cash Node 0.21.0 to 0.21.1 is optional. Either version will work for May 2020 network upgrade.

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.

Regressions

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

Known Issues

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

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

  • doc/dependencies.md 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)

  • A functional failure in Windows environment was observed 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 tracking some ongoing discussions related to details of the SigChecks specification and the output of getblocktemplate RPC call after the May upgrade (ref. Issues #71, #72). In the event that software changes become necessary we will advise users via our communication channels and inform of another minor release before May.


Changes since Bitcoin Cash Node 0.21.0

New documents:

Removed documents:

  • gitian-building/gitian-building-mac-os-sdk.md : obsoleted instructions

Notable commits grouped by functionality:

Security or consensus relevant fixes

  • 83252d07 [CVE-2019-18936] Pull UniValue subtree from Bitcoin Core
  • 5a761db9 [validation.cpp] update 'cousins' during UpdateFlags (Bitcoin ABC)

Interfaces / RPC

  • 0c019c51 Add help text for -parkdeepreorg and -automaticunparking
  • 9d36ab12 Make hidden reorg protection RPC commands visible
  • d0ed11fa getblocktemplate RPC help fixes

Peformance optimizations

  • 54d94d1a Don't park blocks when there is no actual reorg
  • 4e9a1738 The parked block marker, pindexBestParked, is set to null if it is about to be cleared.
  • 3be2000e UniValue & RPC Interface: Significant performance improvements
  • 472118a0 UniValue performance speedups for .write()

GUI

  • 6ce344f1 Qt: Fix #47; quirk when switching versions after selecting Satoshi (sats)
  • 9f1598bc Qt: Set AA_EnableHighDpiScaling before QApplication instance creation
  • a512311b Add 'GRAPHENE' and 'CF' GUI labels in nodes' supported services
  • bbf89bbd New splash screens (#29)
  • cd18a55f Decent testnet/regtest logo/icon colours (#27)
  • fc3ce07f Dark NSIS installer wizard image
  • d0c078b6 Reorganise main window title (#38)
  • b2bf9971 Modify Bitcoin Qt desktop file to reflect we are Bitcoin Cash Node

Code quality

  • 6786e426 Fix many PVS static analyzer warnings and/or errors
  • 38e9fde1 Fix two compiler warnings (clang 11.0.0)
  • 80e4cff9 sha256_shani.cpp + clang: suppress -Wcast-align warnings
  • a40df80f [secp256k1] Remove a warning in multiset test
  • 0bc6f69b Mute self assign warning in uint256_tests.cpp
  • f7cdc60d [lint] Fix Python script linting transgressions
  • 185b3a62 Restore the arcanist configs (revert of 767c5720)
  • 6c139aec [CMAKE] Factorize the test suite target name construction

Documentation updates

  • ff23d724 [doc] Add revised xversion spec (draft) - provided by Greg Griffith (Bitcoin Unlimited)
  • 41f22041 d50e0f22 939f7291 f67fa40d ae737a6d 335cdc0a Update contributing, build, developer and gitian docs
  • 86e229cb 7dea8089 Fix up obsolete ABC references
  • aaf8a1d1 313ef3a1 Add confirmed disclosure relationships (BCHD, Flowee, Knuth, Verde)
  • 2b2dedae 4e610891 Describe correct steps to build and run the benchmarks
  • 90be3b50 961b7a38 Update FreeBSD instructions & add info to build bitcoin-qt
  • d8129cc4 [doc] Add BCHN Gitlab development working rules & guidelines
  • b1135cdf Create a document to list and explain the Ninja targets for human consumption
  • 0e500f65 Add info about where to just download the software.
  • 98916204 [doc] Renaming from ABC in benchmarking.md
  • 49cbb017 Add link to Bitcoin Cash Node Doxygen documentation
  • 75da08c0 Update the backporting instructions
  • a2ae3aaa Fix UAHF references in dnsseed-policy.md
  • 4ec61fb7 Fix help text dependency on number of cores (#23)
  • 062f881f 6edfae28 d3d4f4b9 06586da2 Add release signing keys (freetrader, sickpig, Jt Freeman, Calin Culianu)
  • f2deacb8 Add description new GitLab label: "needs-testing"
  • f187c05d Update man pages as per release process

Build / general:

  • 6d3f9c6c fix inconsistency in benchmark binary name between ninja / autotools build
  • 4493b2a2 [SECP256K1] Fix ability to compile tests without -DVERIFY.
  • 245c7d14 Exclude gitian-building documents from Windows installer package (NSIS)

Build / Linux:

  • d559b109 Needed changes to get Ubuntu PPA services to buid deb packages

Build / MacOSX:

  • 5f22c42d Update to using MacOSX10.11.sdk.tar.xz from Github for gitian building

Tests / test framework

  • 3d5b1669 Add startfrom parameter to test_runner
  • 6930a54c [QA] Add extra column in Python Test runner to show order in which tests were run
  • 4f3fc894 Fix handling of functional test runner parameters --extended, --cutoff, and --startfrom
  • 99db7fa7 Add test with Schnorr multisig flags to cover SCRIPT_VERIFY_NULLFAIL | SCRIPT_ENABLE_SCHNORR_MULTISIG
  • 4530ec44 Fix overly specific exception which failed feature_block.py on FreeBSD 12.1
  • 43b45cb2 Fix a race condition in abc-finalize-block
  • 2653ef7b [backport] Add test to check that transactions expire from mempool

Benchmarks

  • d8cf0f97 Bench: Added a more complex test to rpc_mempool.cpp
  • 2ece4709 Add an additional test, "JsonReadWrite1MBBlockData"
  • dcd0859b Make BlockToJsonVerbose benchmark more challenging
  • 822e0ff7 bench: Benchmark blockToJSON

Seeds / seeder software

  • 419fa06f update of static IP seeds
  • 01e83567 Replace BTCfork DNS seeders which are moving to new domain names
  • 254a6a40 Add unit tests for CSeederNode::ProcessMessage()

Maintainer tools

  • c05d7074 Restore git-subtree-check.sh script
  • fea33a6f Bring univalue back into the subtree list
  • d76918ec Move github-release to appropriate contrib sub-directory

Infrastructure

  • dcf4337b Use BCHN download server as fallback for dependencies (depends/)

Cleanup

  • dd7e62f1 Remove GitHub issue template; add Gitlab issue template 'Bug_report' in its place
  • 5f1d6055 Use consistent copyright notices
  • c769b90f Remove declaration of undefined function accidentally introduced in D5135
  • 4de32d77 Remove Teamcity leftovers
  • 0e18d695 Remove SegWit references from RPC help
  • c5bbcbd5 Remove BIP9 and BIP145 references from getblocktemplate RPC help

Continuous Integration (GitLab CI)

  • 290de1ad [ci] Add clang build
  • 21e830e1 ac29dbe5 [ci] Add 1-eval benchmark execution to test stage
  • b5546be1 Add static checks stage to CI pipeline
  • 42a0f27b Add GitLab's code quality report job to test stage
  • 5f98d13a [ci] junit test reporting
  • c00421fa [ci] fix functional test runner junit output
  • a9472d81 [ci] Added jobs for remaining qa tests

Backports

  • a693072c Core: #11269: [Mempool] CTxMemPoolEntry::UpdateAncestorState: modifySigOps param type
  • e915394d Core: #12035: [qt] change µBTC to bits
  • c929cdeb Core: #13264: [qt] Satoshi unit
  • 39392f72 Core: #13424: Consistently validate txid / blockhash length and encoding in rpc calls
  • 23d63d62 Core: #15114 Qt: Replace remaining 0 with nullptr
  • 1b673937 Core: #16701 qt: Replace functions deprecated in Qt 5.13
  • 7f5057f1 Core: #16706 Qt: Replace deprecated QSignalMapper with lambda slots
  • 9149f816 Core: #16707 qt: Remove obsolete QModelIndex::child()
  • 45702480 Core: #16708 qt: Replace obsolete functions of QSslSocket
  • a4a992bd Core: #16267 bench: Benchmark blockToJSON
  • 3c69d86f Core: #16299 bench: Move generated data to a dedicated translation unit
  • fc9e4527 ABC: D5438 [Mempool] CTxMemPoolEntry::UpdateAncestorState: modifySigOps param type
  • 8af632d6 ABC: D5432 [qt] Satoshi unit
  • 597b5f79 ABC: D5385 qt: Remove obsolete QModelIndex::child()
  • 99f028d6 ABC: D5382 qt: Replace obsolete functions of QSslSocket
  • cdab28e4 ABC: D5370 Don't park blocks when there is no actual reorg
  • 0146d4c9 ABC: D5369 qt: Replace functions deprecated in Qt 5.13
  • a49ab88f ABC: D5341 Qt: Replace remaining 0 with nullptr
  • 9d8cdf95 ABC: D5311 [CMAKE] Factorize the test suite target name construction
  • 3ea4c527 ABC: D5310 Mute self assign warning in uint256_tests.cpp
  • dd0bef50 ABC: D5309 [secp256k1] Remove a warning in multiset test
  • 6381e8fb ABC: D5307 [SECP256K1] Fix ability to compile tests without -DVERIFY
  • 9e55fed9 ABC: D5304 Fix a race condition in abc-finalize-block
  • e676256b ABC: D5296 [qt] change µBTC to bits
  • d9948fa8 ABC: D5294 Consistently validate txid / blockhash length and encoding in rpc calls
  • c994733c ABC: D5290 Move github-release to appropriate contrib sub-directory
  • 34534d5e ABC: D4936 [validation.cpp] update 'cousins' during UpdateFlags
  • d22fd1d7 ABC: D4436 Add unit tests for CSeederNode::ProcessMessage()

Don't miss a new bitcoin-cash-node release

NewReleases is sending notifications on new releases.