Release Notes for Bitcoin Cash Node version 23.0.0

0 21
Avatar for hassanj
2 years ago

Overview

This is a major release of Bitcoin Cash Node (BCHN) that implements the May 15, 2021 Network Upgrade. This upgrade will remove the unconfirmed chain limit and enable transactions with multiple OP_RETURN outputs.

This version contains many corrections and improvements, such as:

Introducing the Double Spend Proof (beta) feature compatible with other clients

Removing the limits on number of unconfirmed ancestors and descendants, and the limits on the byte size of these chains

Raising the default soft limit for block generation to 8MB

Adding support for multiple OP_RETURN standardness (within existing data carrier size)

Removal of CPFP functionality

Changes in mempool eviction order

New ZMQ functionality (related to dsproof)

Minor RPC additions and changes (incl. dsproof related)

Minor changes in error codes

Improving the graphical user interface

Extension of software expiry timeframe (to 15 May 2022)

Switch from C++14 to C++17

Users who are running any of our previous releases (0.22.x) are urged to upgrade to v23.0.0 ahead of May 2021.

Usage recommendations

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

About the CPFP & unconfirmed chain limit removal

The CPFP (child-pays-for-parent) and the unconfirmed transaction chain limit will both be deactivated on May 15, 2021 when MTP of the chain tip reaches 12:00 UTC. After that time, it will be possible to "chain" unconfirmed transactions beyond the current limit of 50, in a limitless way, without any negative performance consequence for the node.

This has been accomplished by removing the algorithmically complex and slow code we inherited from Bitcoin Core which tries to maintain what is known as "Child Pays for Parent" (CPFP) -- a way in which a child transaction can bump up the priority of its parent transaction via paying a larger fee. Maintaining this feature, which is not even being used on BCH, was the reason for the algorithmic complexity in the mempool code and why we had a limit of 50 for unconfirmed tx chains.

Additionally, we removed a lot of the slow "quadratic" (complex) per-tx stats that were being maintained (also inherited from Core, and also used in fee calculations). Removing those stats, which only were added so that Core could limit the blocksize and also get a hyper-fee-market, allowed us to unleash the true scalability of BCH. The mempool code was slow -- and it was only slow because of Bitcoin Core's philosophy about what Bitcoin should be.

One might wonder if allowing limitless unconfirmed transaction chains opens up avenues of attack or flood/DoS. It does not do this. Since now our mempool and mining algorithm is linear and not quadratic, there is no real difference between a transaction that has an unconfirmed parent and one that does not. They both now cost the same amount of CPU time to process (and in some cases the unconfirmed parent tx is actually faster to process due to not needing to hit the UTXO db).

Should some user perform a (costly) attack and flood the network with unconfirmed tx chains, the only consequence will be that he will drain his own resources in fees. Under mempool pressure, normal fee bump logic occurs. Transactions get evicted in a "lowest fee first" order and then the mempool's minimum fee for acceptance is bumped up by some small increment. This logic has always been in place and is the way we prevent floods.

In summary, removing the unconfirmed tx chain limit does not impact performance and/or availability whether under normal usage or under congestion.

Network changes

The dsproof-beta network message can be emitted and relayed when Double Spend Proofs are enabled (which they are by default).

For miners/pools running without a blockmaxsize configuration, the default soft limit of generated blocks will increase from 2MB to 8MB in this update. The default hard limit of 32MB remains unchanged in this release.

Added functionality

Double Spend Proofs (DSProof)

This release adds Double Spend Proofs that are compatible with the published dsproof-beta message specification and existing implementations in Bitcoin Unlimited and Flowee The Hub.

Double spend proofs are enabled by default, but can be turned off with the doublespendproof=0 configuration setting.

This functionality is still in beta. In future BCHN releases we plan to gradually add more application interfaces to query double spend proof information about transactions and to provide wallet user with double spend notifications.

Please refer to <doc/dsproof-implementation-notes.md> for more information details on the DSProof implementation in BCHN, and the sections on New RPC methods and New ZeroMQ notifications below for a listing of the new API calls.

maxgbttime and maxinitialgbttime configuration options

These two new command-line options may be of interest to miners (pools). They enable setting maximum time limits for getblocktemplate calls, instead of relying on blockmaxsize limits to limit the time taken to construct a template.

The -maxinitialgbttime setting determines the maximum number of milliseconds that can be spent adding transactions to block templates for the first template after an UpdateTip, whereas the -maxgbttime setting does the same thing but for all block templates

(not just the first).

This should allow pools to create larger block sizes on average without taking on significantly greater costs and risks.

The default settings for -max*gbttime are both 0 in this release, so it has no effect on node behavior when the default options are used.

-rejectsubversion configuration option

This can be used to reject peers which have certain fixed strings in their user agents. Useful for blocking non-compatible SV and ABC

