aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-07-31Merge bitcoin/bitcoin#30452: guix: bump time-machine to ↵merge-script
efc26826400762207cde9f23802cfe75a737963c 6ee000e56f7ceba82791bc9f6fca59328a2eb0ad guix: bump time-machine to efc26826400762207cde9f23802cfe75a737963c (fanquake) cbeb2c20e1f8076a9789436816ccb72b59a471c3 guix: patch /gnu/store paths out of winpthreads (fanquake) Pull request description: Needed for https://github.com/bitcoin/bitcoin/issues/30210. This doesn't switch runtimes, because upstream is still configured to use the old runtime. See: https://git.savannah.gnu.org/cgit/guix.git/commit/?id=17188be0f723e00377b21b767f5447d7938a116e. git-mimimal `2.45.1` -> `2.45.2` Kernel Headers `6.1.92` -> `6.1.100` LLVM `18.1.6` -> `18.1.8` mingw-w64 `11.0.1` -> `12.0.0` NSIS `3.09` -> `3.10` patch `2.7.6` -> `2.7.6-0.f144b35` ACKs for top commit: TheCharlatan: ACK 6ee000e56f7ceba82791bc9f6fca59328a2eb0ad Tree-SHA512: f4f99d16dd8cab5b2b7c5d82111af86de20e1669cc3b4054d72ab4a67b2956757df170f0df28c96d18653c1c9d2ebdd0ecc441005726a20cd963d98513b4a851
2024-07-31test: Make leaf_script mandatory when scriptpath is set in TaprootSignatureMsgMarcoFalke
This removes the default value, because there should not be a use-case to fall back to a an empty leaf_script by default. (If there was, it could trivially be added back)
2024-07-30test: fix constructor of msg_txMartin Zumsande
In python, if the default value is a mutable object (here: a class) its shared over all instances, so that one instance being changed would affect others to be changed as well. This was likely the source of various intermittent bugs in the functional tests.
2024-07-30doc: mention optional dependencies (qrencode, zmq) in OpenBSD build docsSebastian Falbesoner
The wording is taken from the FreeBSD build docs. See the following links for the package names: - https://openbsd.app/?search=libqrencode - https://openbsd.app/?search=zeromq Thanks to hebasto for noticing that this was missing.
2024-07-30test: add P2A ProduceSignature coverageGreg Sanders
2024-07-30Add release note for P2A output featureGreg Sanders
2024-07-30test: add P2A coverage for decodescriptGreg Sanders
2024-07-30test: Add anchor mempool acceptance testGreg Sanders
2024-07-30policy: stop 3rd party wtxid malleability of anchor spendGreg Sanders
2024-07-30policy: make anchor spend standardGreg Sanders
Only standard when non-nested.
2024-07-30policy: Add OP_1 <0x4e73> as a standard output typeGreg Sanders
These outputs are called anchors, and allow key-less anchor spends which are vsize-minimized versus keyed anchors which require larger outputs when creating and inputs when spending.
2024-07-30Merge bitcoin-core/gui#505: Hide peers detailsHennadii Stepanov
41a1a8615dd48fdd9811b9824c49ceb934c6375e gui: Hide peers details (@RandyMcMillan) Pull request description: Add a close (X) button to the Peers Detail panel. Reuse the same icon used in the Console Tab. The close button deselects the peer highlighted in the PeerTableView and hides the detail panel. fixes #485 Co-authored-by: @w0xlt <w0xlt@users.noreply.github.com> ACKs for top commit: pablomartin4btc: re ACK 41a1a8615dd48fdd9811b9824c49ceb934c6375e hebasto: ACK 41a1a8615dd48fdd9811b9824c49ceb934c6375e, tested on Ubuntu 23.10. Tree-SHA512: fc692891eec61bd1e6878f2433b478de3c69bf0b3ce3471f2faafda6f63d371e2cc125ae8290fd2ac3e4d8659031b79d85665318cfc5a9481e967ef99d245f9c
2024-07-30kernel: Only setup kernel context globals onceTheCharlatan
The globals setup by the function calls when creating a new kernel context only need to be setup once. Calling them multiple times may be wasteful and has no apparent benefit. Besides kernel users potentially creating multiple contexts, this change may also be useful for tests creating multiple setups. Co-authored-by: stickies-v <stickies-v@protonmail.com>
2024-07-30qt: Update translation source fileHennadii Stepanov
The diff is generated by executing `make -C src translate`.
2024-07-30qt: Bump Transifex slug for 28.xHennadii Stepanov
2024-07-30qt: Pull recent translations from TransifexHennadii Stepanov
The diff is generated by executing the `update-translations.py` script. Removals of translation files have been discarded.
2024-07-30test: fix intermittent failures in feature_proxy.pyMartin Zumsande
If addnode connections are made with v2transport and the peer immediately disconnects us, reconnections with v1 are scheduled. This could interfere with later checks depending on timing. Avoid this by using `v2transport=False` in the addnode rpc - this test isn't about the message layer anyway, so running it with v2 would add no value.
2024-07-30doc: Update issue reference for libbitcoinkernelDaniela Brozzoni
The discussion of libbitcoinkernel has moved from #24303 to #27587, this commit updates the documentation accordingly.
2024-07-30Merge bitcoin/bitcoin#30451: depends: remove Darwin ENV unsettingmerge-script
bda537f7c484d61a55a72c5856f2d4420664db8f depends: remove ENV unsetting for darwin (fanquake) 1807760f094b600fdebe4ebd0018e4fd5d506ce9 guix: improve ENV unsetting for macOS (fanquake) 0b2aeee21d24645394d70086e992408948952952 depends: patch explicit -lm usage out of Qt tools (fanquake) Pull request description: Now that we use the native compiler, and have fixed Qt, and these vars are (almost) unset in Guix, we can remove the unsetting from our compiler command here. I couldn't manage to make a darwin-clang-cross only exclusion of `-lm` work properly for Qt, so opted for just removing the explicit link entirely. I do not think this should have any other unwanted side-effects. Fixes #21552. ACKs for top commit: TheCharlatan: ACK bda537f7c484d61a55a72c5856f2d4420664db8f Tree-SHA512: 97a2d85de7d4b1d65717ecb521399ecba5f53863b8aef21af62ede5ceee59ee1a9392663da3a3852cad1b6d8b420dd4b0b5f0eea38d30a81785d8b2718620b5f
2024-07-29rpc: fix maybe-uninitialized compile warning in getchaintxstatsMichael Dietz
This resolves the compiler warning about potential uninitialized use of window_tx_count introduced in fa2dada.
2024-07-29Merge bitcoin/bitcoin#30542: ci: enable berkley db on test each commit jobglozow
93ee17c1d610f811e86fcf17db00df24f7de8c1b ci: enable berkley db on test each commit job (Max Edwards) Pull request description: As the "test each commit" job installs `libdb++-dev` it looks like it was intended that it would compile with Berkeley DB support. This PR enables it. CI run log with the change: https://github.com/m3dwards/bitcoin/actions/runs/10142921800/job/28043223197?pr=1 ACKs for top commit: maflcko: ACK 93ee17c1d610f811e86fcf17db00df24f7de8c1b danielabrozzoni: ACK 93ee17c1d610f811e86fcf17db00df24f7de8c1b hebasto: ACK 93ee17c1d610f811e86fcf17db00df24f7de8c1b. Tree-SHA512: b6c2a7cea104a84221814fd121fd4fef2d7c0c3717f8c3fe35ec3c42e850e72085e9e6407b61ca1f9e86571346fa33a2cdd924210b26155956835011775320b2
2024-07-29ci: enable berkley db on test each commit jobMax Edwards
2024-07-29Merge bitcoin-core/gui#828: Rendering an amp characters in the wallet name ↵Hennadii Stepanov
for QMenu 8233ee41ab9648cd0c3bd78bc2a8d692a54d9ea0 gui: correct replacement of amp character in the wallet name for QMenu (Konstantin Akimov) Pull request description: In the current implementation Qt uses '&' as a signal to underscore letter and use it as a hot-key, which is not expected for case of wallet name. The [comment in the code](https://github.com/bitcoin/bitcoin/pull/30446/files#diff-2ecf8cbf369cf3d2f3d2b1cf5cfe4c1a647d63e11e2885d2fd0ac11fb5f7a804L402-L404) regarding the use of an "&" on a menu item is misleading. If a wallet name has an "&" in it, it is not supposed to be interpreted as a hot-key, but it should be shown as it is without replacing it to an underscore. See screenshots before & after: ![Screenshot_20240713_122454](https://github.com/user-attachments/assets/e36d6e4c-d872-4b4c-b55e-bcfde9881281) ![Screenshot_20240713_131304](https://github.com/user-attachments/assets/9484687d-0aea-4061-a461-5d187762a4b4) ACKs for top commit: hebasto: re-ACK 8233ee41ab9648cd0c3bd78bc2a8d692a54d9ea0. pablomartin4btc: tACK 8233ee41ab9648cd0c3bd78bc2a8d692a54d9ea0 BrandonOdiwuor: ACK 8233ee41ab9648cd0c3bd78bc2a8d692a54d9ea0. Tested on Ubuntu 22.04 using Qt version 5.15.3 Tree-SHA512: 918c2c05555d203a8b203794c138651d4a1691a05a858631d5a4664b78e150402d1ae4a02ee5181f63a5b22a09badca0a4ea14a626f45f8cbe557226c308b8c5
2024-07-29Merge bitcoin/bitcoin#30534: guix: move bison from global scope, to Linuxmerge-script
e6df3485ed2302712b7cf03bdb7e76aea197a1ea guix: move bison from global scope, to Linux (fanquake) Pull request description: This is only needed for the Qt build (libxkbcommon), on Linux, so does not need to be built/present for the macOS or Windows builds. ACKs for top commit: hebasto: ACK e6df3485ed2302712b7cf03bdb7e76aea197a1ea. TheCharlatan: ACK e6df3485ed2302712b7cf03bdb7e76aea197a1ea Tree-SHA512: b66111e398b4fce88f912adfd808d537e2d85e1f0078befd264bb700b201ca1bbe322810e80a212e0023657e9e3693a106761c43743d66aabd16e2afe7f599e6
2024-07-28Merge bitcoin/bitcoin#30515: rpc: add utxo's blockhash and number of ↵merge-script
confirmations to scantxoutset output 17845e7f219e2281cd7a51d2cfe67b22eb40c4ba rpc: add utxo's blockhash and number of confirmations to scantxoutset output (Luis Schwab) Pull request description: This PR resolves #30478 by adding two fields to the `scantxoutset` RPC: - blockhash: the blockhash that an UTXO was created - confirmations: the number of confirmations an UTXO has relative to the chaintip. The rationale for the first field is that a blockhash is a much more reliable identifier than the height: > When using the scantxoutset RPC, the current behaviour is to show the block height of the UTXO. This is not optimal, as block height is ambiguous, especially in the case of a block reorganization happening at the same instant of the query. In this case, an UTXO that does not exist would be assumed to exist, unless the chain's tip hash is recorded before the scan, and make sure it still exists after, as per https://github.com/bitcoindevkit/bdk/issues/895#issuecomment-1475766797 comment by evanlinjin. The second one was suggested by maflcko, and I agree it's useful for human users: > While touching this, another thing to add could be the number of confirmations? I understand that this wouldn't help machine consumers of the interface, but human callers may find it useful? This will yield an RPC output like so: ```diff bitcoin-cli scantxoutset start "[\"addr(bc1q5q9344vdyjkcgv79ve3tldz4jmx4lf7knmnx6r)\"]" { "success": true, "txouts": 185259116, "height": 853622, "bestblock": "00000000000000000002e97d9be8f0ddf31829cf873061b938c10b0f80f708b2", "unspents": [ { "txid": "fae435084345fe26e464994aebc6544875bca0b897bf4ce52a65901ae28ace92", "vout": 0, "scriptPubKey": "0014a00b1ad58d24ad8433c56662bfb45596cd5fa7d6", "desc": "addr(bc1q5q9344vdyjkcgv79ve3tldz4jmx4lf7knmnx6r)#smk4xmt7", "amount": 0.00091190, "coinbase": false, "height": 852741, + "blockhash": "00000000000000000002eefe7e7db44d5619c3dace4c65f3fdcd2913d4945c13", + "confirmations": 882 } ], "total_amount": 0.00091190 } ``` ACKs for top commit: sipa: utACK 17845e7f219e2281cd7a51d2cfe67b22eb40c4ba Eunovo: ACK https://github.com/bitcoin/bitcoin/pull/30515/commits/17845e7f219e2281cd7a51d2cfe67b22eb40c4ba tdb3: ACK 17845e7f219e2281cd7a51d2cfe67b22eb40c4ba Tree-SHA512: 02366d0004e5d547522115ef0efe6794a35978db53dda12c675cfae38197bf43f0bf89ca99a3d79e3d2cff95186015fe1ab764abb8ab82bda440ae9302ad973b
2024-07-27rpc: add utxo's blockhash and number of confirmations to scantxoutset outputLuis Schwab
2024-07-26guix: move bison from global scope, to Linuxfanquake
This is only needed for the Qt build, on Linux, so does not need to be built/present for the macOS or Windows builds.
2024-07-26mingw: Document mode wbx workaroundMarcoFalke
2024-07-26Add -blocksxor boolean optionMarcoFalke
2024-07-26rpc: Return precise loadtxoutset error messagesMarcoFalke
The error messages should never happen in normal operation. However, if they do, they are helpful to return to the user to debug the issue. For example, to notice a truncated file.
2024-07-26Merge bitcoin/bitcoin#30386: Early logging improvementsRyan Ofsky
b4dd7ab43e8cfc2c171f67588e4e1ec2705393c2 logging: use std::string_view (Anthony Towns) 558df5c733d31456faf856d44f7037f41981d797 logging: Apply formatting to early log messages (Anthony Towns) 6cf9b344409efcc41a2b34f87100d25e1d2486af logging: Limit early logging buffer (Anthony Towns) 0b1960f1b29cfe5209ac68102c8643fc9553f247 logging: Add DisableLogging() (Anthony Towns) 6bbc2dd6c50f09ff1e70423dc29a404b570f5b69 logging: Add thread safety annotations (Anthony Towns) Pull request description: In order to cope gracefully with `Log*()` calls that are invoked prior to logging being fully configured (indicated by calling `StartLogging()` we buffer early log messages in `m_msgs_before_open`. This has a couple of minor issues: * if there are many such log messages the buffer can become arbitrarily large; this can be a problem for users of libkernel that might not wish to worry about logging at all, and as a result never invoke `StartLogging()` * early log messages are formatted before the formatting options are configured, leading to inconsistent output Fix those issues by buffering the log info prior to formatting it, and setting a limit on the size of the buffer (dropping the oldest lines, and reporting the number of lines skipped). Also adds some thread safety annotations, and the ability to invoke `LogInstance().DisableLogging()` if you want to disable logging entirely, for a minor efficiency improvement. ACKs for top commit: maflcko: re-ACK b4dd7ab43e8cfc2c171f67588e4e1ec2705393c2 🕴 ryanofsky: Code review ACK b4dd7ab43e8cfc2c171f67588e4e1ec2705393c2 TheCharlatan: Nice, ACK b4dd7ab43e8cfc2c171f67588e4e1ec2705393c2 Tree-SHA512: 966660181276939225a9f776de6ee0665e44577d2ee9cc76b06c8937297217482e6e426bdc5772d1ce533a0ba093a8556b6a50857d4c876ad8923e432a200440
2024-07-26Merge bitcoin/bitcoin#30447: fuzz: Deglobalize signature cache in sigcache testRyan Ofsky
fae0db0360466aed536f4ce96d357cf579100080 fuzz: Deglobalize signature cache in sigcache test (TheCharlatan) Pull request description: The body of the fuzz test should ideally be a pure function. If data is persisted in the cache over many iterations, and there is a crash, reproducing it from the input might be difficult. Solve this by getting rid of the global state. This is a follow-up from #30425. ACKs for top commit: dergoegge: utACK fae0db0360466aed536f4ce96d357cf579100080 ryanofsky: Code review ACK fae0db0360466aed536f4ce96d357cf579100080 Tree-SHA512: 93dcbb9f2497f13856970469042d6870f04de10fe206827a8db1aae7fc8f3ac7fd900bee7945b5fe4c9e33883268dabb15be7e7bc91cf353ffc0d118cd60e97d
2024-07-26Merge bitcoin/bitcoin#30126: cluster mempool: cluster linearization algorithmglozow
647fa37cdbadbeebba147ca6b24e138559cffaaf bench: add cluster linearization improvement benchmark (Pieter Wuille) 28549791b3802fc078128f552c6f53ac3de893a6 clusterlin: permit passing in existing linearization to Linearize (Pieter Wuille) 97d98718b005adc0bdf513d724874601d8aa13ad clusterlin: add LinearizationChunking class (Pieter Wuille) d5918dc3c6d9480c8a5e295db0f4d4892b0138f6 clusterlin: randomize the SearchCandidateFinder search order (Pieter Wuille) 991ff9a9a4f2171ab99cb0ca1d70ebbc0db9d388 clusterlin: use bounded BFS exploration (optimization) (Pieter Wuille) d9b235e7d288814e8ee248b68d91eb68866b32bd bench: Candidate finding and linearization benchmarks (Pieter Wuille) 46aad9b09986feb1d54fc4229a0d224da94fb80a clusterlin: add Linearize function (Pieter Wuille) ee0ddfe4f626bfb4b58927db89d317cb3531813f clusterlin: add chunking algorithm (Pieter Wuille) 2a41f151afb82466486402e250327e22319c754e clusterlin: add SearchCandidateFinder class (Pieter Wuille) 4828079db327bf2aeaed744843a415d1654e8796 clusterlin: add AncestorCandidateFinder class (Pieter Wuille) 58f7e01db4bad6d958d44f2bcdfd9df9e22931a4 tests: framework for testing DepGraph class (Pieter Wuille) a6e07e769a1af652a14e533f6d3558ccdefb1de5 clusterlin: introduce cluster_linearize.h with Cluster and DepGraph types (Pieter Wuille) Pull request description: Part of cluster mempool: #30289 This introduces low-level cluster linearization code, including tests and some benchmarks. It is currently not hooked up to anything. Ultimately, what this PR adds is a function `Linearize` which operates on instances of `DepGraph` (instances of which represent pre-processed transaction clusters) to produce and/or improve linearizations for that cluster. To provide assurance, the code heavily relies on fuzz tests. A novel approach is used here, where the fuzz input is parsed using the serialization.h framework rather than `FuzzedDataProvider`, with a custom serializer/deserializer for `DepGraph` objects. By including serialization, it's possible to ascertain that the format can represent every relevant cluster, as well as potentially permitting the construction of ad-hoc fuzz inputs from clusters (not included in this PR, but used during development). --- The `Linearize(depgraph, iteration_limit, rng_seed, old_linearization)` function is an implementation of the (single) LIMO algorithm, with the $S$ in every iteration found as the best out of (a) the best remaining ancestor set and (b) randomized computationally-bounded search. It incrementally builds up a linearization by finding good topologically-valid subsets to move to the front, in such a way that the resulting linearization has a diagram that is at least as good as the `old_linearization` passed in (if any). * Despite using both best ancestor set and search, this is not Double LIMO, as no intersections between these are involved; just the best of the two. * The `iteration_limit` and `rng_seed` only control the (b) randomized search. Even with 0 iterations, the result will be as good as the old linearization, and the included sets at every point will have a feerate at least as high as the best remaining ancestor set at that point. The search algorithm used in the (b) step is very basic, and largely matches Section 2.1 of [How to Linearize your Cluster.](https://delvingbitcoin.org/t/how-to-linearize-your-cluster/303#h-21-searching-6). See #30286 for optimizations to make it more efficient. For background and references, see [Introduction to cluster linearization](https://delvingbitcoin.org/t/introduction-to-cluster-linearization/1032). ACKs for top commit: instagibbs: reACK 647fa37cdbadbeebba147ca6b24e138559cffaaf glozow: reACK 647fa37cdba, both code and mermaid diagram look correct to me sdaftuar: ACK 647fa37cdbadbeebba147ca6b24e138559cffaaf Tree-SHA512: 52c8aa3d1d91190bf1265a947d2712e9d12f745313ffceef6ae7e3ff517d01d8b3b9b4ce6066298d59751c4ba90555a3c0171229868ba50100f588a2aa6a486d
2024-07-26Merge bitcoin/bitcoin#30076: test: fix MiniWallet script-path spend (missing ↵glozow
parity bit in leaf version) e4b0dabb2115dc74e9c5794ddca3822cd8301c72 test: add functional test for tagged MiniWallet instances (Sebastian Falbesoner) 3162c917e93fde4bea6e4627bb0c3c7cdc37386c test: fix MiniWallet internal key derivation for tagged instances (Sebastian Falbesoner) c9f7364ab2bccad56a4473dbd18d9c80eaf651d4 test: fix MiniWallet script-path spend (missing parity bit in leaf version) (Sebastian Falbesoner) 7774c314fb3c342eb5d48015b1c1b8b66d3d87db test: refactor: return TaprootInfo from P2TR address creation routine (Sebastian Falbesoner) Pull request description: This PR fixes a dormant bug in MiniWallet that exists since support for P2TR was initially added in #23371 (see commit 041abfebe49ae5e3e882c00cc5caea1365a27a49). In the course of spending the output, the leaf version byte of the control block in the witness stack doesn't set the parity bit, i.e. we were so far just lucky that the used combinations of relevant data (internal pubkey, leaf script / version) didn't result in a tweaked pubkey with odd y-parity. If that was the case, we'd get the following validation error: `mandatory-script-verify-flag-failed (Witness program hash mismatch) (-26)` Since MiniWallets can now optionally be tagged (#29939), resulting in different internal pubkeys, the issue is more prevalent now. Fix it by passing the parity bit, as specified in BIP341. Can be tested with the following patch (fails on master, succeeds on PR): ```diff diff --git a/test/functional/test_framework/mempool_util.py b/test/functional/test_framework/mempool_util.py index 148cc935ed..7ebe858681 100644 --- a/test/functional/test_framework/mempool_util.py +++ b/test/functional/test_framework/mempool_util.py @@ -42,7 +42,7 @@ def fill_mempool(test_framework, node): # Generate UTXOs to flood the mempool # 1 to create a tx initially that will be evicted from the mempool later # 75 transactions each with a fee rate higher than the previous one - ephemeral_miniwallet = MiniWallet(node, tag_name="fill_mempool_ephemeral_wallet") + ephemeral_miniwallet = MiniWallet(node, tag_name="fill_mempool_ephemeral_wallet3") test_framework.generate(ephemeral_miniwallet, 1 + num_of_batches * tx_batch_size) # Mine enough blocks so that the UTXOs are allowed to be spent ``` In addition to that, another bug is fixed where the internal key derivation failed, as not every pseudorandom hash results in a valid x-only pubkey. Fix this by treating the hash result as private key and calculate the x-only public key out of that, to be used then as internal key. Fixes #30528. ACKs for top commit: glozow: ACK e4b0dabb2115dc74e9c5794ddca3822cd8301c72 rkrux: reACK [e4b0dab](https://github.com/bitcoin/bitcoin/pull/30076/commits/e4b0dabb2115dc74e9c5794ddca3822cd8301c72) hodlinator: ACK e4b0dabb2115dc74e9c5794ddca3822cd8301c72 Tree-SHA512: a16f33f76bcb1012857cc3129438a9f6badf28aa2b1d25696da0d385ba5866b46de0f1f93ba777ed9263fe6952f98d7d9c44ea0c0170a2bcc86cbef90bf6ac58
2024-07-26Return XOR AutoFile from BlockManager::Open*File()MarcoFalke
This is a refactor, because the XOR key is empty.
2024-07-26guix: bump time-machine to efc26826400762207cde9f23802cfe75a737963cfanquake
Needed for 30210. This doesn't switch runtimes, because upstream is still configured to use the old runtime. See: https://git.savannah.gnu.org/cgit/guix.git/commit/?id=17188be0f723e00377b21b767f5447d7938a116e. git-mimimal 2.45.1 -> 2.45.2 Kernel Headers 6.1.92 -> 6.1.100 LLVM 18.1.6 -> 18.1.8 mingw-w64 11.0.1 -> 12.0.0 NSIS 3.09 -> 3.10 patch 2.7.6 -> 2.7.6-0.f144b35
2024-07-26guix: patch /gnu/store paths out of winpthreadsfanquake
At the same time, align the docs for all patches that do the same thing.
2024-07-26Merge bitcoin/bitcoin#30517: refactor: Add FlatFileSeq member variables in ↵merge-script
BlockManager 7aa8994c6fceae5cf8fb7e661371cdb19d2cb482 refactor: Add FlatFileSeq member variables in BlockManager (TheCharlatan) Pull request description: Instead of constructing a new class every time a file operation is done, construct them once for each of the undo and block file when a new BlockManager is created. In future, this might make it easier to introduce an abstract block store. Historically, this was not easily possible prior to #27125. ACKs for top commit: danielabrozzoni: ACK 7aa8994c6fceae5cf8fb7e661371cdb19d2cb482 tdb3: ACK 7aa8994c6fceae5cf8fb7e661371cdb19d2cb482 stickies-v: ACK 7aa8994c6fceae5cf8fb7e661371cdb19d2cb482 brunoerg: utACK 7aa8994c6fceae5cf8fb7e661371cdb19d2cb482 Tree-SHA512: 7c181968c270956c90fa0f3687562239912a973b6a35ddbf49fc58733247ea9d986303cbf6f8fc16e8c2d9bf4505e866aed37f030a8c9be72e95bf3752902aa6
2024-07-26Merge bitcoin/bitcoin#26950: cleanse: switch to SecureZeroMemory for Windows ↵merge-script
cross-compile c399c80a09a393d38368a44ef04753e9f62350f0 cleanse: Use SecureZeroMemory for mingw-w64 (release) builds (fanquake) Pull request description: This PR switches our Windows release builds to use the [`SecureZeroMemory()`](https://learn.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa366877(v=vs.85)) provided by mingw-w64. ACKs for top commit: sipa: utACK c399c80a09a393d38368a44ef04753e9f62350f0 TheCharlatan: ACK c399c80a09a393d38368a44ef04753e9f62350f0 Tree-SHA512: dbb20b16c85061d2f9408a3cf69cecc16765f8f61b25a1707146767b664c7ad0caf36975380814ef8e7c49a30199daebac6d5d7a3585354d1adac8e9770199c6
2024-07-25doc: rpc: Use "output script" consistently (2/2)MarcoFalke
2024-07-25bench: add cluster linearization improvement benchmarkPieter Wuille
2024-07-25clusterlin: permit passing in existing linearization to LinearizePieter Wuille
This implements the LIMO algorithm for linearizing by improving an existing linearization. See https://delvingbitcoin.org/t/limo-combining-the-best-parts-of-linearization-search-and-merging for details.
2024-07-25clusterlin: add LinearizationChunking classPieter Wuille
It encapsulates a given linearization in chunked form, permitting arbitrary subsets of transactions to be removed from the linearization. Its purpose is adding the Intersect function, which is a crucial operation that will be used in a further commit to make Linearize improve existing linearizations.
2024-07-25clusterlin: randomize the SearchCandidateFinder search orderPieter Wuille
To make search non-deterministic, change the BFS logic from always picking the first queue item to randomly picking the first or second queue item.
2024-07-25clusterlin: use bounded BFS exploration (optimization)Pieter Wuille
Switch to BFS exploration of the search tree in SearchCandidateFinder instead of DFS exploration. This appears to behave better for real world clusters. As BFS has the downside of needing far larger search queues, switch back to DFS temporarily when the queue grows too large.
2024-07-25bench: Candidate finding and linearization benchmarksPieter Wuille
Add benchmarks for known bad graphs for the purpose of search (as an upper bound on work per search iterations) and ancestor sorting (as an upper bound on linearization work with no search iterations).
2024-07-25clusterlin: add Linearize functionPieter Wuille
This adds a first version of the overall linearization interface, which given a DepGraph constructs a good linearization, by incrementally including good candidate sets (found using AncestorCandidateFinder and SearchCandidateFinder).
2024-07-25clusterlin: add chunking algorithmPieter Wuille
A fuzz test is added which verifies various of its expected properties, including correctness
2024-07-25clusterlin: add SearchCandidateFinder classPieter Wuille
Similar to AncestorCandidateFinder, this encapsulates the state needed for finding good candidate sets using a search algorithm.
2024-07-25clusterlin: add AncestorCandidateFinder classPieter Wuille
This is a class that encapsulates precomputed ancestor set feerates, and presents an interface for getting the best remaining ancestor set.