aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAva Chow <github@achow101.com>2025-01-07 13:32:56 -0500
committerAva Chow <github@achow101.com>2025-01-07 13:32:56 -0500
commit32efe850438ef22e2de39e562af557872a402c31 (patch)
tree6ddb1bce6f76cf2895ed4ad21fb78a29e7833c9f
parent6db725662d9edff275abfac6ef3827ebec882f66 (diff)
parent36314b8da2ee65afd5636fa830d436c5c22bd260 (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.ac2
-rw-r--r--depends/hosts/netbsd.mk2
-rw-r--r--doc/man/bitcoin-cli.16
-rw-r--r--doc/man/bitcoin-qt.16
-rw-r--r--doc/man/bitcoin-tx.16
-rw-r--r--doc/man/bitcoin-util.16
-rw-r--r--doc/man/bitcoin-wallet.16
-rw-r--r--doc/man/bitcoind.16
-rw-r--r--doc/release-notes.md7
-rw-r--r--src/rpc/mining.cpp23
-rwxr-xr-xtest/functional/rpc_generate.py11
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)