mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-02 14:37:42 -03:00
Merge bitcoin/bitcoin#28768: [25.x] Backports
53bbda5114
doc: update release notes for 25.x (fanquake)31e1e035be
test: add regression test for the getrawtransaction segfault (Martin Zumsande)041228d293
rpc: fix getrawtransaction segfault (Martin Zumsande)b86285df1f
gui: fix crash on selecting "Mask values" in transaction view (Sebastian Falbesoner)c21024fd86
doc: add historical release notes for 25.1 (fanquake) Pull request description: Collecting backports for the 25.x branch. Currently: * https://github.com/bitcoin-core/gui/pull/774 * https://github.com/bitcoin/bitcoin/pull/29003 ACKs for top commit: stickies-v: ACK53bbda5114
Tree-SHA512: 9b1ba17cce9de70d20329372ba71225dd930718a1f7db84a7be764dcfbba01c5e466255e7b95433ab6d7559ee8aaa04cc99ee5d1512d91fcc0a8015f1aa4150a
This commit is contained in:
commit
8087626cbd
5 changed files with 132 additions and 61 deletions
|
@ -1,9 +1,9 @@
|
||||||
25.1 Release Notes
|
25.x Release Notes
|
||||||
==================
|
==================
|
||||||
|
|
||||||
Bitcoin Core version 25.1 is now available from:
|
Bitcoin Core version 25.x is now available from:
|
||||||
|
|
||||||
<https://bitcoincore.org/bin/bitcoin-core-25.1/>
|
<https://bitcoincore.org/bin/bitcoin-core-25.x/>
|
||||||
|
|
||||||
This release includes various bug fixes and performance
|
This release includes various bug fixes and performance
|
||||||
improvements, as well as updated translations.
|
improvements, as well as updated translations.
|
||||||
|
@ -40,69 +40,21 @@ unsupported systems.
|
||||||
Notable changes
|
Notable changes
|
||||||
===============
|
===============
|
||||||
|
|
||||||
### P2P
|
### Gui
|
||||||
|
|
||||||
- #27626 Parallel compact block downloads, take 3
|
- gui#774 Fix crash on selecting "Mask values" in transaction view
|
||||||
- #27743 p2p: Unconditionally return when compact block status == READ_STATUS_FAILED
|
|
||||||
|
|
||||||
### Fees
|
|
||||||
|
|
||||||
- #27622 Fee estimation: avoid serving stale fee estimate
|
|
||||||
|
|
||||||
### RPC
|
### RPC
|
||||||
|
|
||||||
- #27727 rpc: Fix invalid bech32 address handling
|
- #29003 rpc: fix getrawtransaction segfault
|
||||||
|
|
||||||
### Rest
|
|
||||||
|
|
||||||
- #27853 rest: fix crash error when calling /deploymentinfo
|
|
||||||
- #28551 http: bugfix: allow server shutdown in case of remote client disconnection
|
|
||||||
|
|
||||||
### Wallet
|
|
||||||
|
|
||||||
- #28038 wallet: address book migration bug fixes
|
|
||||||
- #28067 descriptors: do not return top-level only funcs as sub descriptors
|
|
||||||
- #28125 wallet: bugfix, disallow migration of invalid scripts
|
|
||||||
- #28542 wallet: Check for uninitialized last processed and conflicting heights in MarkConflicted
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
- #27724 build: disable boost multi index safe mode in debug mode
|
|
||||||
- #28097 depends: xcb-proto 1.15.2
|
|
||||||
- #28543 build, macos: Fix qt package build with new Xcode 15 linker
|
|
||||||
- #28571 depends: fix unusable memory_resource in macos qt build
|
|
||||||
|
|
||||||
### Gui
|
|
||||||
|
|
||||||
- gui#751 macOS, do not process actions during shutdown
|
|
||||||
|
|
||||||
### Miscellaneous
|
|
||||||
|
|
||||||
- #28452 Do not use std::vector = {} to release memory
|
|
||||||
|
|
||||||
### CI
|
|
||||||
|
|
||||||
- #27777 ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN
|
|
||||||
- #27834 ci: Nuke Android APK task, Use credits for tsan
|
|
||||||
- #27844 ci: Use podman stop over podman kill
|
|
||||||
- #27886 ci: Switch to amd64 container in "ARM" task
|
|
||||||
|
|
||||||
Credits
|
Credits
|
||||||
=======
|
=======
|
||||||
|
|
||||||
Thanks to everyone who directly contributed to this release:
|
Thanks to everyone who directly contributed to this release:
|
||||||
|
|
||||||
- Abubakar Sadiq Ismail
|
- Martin Zumsande
|
||||||
- Andrew Chow
|
- Sebastian Falbesoner
|
||||||
- Bruno Garcia
|
|
||||||
- Gregory Sanders
|
|
||||||
- Hennadii Stepanov
|
|
||||||
- MacroFake
|
|
||||||
- Matias Furszyfer
|
|
||||||
- Michael Ford
|
|
||||||
- Pieter Wuille
|
|
||||||
- stickies-v
|
|
||||||
- Will Clark
|
|
||||||
|
|
||||||
As well as to everyone that helped with translations on
|
As well as to everyone that helped with translations on
|
||||||
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).
|
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).
|
||||||
|
|
108
doc/release-notes/release-notes-25.1.md
Normal file
108
doc/release-notes/release-notes-25.1.md
Normal file
|
@ -0,0 +1,108 @@
|
||||||
|
25.1 Release Notes
|
||||||
|
==================
|
||||||
|
|
||||||
|
Bitcoin Core version 25.1 is now available from:
|
||||||
|
|
||||||
|
<https://bitcoincore.org/bin/bitcoin-core-25.1/>
|
||||||
|
|
||||||
|
This release includes various bug fixes and performance
|
||||||
|
improvements, as well as updated translations.
|
||||||
|
|
||||||
|
Please report bugs using the issue tracker at GitHub:
|
||||||
|
|
||||||
|
<https://github.com/bitcoin/bitcoin/issues>
|
||||||
|
|
||||||
|
To receive security and update notifications, please subscribe to:
|
||||||
|
|
||||||
|
<https://bitcoincore.org/en/list/announcements/join/>
|
||||||
|
|
||||||
|
How to Upgrade
|
||||||
|
==============
|
||||||
|
|
||||||
|
If you are running an older version, shut it down. Wait until it has completely
|
||||||
|
shut down (which might take a few minutes in some cases), then run the
|
||||||
|
installer (on Windows) or just copy over `/Applications/Bitcoin-Qt` (on macOS)
|
||||||
|
or `bitcoind`/`bitcoin-qt` (on Linux).
|
||||||
|
|
||||||
|
Upgrading directly from a version of Bitcoin Core that has reached its EOL is
|
||||||
|
possible, but it might take some time if the data directory needs to be migrated. Old
|
||||||
|
wallet versions of Bitcoin Core are generally supported.
|
||||||
|
|
||||||
|
Compatibility
|
||||||
|
==============
|
||||||
|
|
||||||
|
Bitcoin Core is supported and extensively tested on operating systems
|
||||||
|
using the Linux kernel, macOS 10.15+, and Windows 7 and newer. Bitcoin
|
||||||
|
Core should also work on most other Unix-like systems but is not as
|
||||||
|
frequently tested on them. It is not recommended to use Bitcoin Core on
|
||||||
|
unsupported systems.
|
||||||
|
|
||||||
|
Notable changes
|
||||||
|
===============
|
||||||
|
|
||||||
|
### P2P
|
||||||
|
|
||||||
|
- #27626 Parallel compact block downloads, take 3
|
||||||
|
- #27743 p2p: Unconditionally return when compact block status == READ_STATUS_FAILED
|
||||||
|
|
||||||
|
### Fees
|
||||||
|
|
||||||
|
- #27622 Fee estimation: avoid serving stale fee estimate
|
||||||
|
|
||||||
|
### RPC
|
||||||
|
|
||||||
|
- #27727 rpc: Fix invalid bech32 address handling
|
||||||
|
|
||||||
|
### Rest
|
||||||
|
|
||||||
|
- #27853 rest: fix crash error when calling /deploymentinfo
|
||||||
|
- #28551 http: bugfix: allow server shutdown in case of remote client disconnection
|
||||||
|
|
||||||
|
### Wallet
|
||||||
|
|
||||||
|
- #28038 wallet: address book migration bug fixes
|
||||||
|
- #28067 descriptors: do not return top-level only funcs as sub descriptors
|
||||||
|
- #28125 wallet: bugfix, disallow migration of invalid scripts
|
||||||
|
- #28542 wallet: Check for uninitialized last processed and conflicting heights in MarkConflicted
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
- #27724 build: disable boost multi index safe mode in debug mode
|
||||||
|
- #28097 depends: xcb-proto 1.15.2
|
||||||
|
- #28543 build, macos: Fix qt package build with new Xcode 15 linker
|
||||||
|
- #28571 depends: fix unusable memory_resource in macos qt build
|
||||||
|
|
||||||
|
### Gui
|
||||||
|
|
||||||
|
- gui#751 macOS, do not process actions during shutdown
|
||||||
|
|
||||||
|
### Miscellaneous
|
||||||
|
|
||||||
|
- #28452 Do not use std::vector = {} to release memory
|
||||||
|
|
||||||
|
### CI
|
||||||
|
|
||||||
|
- #27777 ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN
|
||||||
|
- #27834 ci: Nuke Android APK task, Use credits for tsan
|
||||||
|
- #27844 ci: Use podman stop over podman kill
|
||||||
|
- #27886 ci: Switch to amd64 container in "ARM" task
|
||||||
|
|
||||||
|
Credits
|
||||||
|
=======
|
||||||
|
|
||||||
|
Thanks to everyone who directly contributed to this release:
|
||||||
|
|
||||||
|
- Abubakar Sadiq Ismail
|
||||||
|
- Andrew Chow
|
||||||
|
- Bruno Garcia
|
||||||
|
- Gregory Sanders
|
||||||
|
- Hennadii Stepanov
|
||||||
|
- MacroFake
|
||||||
|
- Matias Furszyfer
|
||||||
|
- Michael Ford
|
||||||
|
- Pieter Wuille
|
||||||
|
- stickies-v
|
||||||
|
- Will Clark
|
||||||
|
|
||||||
|
As well as to everyone that helped with translations on
|
||||||
|
[Transifex](https://www.transifex.com/bitcoin/bitcoin/).
|
|
@ -532,6 +532,9 @@ void TransactionView::showDetails()
|
||||||
TransactionDescDialog *dlg = new TransactionDescDialog(selection.at(0));
|
TransactionDescDialog *dlg = new TransactionDescDialog(selection.at(0));
|
||||||
dlg->setAttribute(Qt::WA_DeleteOnClose);
|
dlg->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
m_opened_dialogs.append(dlg);
|
m_opened_dialogs.append(dlg);
|
||||||
|
connect(dlg, &QObject::destroyed, [this, dlg] {
|
||||||
|
m_opened_dialogs.removeOne(dlg);
|
||||||
|
});
|
||||||
dlg->show();
|
dlg->show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -310,7 +310,7 @@ static RPCHelpMan getrawtransaction()
|
||||||
LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
blockindex = chainman.m_blockman.LookupBlockIndex(hash_block);
|
blockindex = chainman.m_blockman.LookupBlockIndex(hash_block);
|
||||||
}
|
}
|
||||||
if (verbosity == 1) {
|
if (verbosity == 1 || !blockindex) {
|
||||||
TxToJSON(*tx, hash_block, result, chainman.ActiveChainstate());
|
TxToJSON(*tx, hash_block, result, chainman.ActiveChainstate());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -319,8 +319,7 @@ static RPCHelpMan getrawtransaction()
|
||||||
CBlock block;
|
CBlock block;
|
||||||
const bool is_block_pruned{WITH_LOCK(cs_main, return chainman.m_blockman.IsBlockPruned(blockindex))};
|
const bool is_block_pruned{WITH_LOCK(cs_main, return chainman.m_blockman.IsBlockPruned(blockindex))};
|
||||||
|
|
||||||
if (tx->IsCoinBase() ||
|
if (tx->IsCoinBase() || is_block_pruned ||
|
||||||
!blockindex || is_block_pruned ||
|
|
||||||
!(UndoReadFromDisk(blockUndo, blockindex) && ReadBlockFromDisk(block, blockindex, Params().GetConsensus()))) {
|
!(UndoReadFromDisk(blockUndo, blockindex) && ReadBlockFromDisk(block, blockindex, Params().GetConsensus()))) {
|
||||||
TxToJSON(*tx, hash_block, result, chainman.ActiveChainstate());
|
TxToJSON(*tx, hash_block, result, chainman.ActiveChainstate());
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -32,6 +32,7 @@ from test_framework.script import (
|
||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import (
|
from test_framework.util import (
|
||||||
assert_equal,
|
assert_equal,
|
||||||
|
assert_greater_than,
|
||||||
assert_raises_rpc_error,
|
assert_raises_rpc_error,
|
||||||
)
|
)
|
||||||
from test_framework.wallet import (
|
from test_framework.wallet import (
|
||||||
|
@ -70,7 +71,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
self.extra_args = [
|
self.extra_args = [
|
||||||
["-txindex"],
|
["-txindex"],
|
||||||
["-txindex"],
|
["-txindex"],
|
||||||
[],
|
["-fastprune", "-prune=1"],
|
||||||
]
|
]
|
||||||
# whitelist all peers to speed up tx relay / mempool sync
|
# whitelist all peers to speed up tx relay / mempool sync
|
||||||
for args in self.extra_args:
|
for args in self.extra_args:
|
||||||
|
@ -85,7 +86,6 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
self.wallet = MiniWallet(self.nodes[0])
|
self.wallet = MiniWallet(self.nodes[0])
|
||||||
|
|
||||||
self.getrawtransaction_tests()
|
self.getrawtransaction_tests()
|
||||||
self.getrawtransaction_verbosity_tests()
|
|
||||||
self.createrawtransaction_tests()
|
self.createrawtransaction_tests()
|
||||||
self.sendrawtransaction_tests()
|
self.sendrawtransaction_tests()
|
||||||
self.sendrawtransaction_testmempoolaccept_tests()
|
self.sendrawtransaction_testmempoolaccept_tests()
|
||||||
|
@ -94,6 +94,8 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
if self.is_specified_wallet_compiled() and not self.options.descriptors:
|
if self.is_specified_wallet_compiled() and not self.options.descriptors:
|
||||||
self.import_deterministic_coinbase_privkeys()
|
self.import_deterministic_coinbase_privkeys()
|
||||||
self.raw_multisig_transaction_legacy_tests()
|
self.raw_multisig_transaction_legacy_tests()
|
||||||
|
self.getrawtransaction_verbosity_tests()
|
||||||
|
|
||||||
|
|
||||||
def getrawtransaction_tests(self):
|
def getrawtransaction_tests(self):
|
||||||
tx = self.wallet.send_self_transfer(from_node=self.nodes[0])
|
tx = self.wallet.send_self_transfer(from_node=self.nodes[0])
|
||||||
|
@ -243,6 +245,13 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||||
coin_base = self.nodes[1].getblock(block1)['tx'][0]
|
coin_base = self.nodes[1].getblock(block1)['tx'][0]
|
||||||
gottx = self.nodes[1].getrawtransaction(txid=coin_base, verbosity=2, blockhash=block1)
|
gottx = self.nodes[1].getrawtransaction(txid=coin_base, verbosity=2, blockhash=block1)
|
||||||
assert 'fee' not in gottx
|
assert 'fee' not in gottx
|
||||||
|
# check that verbosity 2 for a mempool tx will fallback to verbosity 1
|
||||||
|
# Do this with a pruned chain, as a regression test for https://github.com/bitcoin/bitcoin/pull/29003
|
||||||
|
self.generate(self.nodes[2], 400)
|
||||||
|
assert_greater_than(self.nodes[2].pruneblockchain(250), 0)
|
||||||
|
mempool_tx = self.wallet.send_self_transfer(from_node=self.nodes[2])['txid']
|
||||||
|
gottx = self.nodes[2].getrawtransaction(txid=mempool_tx, verbosity=2)
|
||||||
|
assert 'fee' not in gottx
|
||||||
|
|
||||||
def createrawtransaction_tests(self):
|
def createrawtransaction_tests(self):
|
||||||
self.log.info("Test createrawtransaction")
|
self.log.info("Test createrawtransaction")
|
||||||
|
|
Loading…
Add table
Reference in a new issue