aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-10-03gui: macOS, do not process dock icon actions during shutdownfurszy
As the 'QMenuBar' is created without a parent window in MacOS, the app crashes when the user presses the shutdown button and, right after it, triggers any action in the menu bar. This happens because the QMenuBar is manually deleted in the BitcoinGUI destructor but the events attached to it children actions are not disconnected, so QActions events such us the 'QMenu::aboutToShow' could try to access null pointers. Instead of guarding every single QAction pointer inside the QMenu::aboutToShow slot, or manually disconnecting all registered events in the destructor, we can check if a shutdown was requested and discard the event. The 'node' field is a ref whose memory is held by the main application class, so it is safe to use here. Events are disconnected prior destructing the main application object. Furthermore, the 'MacDockIconHandler::dockIconClicked' signal can make the app crash during shutdown for the very same reason. The 'show()' call triggers the 'QApplication::focusWindowChanged' event, which is connected to the 'minimize_action' QAction, which is also part of the app menu bar, which could no longer exist. Github-Pull: gui#751 Rebased-From: e14cc8fc69cb3e3a98076fbb23a94eba7873368a
2023-10-03depends: fix unusable memory_resource in macos qt buildfanquake
See https://codereview.qt-project.org/c/qt/qtbase/+/482392. Github-Pull: #28571 Rebased-From: 848eec09363d1ba8198376eb9654b1a69e3541aa
2023-10-03build, macos: Fix `qt` package build with new Xcode 15 linkerHennadii Stepanov
Github-Pull: #28543 Rebased-From: 79ef528511f0cbbe0a7097ef031f2964aaccfe5c
2023-10-02test: Test loading wallets with conflicts without a chainAndrew Chow
Loading a wallet with conflicts without a chain (e.g. wallet tool and migration) would previously result in an assertion due to -1 being both a valid number of conflict confirmations, and the indicator that that member has not been set yet. Github-Pull: #28542 Rebased-From: 782701ce7d31919dba2241ee43b582d8ae5a2541
2023-10-02wallet: Check last block and conflict height are valid in MarkConflictedAndrew Chow
MarkConflicted calculates conflict confirmations incorrectly when both the last block processed height and the conflicting height are negative (i.e. uninitialized). If either are negative, we should not be marking conflicts and should exit early. Github-Pull: #28542 Rebased-From: 4660fc82a1f5cf6eb6404d5268beef5919581661
2023-10-02ci: Nuke Android APK task, Use credits for tsanMarcoFalke
Github-Pull: #27834 Rebased-From: fa22538e481fa2c4f0b5d6f91166335e60b67fe9
2023-10-02test: ensure old fee_estimate.dat not read on restart and flushedismaelsadeeq
This commit adds tests to ensure that old fee_estimates.dat files are not read and that fee_estimates are periodically flushed to the fee_estimates.dat file. Additionaly it tests the -regtestonly option -acceptstalefeeestimates. Github-Pull: #27622 Rebased-From: d2b39e09bc6a5982fc5cf4b538b7fdb0e3cae576
2023-10-02tx fees, policy: read stale fee estimates with a regtest-only optionismaelsadeeq
If -acceptstalefeeestimates option is passed stale fee estimates can now be read when operating in regtest environments. Additionally, this commit updates all declarations of the CBlockPolicyEstimator class to include a the second constructor variable. Github-Pull: #27622 Rebased-From: cf219f29f3c5b41070eaab9a549a476f01990f3a
2023-10-02tx fees, policy: do not read estimates of old fee_estimates.datismaelsadeeq
Old fee estimates could cause transactions to become stuck in the mempool. This commit prevents the node from using stale estimates from an old file. Github-Pull: #27622 Rebased-From: 3eb241a141defa564c94cb95c5bbaf4c5bd9682e
2023-10-02tx fees, policy: periodically flush fee estimates to fee_estimates.datismaelsadeeq
This reduces chances of having old estimates in fee_estimates.dat. Github-Pull: #27622 Rebased-From: 5b886f2b436eaa8c2b7de58dc4644dc6223040da
2023-10-02test: wallet, verify migration doesn't crash for an invalid scriptfurszy
The migration process must skip any invalid script inside the legacy spkm and all the addressbook records linked to them. These scripts are not being watched by the current wallet, nor should be watched by the migrated one. IsMine() returns ISMINE_NO for them. Github-Pull: #28125 Rebased-From: 8e7e3e614955e60d3bf9e9a481ef8916bf9e22d9
2023-10-02wallet: disallow migration of invalid or not-watched scriptsfurszy
The legacy wallet allowed to import any raw script, without checking if it was valid or not. Appending it to the watch-only set. This causes a crash in the migration process because we are only expecting to find valid scripts inside the legacy spkm. These stored scripts internally map to `ISMINE_NO` (same as if they weren't stored at all..). So we need to check for these special case, and take into account that the legacy spkm could be storing invalid not watched scripts. Which, in code words, means IsMineInner() returning IsMineResult::INVALID for them. Github-Pull: #28125 Rebased-From: 1de8a2372ab39386e689b27d15c4d029be239319
2023-10-02Do not use std::vector = {} to release memoryPieter Wuille
Github-Pull: #28452 Rebased-From: 3fcd7fc7ff563bdc0e2bba66b4cbe72d898c876e
2023-10-02Merge bitcoin/bitcoin#28534: [25.x] qt: 25.1rc1 translations updatefanquake
88b525f93adc713dc69a6af94f3b9fd4474595d4 qt: 25.1rc1 translations update (Hennadii Stepanov) Pull request description: This PR pulls the recent translations from the [Transifex.com](https://www.transifex.com/bitcoin/bitcoin) using the [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) tool. According to our [Release Process docs](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md#before-every-release-candidate), it is supposed to be merged before `v25.1rc1` tagging. Changes in "Chinese (China) (zh_CN)" translation were manually discarded as they have too many removals (it looks like a vandalism). ACKs for top commit: stickies-v: re-ACK 88b525f93adc713dc69a6af94f3b9fd4474595d4 jarolrod: ACK 88b525f93adc713dc69a6af94f3b9fd4474595d4 Tree-SHA512: 007d3e00f92d2450f99d1a84b53dc929fd80b7ebb7939271b67969bf99bb3b0ae7426428f6c63f1dbdfa88b90cb237e7614f7b2239f9773b84424b544bf106af
2023-09-28qt: 25.1rc1 translations updateHennadii Stepanov
2023-09-06Merge bitcoin/bitcoin#28047: [25.x] Further backports for 25.1fanquake
494f1afa5a6eab4f243b19ab1691cd231a855b34 depends: xcb-proto 1.15.2 (fanquake) 513ca0a71173691fb030973612189ac6d064aedd test: wallet, add coverage for watch-only raw sh script migration (furszy) 6d5a510dcdbed7b53f73b8422cea331dd6e9589e descriptor: InferScript, do not return top-level only func as sub descriptor (furszy) 37d9cc657cf5b8126a0faef5237bc57e7453abb8 test: wallet, add coverage for addressbook migration (furszy) 4b16650c10b028485ece7b438b89236a52322b89 wallet: migration bugfix, persist empty labels (furszy) 59b06b696a2fd730ff73bb45e4d1161517bd4562 wallet: migration bugfix, clone 'send' record label to all wallets (furszy) Pull request description: Currently backports: * #28038 * #28067 2nd & 3rd commits. * #28097 ACKs for top commit: stickies-v: ACK 494f1afa5a6eab4f243b19ab1691cd231a855b34 Tree-SHA512: cea134cfa72950d8428191adce79c0881302ca54488f64d3d4a5f9070bb2445d8074e58fa31a482481c4eabb74c852a025f53597540fc646dc20f33b21cf0a06
2023-07-21depends: xcb-proto 1.15.2fanquake
Resolves build failures under Python 3.12, i.e building on rawhide: ```bash make[3]: Nothing to be done for 'install-exec-am'. /usr/bin/mkdir -p '/bitcoin/depends/work/staging/aarch64-unknown-linux-gnu/xcb_proto/1.14.1-4a91ac9dc41/bitcoin/depends/aarch64-unknown-linux-gnu/lib/python3.12/site-packages/xcbgen' /usr/bin/install -c -m 644 __init__.py error.py expr.py align.py matcher.py state.py xtypes.py '/bitcoin/depends/work/staging/aarch64-unknown-linux-gnu/xcb_proto/1.14.1-4a91ac9dc41/bitcoin/depends/aarch64-unknown-linux-gnu/lib/python3.12/site-packages/xcbgen' Traceback (most recent call last): File "<string>", line 2, in <module> ModuleNotFoundError: No module named 'imp' make[3]: *** [Makefile:271: install-pkgpythonPYTHON] Error 1 ``` `imp` was removed in 3.12: https://docs.python.org/3/library/imp.html. Github-Pull: #28097 Rebased-From: 7cb88c8b46723d306b96953a6a60c90a4ab211e3
2023-07-21test: wallet, add coverage for watch-only raw sh script migrationfurszy
Github-Pull: #28067 Rebased-From: dd9633b516d6936ac4e23a40f9b0bea120117d35
2023-07-21descriptor: InferScript, do not return top-level only func as sub descriptorfurszy
e.g. sh(addr(ADDR)) or sh(raw(HEX)) are invalid descriptors. Making sh and wsh top level functions to return addr/raw descriptors when the subscript inference fails. Github-Pull: #28067 Rebased-From: cc781a21800a6ce13875feefd0cb14ab0a84524c
2023-07-07test: wallet, add coverage for addressbook migrationfurszy
Github-Pull: #28038 Rebased-From: 7ecc29a0b7a23d8f5d3c1e6a0dad29b3ad839eb9
2023-07-07wallet: migration bugfix, persist empty labelsfurszy
addressbook records with no associated label could be treated as change. And we don't want that for external addresses. Github-Pull: #28038 Rebased-From: a277f8357ad8b0eb26f33fc36f919d868c06847b
2023-07-07wallet: migration bugfix, clone 'send' record label to all walletsfurszy
Github-Pull: #28038 Rebased-From: 1b64f6498c394a143df196172a14204fe3b8a744
2023-07-04Merge bitcoin/bitcoin#27752: [25.x] Parallel compact block downloadsfanquake
b8ad3220a9068f10c2b3b14b40f211372aeece31 Unconditionally return when compact block status == READ_STATUS_FAILED (Greg Sanders) cdd3de08e301ec309c179796bedfa2be29042128 Add tests for parallel compact block downloads (Greg Sanders) e66a5cbb56db3dffc119e110472ab1176ea3fe99 Support up to 3 parallel compact block txn fetchings (Greg Sanders) d1a93f5d41f7385af28cee3863976fd75f27415b Only request full blocks from the peer we thought had the block in-flight (Greg Sanders) 38e3af9fad1eb8ef7d6a9d812ded412668b650e3 Convert mapBlocksInFlight to a multimap (Greg Sanders) a45159b8e2a198219d7c46baeb647ff5d18436bf Remove nBlocksInFlight (Greg Sanders) 722361e129342078376b6d30b9d80de17ca7ddfb alias BlockDownloadMap for mapBlocksInFlight (Greg Sanders) Pull request description: Backports: * https://github.com/bitcoin/bitcoin/pull/27626 * https://github.com/bitcoin/bitcoin/pull/27743 ACKs for top commit: instagibbs: utACK https://github.com/bitcoin/bitcoin/pull/27752/commits/b8ad3220a9068f10c2b3b14b40f211372aeece31 ajtowns: ACK b8ad3220a9068f10c2b3b14b40f211372aeece31 ; confirmed patches are clean cherry-picks from master, and already tested patches prior to 25.0 release Tree-SHA512: 438901496a5ed927662e62f936e3d1e7ffb727cb235869854983e8e29a68e144eb3bff307d9fc3ae785fb276b67a216b1cce397689252ca49c5d761efc1380ac
2023-06-16Unconditionally return when compact block status == READ_STATUS_FAILEDGreg Sanders
Github-Pull: #27743 Rebased-From: d97269579769effbe6eec2303ea0cc3e396d3e0d
2023-06-16Add tests for parallel compact block downloadsGreg Sanders
Github-Pull: #27626 Rebased-From: d7f359b35e8b1e9acc4d397de262cd9ba9bbcb83
2023-06-16Support up to 3 parallel compact block txn fetchingsGreg Sanders
A single outbound slot is required, so if the first two slots are taken by inbound in-flights, the node will reject additional unless they are coming from outbound. This means in the case where a fast sybil peer is attempting to stall out a node, a single high bandwidth outbound peer can mitigate the attack. Github-Pull: #27626 Rebased-From: 03423f8bd12b95a06a4a9d8377e781625dd38aae
2023-06-16Only request full blocks from the peer we thought had the block in-flightGreg Sanders
This is a change in behavior so that if for some reason we request a block from a peer, we don't allow an unsolicited CMPCT_BLOCK announcement for that same block to cause a request for a full block from the uninvited peer (as some type of request is already outstanding from the original peer) Github-Pull: #27626 Rebased-From: 13f9b20b4cb2f3f26e81184a77e9cf1f626d4f57
2023-06-16Convert mapBlocksInFlight to a multimapGreg Sanders
Github-Pull: #27626 Rebased-From: cce96182ba2457335868c65dc16b081c3dee32ee
2023-06-16Remove nBlocksInFlightGreg Sanders
Github-Pull: #27626 Rebased-From: a90595478dcf4e443cd15bbb822d485dc42bdb18
2023-06-16alias BlockDownloadMap for mapBlocksInFlightGreg Sanders
Github-Pull: #27626 Rebased-From: 86cff8bf18f2c6344a25ad8b81cf366201a73c36
2023-06-16Merge bitcoin/bitcoin#27887: [25.x] Backportsfanquake
6233049709f339ad4e01860872ecb6174006f5be ci: Switch to `amd64` container in "ARM" task (Hennadii Stepanov) d845a3ed2186528c382639e79fe8c61dff8f4723 test: add coverage for `/deploymentinfo` passing a blockhash (brunoerg) 72ead8699fadee4019d324763c05742b7d8880a9 rest: bugfix, fix crash error when calling `/deploymentinfo` (brunoerg) 6f7a0ae58b843290ae2006dfd9aa1e8fd86053a5 ci: Use podman stop over podman kill (MarcoFalke) de56daab4178460a0755d7e258862f3bba940c13 ci: Use podman for persistent workers (MarcoFalke) 71f626ef2cde995927784d370451dd334a022069 ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUN (MarcoFalke) Pull request description: Currently backports: * https://github.com/bitcoin/bitcoin/pull/27777 * https://github.com/bitcoin/bitcoin/pull/27844 * https://github.com/bitcoin/bitcoin/pull/27853 * https://github.com/bitcoin/bitcoin/pull/27886 Effectively also backports: https://github.com/bitcoin/bitcoin/pull/27562. ACKs for top commit: stickies-v: ACK 6233049709f339ad4e01860872ecb6174006f5be Tree-SHA512: d0f3d5c4cd0cf9792f3270078b49ad6661e28e7a883f91e5981e8cfe95d01c6e415762ee2e3a5fea17d198299989a8b5412961c2cc788cef975b2ee45d84550c
2023-06-15ci: Switch to `amd64` container in "ARM" taskHennadii Stepanov
Tee `arm_container` does not support 32-bit mode anymore. See: https://github.com/bitcoin/bitcoin/issues/27879 Github-Pull: #27886 Rebased-From: 016fe6d8280768917081894dfca233c2f06e78d9
2023-06-15test: add coverage for `/deploymentinfo` passing a blockhashbrunoerg
Github-Pull: #27853 Rebased-From: 7d452d826a7056411077b870efc3872bb2fa45e4
2023-06-15rest: bugfix, fix crash error when calling `/deploymentinfo`brunoerg
Github-Pull: #27853 Rebased-From: ce887eaf4917c337b21aa2e7811804ce003d36be
2023-06-15ci: Use podman stop over podman killMarcoFalke
This should avoid a race where the kill is not done when spinning up the new container. podman stop waits 10 seconds by default. Github-Pull: #27844 Rebased-From: faaa62754e84417baa917f20db379db78146687d
2023-06-15ci: Use podman for persistent workersMarcoFalke
Github-Pull: #27777 Rebased-From: fa123077bc3f39aa0969d883e2d799a054cd4543
2023-06-15ci: Prune dangling images on RESTART_CI_DOCKER_BEFORE_RUNMarcoFalke
Github-Pull: #27777 Rebased-From: fa9c65a74cf18e9c75cd3472112d5197532ac2f2
2023-06-02Merge bitcoin/bitcoin#27775: [25.x] build: disable boost multi index safe modefanquake
9dc58484928693a42e4163d8eaef3f8b47f1d3d8 build: disable boost multi index safe mode (willcl-ark) Pull request description: Backports https://github.com/bitcoin/bitcoin/pull/27724 to `25.x`. ACKs for top commit: stickies-v: ACK 9dc584849 Tree-SHA512: 5f156424bbd86caac6ace933b807cd62a21067bcfa7f572d6efeff2622ba0b15401038a3b06fe00d84cf62b5d9b8a9e101650d145683a21fa890c18a9c2bd4b6
2023-05-29build: disable boost multi index safe modewillcl-ark
Disable boost multi index safe mode by default when configuring with --enable-debug. This option can cause transactions to take a long time to be accepted into the mempool under certain conditions; iterator destruction takes O(n) time vs O(1) as they are stored in a singly linked list. See 27586 for more information. Re-enable it on the CI builds which previously had it enabled. Re-enable it on the msan fuzz target so that we have fuzz tasks testing with it enabeld and disabled in this repo. Github-Pull: #27724 Rebased-From: 59c89447499bd9d6202269879555b8bc37373aa2
2023-05-25Merge bitcoin/bitcoin#27750: [25.x] rpc: Fix invalid bech32 handlingfanquake
796e1145a93f4584936528aa27c4f6b2016263d9 rpc: Fix invalid bech32 handling (MarcoFalke) Pull request description: Backports https://github.com/bitcoin/bitcoin/pull/27727 to 25.x. ACKs for top commit: MarcoFalke: clean cherry-pick ACK 796e1145a93f4584936528aa27c4f6b2016263d9 💼 Tree-SHA512: 2dd2064546b422160ddcc2c544ae18ef24179d31289bdedfa2e34fc0edaaec71d9b3f2a19a81bfce3f4d90bbd59daccc96cda8a3df42b5a453a9a240f48114bf
2023-05-25rpc: Fix invalid bech32 handlingMarcoFalke
Github-Pull: #27727 Rebased-From: eeee55f9288740747b6e8d806ce8177fd92635cf
2023-05-25Merge bitcoin/bitcoin#27686: 25.0 Final Changesv25.0fanquake
6ee3881551f2cd411c4e4d8b0ccedf0f0416d8c2 doc: update release notes for 25.0 (fanquake) 51195ea570a84b4eec37936465c0d880aa663ab9 doc: update manual pages for 25.0 (fanquake) 8f7db443e9c475225de234b7ab7b649f1305a844 build: bump version to v25.0 final (fanquake) Pull request description: Final changes for v25.0. PR for bitcoincore.org is here: https://github.com/bitcoin-core/bitcoincore.org/pull/970. ACKs for top commit: dergoegge: ACK 6ee3881551f2cd411c4e4d8b0ccedf0f0416d8c2 Tree-SHA512: 7325e7d2747fbbeaa7efa9ceebfef56121d6866441fc4f3f9e95e67ab8ad7d4e518db4f545c214f1b677eaea84f28c1ea4f790aaf993a20904c76c3592406fd6
2023-05-24doc: update release notes for 25.0fanquake
2023-05-19doc: update manual pages for 25.0fanquake
2023-05-19build: bump version to v25.0 finalfanquake
2023-05-11Merge bitcoin/bitcoin#27613: [25.0] Backports for rc2v25.0rc2fanquake
49a2d66f4e3a01aa697c1b9e5994fd8300953951 doc: update manual pages for v25.0rc2 (fanquake) 3ea4a115c213fd67c80a0ad2301b170b805303c9 build: bump version to v25.0rc2 (fanquake) 7ef71e30c9bc108e29dec008490db5a0fa051629 net_processing: Boost inv trickle rate (Anthony Towns) 1adbcd302fe3b937e9078fa0e21b3252a0e642de txmempool: have CompareDepthAndScore sort missing txs first (Anthony Towns) 9a23079df33d9d728bf7435fc1d07d0f414f7429 p2p: Avoid prematurely clearing download state for other peers (Suhas Daftuar) Pull request description: Backports for rc2. Currently: * https://github.com/bitcoin/bitcoin/pull/27608 * https://github.com/bitcoin/bitcoin/pull/27610 ACKs for top commit: achow101: ACK 49a2d66f4e3a01aa697c1b9e5994fd8300953951 Tree-SHA512: a1a7678e16136636ec8a232d12630529639bae3b577769b5a5fd204dda234a5e588f3d4dfebf4d7abe7111d13cc0714f9ccdea0a858fe821a7146e6a697308d3
2023-05-11doc: update manual pages for v25.0rc2fanquake
2023-05-11build: bump version to v25.0rc2fanquake
2023-05-11net_processing: Boost inv trickle rateAnthony Towns
If transactions are being added to the mempool at a rate faster than 7tx/s (INVENTORY_BROADCAST_PER_SECOND) then peers' inventory_to_send queue can become relatively large. If this happens, increase the number of txids we include in an INV message (normally capped at 35) by 5 for each 1000 txids in the queue. This will tend to clear a temporary excess out reasonably quickly; an excess of 4000 invs to send will be cleared down to 1000 in about 30 minutes, while an excess of 20000 invs would be cleared down to 1000 in about 60 minutes. Github-Pull: #27610 Rebased-From: 5b3406094f2679dfb3763de4414257268565b943
2023-05-11txmempool: have CompareDepthAndScore sort missing txs firstAnthony Towns
We use CompareDepthAndScore to choose an order of txs to inv. Rather than sorting txs that have been evicted from the mempool at the end of the list, sort them at the beginning so they are removed from the queue immediately. Github-Pull: #27610 Rebased-From: 228e9201efb5574b1b96bb924de1d2e8dd1317f3