peers. The option can be specified multiple times to filter several matches.

Example:

bitcoind -rejectsubversion="Bitcoin SV" -rejectsubversion="Bitcoin ABC"

Care should be taken to filter out only peers which are definitely not useful to your Bitcoin Cash node.

Deprecated functionality

In the getmempoolentry RPC call, the verbose modes of the getrawmempool/getmempoolancestors/getmempooldescendants RPC calls, and the JSON mode of the mempool REST call, the height field is deprecated and will be removed in a subsequent release. This field indicates the block height upon mempool acceptance.

The bip125-replaceable field in the result of gettransaction is deprecated and will be removed in a subsequent release.

The arc lint linting is considered deprecated and developers should use the ninja check-lint target instead.

Modified functionality

Mempool expiry works slightly differently now. Previously, the expiry of an old mempool tx would be checked thoroughly every time a new tx was accepted to the mempool, but this consumed a bit of extra memory to accomplish precisely and efficiently. Instead, we save on memory by doing a fast (imprecise) check each time a new tx is added to the mempool. This check may miss some txs that should be expired. In order to catch those txs, we now also run a perfect (slower) expiry check of the mempool periodically. A new CLI arg, -mempoolexpirytaskperiod= was added to control the frequency of this thorough check (in hours). The new argument's default value is "24" (once per day).

Removed functionality

Manpages are no longer available in the autotools build system. You must switch to the CMake build system to continue using manpages. Note the autotools build system has been deprecated since v22.0.0.

New RPC methods

validateblocktemplate

The 'validateblocktemplate' RPC call has been added. This call checks if a block template would be accepted if the hash solution

were solved. The semantics of this call are the same as on BCHUnlimited from where a substantial portion of this new functionality has been ported. It is intended to be used by services that test compatibility of block generation with BCHN's consensus rules.

getdsproof and getdsprooflist

getdsproof retries more information about a specific double spend proof.

getdsprooflist lists the double spend proofs that are known about transactions in the node's mempool.

Please refer to the documentation pages for getdsproof and getdsprooflist for details about additional arguments and the returned data.

New ZeroMQ (ZMQ) notifications

BCHN can now publish notification of both hashes and full raw double spend proofs generated or accepted by the node.

The notifications can be enabled via the -zmqpubhashds=address and -zmqpubrawds=address configuration options where address must be a valid ZeroMQ endpoint. Please refer to the ZMQ API documentation for further details.

Low-level RPC changes

The getblockstats RPC is faster for fee calculation by using BlockUndo data. Also, -txindex is no longer required and getblockstats works for all non-pruned blocks.

In the getmempoolentry RPC call, the verbose modes of the getrawmempool/getmempoolancestors/getmempooldescendants RPC calls, and the JSON mode of the mempool REST call, the fields fee and modifiedfee are removed. These fields were deprecated since v0.20.4. Please use the fees subobject instead.

The (non-default) option in the getnetworkhashps RPC call to calculate average hashrate using "blocks since last difficulty change" has been removed. The option relied on an incorrect assumption of when the last difficulty change happened. On Bitcoin Cash, difficulty changes every block, rendering the option meaningless. The removal of this option was announced in the release notes of

v22.2.0.

User interface changes

The transaction viewer (configurable via the Settings -> Display dialog) configuration now accept only valid HTTP or HTTPS URLs.

Existing URLs that do not conform to these schemes are not displayed in the context menu.

Qt GUI settings are no longer automatically copied from Bitcoin ABC on first use of Bitcoin Cash Node.

Regressions

Bitcoin Cash Node 23.0.0 does not introduce any known regressions compared to 22.2.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.

