diff options
author | Ava Chow <github@achow101.com> | 2025-01-07 13:32:56 -0500 |
---|---|---|
committer | Ava Chow <github@achow101.com> | 2025-01-07 13:32:56 -0500 |
commit | 32efe850438ef22e2de39e562af557872a402c31 (patch) | |
tree | 6ddb1bce6f76cf2895ed4ad21fb78a29e7833c9f | |
parent | 6db725662d9edff275abfac6ef3827ebec882f66 (diff) | |
parent | 36314b8da2ee65afd5636fa830d436c5c22bd260 (diff) |
Merge bitcoin/bitcoin#31594: [28.x] 28.1 backports and final changesv28.1
36314b8da2ee65afd5636fa830d436c5c22bd260 doc: Update 28.1 release notes (MarcoFalke)
58910279dcfd989a1712b3dc39a272ff3fbe1136 doc: generate 28.1 manpages (Ava Chow)
6a68ef9bfb39b27d480d4091b60d1c7f9f2d8690 build: bump to 28.1 (Ava Chow)
5b368f88a9fddd0cd48fb014ff9694c555129996 depends: Fix CXXFLAGS on NetBSD (Hennadii Stepanov)
05cd448e3328181d3fe1662bcd7af82cb51833a7 test: generateblocks called by multiple threads (MarcoFalke)
621c634b7fe14fbf151cd222eeaade3505059249 rpc: Extend scope of validation mutex in generateblock (MarcoFalke)
Pull request description:
Backports:
- #31502
- #31563
ACKs for top commit:
glozow:
reACK 36314b8da2ee65afd5636fa830d436c5c22bd260
achow101:
ACK 36314b8da2ee65afd5636fa830d436c5c22bd260
Tree-SHA512: c7a624b4c166f4322011d98d1ca814ae98eaf5fd2481a507cd65a50216f1abbb91f8643508ce81f64f8b10fa2210db1722254c343253f2a950b9c64667735e9b
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | depends/hosts/netbsd.mk | 2 | ||||
-rw-r--r-- | doc/man/bitcoin-cli.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-qt.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-tx.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-util.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoin-wallet.1 | 6 | ||||
-rw-r--r-- | doc/man/bitcoind.1 | 6 | ||||
-rw-r--r-- | doc/release-notes.md | 7 | ||||
-rw-r--r-- | src/rpc/mining.cpp | 23 | ||||
-rwxr-xr-x | test/functional/rpc_generate.py | 11 |
11 files changed, 46 insertions, 35 deletions
diff --git a/configure.ac b/configure.ac index 057f8c8cdd..86d5e5e214 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ AC_PREREQ([2.69]) define(_CLIENT_VERSION_MAJOR, 28) define(_CLIENT_VERSION_MINOR, 1) define(_CLIENT_VERSION_BUILD, 0) -define(_CLIENT_VERSION_RC, 2) +define(_CLIENT_VERSION_RC, 0) define(_CLIENT_VERSION_IS_RELEASE, true) define(_COPYRIGHT_YEAR, 2024) define(_COPYRIGHT_HOLDERS,[The %s developers]) diff --git a/depends/hosts/netbsd.mk b/depends/hosts/netbsd.mk index f33b2d2889..6e0fa9e12f 100644 --- a/depends/hosts/netbsd.mk +++ b/depends/hosts/netbsd.mk @@ -7,8 +7,6 @@ netbsd_NM = $(host_toolchain)gcc-nm netbsd_RANLIB = $(host_toolchain)gcc-ranlib endif -netbsd_CXXFLAGS=$(netbsd_CFLAGS) - netbsd_release_CFLAGS=-O2 netbsd_release_CXXFLAGS=$(netbsd_release_CFLAGS) diff --git a/doc/man/bitcoin-cli.1 b/doc/man/bitcoin-cli.1 index 52f6e123fc..d355289372 100644 --- a/doc/man/bitcoin-cli.1 +++ b/doc/man/bitcoin-cli.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-CLI "1" "December 2024" "bitcoin-cli v28.1.0rc2" "User Commands" +.TH BITCOIN-CLI "1" "December 2024" "bitcoin-cli v28.1.0" "User Commands" .SH NAME -bitcoin-cli \- manual page for bitcoin-cli v28.1.0rc2 +bitcoin-cli \- manual page for bitcoin-cli v28.1.0 .SH SYNOPSIS .B bitcoin-cli [\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Bitcoin Core\/\fR @@ -15,7 +15,7 @@ bitcoin-cli \- manual page for bitcoin-cli v28.1.0rc2 .B bitcoin-cli [\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR .SH DESCRIPTION -Bitcoin Core RPC client version v28.1.0rc2 +Bitcoin Core RPC client version v28.1.0 .SH OPTIONS .HP \-? diff --git a/doc/man/bitcoin-qt.1 b/doc/man/bitcoin-qt.1 index c8f1f5ae5d..fe76cd970b 100644 --- a/doc/man/bitcoin-qt.1 +++ b/doc/man/bitcoin-qt.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-QT "1" "December 2024" "bitcoin-qt v28.1.0rc2" "User Commands" +.TH BITCOIN-QT "1" "December 2024" "bitcoin-qt v28.1.0" "User Commands" .SH NAME -bitcoin-qt \- manual page for bitcoin-qt v28.1.0rc2 +bitcoin-qt \- manual page for bitcoin-qt v28.1.0 .SH SYNOPSIS .B bitcoin-qt [\fI\,command-line options\/\fR] [\fI\,URI\/\fR] .SH DESCRIPTION -Bitcoin Core version v28.1.0rc2 +Bitcoin Core version v28.1.0 .PP Optional URI is a Bitcoin address in BIP21 URI format. .SH OPTIONS diff --git a/doc/man/bitcoin-tx.1 b/doc/man/bitcoin-tx.1 index 81fc86c871..26cbd9bff7 100644 --- a/doc/man/bitcoin-tx.1 +++ b/doc/man/bitcoin-tx.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-TX "1" "December 2024" "bitcoin-tx v28.1.0rc2" "User Commands" +.TH BITCOIN-TX "1" "December 2024" "bitcoin-tx v28.1.0" "User Commands" .SH NAME -bitcoin-tx \- manual page for bitcoin-tx v28.1.0rc2 +bitcoin-tx \- manual page for bitcoin-tx v28.1.0 .SH SYNOPSIS .B bitcoin-tx [\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded bitcoin transaction\/\fR @@ -9,7 +9,7 @@ bitcoin-tx \- manual page for bitcoin-tx v28.1.0rc2 .B bitcoin-tx [\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded bitcoin transaction\/\fR .SH DESCRIPTION -Bitcoin Core bitcoin\-tx utility version v28.1.0rc2 +Bitcoin Core bitcoin\-tx utility version v28.1.0 .SH OPTIONS .HP \-? diff --git a/doc/man/bitcoin-util.1 b/doc/man/bitcoin-util.1 index a88d610931..415e6d04b1 100644 --- a/doc/man/bitcoin-util.1 +++ b/doc/man/bitcoin-util.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-UTIL "1" "December 2024" "bitcoin-util v28.1.0rc2" "User Commands" +.TH BITCOIN-UTIL "1" "December 2024" "bitcoin-util v28.1.0" "User Commands" .SH NAME -bitcoin-util \- manual page for bitcoin-util v28.1.0rc2 +bitcoin-util \- manual page for bitcoin-util v28.1.0 .SH SYNOPSIS .B bitcoin-util [\fI\,options\/\fR] [\fI\,commands\/\fR] \fI\,Do stuff\/\fR .SH DESCRIPTION -Bitcoin Core bitcoin\-util utility version v28.1.0rc2 +Bitcoin Core bitcoin\-util utility version v28.1.0 .SH OPTIONS .HP \-? diff --git a/doc/man/bitcoin-wallet.1 b/doc/man/bitcoin-wallet.1 index 94d9049441..a0431292ae 100644 --- a/doc/man/bitcoin-wallet.1 +++ b/doc/man/bitcoin-wallet.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIN-WALLET "1" "December 2024" "bitcoin-wallet v28.1.0rc2" "User Commands" +.TH BITCOIN-WALLET "1" "December 2024" "bitcoin-wallet v28.1.0" "User Commands" .SH NAME -bitcoin-wallet \- manual page for bitcoin-wallet v28.1.0rc2 +bitcoin-wallet \- manual page for bitcoin-wallet v28.1.0 .SH DESCRIPTION -Bitcoin Core bitcoin\-wallet version v28.1.0rc2 +Bitcoin Core bitcoin\-wallet version v28.1.0 .PP bitcoin\-wallet is an offline tool for creating and interacting with Bitcoin Core wallet files. By default bitcoin\-wallet will act on wallets in the default mainnet wallet directory in the datadir. diff --git a/doc/man/bitcoind.1 b/doc/man/bitcoind.1 index 34bc48acd8..1acb2dfa0a 100644 --- a/doc/man/bitcoind.1 +++ b/doc/man/bitcoind.1 @@ -1,12 +1,12 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH BITCOIND "1" "December 2024" "bitcoind v28.1.0rc2" "User Commands" +.TH BITCOIND "1" "December 2024" "bitcoind v28.1.0" "User Commands" .SH NAME -bitcoind \- manual page for bitcoind v28.1.0rc2 +bitcoind \- manual page for bitcoind v28.1.0 .SH SYNOPSIS .B bitcoind [\fI\,options\/\fR] \fI\,Start Bitcoin Core\/\fR .SH DESCRIPTION -Bitcoin Core version v28.1.0rc2 +Bitcoin Core version v28.1.0 .SH OPTIONS .HP \-? diff --git a/doc/release-notes.md b/doc/release-notes.md index cdddade43a..e134dcce43 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -1,6 +1,6 @@ -Bitcoin Core version 28.1rc1 is now available from: +Bitcoin Core version 28.1 is now available from: - <https://bitcoincore.org/bin/bitcoin-core-28.1/test.rc1> + <https://bitcoincore.org/bin/bitcoin-core-28.1> This release includes new features, various bug fixes and performance improvements, as well as updated translations. @@ -68,12 +68,14 @@ Notable changes ### Build - #31013 depends: For mingw cross compile use `-gcc-posix` to prevent library conflict +- #31502 depends: Fix CXXFLAGS on NetBSD ### Test - #31016 test: add missing sync to feature_fee_estimation.py - #31448 fuzz: add cstdlib to FuzzedDataProvider - #31419 test: fix MIN macro redefinition +- #31563 rpc: Extend scope of validation mutex in generateblock ### Doc @@ -92,6 +94,7 @@ Credits ======= - fanquake +- Hennadii Stepanov - laanwj - MarcoFalke - Martin Zumsande diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 3c41e136ec..445fd8c344 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -1,5 +1,5 @@ // Copyright (c) 2010 Satoshi Nakamoto -// Copyright (c) 2009-2022 The Bitcoin Core developers +// Copyright (c) 2009-present The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -370,20 +370,21 @@ static RPCHelpMan generateblock() ChainstateManager& chainman = EnsureChainman(node); { - std::unique_ptr<CBlockTemplate> blocktemplate{miner.createNewBlock(coinbase_script, {.use_mempool = false})}; - if (!blocktemplate) { - throw JSONRPCError(RPC_INTERNAL_ERROR, "Couldn't create new block"); + LOCK(chainman.GetMutex()); + { + std::unique_ptr<CBlockTemplate> blocktemplate{miner.createNewBlock(coinbase_script, {.use_mempool = false})}; + if (!blocktemplate) { + throw JSONRPCError(RPC_INTERNAL_ERROR, "Couldn't create new block"); + } + block = blocktemplate->block; } - block = blocktemplate->block; - } - CHECK_NONFATAL(block.vtx.size() == 1); + CHECK_NONFATAL(block.vtx.size() == 1); - // Add transactions - block.vtx.insert(block.vtx.end(), txs.begin(), txs.end()); - RegenerateCommitments(block, chainman); + // Add transactions + block.vtx.insert(block.vtx.end(), txs.begin(), txs.end()); + RegenerateCommitments(block, chainman); - { BlockValidationState state; if (!miner.testBlockValidity(block, /*check_merkle_root=*/false, state)) { throw JSONRPCError(RPC_VERIFY_ERROR, strprintf("testBlockValidity failed: %s", state.ToString())); diff --git a/test/functional/rpc_generate.py b/test/functional/rpc_generate.py index 68de900664..1f0d6c546c 100755 --- a/test/functional/rpc_generate.py +++ b/test/functional/rpc_generate.py @@ -1,9 +1,11 @@ #!/usr/bin/env python3 -# Copyright (c) 2020-2022 The Bitcoin Core developers +# Copyright (c) 2020-present The Bitcoin Core developers # Distributed under the MIT software license, see the accompanying # file COPYING or http://www.opensource.org/licenses/mit-license.php. """Test generate* RPCs.""" +from concurrent.futures import ThreadPoolExecutor + from test_framework.test_framework import BitcoinTestFramework from test_framework.wallet import MiniWallet from test_framework.util import ( @@ -83,6 +85,13 @@ class RPCGenerateTest(BitcoinTestFramework): txid = block['tx'][1] assert_equal(node.getrawtransaction(txid=txid, verbose=False, blockhash=hash), rawtx) + # Ensure that generateblock can be called concurrently by many threads. + self.log.info('Generate blocks in parallel') + generate_50_blocks = lambda n: [n.generateblock(output=address, transactions=[]) for _ in range(50)] + rpcs = [node.cli for _ in range(6)] + with ThreadPoolExecutor(max_workers=len(rpcs)) as threads: + list(threads.map(generate_50_blocks, rpcs)) + self.log.info('Fail to generate block with out of order txs') txid1 = miniwallet.send_self_transfer(from_node=node)['txid'] utxo1 = miniwallet.get_utxo(txid=txid1) |