Skip to content

24.1.0

Choose a tag to compare

@ftrader ftrader released this 30 May 02:41
· 872 commits to master since this release

Release Notes for Bitcoin Cash Node version 24.1.0

Bitcoin Cash Node version 24.1.0 is now available from:

https://bitcoincashnode.org

Overview

This is a minor release of Bitcoin Cash Node (BCHN), containing:

  • Upgrade of TOR network support from v2 to v3
  • Upgrade checkpoints for May 15, 2022 upgrade

This version contains many further corrections and improvements and modifies the storage format of the internal peer database to accommodate new network address formats.

Usage recommendations

Users who are running v24.0.0 are encouraged to upgrade to v24.1.0. It offers up to date TOR network support, improves synching performance and fixes minor bugs.

MacOSX users who are running on OS versions prior Mojave (10.14), such as 10.12 or 10.13, and who are running 24.0.0 release binaries, are advised to keep running 24.0.0 until they can upgrade to Mojave.

Network changes

  • The Tor onion service that is automatically created by setting the -listenonion configuration parameter will now be created as a Tor v3 service instead of Tor v2. The private key that was used for Tor v2 (if any) will be left untouched in the onion_private_key file in the data directory (see -datadir) and can be removed if not needed. Bitcoin Cash Node will no longer attempt to read it. The private key for the Tor v3 service will be saved in a file named onion_v3_private_key. To use the deprecated Tor v2 service (not recommended), then onion_private_key can be copied over onion_v3_private_key, e.g. cp -f onion_private_key onion_v3_private_key.

  • If using the -listenonion=1 option (default: 1 if unspecified), then an additional new bind address:port will be used for hidden-service-only incoming .onion connections. On mainnet, this will be 127.0.0.1:8334. This bind address is in addition to any -bind= options specified on the CLI and/or in the config file.

    • To specify the local onion port to bind to explicitly, use the new syntax, -bind=<HOST>:<PORT>=onion. See bitcoind -help for more information on the new =onion syntax which is used to specify local tor listening ports.
    • To not create an additional bind endpoint for tor, and/or to disable tor hidden service support, use -listenonion=0.

    Note: As before, tor hidden services are always advertised publicly using a "generic" port for maximal anonymity (such as 8333 on mainnet, 18333 on testnet3, and so on). The -bind=<HOST>:<PORT>=onion syntax is to simply specify the local bind address which is connected-to privately by the local tor process when a remote node connects to your .onion hidden service.

Added functionality

  • Added wallet-tool

  • Added a new logging option, -debug=httptrace which logs all HTTP data to/from the internal JSON-RPC and REST server, including HTTP content.

    • This is an advanced debugging option intended for troubleshooting the low-level JSON-RPC and/or REST protocol, primarily aimed at developers.
    • This option is not enabled by default, even if using -debug=all, and must be explicitly enabled using -debug=httptrace.
    • Unlike the regular -debug=http debug option, incoming strings and data are not sanitized in any way in the log file, and are simply logged verbatim as they come in off the network.

Deprecated functionality

The setexcessiveblock RPC method has been deprecated. Please use the excessiveblocksize configuration option together with a restart of the node if you want to adapt this parameter.

An upgrade to Qt version 5.15.3 is planned for our next release. As a result, compatibility of the release binary with some older Linux platforms will be affected:

  • Support for glibc versions older than 2.27 is now deprecated and may no longer be supported in a future release. This will impact older
    platforms like CentOS 7, Debian 9, Mint 19, and Ubuntu 14 & 16.
  • Support for platforms that lack the X protocol C-language Binding library (libxcb) is deprecated, and future releases may require this library.
    • This library seems available on most major Linux distributions but we urge you to check your node platform and notify us via a GitLab issue or via a comment on MR 1524 if you do not have this library.

If you are presently running on such older platforms, please upgrade to a newer OS version ahead of our next release.

Modified functionality

  • Netmasks that contain 1-bits after 0-bits (the 1-bits are not contiguous on the left side, e.g. 255.0.255.255) are no longer accepted. They are invalid according to RFC 4632.

  • The -whitelistrelay default has been restored to enabled. The help text indicated the default being enabled, despite the default actually being disabled. This has been broken since v22.0.0.

peers.dat file format