An 'autotools' build (the old build method) fails on OSX when using Clang. (Issue #129)

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

The 'autotools' build is known to require some workarounds in order to use the 'fuzzing' build feature (Issue #127).

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)

There are obstacles building the current version on Ubuntu 16.04 (see #187). These are worked around by our packaging system, but users trying to build the software from scratch are advised to either upgrade to more recent Ubuntu, or retrofit the necessary toolchains and perform the same build steps for Xenial as registered in our packaging repository, or build in a VM using the gitian build instructions, or run our reproducible binary release builds. There is ongoing work on the build system to address underlying issues, but the related code changes were not ready in time for the v23.0.0 release.

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

In the getmempoolentry RPC call, the verbose modes of the getrawmempool/getmempoolancestors/getmempooldescendants RPC calls, and the JSON mode of the mempool REST call, the height field shows an incorrect block height after a node restart. Note the field is deprecated and will be removed in a subsequent release.

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.

Changes since Bitcoin Cash Node 22.2.0

New documents

The following are new documents in the BCHN software repository:

doc/dsproof-implementation-notes.md: Technical notes about the implementation of the Double Spend Proofs in the BCHN software

doc/linting.md: Information for developers about the linting of BCHN software and some package dependencies needed for this

doc/release-notes/release-notes-22.2.0.md: The previous Release Notes.

Removed documents

All Markdown (.md) documents previously in the doc/json-rpc/ folder have been removed.

These are now generated on the fly during the build and deployed to the documentation website at https://docs.bitcoincashnode.org. It is planned in future to provide a downloadable standalone documentation set (in HTML and Markdown).

Notable commits grouped by functionality

Security or consensus relevant fixes

352a94e update checkpoints for main, test3, and test4 nets

Interfaces / RPC

0f7c703 Double Spend Proof (dsproof-beta) core code

eacb361 [Mining] Add -maxgbttime and -maxinitialgbttime command-line options

9355e96 [rpc] Port validateblocktemplate RPC call

1033b0f Fix argument parsing bug in transaction construction RPC

94bff23 Fix for UB in getblocktemplate

362c6db rpc: Add missing convert param

c8f7ca5 DSProof: Add ZMQ notifications

bb6a680 DSProof: Add RPC methods

906aadc Wallet: Remove random component of locktime

b14e26b Update bitcoin_en.ts

e3ae9f8 Fast command-line help for bitcoin-qt without loading Qt

f7b30b5 Tachyon: Add a tachyonLatched atomic bool to CTxMemPool

31bf662 Add debug CLI/conf option -rejectsubversion=

a199ff4 mempool & dsproof: Make orphans stickier, make tx removal "orphanize" dsproofs first before removal later

58ee973 Tachyon: Allow multiple OP_RETURN outputs in a transaction

f58576a Add tentative activation time for the 8th BCH Upgrade (May2022)

2d4963e Push back the "software outdated" warning to May 15, 2022

f32f72d Deprecate options related to unconfirmed transaction chain limits

d7b8b0e Deprecate height field in getmempoolentry RPC and friends

b6035f5 Remove fee and modifiedfee fields from getmempoolentry RPC and friends

3b44a7f Remove "blocks since last difficulty change" option from getnetworkhashps RPC

d04df08 Increase default mined blocksize to 8MB

dec29b4 update ChainTxData for main, test3, and test4 networks

1da684e Deprecate the bip125-replaceable field in gettransaction

Performance optimizations

7f67871 Limit libevent HTTP workaround to 2.1.5 < version < 2.1.9

77576fd UniValue: Eliminate bound checks in JSON parser by making use of terminating null

8d5e1f3 mempool: Add new index for sorting txs by fee

d958277 Optimize CheckRegularTransaction for larger vin sizes

d8ea142 mempool: Evict transactions by modified feerate

92e5c50 miner: Remove use of CPFP in CreateNewBlock

2eb479f mempool: Removed the ancestor_score index

086009e mempool: Add topological index, enforce consistency, updated reorg logic

b6522eb mempool & mining: Use the topological ordering to break ties

268e039 mempool: Remove ancestor/descendant related stats from RPC

0ce476c mempool: Remove all quadratic stats; add activation logic for tachyon

24e2ac4 mempool: entry_time index removal

d408e3b Update default assume valid and minimum chain work params prior to Tachyon activation

93ad75a mempool: Slight performance nit when erasing from setEntries

GUI

d87b20b GUI nit: Display last block hash in Node Window in monospace

ca0a4bb GUI nit: Do not translate SI time units

51c9413 GUI: Display mempool total tx size alongside memory usage in Node window

8d31914 GUI: Fix icon for About menu entry

d8e8342 GUI: Fix network traffic unit

85584b6 GUI: Further Window menu improvements

26c8a2d GUI: Improve UX of various subdivision units

9471627 GUI: Localise decimal separator in other places

2d287b0 GUI: Localise the decimal separator in amounts

2f034a6 GUI: Move debug log file button to General

7047ed6 GUI: Remove C-style pre-processor defines and other nits

8c8d029 GUI: Use consistentent labels in Node Window Information tab

5435bb4 New Crowdin updates

b8babce New translations: Chinese Simplified

bfd7a3f New translations: Chinese Traditional

548544c New translations: Dutch

da61d5d New translations: English, United Kingdom

e3c3f64 New translations: German

15fef4f New translations: Italian

a2b3984 New translations: Polish

fca389a New translations: Swahili

057b057 Normalise address input on blur

785e534 Remove separate "Node window" option from systray menu if wallet is disabled

026dace Remove version info from Node window

e0b4595 Update language registrations in bitcoin-qt

cd22065 [qa] Update the copyright year in the GUI to 2021

aa0d5e3 qt: Fix deprecated warning on newer Qt5 & always localize date format

d836e89 qt: Preventing a crash using "window" menu during application start-up

da167fe qt: Use proper "Title Caps" for the Node Window & other windows

f1cf72a ui: Make "Send" and "Receive" actions in systray have proper ellipsis

Code quality

4e99f6f Upgrade UniValue code in zmq/zmqrpc.cpp (#51)

0fea832 Upgrade UniValue code in core_write.cpp (#51, #89)

2ea8a6d Upgrade UniValue code in rest.cpp (#51)

b7fb465 UniValue: Replace VBOOL with VFALSE and VTRUE (#51 item 2)

3934d49 UniValue: Use operator= for setters

8571176 UniValue: use C++17 std::string_view and [[nodiscard]] (#51)

ef76250 UniValue: Refactor getJsonToken, fix bad setNumStr impl, and more

aa144ae UniValue: Add a static_assert to the setInt64 private function

97cb84d Remove deprecated UniValue methods

febc8c0 "The Bitcoin developers" with lowercase "d"

9809a2f Add missing word to error message

02ac581 Block index: Add an additional sanity check when loading the block index

7df431d C++17: Replace NODISCARD with [[nodiscard]]

8dc1c7d C++17: Replace boost::optional with std::optional

5d74078 Change text "Bitcoin address" into "Bitcoin Cash address"

6d40c0f Code improvements (in mempool code)

0f8e8da Code quality: Fix encapsulation of CTxMemPoolEntry::dspId

de79912 Code quality: Miscellaneous nits and fixups

3190772 DSProof: Minor fixup to questionable use of incrementOrphans()

a994e73 DSProof: refactor and fixups; preparation for adding ZMQ

18453fc Distinguish between singular and plural when verifying wallets

bb21981 Explicit QString conversion of QLocale groupSeparator

f8293ee Fix #246

011374d Fix GCC 8.3.x warning for uint256_tests.cpp

e469da6 Fix compiler warning for cuckoocache_tests.cpp

7e13048 Fix for esoteric clang-7.0.1 crash

1c1a76c Fix self-contradiction in mempool eviction order

0599776 Fix variable shadowing compiler warnings introduced by !1079

d7a0ddd Minor code improvements

1d4694a Nit: Fix clang-11 warning: "uninitialized variable as const referenece"

6cf6c36 Prefer clamping nBlocksTotal to >1 rather than asserting

f0f7391 Preserve negative fee deltas on reorg (!1128 regression)

87388d0 Pruning nodes: Take cs_main for getblock and getblockstats

e474616 Readability improvements

2d255e7 Readability: use proper algorithms.

7628469 Refactor DEFAULT_MAX_GENERATED_BLOCK_SIZE into chain-specific defaults

54e3cf1 Refactor the SipHash-based salted hashers to all use common code

cb03d34 Refactor: Make SeedSpec6 inherit from CService (and ultimately CNetAddr)

d081367 Remove C macro ARRAYLEN in favor of C++17's std::size

1294303 Remove comment about replace-by-fee

b6bbbda Rename OP_INVALIDOPCODE to drop the "OP" and remove non-opcodes

c12484e Replace magic numbers with constants

b2099b6 [The unit tests for the DspIdPtr class were separated into another file]

79fff11 [qa] Add C++ linter detection of C++17 features we want to avoid

c9f8c6e [qa] Fix for function hash256 appearing twice in test framework

a9cdff9 [qa] Suppress compiler warning about unused return value

30f1f1f bitcoin-qt: Remove ifdef i386 stuff in the version string builder

a982772 lint: Add circular dependency

76d33be lint: Add new circular dependencies

7e814a3 lint: Fix lint-python errors

ba4461b lint: Fix lint-python-mutable-default-parameters errors

56c4de3 lint: Fix lint-python-utf8-encoding errors

06e61d4 mempool: ModifiedFeeRate getter for mempool entry

707b119 mempool: Save & restore mempool entry acceptance height on reorg

e352240 miner: Add fPrintPriority member variable

fa8a25b miner: Remove mentions of 'package' in names

443e35e qa: Use .format instead of %

33c57c8 qt: Fix usage of QDateTime::fromSecsSinceEpoch

dbed589 refactor: Allow alternative mempool batch updates

4ca1f91 uint256: Modernize code to use noexcept and constexpr where possible

Documentation updates

9451c5b Doc bug: fix outdated MacOS SDK download info

3fbdb52 Doc nit: remove table of contents

ccd620b Document May 15th 2021 network upgrade

a34314d Document implementation of BIP158

91b120b Document implementation of BIP340

16a3e8c Documentation: Clarify what version 0.14.1 was

63cda98 Link DSProof spec on upgradespecs.bitcoincashnode.org

0b07160 New translation process based on Crowdin

a1edf52 Remove table of contents

ab3c74a Show licence in documentation

2af2103 Update copyright year in COPYING to 2021

16102f7 [DOC] Clear up text, and remove link to bitcoin.it

a508596 [DOC] Delete reference to previously deleted directory

f3d0fc9 [DOC] Line length in /doc/*.md

6f969ad [DOC] Markdown lists and headers

47f81c6 [DOC] Markdown lists, lists and more lists.

10ce294 [DOC] Reduce markdown lint warnings

8d3b069 [DOC] Remove bare URL markdown warnings

66b958d [DOC] Remove more line length warnings (MD013)

4e87a10 [DOC] fix markdown list warnings MD007 and MD029

41d2814 [doc] Add a useful link about writing good git commit messages

30aa621 [doc] Add detail to Mac OSX depends build description

4f7e87a [doc] Add some explanation for MR 746 which was missing in relnotes of 22.2.0

58851d0 [doc] Bump minimum required Python version to 3.6

8aff361 [doc] Double Spend Proof (dsproof-beta) implementation notes etc

1704c31 [doc] Fix Bitcoin Core reference in translation strings policy document

f7ddd4b [doc] Fix linkage between gitian build docs; update example versions

80d6695 [doc] Reduce markdown lint errors

ba02c14 [doc] document scipy as a functional test dependency

ec7f11c [qa] Add 'mining' and 'wallet' labels

f5c003d [qa] Add two-approvals maintainer rule for critical code

8d81e75 brew install qt installs Qt6 right now

ce0205e doc: Document linting

947b03d doc: Expectations of contributors and maintainers

b485d3c docs: Fixed typo in benchmarking.md

419fc4a fix list warnings

386e5af ninja translate

f71cd1b two files

c9cb1ab ABC:D8758(partial) Document implementation of BIP158

Build / general

1a0ac9a Add 'lint-yaml' linter. Fix lint errors in existing yaml files.

cf71061 Add jemalloc support

5ced972 Add the SuperFences extension to MkDocs

78f9989 Create ninja target for building Markdown documentation

3b16ec4 Enable 'lint-format-strings' linter

cf03d78 Enable 'lint-tests' linter

e7b14ee Merge manpage generation into the build system

abf734e [qa] Fix bench-bitcoin target

932a9de build: Add EXCLUDE_FUNCTIONAL_TESTS build option

f76ddca build: Add a translate target

2f826a5 build: Add linter targets to CMake

76d33be lint: Add new circular dependencies

f1ac5d3 lint: Check locale on template shell scripts

6802fad lint: Enable check-rpc-mappings.py linter

3b6943e lint: Enable linter lint-python-format.py

4a64ad2 lint: Enable python linters

80960d5 linter: Add cpp include linter

f4ea392 ABC:D6311 [CMAKE] Add a facility to add flag groups and use it for -Wformat-*

287215f ABC:D6545 [CMAKE] Fail early if a lib header is missing, remove garbage in version

db17bca ABC:D6960 [CMAKE] Optionally install bench_bitcoin

3653225 ABC:D7024 [CMAKE] Add the test suite to the log name

Build / Linux

6414b0a [build] Add batchupdater files to autoconf build

2cce42c Update _COPYRIGHT_YEAR in configure.ac to 2021

dabc9bb autoconf build: Fix broken build from latest commits

78d7dd9 Create ninja target for building HTML documentation with mkdocs

Build / Windows

Build / MacOSX

None.

Tests / test framework

c9cd304 Added StdHashWrapper, also added some tests

bac0b64 Double Spend Proof (dsproof-beta) deserialization fuzzer

54466c7 Double Spend Proof (dsproof-beta) functional test + test framework adaptations

751be1e Double Spend Proof (dsproof-beta) unit tests

a0262c9 Mininode: Add testnet4 and scalenet network magic

83dbe4a Mininode: Speed up big message reception significantly

777c04a Retroactively enable Tachyon on all test networks

add245a [qa] Add RPC HTTP pipelining test

53bdb78 [qa] Temporarily evict frequently failing getblocktemplate tests from aarch64 functional test job

3d2324a [qa] allow bchn test name prefix and dashes

3f0c99d [qa] fix unreliable getblocktemplate(light) tests

6492f06 [test] Add a functional test that transacts with ANYONECANPAY hash type

f3a8710 [tests] Additional tests to verify ancestor/descendant counting and limit behavior

826b8c3 test: Add option to pass extra bitcoind arguments

5334436 test: fix return type in bchn-rpc-pipelining

decf354 tests: Fix the failing rpc-getblocktemplate-timing test

Benchmarks

72d7d20 Bench: Add mempool eviction benchmark for chained tx's

ae7cc17 Bench: add -debug option to bench_bitcoin

fd0a7da Double Spend Proof (dsproof-beta) benchmarks

f1ac02c bench: Add benchmarks of CheckRegularTransaction

21faeb6 bench: Adjust block generation benchmarks

3f9634f bench: CreateNewBlock with long tx chains

6386f14 bench: Mempool acceptance for chained transactions

9e2e70e bench: Reorg benchmarks without mempool removal

072b3d0 bench: Reorgs of blocks with long tx chains

c8e9fde util: Added functions to help with profiling code (more precise time & more)

Seeds / seeder software

dd5ff6d Add seeder: bchseed.c3-soft.com

8f6b5f7 Seeder: Add Flowee's testnet4 seeder

c3fe092 Seeder: Fix getaddr interval to actually query address lists once a day

b332633 Seeder: Fix nodes discovered through seeds having zero service flags

7ced672 Seeder: Fix two potential crash bugs plus some code nits

41c2196 Seeder: Seed the database with fixed seed IPs

6eaf168 Seeder: Verify that nodes are on the correct chain

a47f73d Update mainnet seeds

491929e Update testnet seeds

0b41baf [backport] Seeder: Set BIP37 fRelayTxs flag to false

Maintainer tools

9866c59 Remove unused and Core specific script

Infrastructure

172b4fc Crowdin configuration file

2e77868 Fix Crowdin configuration file

1e5d723 Add BigBlockIfTrue release signing key

30a3eb5 [qa] Update freetrader public key (expiry extension to 2023-04-08)

Cleanup

5112ec4 [qa] Nuke obsolete test framework self-tests

b2cf1b5 [qa] Remove boost/optional.hpp from expected dependencies

568c2e5 Remove unused idea

43adbc8 Remove GUI settings migration from Bitcoin ABC

Continuous Integration (GitLab CI)

10c3507 [ci] Skip cloning of LFS files in static-checks jobs

9af7e96 ci: Add debug builds

b1dabdb ci: Add job for running check-lint

8e77c0c ci: Exclude bchn-rpc-getblocktemplate-sigops from aarch64

82ee7d1 ci: Fix build lint artifact path

fe5c9e3 ci: Reduce ccache size and DRY on common steps

Backports

aecbde5 ABC:D5809,Core PR#14987(partial) Pass rpc/abc RPC Results and Examples to RPCHelpMan

d1bf6d0 ABC:D5815,Core PR#14987(partial) Pass rpc/server RPC results and examples to RPCHelpMan

abf3302 ABC:D5818,Core PR#14987(partial) Pass zmq RPC results and examples to RPCHelpMan

c4f396d ABC:D5822,Core PR#14987 Pass rpc/mining RPC results and examples to RPCHelpMan

383becd ABC:D5838,Core PR#14987(partial) Pass rpc/net RPC Results and Examples to RPCHelpMan

d30c9ba ABC:D5877 [CMAKE] Use the crosscompiling emulator to run the tests

66e2bc8 ABC:D6056 [DEPENDS] Remove the facilities for building win32

a0b24b7 ABC:D6108,Core PR#16839 [backport] scripted-diff: Rename InitInterfaces to NodeContext

bb78078 ABC:D6109,Core PR#16839 [backport] MOVEONLY: Move NodeContext struct to node/context.h

44813cf ABC:D6283 [backport] Seeder: Request headers from new connections

dd9c338 ABC:D6462,Core PR#17931 Merge #17931: test: Fix p2p_invalid_messages failing in Python 3.8 because of warning

37f426b ABC:D7441 [CMAKE] Fix issues when looking for libraries installed with homebrew

459b3bb ABC:D7892,Core PR#14573,#16514 qt: Add Window menu

b515ce6 ABC:D7894,Core PR#14979 [Qt] Restore < Qt5.6 compatibility for addAction

e282d7c ABC:D7895,Core PR#18549 qt: Fix Window -> Minimize menu item on linux

1a1ac4e ABC:D7917,Core PR#14879 [backport#14879]Add warning messages to the debug window

c54452b ABC:D7930,Core PR16735 GUI: Remove unused menu items for Windows and Linux

0a9ec4f ABC:D7971 [secp256k1] Enable endomorphism by default

3c10dd6 ABC:D8123,Core PR#17809 rpc: Move OuterType enum to header

401d66d ABC:D8146,Core PR#14383,#15023 Clean systray icon menu for -disablewallet mode

e802238 ABC:D8148,Core PR#15756 gui: Add shortcuts for tab tools

195296f ABC:D8493,Core PR#18591 Switch to using C++17

cf5a10a ABC:D8523,Core PR#17096 Merge #17096: gui: rename debug window

3ab3c55 ABC:D8546,Core PR#14594 [backport#14594] qt: Fix minimized window bug on Linux

5d83d0e ABC:D8623 [backport] Seeder: Use netmagic from chainparams instead of a cached global

64eac60 ABC:D8624 [backport] Seeder: Add a test to check outgoing messages in response to VERACK

37261c6 ABC:D8835,Core PR#16902 Benchmark script verification with 100 nested IFs

bea1a7f ABC:D8836,Core PR#16902 [refactor] interpreter: define interface for vfExec

30313fd ABC:D8837,Core PR#16902 Implement O(1) OP_IF/NOTIF/ELSE/ENDIF logic

52c26df ABC:D8857,Core PR#15283 Fix UB with bench on genesis block

43ddf94 ABC:D8951 Fix typo in Sighash tests

3334361 ABC:D8992,Core PR#18754 [backport#18754] bench: add CAddrMan benchmarks

511a1e7 ABC:D8998,Core PR#18769 qt: remove todo bug fix for old versions of Qt

be04537 ABC:D9094,Core PR#18931 net: use CMessageHeader::HEADER_SIZE, add missing include

2720603 BCHUnlimited MR2401 [backport] Transaction viewer URL validation

d60b320 Core PR#11835 practicalswift - Add Travis check for unused Python imports

c36b720 Core PR#11878 practicalswift - Add Travis check for duplicate includes

ea04bf7 Core PR#12284 practicalswift - Enable flake8 warning F841 ("local variable 'foo' is assigned to but never used")

0b9207e Core PR#12295 practicalswift - Enable flake8 warning for "list comprehension redefines 'foo' from line N" (F812)

a9d0ebc Core PR#12295 practicalswift - Enable flake8 warnings for all currently non-violated rules

fad0fc3 Core PR#12933 MarcoFalke - Refine travis check for duplicate includes

643aad1 Core PR#12987 practicalswift - Enable additional flake8 rules

68400d8 Core PR#13054 practicalswift - tests: Use explicit imports

0d31ef4 Core PR#13210 John Bampton - Enable W191 and W291 flake8 checks. Remove trailing whitespace from Python files. Convert tabs to spaces.

506c578 Core PR#13214 practicalswift - Enable Travis checking for two Python linting rules we are currently not violating

6d10f43 Core PR#13230 practicalswift - Enforce the use of bracket syntax includes ("#include <foo.h>")

fa3c910 Core PR#13281 MarcoFalke - test: Move linters to test/lint, add readme

fa3c910 Core PR#13281 MarcoFalke - test: Move linters to test/lint, add readme

9d6c9db Core PR#13301 Ben Woosley - lint: Add linter to error on #include <*.cpp>

81bbd32 Core PR#13385 practicalswift - build: Guard against accidental introduction of new Boost dependencies

c8176b3 Core PR#13448 practicalswift - Add linter: Make sure we explicitly open all text files using UTF-8 or ASCII encoding in Python

6b31118 Core PR#13454 Add linter: Make sure all shell scripts opt out of locale dependence using "export LC_ALL=C"

3352da8 Core PR#13454 practicalswift - Add "export LC_ALL=C" to all shell scripts

f447a0a Core PR#13482 Chun Kuan Lee - Remove program options from build system

7b23e6e Core PR#13494 practicalswift - Follow-up to #13454: Fix broken build by exporting LC_ALL=C

0000000 Core PR#13510 DesWurstes - Obsolete #!/bin/bash shebang

962d8ee Core PR#13545 practicalswift - Remove boost dependency (boost/assign/std/vector.hpp)

854c85ae904075503215f94d6329d38d2d8dfb6b Core PR#13649 James O'Beirne - test: allow arguments to be forwarded to flake8 in lint-python.sh

e3245f2 Core PR#13656 251 - Removes Boost predicate.hpp dependency

b193d5a443bfd994936ad21b807b2bb37756ef2c Core PR#13671 251 - Removes the Boost case_conv.hpp dependency.

01f5955 Core PR#13686 [backport] ZMQ: Small cleanups in the ZMQ code

5f019d5 Core PR#13726 251 - Removes the boost/algorithm/string/join dependency

1c5d22585384c8bb05a27a04eab5c57b31d623fb Core PR#13734 Chun Kuan Lee - Drop boost::scoped_array

cb53b825c26af6e628ba88d72b2000e75bedbbc6 Core PR#13743 Chun Kuan Lee - scripted-diff: Replace boost::bind with std::bind

1661a472b8245eb4588fedbf19c9ed07a41e7602 Core PR#13862 Chun Kuan Lee - add unicode compatible file_lock for Windows

2d6ec04 Core PR#13863 use export LC_ALL=C.UTF-8

2c3eade704f63b360926de9e975ce80143781679 Core PR#13877 Chun Kuan Lee - Make fs::path::string() always return utf-8 string

55fbd5a Core PR#14088 Add regression test: Don't assert(...) with side effects

604f836 Core PR#14115 macOS fix: Work around empty (sub)expression error when using BSD grep

341f7c7b0e77edcc02cb3429fb9a3d49745332cc Core PR#14115 practicalswift - macOS fix: Check for correct version of flake8 to avoid spurious warnings. The brew installed flake8 version is Python 2 based and does not work.

5d62dcf9cfb5c0b2511c10667ed47ec3b3610d72 Core PR#14128 Chun Kuan Lee - lint: Make sure we read the command line inputs using utf-8 decoding in python

ef95a78 Core PR#14796 rpc: Pass argument descriptions to RPCHelpMan

c9ba253f4f5d675d7736d24c1167229d0898ef1a Core PR#14903 Daniel Ingram - Add E711 to flake8 check

948d8f4f10c31220ba4b6779cc862e2b6a0af5f6 Core PR#15219 Ben Woosley - lint: Enable python linters via an array

838920704ad90a71cf288b700052503db8abb17e Core PR#15257 Ben Woosley - lint: Disable flake8 W504 warning

3c84d85f7d218fa27e9343c5cd1a55e519218980 Core PR#15382 Sjors Provoost - [build] msvc: add boost::process

3c5254a820c892b448dfb42991f6109a032a3730 Core PR#16124 practicalswift - Limit Python linting to files in the repo

37577d4 Core PR#16291 gui: Stop translating PACKAGE_NAME

490da639cbd48ce0dc438abbfc89ab796391cb2a Core PR#16768 Kristaps Kaupe - Make lint-includes.sh work from any directory

80c9e66ab84f8cecc2bf2eebf508a5aad8911246 Core PR#17353 Hennadii Stepanov - build: Remove install command samples

3a037d0067c2c12a1c2c800fb85613a0a2911253 Core PR#17398 Wladimir J. van der Laan - test: Add crc32c exception to various linters and generation scripts

3a037d0067c2c12a1c2c800fb85613a0a2911253 Core PR#17398 Wladimir J. van der Laan - test: Add crc32c exception to various linters and generation scripts

aaaaad6ac95b402fe18d019d67897ced6b316ee0 Core PR#17829 MarcoFalke - scripted-diff: Bump copyright of files changed in 2019

aaaaad6ac95b402fe18d019d67897ced6b316ee0 Core PR#17829 MarcoFalke - scripted-diff: Bump copyright of files changed in 2019

bd7e530f010d43816bb05d6f1590d1cd36cdaa2c Core PR#18210 Kiminuo - This PR adds initial support for type hints checking in python scripts.

d0ebd93270758ea97ea956b8821e17a2d001ea94 Core PR#18234 Anthony Towns - scheduler: switch from boost to std

fa488f131fd4f5bab0d01376c5a5013306f1abcd Core PR#18673 MarcoFalke - scripted-diff: Bump copyright headers

fa488f131fd4f5bab0d01376c5a5013306f1abcd Core PR#18673 MarcoFalke - scripted-diff: Bump copyright headers

bb6fcc75d1ec94b733d1477c816351c50be5faf9 Core PR#18710 Hennadii Stepanov - refactor: Drop boost::thread stuff in CCheckQueue

e0f5f6f Core PR#18752 [backport] test: Fix intermittent error in mempool_reorg

89f9fef1f71dfeff4baa59bc42bc9049a46d911b Core PR#18758 Hennadii Stepanov - refactor: Specify boost/thread/thread.hpp explicitly

13639e0 Core PR#18873 [backport] test: Fix intermittent sync_blocks failures

7dda912e1c28b02723c9f24fa6c4e9003d928978 Core PR#19172 Hennadii Stepanov - test: Do not swallow flake8 exit code

f1a0314c537791f202dfb7c1209f0e04ba7988c3 Core PR#19256 Cory Fields - gui: change combiner for signals to optional_last_value

39d526bde48d98af4fa27906e85db0399b6aa8b1 Core PR#19348 Duncan Dean - test: Bump linter versions

9637ff3 Core PR#19504 [tests] Recommend f-strings for formatting, update feature_block to use them

39ab7ec Core PR#19844 lint: add C++ code linter

b6121edf70a8d50fd16ddbba0c3168e5e49bfc2e Core PR#20346 Tyler Chambers - swapped "is" for "==" in literal comparison

faa8f68943615785a2855676cf96e0e96f3cc6bd Core PR#20480 MarcoFalke - Replace boost::variant with std::variant

fa4435e22f78f632a455016ce00a357009aac059 Core PR#20671 MarcoFalke - Replace boost::optional with std::optional

dc8be12510c2fd5a809d9a82d2c14b464b5e5a3f Core PR#21016 fanquake - refactor: remove boost::thread_group usage

e99db77a6e73996d33d7108f8336938dd57037a7 Core PR#21059 Hennadii Stepanov - Drop boost/preprocessor dependencies

7097add83c8596f81be9edd66971ffd2486357eb Core PR#21064 fanquake - refactor: replace Boost shared_mutex with std shared_mutex in sigcache

0ba89dd Core:(various PRs listed separately): lint: Add lint-python and lint-python-utf8-encoding

5ba7031 Core:PR#16726 lint: Catch use of [] or {} as default parameter values in Python functions

594924b Dash PR#3672,Core PR#3685 [QT] Add last block hash to debug ui: Trivial addition to display last block hash next to last block time

1
$ 0.00
Avatar for hassanj
2 years ago

Comments