The node's known peers are persisted to disk in a file called peers.dat. The format of this file has been changed in a backwards-incompatible way in order to accommodate the storage of Tor v3 and other BIP155 addresses. This means that if the file is modified by this version or newer then older versions will not be able to read it. Those old versions, in the event of a downgrade, will log an error message that deserialization has failed and will continue normal operation as if the file was missing, creating a new empty one.

Removed functionality

TORv2 support is replaced by TORv3.

New RPC methods

None.

User interface changes

  • peers.dat file has changed format due to BIP155 / TORv3 support
  • -blocksonly option has been unhidden on bitcoind / bitcoin-qt command line help
  • walletlock, walletpassphrase and walletpassphrasechange RPC methods were lacking documentation, which has been added.

Regressions

Bitcoin Cash Node 24.1.0 does not introduce any known regressions as compared to 24.0.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.14 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).

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

  • 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 Mac platforms with current Qt, the splash screen can be maximized, but it cannot be unmaximized again (see Issue #255). This issue will be resolved by a Qt library upgrade in a future release.

  • Race condition in one of the p2p_invalid_messages.py tests (see Issue #409).

  • Occasional failure in bchn-txbroadcastinterval.py (see Issue #403).

  • wallet_keypool.py test failure when run as part of suite on certain many-core platforms (see Issue #380).

  • Spurious 'insufficient funds' failure during p2p_stresstest.py benchmark (see Issue #377).

  • bitcoin-tx tool does not have BIP69 support (optional or enforced) yet (see Issue #383).

  • secp256k1 now no longer works with latest openssl3.x series. There are workarounds (see Issue #364).

  • Spurious AssertionError: Mempool sync timed out in several tests (see Issue #357).


Changes since Bitcoin Cash Node 24.0.0

New documents

  • doc/bitcoin-conf.md: restored and updated bitcoin.conf documentation

Removed documents

None.

Requirement for MacOSX 10.15 SDK for OSX dependency builders

Developers who want to build the dependencies for MacOSX or do Gitian builds, should follow documented instructions to replace the 10.14 SDK with the 10.15 version. See depends/README.md.

Notable commits grouped by functionality

Security or consensus relevant fixes

None.

Interfaces / RPC

  • e7db72f [backport] net: don't accept non-left-contiguous netmasks

Data directory changes

  • backwards incompatible peers.dat file format as part of various backports

Performance optimizations

  • 434868e Abort app if -conf= explicitly specified, but it doesn't exist
  • 36e91bc Add checkpoints for May 15 2022 upgrade for main and testnet chains
  • f10a2f5 Bump protocol version to 70016 + only send sendaddrv2 if peer is >= 70016
  • 2853980 Hardcode height for May 15, 2022 consensus upgrade
  • 09aca45 Simplify and speed up string utilities
  • a58bdb5 Small performance and style nits in asmap.cpp, asmap.h, etc
  • b6ad03a Update chain params (assumed valid and minimum chain work)
  • 3d50420 Update chainTxData for main, test3, and test4 chains.
  • cb76df2 Update checkpoints for main, test, test4

GUI

None.

Code quality

  • 40144dc Add NonCopyable util base class, replace boost::noncopyable
  • 74724bc Add a follow-up note assumptions made in CAddress w.r.t. extversion
  • dffc50c Add internal string split function
  • c6aa3a4 Add new Amount::ToString implementation
  • 3e32cd8 Add safe reset functionality for signature cache
  • fdfe72a Added SharedMutex lock to sync.h, plus fixed deadlock detector
  • 493e7d6 Cleaned up backport PR19628, made more idiomatic and safer
  • 74fb105 Code quality and other suggestions for backport Core#19845
  • 3f9cb24 Eliminate boost/cstdlib dependency
  • 337cb80 Fix net_processing.cpp to no longer rely on C++ unspecified behavior
  • 09c67eb Fix bash script shebang
  • 6805f9a Fix inappropriate C-style usage of class uint256 in base58.cpp
  • 9075d07 Fix intermittent failure in cuckoocache_tests
  • 28900ea Fix minor formatting inconsistency in script.h
  • 1836416 Fix to GetRandomDuration
  • 3899d98 Fix up ConvertBits function to always have well-specified behavior
  • e6d6356 Follow-up for core backport PR 19628
  • 1e58933 Follow-up to: Restore compatibility with old CSubNet serialization
  • adee8e9 Ignore unknown messages before VERACK
  • 64cabd5 Impose sane limits on excessive block size and txn relay params
  • a61aa0a Locale independence in net.h getSubVersionEB
  • 7dc7262 Locale independence in tinyformat
  • 78a9e09 Refactor serialize.h: Simplify and remove duplicated code in (Un)Serialize_impl
  • 889b8a1 Rename GetAddresses(Network) to GetAddressesUntrusted(Network)
  • 2023337 Replace boost::split with a custom implementation in util/string.h
  • 17eabca Replace boost split algorithm with internal Split function, ditto for trim
  • 7365b00 Replace boost::replace_all with internal ReplaceAll and std::string functions
  • d4028fe Replace include header guards with #pragma once
  • 73a8cf8 Safe file list expansion in doc generation scripts
  • f9613c9 Safe file list expansion in lint scripts
  • 1996217 Safe file list expansion in translation scripts
  • 1f03347 Shell code quality in git-subtree-check.sh
  • e5ae410 Shell script code quality improvements
  • ebf2d00 Simplify safe reset functionality for the signature cache
  • 0fcaae0 Suppress spurious maybe-uninitialized warning for ScriptExecutionContext class
  • cb35373 Thread-safety fix to address cache in CConnman
  • bac667c Trivial: Fix whitespace on recently-merged MR 1355
  • c0be9a2 Update copyright year to 2022
  • 787896c Zero-initialise members of CExtPubKey
  • 691f1d8 [qa] Bump version to 24.0.1
  • a2360e6 [qa] Correct the checkpoint for first post-UAHF block
  • da74edc [qa] Correct the checkpoint for first post-UAHF block for testnet3
  • 223983f [qa] Fix checkpoints for the DAA activation block
  • de97d39 [qa] Fix silently failing SignSignature call in denialofservice_tests
  • ad342e6 [qa] Fix spurious error in gbtl-bg-cleaner test
  • 907a71b [qa] Fix testlib_tests failing when using GCC with ASAN and/or TSAN
  • c615bb8 [qa] Lint test/ folder
  • f9417f4 [qa] Move activation tests upgrade checks from Axion to upgrade8 (May 2022)
  • 5bf0020 [qa] Move the v24.0.0 Release Notes to archive, clean out current RN after release
  • da88f7a [qa] Remove obsolete miner fund activation test
  • d495b38 [qa] Remove unused imports
  • a4d9a44 [qa] Suppress spurious maybe-uninitialized warning with GCC 11.1
  • 31c1dec [qa] suppress leveldb TSAN warnings
  • 70905b8 [qa] use self.sync_* methods everywhere
  • efe9813 [qt] remove deprecated Qt::DefaultLocaleShortDate
  • fb9e6ee [serialization] Change all Ser/Unser methods to be static
  • d0f3bfa [serialization] Convert the rest of the old style serialization code
  • 34f8f0f [serialization] Improve type safety of AmountCompression
  • 2ae3bb2 [serialization] Improve type safety of DifferenceFormatter
  • 3e38cb2 [serialization] Make CustomUintFormatter and CompactSizeFormatter safer
  • b9cf9c3 [serialization] fix GCC variable shadowing warning
  • 322c1d0 avoid signed integer overflow
  • ce791d2 net: Add CSubNet::GetCIDR()
  • 30b8804 net: Add thread safety annotation for CNode::setInventoryTxToSend
  • 4962ef4 net: Return early when poll or select return zero and use MillisToTimeval
  • 3736b0e net_processing: Clarify vInv nMaxBroadcasts expression; fix reserve of vInv to be correct
  • 1d39a84 net_processing: Fix overflow and limit vInv reserve size to MAX_INV_SZ
  • e3b648f rephrase conditional to avoid false static analysis missing return warning
  • 9238df7 replace fallthrough comments with c++17 [[fallthrough]] attribute
  • 86e0d97 scripted-diff: More command to message type renames

Documentation updates

  • 80fe2ff Add release note links for v23.1.0 and v24.0.0
  • 585bf27 Change recommended draft MR title prefix from "WIP" to "Draft"
  • c95c9c6 Fix broken URLs
  • 98c8767 Fix walletpassphrase, walletpassphrasechange and walletlock RPC doc
  • f5d7b0a Markdown code quality, 1 of 5 (enable markdownlint in codeclimate config)
  • 88c55b0 Markdown code quality, 2 of 5 (whitespace related improvements)
  • 307c936 Markdown code quality, 3 of 5
  • 997af1a Markdown code quality, 4 of 5
  • 26ddfcc Markdown code quality, 5 of 5
  • 071234e [doc] Add back a link to benchmarking instructions
  • d10dd6d [doc] Include missing dependency install step
  • be3bc54 [doc] Include section on Merge Requests
  • 3bca219 [doc] Remove outdated and misleading leveldb docs
  • c73be96 [doc] Restore and update bitcoin.conf documentation
  • 2eca96c [doc] Update doc/bips.md to mention that we implemented BIP155
  • 2a6030d [doc] Update im_uname public key
  • daa431e [doc] Update relaese-notes to talk about changes to -bind=
  • df6fde4 [doc] Update release notes with whitelistrelay change
  • 2b85f6d [doc] Update the REST API ports list to cover testnet4 and scalenet
  • e2c6689 [rpc] Deprecate setexcessiveblock RPC

Build / general

  • 127c9d4 Add linting of include header guards
  • 5f63353 Add unicode linter to check, check-lint ninja targets
  • af0d90d File permissions
  • e8836d9 Improve compiler warning configuration, enable additional warnings
  • 1c8edfa Remove install target definition for bench_bitcoin
  • a936586 Resolve CMake policy CMP0071 OLD warning
  • ca12639 Set explicit cmake policy for CMP0116
  • fae3ead Test build config cleanup
  • 9e93ffe Update depends/packages URLs (some have gone stale)
  • a272a2c [build] Add missing dependency for bitcoin-wallet to functional test build target
  • a941359 depends: Fix compile error for Qt 5.9.7 when using newer GCC 11+

Build / Linux

  • 18ac18d Fix bitcoin-seeder compile error seen on IBM S/390x
  • 662114a [build] Suppress ABI change build warnings when using GCC >= 7 on ARM
  • fbd6c3e build: Fix boost depends build with glibc >= 2.34

Build / Windows

  • 79b84ab Windows: Fix compile warning related to wrong type for fprintf format string

Build / MacOSX

  • b0f2427 [OSX] Update to clang-8.0.0, MacOSX SDK 10.15 and set minimum sysver=10.14

Tests / test framework

  • e440c85 Add basic functional test for the new =onion bind option
  • bdf1fe6 Add logging category httptrace to log all RPC requests/responses
  • 07b4c80 Add serialization test for compact blocks with 10m transactions
  • c31eeb2 Add string util tests
  • 93b0af3 Add test for no-wallet condition
  • 5a2ac38 Add tests for ToString() functions
  • 6e4ee17 Added a test that the node doesn't add to banscore on unknown message
  • f6d5813 Additional locale tests
  • f9b4dd4 Don't start node twice
  • 5327b7b Fix gbtlight_tests failing on Windows in test_bitcoin.exe
  • f576370 Fix broken call to sendmany in p2p_stresstest
  • 084724c Fix check assert tests
  • 724ab45 Fix test_bitcoin to not collide with instances from different users
  • 4c6a486 Locale tests
  • 92c25e2 Run tests with eatmydata if it's available
  • 1df5173 Windows: Fix test_bitcoin.exe failure in util_tests
  • 052beaa [test] Find emulator on path if it does not exist
  • a2e0685 [test] Pass the correct chain config argument in the tool_wallet test
  • 1c35876 [test] close the socket in test_ipv6_local
  • b68991e test: Add banlist deserialization test
  • 7a22a72 test: Add extra constraints to a p2p_filter.py test
  • 410dca3 test: Check that calling walletpasshprase does not freeze the node
  • 3658d69 test: Fix race condition in p2p_addrv2_relay.py test
  • e2a48f7 tests: Add more "Split" unit tests to util_tests.cpp

Benchmarks

  • 02e12e0 Add benchmarks for CheckBlock, CheckProofOfWork and GetHash
  • 9f9dfb7 Correct median calculation in benchmarks
  • caf5fda Remove boost preprocessor cat and stringize dependencies
  • 399aec3 Remove dependency on git-lfs; generate .cpp data files as part of build
  • fd86938 Speed up benchmark list output and benchmark filtering
  • f0fd622 [bench] Add benchmark for CWallet::TopUpKeyPool
  • 0d010d6 bench: Add Split benchmark, also add benchmark::NoOptimize
  • 516fd20 bench: Make CCheckQueue_RealBlock.* benchmarks use real coin data

Seeds / seeder software

  • 5c41432 Restore seeder: bch.bitjson.com
  • afaa033 remove vSeeds entries for which lookups fail to resolve
  • 80f23dc seeder: Add support for addrv2 message + TorV3 addresses
  • 3979891 seeder: Use poll() instead of select(), if supported

Maintainer tools

  • 1122bcf Add script to poll bitcoind for MTP to elapse and broadcast a transaction
  • 1a5f6c8 Contrib script to compare benchmark results
  • 5726c66 Update .clang-format: column with to 120 & break template declarations
  • 36cefcd clang-format: increase the ColumnLimit to 132 characters

Infrastructure

None.

Cleanup

  • 8db4998 Unused preprocessor definitions

Continuous Integration (GitLab CI)

  • d494157 Fix codeclimate depends/SDKs exclusion path
  • a7802d4 Gitlab code quality configuration
  • ac7f925 Lint format strings fix
  • 9405d44 Remove redundant boost dependency linter
  • f3f89e6 Update to latest CI image, use Clang 11
  • 60f03ed [ci] Fix for recent breakage of CI due to a jinja2 update
  • 715ddd8 lint: Add shell shebang linter

Backports

  • 717ec52 [backport] Add CustomUintFormatter
  • 97b37e0 [backport] Add DifferenceFormatter
  • 621dc83 [backport] Add FORMATTER_METHODS, similar to SERIALIZE_METHODS, but for formatters
  • 3f16760 [backport] Add MakeUInt8Span, to help constructing Span<[const] uint8_t>
  • 0cbb1c0 [backport] Add SER_READ and SER_WRITE for read/write-dependent statements
  • 63345f3 [backport] Add SHA3 benchmark
  • 3edbf6a [backport] Add Span constructors for arrays and vectors
  • 960548d [backport] Add a constant for the maximum vector allocation (5 Mbyte)
  • f38f1f1 [backport] Add a generic approach for (de)serialization of objects using code in other classes
  • b34f46c [backport] Add additional effiency checks to sanity checker
  • 652e21e [backport] Add addr permission flag enabling non-cached addr sharing
  • 65dee65 [backport] Add asmap sanity checker
  • a43471e [backport] Add asmap utility which queries a mapping
  • b442fbe [backport] Add bounds checks in key_io before DecodeBase58Check
  • db20f51 [backport] Add comments to CustomUintFormatter
  • d8f8bab [backport] Add custom vector-element formatter
  • e4eabc3 [backport] Add extra logging of asmap use and bucketing
  • 4b69424 [backport] Add indexing ADDR cache by local socket addr
  • e864db3 [backport] Add missing typeinfo includes
  • 78f55d9 [backport] Add sanity check asserts to span when -DDEBUG
  • 958a6fb [backport] Add some general std::vector utility functions
  • de48f74 [backport] Add templated GetRandomDuration<>
  • 8e82bfa [backport] Add test for serialization of std::vector
  • 275b496 [backport] Add tests for util/vector.h's Cat and Vector
  • 285b670 [backport] Address nits in ADDR caching
  • 55d9c06 [backport] Avoid asmap copies in initialization
  • fce06cb [backport] Cache responses to addr requests
  • 9bc9c23 [backport] Convert CCompactSize to proper formatter
  • 50e9d53 [backport] Convert LimitedString to formatter
  • 9636c17 [backport] Convert Qt to new serialization
  • 27960c7 [backport] Convert VARINT to the formatter/Using approach
  • a308766 [backport] Convert addrdb/addrman to new serialization
  • dff81a9 [backport] Convert blockencodings.h to new serialization framework
  • 56ed73f [backport] Convert blockencodings_tests to new serialization
  • 42a74ee [backport] Convert chain to new serialization
  • d61173e [backport] Convert compression.h to new serialization framework
  • 0f96fb3 [backport] Convert everything except wallet/qt to new serialization
  • 5eea2a3 [backport] Convert merkleblock to new serialization
  • 641f1b4 [backport] Convert undo.h to new serialization framework
  • b974760 [backport] Convert wallet to new serialization
  • c086b31 [backport] Deal with decoding failures explicitly in asmap Interpret
  • e1b2ccd [backport] Drop CADDR_TIME_VERSION checks now that MIN_PEER_PROTO_VERSION is greater
  • 8fadb5b [backport] Drop defunct Windows compat fixes
  • 7047215 [backport] Extend CustomUintFormatter to support enums
  • b0a13b6 [backport] Fix "invalid message size" test
  • e579ddb [backport] Get rid of VARINT default argument
  • e371455 [backport] Ignore incorrectly-serialized banlist.dat entries
  • d73a178 [backport] Implement keccak-f[1600] and SHA3-256
  • d8db1c4 [backport] Implement poll() on systems which support it properly.
  • 15ff575 [backport] Improve asmap Interpret checks and document failures
  • 4c061d8 [backport] Increase maxconnections limit when using poll.
  • ed25204 [backport] Integrate ASN bucketing in Addrman and add tests
  • 74ef6e8 [backport] Introduce Instruction enum in asmap
  • ea3de55 [backport] Introduce and use constant SELECT_TIMEOUT_MILLISECONDS.
  • 0c47fc7 [backport] Introduce new serialization macros without casts
  • 166282c [backport] Justify the choice of ADDR cache lifetime
  • ae36bfb [backport] Make CHash256 and CHash160 consume Spans
  • bc4e5a0 [backport] Make CHash256/CHash160 output to Span
  • 6554122 [backport] Make Hash[160] consume range-like objects
  • f53d373 [backport] Make MurmurHash3 consume Spans
  • 2d7d885 [backport] Make VectorFormatter support stateful formatters
  • bdaa644 [backport] Make asmap Interpret tolerant of malicious map data
  • b60fcbe [backport] Make asmap Interpreter errors fatal
  • 5451ea3 [backport] Make pointer-based Span construction safer
  • 7697746 [backport] Make std::vector and prevector reuse the VectorFormatter logic
  • 2bc5fd3 [backport] Make uint256 Span-convertible by adding ::data()
  • c2b87da [backport] Mark asmap const in statistics code
  • e8ff6b5 [backport] Merge BigEndian functionality into CustomUintFormatter
  • 1095205 [backport] Move GenerateSelectSet logic to private method.
  • 1f7977d [backport] Move SocketEvents logic to private method.
  • 18f807e [backport] Move filtering banned addrs inside GetAddresses()
  • 5d395f4 [backport] Move size limits to module-global
  • 84696de [backport] Pass a maximum output length to DecodeBase58 and DecodeBase58Check
  • 66cc37b [backport] Refactor resource exhaustion test
  • 2eaba3f [backport] Refactor the functional test
  • 0182ba6 [backport] Remove old serialization primitives
  • 9ed38ba [backport] Remove two unneeded tests
  • e867af3 [backport] Remove useless 2500 limit on AddrMan queries
  • ccc1140 [backport] Replace hidden service with onion service
  • 4d96bc5 [backport] Restore compatibility with old CSubNet serialization
  • b0f11d4 [backport] Return mapped AS in RPC call getpeerinfo
  • 22065c0 [backport] Send and require SENDADDRV2 before VERACK
  • 26633ad [backport] Simplify usage of Span in several places
  • 424299a [backport] Support bypassing range check in ReadCompactSize
  • b51ee68 [backport] Test addr response caching
  • 6d1f199 [backport] Test buffered valid message
  • fe97ba2 [backport] Unroll Keccak-f implementation
  • d15b41f [backport] Use ASNs for mapped IPv4 addresses correctly
  • 8c8c1b7 [backport] Use generate* from TestFramework
  • eb14755 [backport] [Fix] The default whitelistrelay should be true
  • 7eaa206 [backport] [addrman] Specify max addresses and pct when calling GetAddresses()
  • adf9fca [backport] [net] Add addpeeraddress RPC method
  • 29df90e [backport] [protocol] Remove unused CADDR_TIME_VERSION
  • 26ea57e [backport] [protocol] Remove unused GETHEADERS_VERSION
  • fd98e6d [backport] [qa] Add settings merge test to prevent regresssions
  • cd3250e [backport] [qt] Fix deprecated QCharRef usage
  • 2632ae7 [backport] [test] Remove final references to mininode
  • a4238b3 [backport] [test] Test that getnodeaddresses() can return all known addresses
  • 213c0e0 [backport] [tests] Don't import asyncio to test magic bytes
  • 6480eef [backport] [tools] Add wallet inspection and modification tool
  • 0d8111f [backport] [tools] add PoissonNextSend method that returns mockable time
  • dd6fc3a [backport] [tools] update nNextInvSend to use mockable time
  • cf93df3 [backport] build: Remove WINVER pre define in leveldb CMakeLists.txt
  • c2c9a89 [backport] config: enable passing -asmap an absolute file path
  • 3c34667 [backport] config: separate the asmap finding and parsing checks and update the tests
  • ab5748a [backport] config: use default value in -asmap config
  • fa8f4ce [backport] doc: Document Span pitfalls
  • a0279d2 [backport] doc: Mention Span in developer-notes.md
  • ad9fd00 [backport] doc: Mention blocksonly in reduce-traffic.md, unhide option
  • df1e140 [backport] doc: Update onion service target port numbers in tor.md
  • f934f1d [backport] docs: Improve netaddress comments
  • 2913261 [backport] docs: Improve netbase comments
  • a87675b [backport] gui: display Mapped AS in peers info window
  • 114709d [backport] init: move asmap code earlier in init process
  • d74da61 [backport] logging: asmap logging and #include fixups
  • ad2e96e [backport] macOS deploy: use the new plistlib API
  • 0594ca4 [backport] net, refactor: Move AddLocal call one level up
  • 925a51f [backport] net, refactor: Refactor CBaseChainParams::RPCPort function
  • f277c7c [backport] net: Add IPv4ToString (we already have IPv6ToString)
  • 89fc531 [backport] test: Add test for GetRandMillis and GetRandMicros
  • 286e2f8 [backport] net: Add alternative port for onion service
  • 5c315e1 [backport] net: Avoid calling getnameinfo when formatting IPv4 addresses in CNetAddr::ToStringIP
  • 05cd513 [backport] net: Avoid using C-style NUL-terminated strings as arguments in the netbase interface
  • 4a40c67 [backport] net: CAddress & CAddrMan: (un)serialize as ADDRv2
  • df94bc5 [backport] net: CNetAddr: add support to (un)serialize as ADDRv2
  • 805813d [backport] net: Extend -bind config option with optional network type
  • c9fc939 [backport] net: Log to net category for exceptions in ProcessMessages
  • 803de34 [backport] net: Make addr relay mockable
  • e53499e [backport] net: Make poll in InterruptibleRecv only filter for POLLIN events.
  • fc41d41 [backport] net: Pass connman const when relaying address
  • 857806c [backport] net: Pass onion service target to Tor controller
  • 2e813d1 [backport] net: Remove un-actionable TODO
  • 5a78a99 [backport] net: Rename ::fRelayTxes to ::g_relay_txes
  • 8c2244d [backport] net: Use C++11 member initialization in protocol
  • c79dde9 [backport] net: Use network byte order for in_addr.s_addr
  • 52109b7 [backport] net: advertise support for ADDRv2 via new message
  • 084265a [backport] net: change CNetAddr::ip to have flexible size
  • 500ec7a [backport] net: document enum Network
  • e7db72f [backport] net: don't accept non-left-contiguous netmasks
  • 98fce0a [backport] net: extract conditional to bool CNetAddr::IsHeNet and remove redundant public declaration
  • efe2171 [backport] net: improve encapsulation of CNetAddr
  • 26f2466 [backport] net: recognize TORv3/I2P/CJDNS networks
  • 38edd5c [backport] net: save the network type explicitly in CNetAddr
  • 560ac1c [backport] refactor: Avoid sign-compare compiler warning in util/asmap
  • 8073599 [backport] refactor: Make HexStr take a span
  • d5352dc [backport] refactor: Rename TorController::target to m_tor_control_center
  • 9ea57d2 [backport] refactor: s/command/msg_type/ in CNetMsgMaker and CSerializedNetMsg
  • 2eec70d [backport] refactor: test: improve wait_for{header,merkleblock} interface
  • 6bab76d [backport] rpc: Use Join helper in rpc/util
  • 29aded8 [backport] rpc: mention getpeerinfo mapped_as only available when asmap config flag is set
  • b26b1d0 [backport] scripted-diff: Rename mininode to p2p
  • 464106a [backport] scripted-diff: Rename mininode_lock to p2p_lock
  • 5677b4d [backport] scripted-diff: Rename sync_blocks to send_blocks to avoid name collisions and confusion
  • c15b2ed [backport] scripted-diff: Replace strCommand with msg_type
  • 967577b [backport] scripted-diff: rename base_blob::data to m_data
  • d1301b4 [backport] scripted-diff: test: replace command with msgtype
  • e0083a3 [backport] scripted-diff: use self.sync_* methods
  • 2769956 [backport] test: Adapt test framework for chains other than "regtest"
  • c3ea882 [backport] test: Add BitcoinTestFramework::sync_* methods
  • b73b19a [backport] test: Add basic addr relay test
  • 2aa9e2a [backport] test: Add basic test for BIP 37
  • 811d14f [backport] test: Add generate* calls to test framework
  • d24511d [backport] test: Add rpc_bind test to default-run tests
  • 1652868 [backport] test: Add test for p2p_blocksonly
  • a8615a3 [backport] test: Add various low-level p2p tests
  • 40a7621 [backport] test: Avoid hardcoding the chain name in combine_logs
  • 9368cb7 [backport] test: Check that invalid peer traffic is accounted for
  • ee649da [backport] test: Format predicate source as multiline on error
  • d6978ff [backport] test: Pass at most one node group to sync_all
  • cda8cd8 [backport] test: Pass down correct chain name in tests
  • e7b1a66 [backport] test: Remove confusing cast to same type (int to int)
  • d0d1ad7 [backport] test: Remove redundant sync_with_ping after add_p2p_connection
  • 0f3df72 [backport] test: Test that low difficulty chain fork is rejected
  • d81d634 [backport] test: Wait for both veracks in add_p2p_connection
  • 7fead8e [backport] test: add BIP37 'filterclear' test to p2p_filter.py
  • 4d76dd5 [backport] test: add BIP37 remote crash bug [CVE-2013-5700] test to p2p_filter.py
  • 0e2ccea [backport] test: add feature_asmap functional tests
  • fba2375 [backport] test: add functional test for an empty, unparsable asmap
  • 4a2155b [backport] test: add inventory type constant MSG_CMPCT_BLOCK
  • 685deb8 [backport] test: add p2p_invalid_messages logging
  • 187b323 [backport] test: add two edge case tests for CSubNet
  • 2161040 [backport] test: check that peer is connected when calling sync_*
  • ff8e7bd [backport] test: complete impl. of msg_merkleblock and wait_for_merkleblock
  • ab2b8b6 [backport] test: explicit imports from test_framework.messages in p2p_invalid_messages.py
  • dafdc7e [backport] test: hoist p2p values to test framework constants
  • 136d039 [backport] test: improve msg sends and p2p disconnections in p2p_invalid_messages
  • 7c011e2 [backport] test: move HasReason so it can be reused
  • aba3b9f [backport] test: move sync_blocks and sync_mempool functions to test_framework.py
  • fccf3b3 [backport] test: refactor test_large_inv() into 3 tests with common method
  • fc209e9 [backport] test: replace (send_message + sync_with_ping) with send_and_ping
  • e7b8c69 [backport] test: replace inv type magic numbers by constants
  • 493b0ab [backport] tests: Add tests for base58-decoding of std::string:s containing non-base58 characters
  • 95ac5fd [backport] tests: Add tests to make sure lookup methods fail on std::string parameters with embedded NUL characters
  • 96d144e [backport] tests: Avoid using C-style NUL-terminated strings as arguments
  • cc420b9 [backport] tests: Test for expected return values when calling functions returning a success code
  • dff60d4 [backport] tor: make a TORv3 hidden service instead of TORv2
  • 9ecef01 [backport] torcontrol: Use the default/standard network port for Tor hidden services, even if the internal port is set differently
  • 059b6ce [backport] util: Add Join helper to join a list of strings
  • 6d5e87d [backport] util: Don't allow base58-decoding of std::string:s containing non-base58 characters
  • 67e2556 [backport] util: Move TrimString(...). Introduce default pattern (trims whitespace). Add [[nodiscard]].
  • 0a67fd5 [backport] util: make EncodeBase32 consume Spans
  • 024dc7d [backport] util: make EncodeBase64 consume Spans
  • fb84f5e [backport] util: move HasPrefix() so it can be reused
  • b0b0d4b [backport] util: refactor upper/lowercase functions
  • 8dfee2a [backport] windows: Call SetProcessDEPPolicy directly
  • 6ecb3a3 [backport] windows: Set _WIN32_WINNT to 0x0601 (Windows 7)
  • 1f07788 backport: rpc: Fix rpcRunLater race in walletpassphrase
  • 3482c57 backport: rpc: Relock wallet only if most recent callback