forked from bitcoin/bitcoin
-
Notifications
You must be signed in to change notification settings - Fork 4
Andy19a #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Apdlrcjafg19
wants to merge
10,000
commits into
171099:master
Choose a base branch
from
bitcoin:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Andy19a #4
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Co-authored-by: brunoerg <[email protected]> Co-authored-by: Lőrinc <[email protected]>
We will open a short-lived connection to a random Tor or I2P peer, send our transaction to that peer and close the connection.
Implement opening `ConnectionType::PRIVATE_BROADCAST` connections with the following properties: * Only to Tor or I2P (or IPv4/IPv6 through the Tor proxy, if provided) * Open such connections only when requested and don't maintain N opened connections of this type. * Since this is substantially different than what `OpenNetworkConnection()` does, open the private broadcast connections from a different thread instead of modifying `OpenNetworkConnection()` to also open those types of connections. Co-authored-by: Andrew Toth <[email protected]>
…does Rename `PeerManager::RelayTransaction()` to `PeerManager::InitiateTxBroadcastToAll()`. The transaction is not relayed when the method returns. It is only enqueued for a possible broadcasting at a later time. Also, there will be another method which only does so to Tor or I2P peers.
Extend `node::TxBroadcast` with a 3rd option to not add the transaction to the mempool and broadcast privately. This is a non-functional change - `BroadcastTransaction()` will not do anything if the 3rd options is passed and is not used by any of its callers.
Extend `PeerManager` with a transaction storage and a new method `InitiateTxBroadcastPrivate()` which: * adds a transaction to that storage and * calls `CConnman::PrivateBroadcast::NumToOpenAdd()` to open dedicated privacy connections that will pick an entry from the transaction storage and broadcast it.
Change the order in which code snippets are executed as a result of receiving the `VERSION` message. Move the snippets that do `MakeAndPushMessage()` near the end. This makes it easier to interrupt the execution when no messages should be sent as a response to the `VERSION` messages, in private broadcast connections. This is a non-functional change.
Move the debug log message that we have received a `VERSION` message earlier, before any `MakeAndPushMessage()`. Thus, if the processing is interrupted before `MakeAndPushMessage()`s, the log would still be executed.
Rename some variables in `PeerManagerImpl::PushNodeVersion()` and use one log call instead of 2 almost identical. Also, assign variables after they are declared to make it easy to assign them different values, conditionally. This is a non-functional change.
The following commit will interrupt the processing of the `VERACK` message earlier for private broadcast connections. The `Assume()` would be nice to have for private broadcast as well, so move it earlier. This is a non-functional change.
For connections of type `ConnectionType::PRIVATE_BROADCAST`: * After receiving VERACK, send a transaction from the list of transactions for private broadcast and disconnect * Don't process any messages after VERACK (modulo `GETDATA` and `PONG`) * Don't send any messages other than the minimum required for the transaction send - `INV`, `TX`, `PING`.
Remove the transaction from the list of transactions to broadcast after we receive it from the network. Only remove the transaction if it is the same as the one we sent: has the same wtxid (and it follows the same txid). Don't remove transactions that have the same txid and different wtxid. Such transactions show that some of the private broadcast recipients malleated the witness and the transaction made it back to us. The witness could be either: * invalid, in which case the transaction will not be accepted in anybody's pool; or * valid, in which case either the original or the malleated transaction will make it to nodes' mempools and eventually be mined. Our response is to keep broadcasting the original. If the malleated transaction wins then we will eventually stop broadcasting the original when it gets stale and gets removed from the "to broadcast" storage cause it is not acceptable in our mempool.
Periodically check for stale transactions in peerman and if found, reschedule new connections to be opened by connman for broadcasting them.
-BEGIN VERIFY SCRIPT- sed --in-place --regexp-extended \ 's;( 20[0-2][0-9])(-20[0-2][0-9])? The Bitcoin Core developers;\1-present The Bitcoin Core developers;g' \ $( git grep -l 'The Bitcoin Core developers' -- ':(exclude)COPYING' ':(exclude)src/ipc/libmultiprocess' ':(exclude)src/minisketch' ) -END VERIFY SCRIPT-
Re-raising within the except-block would trigger excessive "During handling of the above exception, another exception occurred"-output. Also changed comment - exceptions are raised in Python, not thrown.
Partial revert of fab085c subprocess.run(..., text=True) is not sufficient to make the TimeoutExpired exception stop using byte buffers. This is a known issue, see: python/cpython#87597
Verifies that the fix to assert_start_raises_init_error in an earlier commit stays intact, with only one exception being raised instead of multiple.
Helpful when comparing expected/unexpected outputs against each other for working/broken code. Also account for TimeoutExpired.output being None and halt instead of re-raising.
Can be reviewed via the git option: --color-moved=dimmed-zebra
…dpoint 59b93f1 rest: print also HTTP response reason in case of an error (Roman Zeyde) 7fe94a0 rest: add a test for unsuported `/blockpart/` request type (Roman Zeyde) 55d0d19 rest: deduplicate `interface_rest.py` negative tests (Roman Zeyde) 89eb531 rest: update release notes for `/blockpart/` endpoint (Roman Zeyde) 41118e1 blockstorage: simplify partial block read validation (Roman Zeyde) 599effd rest: reformat `uri_prefixes` initializer list (Roman Zeyde) Pull request description: The commits below should resolve a few leftovers from #33657. ACKs for top commit: l0rinc: ACK 59b93f1 hodlinator: re-ACK 59b93f1 Tree-SHA512: ae45e08edd315018e11283b354fb32f9658f5829c956554dc662a81c2e16397def7c3700e6354e0a91ff03c850def35638a69ec2668b7c015d25d6fed42b92bb
facaf56 contrib: Remove unused functions (MarcoFalke) Pull request description: * `remove_files` is unused since 5668c64 * `download_lines_with_urllib` is unused since it was introduced in 37c9fb7 * `determine_wellknown_cmd` is unused since 76c0901 ACKs for top commit: fjahr: ACK facaf56 bensig: ACK facaf56 straightforward l0rinc: Reproduced it locally, ACK facaf56 Tree-SHA512: c7d4880944b57108429e31541f1b97a98101cc06f1be716d6028f4193b6f087d9af06fa87e95ab224e027d574c6bd793cf06e540cdb8997805e1470e0c4e77a2
2f5b1c5 psbt: Fix `PSBTInputSignedAndVerified` bounds `assert` (Lőrinc) Pull request description: This PR fixes an off-by-one in a debug assertion in `PSBTInputSignedAndVerified`. The function indexes `psbt.inputs[input_index]`, so the assertion must not allow indexing at `psbt.inputs.size()`. Found during review: #31650 (comment) ACKs for top commit: optout21: utACK 2f5b1c5 maflcko: lgtm ACK 2f5b1c5 achow101: ACK 2f5b1c5 Tree-SHA512: cec613a9a38358d5caa243197d746baa129aebfd7fe697689f28e652f94c4683873c4676d5eb2eb909ea19de5e5f6e54ecc5f3162384a48f6f38a59273667689
…tion check in fees.dat fa1d17d refactor: Use uint64_t over size_t for serialize corruption check in fees.dat (MarcoFalke) Pull request description: Serialization should not behave differently on different architectures. See also the related commit 3789215. However, on fees.dat file corruption, 32-bit builds may run into an unsigned integer overflow and report the wrong corruption reason, or may even silently continue after the corruption. This is a bit hard to reproduce, because 32-bit platforms are rare and most of them don't support running the unsigned integer overflow sanitizer. So the possible options to reproduce are: * Run on armhf and manually annotate the code to detect the overflow * Run on i386 with the integer sanitizer (possibly via `podman run -it --rm --platform linux/i386 'debian:trixie'`) * Run the integer sanitizer on any 64-bit platform and manually replace type in the affected line by `uint32_t` Afterwards, the steps to reproduce are: ``` export DEBIAN_FRONTEND=noninteractive && apt update && apt install curl wget htop git vim ccache -y && git clone https://github.com/bitcoin/bitcoin.git --depth=1 ./b-c && cd b-c && apt install build-essential cmake pkg-config python3-zmq libzmq3-dev libevent-dev libboost-dev libsqlite3-dev systemtap-sdt-dev libcapnp-dev capnproto libqrencode-dev qt6-tools-dev qt6-l10n-tools qt6-base-dev clang llvm libc++-dev libc++abi-dev -y cmake -B ./bld-cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER='clang' -DCMAKE_CXX_COMPILER='clang++' -DSANITIZERS=undefined,integer,float-divide-by-zero --preset=dev-mode cmake --build ./bld-cmake --parallel $(nproc) curl -fLO 'https://github.com/bitcoin-core/qa-assets/raw/b5ad78e070e4cf36beb415d7b490d948d70ba73f/fuzz_corpora/policy_estimator_io/607473137013139e3676e30ec4b29639e673fa9b' UBSAN_OPTIONS="suppressions=$(pwd)/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" FUZZ=policy_estimator_io ./bld-cmake/bin/fuzz ./607473137013139e3676e30ec4b29639e673fa9b ``` The output will be something like: ``` /b-c/src/policy/fees/block_policy_estimator.cpp:448:25: runtime error: unsigned integer overflow: 346685954 * 219 cannot be represented in type 'unsigned int' #0 0x5b0b1bbe in TxConfirmStats::Read(AutoFile&, unsigned int) /b-c/bld-cmake/src/./policy/fees/block_policy_estimator.cpp:448:25 #1 0x5b0b7d3f in CBlockPolicyEstimator::Read(AutoFile&) /b-c/bld-cmake/src/./policy/fees/block_policy_estimator.cpp:1037:29 #2 0x592a9783 in policy_estimator_io_fuzz_target(std::span<unsigned char const, 4294967295u>) /b-c/bld-cmake/src/test/fuzz/./test/fuzz/policy_estimator_io.cpp:32:32 #3 0x5896ba8e in void std::__invoke_impl<void, void (*&)(std::span<unsigned char const, 4294967295u>), std::span<unsigned char const, 4294967295u>>(std::__invoke_other, void (*&)(std::span<unsigned char const, 4294967295u>), std::span<unsigned char const, 4294967295u>&&) /usr/lib/gcc/i686-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:61:14 #4 0x5896b8eb in std::enable_if<is_invocable_r_v<void, void (*&)(std::span<unsigned char const, 4294967295u>), std::span<unsigned char const, 4294967295u>>, void>::type std::__invoke_r<void, void (*&)(std::span<unsigned char const, 4294967295u>), std::span<unsigned char const, 4294967295u>>(void (*&)(std::span<unsigned char const, 4294967295u>), std::span<unsigned char const, 4294967295u>&&) /usr/lib/gcc/i686-linux-gnu/14/../../../../include/c++/14/bits/invoke.h:111:2 #5 0x5896b44b in std::_Function_handler<void (std::span<unsigned char const, 4294967295u>), void (*)(std::span<unsigned char const, 4294967295u>)>::_M_invoke(std::_Any_data const&, std::span<unsigned char const, 4294967295u>&&) /usr/lib/gcc/i686-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:290:9 #6 0x59845c95 in std::function<void (std::span<unsigned char const, 4294967295u>)>::operator()(std::span<unsigned char const, 4294967295u>) const /usr/lib/gcc/i686-linux-gnu/14/../../../../include/c++/14/bits/std_function.h:591:9 #7 0x5983a0da in test_one_input(std::span<unsigned char const, 4294967295u>) /b-c/bld-cmake/src/test/fuzz/util/./test/fuzz/fuzz.cpp:88:5 #8 0x5983cb80 in main /b-c/bld-cmake/src/test/fuzz/util/./test/fuzz/fuzz.cpp:271:13 #9 0xf75aecc2 (/lib/i386-linux-gnu/libc.so.6+0x24cc2) (BuildId: 2dc5f2945fad35c1b07d1a5a32520b3c41afaa75) #10 0xf75aed87 in __libc_start_main (/lib/i386-linux-gnu/libc.so.6+0x24d87) (BuildId: 2dc5f2945fad35c1b07d1a5a32520b3c41afaa75) #11 0x58932db6 in _start (/b-c/bld-cmake/bin/fuzz+0x235ddb6) (BuildId: 7d8d83a77923f14e99c0de64acbc5f5bfc2cce9b) SUMMARY: UndefinedBehaviorSanitizer: unsigned-integer-overflow /b-c/src/policy/fees/block_policy_estimator.cpp:448:25 ``` Note: This is marked a "refactor", because the code change does not affect 64-bit builds, and on the still remaining rare 32-bit builds today it is extremely unlikely to happen in production. ACKs for top commit: bensig: ACK fa1d17d ismaelsadeeq: utACK fa1d17d luke-jr: Also, utACK fa1d17d as an improvement. Tree-SHA512: 696bf8e0dbe4777c84cb90e313c7f8f9ee90d4b3e64de1222f8472b2d9d0f3a0f6f027fda743dd6ca8c6aab94f404db7a65bb562a76000d9c33a8a39de28d8d4
fa5032f ci: Run feature_unsupported_utxo_db.py on Windows (MarcoFalke) Pull request description: The feature_unsupported_utxo_db.py test is skipped on Windows, because the ancient exe used in the test does not support UTF-8. One way to fix this could be to rework the test_runner to supply an ASCII temp dir. However, this is tedious and probably not worth it for a test that is close to being deleted: The test only checks that a `-reindex-chainstate` is sufficient, but at this point, it seems fine to accept users having to go through a full `-reindex`, or even full re-download. I am not deleting it just yet, because it is still minimally useful: E.g. #31674 (comment). Though, I think the next time an issue pops up with this test, it can be considered for deletion. ACKs for top commit: hebasto: ACK fa5032f. Tree-SHA512: eb3be204a1238caa93c7c2947171ed3c1c2717ccf95e5a58102791dbecfcd8710e0d89f001e266c192734bb4326ec6ca6e0df3128ad0d1e76cfe0f34f486a08e
The regex `(.*)` was capturing `\r` from subprocess output on Windows, causing the closing parenthesis in logs to wrap to the next line. Stripping whitespace from the regex match fixes the formatting.
b762538 test: Add unit test for SCRIPT_ERR_NUMEQUALVERIFY (billymcbip) Pull request description: Add coverage for the error branch of `OP_NUMEQUALVERIFY`: https://github.com/bitcoin/bitcoin/blob/d861c3820528fad2e17a45549bec70b6ba434dcc/src/script/interpreter.cpp#L997 Note the code coverage miss: https://maflcko.github.io/b-c-cov/total.coverage/src/script/interpreter.cpp.gcov.html (around line 997) I ran: `cmake -B build -DENABLE_WALLET=OFF && cmake --build build -j 8 && ctest --test-dir build -j 8` ACKs for top commit: yashbhutwala: ACK b762538 darosior: ACK b762538 sedited: ACK b762538 Tree-SHA512: 82659c831c2c2a317ec01fe628813ff3c08108701c4d869ecdc8876450f731239a059c4dd33ef96e6b0c519b46706db1b8fe035ad6be280c5152ca427e67075e
fa2959e test: Fail on self-check warnings in test_runner.py (MarcoFalke) Pull request description: I don't see a reason to start running the tests, if the test_runner detects warnings during the self-check. Usually, this will just lead to a possibly confusing test failure after some wasted time anyway. So just fail fast before even running any tests. If there was a reason to ignore the warnings, a new option could trivially be added: ```py parser.add_argument("--ignore-self-check-warnings", dest="ignore_warnings", default=False, action="store_true", help="Ignore test runner warnings about self-checks before running the tests") ``` However, I don't see the need. ACKs for top commit: hodlinator: utACK fa2959e Tree-SHA512: 3f2e1af9ba06cd805c69e8c40149214a8a13af286ba6315c346e23d0f1ddae8e850103b6967d2d9799a095f6a8ec8802c3c773af8d7123598e8887f56c764fb5
…omment 7fc465e doc: fix incorrect description of `PackageMempoolChecks` (ismaelsadeeq) 1412b77 refactor: execute `PackageMempoolChecks` during package rbf only (ismaelsadeeq) Pull request description: This is a simple PR that fixes the incorrect description of what is done in `PackageMempoolChecks` > // Enforce package mempool ancestor/descendant limits (distinct from individual > // ancestor/descendant limits done in PreChecks) and run Package RBF checks. After cluster mempool, we no longer enforce ancestor/descendant limits in both `PreChecks` and `PackageMempoolChecks`; instead, cluster limit is enforced in `PackageMempoolChecks`. This PR fixes the incorrect comment by; - Making it clear why it is necessary to have two calls of `CheckMempoolPolicyLimts` in both `PackageMempoolChecks` and after in `AcceptMultipleTransactionsInternal` by executing `PackageMempoolChecks` only during package RBF only. No need to jump into the next subroutine when there is no conflict. - Renames `PackageMempoolChecks` to `PackageRBFChecks`; the method name is self-explanatory now, hence no need for a description comment. ACKs for top commit: yashbhutwala: ACK 7fc465e instagibbs: ACK 7fc465e glozow: utACK 7fc465e Tree-SHA512: 38655f9d05be54cadd224fad376da9871a85efc7801306b58d4f51aee658036cdce2ab406143a3439d7211fc9bb0fc86bd330852e8926d79660944872b8fae8d
f62568c ci: Install `pyzmq` for functional tests on Windows (Hennadii Stepanov) Pull request description: This PR enables `interface_zmq.py` on Windows by installing the required `pyzmq` package. ACKs for top commit: maflcko: lgtm ACK f62568c Tree-SHA512: a57728ef82f1ff15a3ed1a659e98ad2d10f69693772649eaa97e1803e18f2f68e99782be3cb149322d1bf72607ec103e1837db1db39e9bd8c2a0a0863463635d
Also, fix a typo.
de4242f refactor: Use reference for chain_start in HeadersSyncState (Daniela Brozzoni) e37555e refactor: Use initializer list in CompressedHeader (Daniela Brozzoni) 0488bdf refactor: Remove unused parameter in ReportHeadersPresync (Daniela Brozzoni) 256246a refactor: Remove redundant parameter from CheckHeadersPoW (Daniela Brozzoni) ca0243e refactor: Remove useless CBlock::GetBlockHeader (Pieter Wuille) 4568652 refactor: Use std::span in HasValidProofOfWork (Daniela Brozzoni) 4066bfe refactor: Compute work from headers without CBlockIndex (Daniela Brozzoni) 0bf6139 p2p: Avoid an IsAncestorOfBestHeaderOrTip call (Pieter Wuille) Pull request description: This is a partial* revival of #25968 It contains a list of most-unrelated simplifications and optimizations to the code merged in #25717: - Avoid an IsAncestorOfBestHeaderOrTip call: Just don't call this function when it won't have any effect. - Compute work from headers without CBlockIndex: Avoid the need to construct a CBlockIndex object just to compute work for a header, when its nBits value suffices for that. Also use some Spans where possible. - Remove useless CBlock::GetBlockHeader: There is no need for a function to convert a CBlock to a CBlockHeader, as it's a child class of it. It also contains the following code cleanups, which were suggested by reviewers in #25968: - Remove redundant parameter from CheckHeadersPoW: No need to pass consensusParams, as CheckHeadersPow already has access to m_chainparams.GetConsensus() - Remove unused parameter in ReportHeadersPresync - Use initializer list in CompressedHeader, also make GetFullHeader const - Use reference for chain_start in HeadersSyncState: chain_start can never be null, so it's better to pass it as a reference rather than a raw pointer *I decided to leave out three commits that were in #25968 (4e7ac7b, ab52fb4, 7f1cf44), since they're a bit more involved, and I'm a new contributor. If this PR gets merged, I'll comment under #25968 to note that these three commits are still up for grabs :) ACKs for top commit: l0rinc: ACK de4242f polespinasa: re-ACK de4242f sipa: ACK de4242f achow101: ACK de4242f hodlinator: re-ACK de4242f Tree-SHA512: 1de4f3ce0854a196712505f2b52ccb985856f5133769552bf37375225ea8664a3a7a6a9578c4fd461e935cd94a7cbbb08f15751a1da7651f8962c866146d9d4b
8fb5e5f test: check wallet rescan properly in feature_pruning (brunoerg) 9b57c8d test: fix feature_pruning when built without wallet (brunoerg) Pull request description: Fixes #34175 In `feature_pruning`, the`wallet_test` doesn't require any specific wallet functionality and this test is important for one of next ones (`test_scanblocks_pruned`). The reason is that it synchronizes the node 5 and, without this sync, `test_scanblocks_pruned` will fail since we expect `scanblocks` to fail due to `Block not available (pruned data)` and it doesn't happen without this sync. ACKs for top commit: achow101: ACK 8fb5e5f furszy: utACK 8fb5e5f musaHaruna: Tested ACK [8fb5e5f](8fb5e5f) w0xlt: ACK 8fb5e5f Tree-SHA512: 812afbf4343a7493e2169eb6735fce25692d5cb19972abafc772b8c05a64b9c7027f6675cd084f345977e916e62a722d671f90831bbdc51683e0cd253fa482f0
…age 🎄 792e2ed p2p: first addr self-announcement in separate msg (0xb10c) Pull request description: This makes sure the initial address self-announcement a node sends to a peer happends in a separate P2P message. This has benefits for both inbound and outbound connections: For inbound connections from a peer to us, previously, we might send the self-announcement along with our response to a GETADDR request. However, the self-announcement might replace an address from the GETADDR response. This isn't clean. For outbound connections from us to a peer, previously, it could have happend that we send the self-announcement along with other addresses. Since shortly after connection open, the peer might only have one rate-limiting token for us, and the addresses are shuffeld on arrival, it's possible that the self-announcement gets rate-limited. However, note that these rate-limitings seem to be rare in practice. This is inspired by and based on #33699 (comment). The discussion there should be helpful for reviewers. ACKs for top commit: bensig: ACK 792e2ed achow101: ACK 792e2ed fjahr: Code review ACK 792e2ed frankomosh: Code Review ACK [792e2ed](792e2ed) Tree-SHA512: e3d39b1e3ae6208b54df4b36c624a32d70a442e01681f49e0c8a65076a818b5bf203c2e51011dc32edbbe3637b3c0b5f18de26e3461c288aa3806646a209a260
…onality 7b5d256 test: Add bitcoin-chainstate test for assumeutxo functionality (stringintech) 2bc3265 Fix `ChainstateManager::AddChainstate()` assertion crash (stringintech) 5f3d6bd Add regtest support to bitcoin-chainstate tool (stringintech) Pull request description: This PR adds functional test coverage for the bitcoin-chainstate tool loading a datadir initialized with an assumeutxo snapshot. The PR also includes: - Fix for assertion crash in `ChainstateManager::AddChainstate()` when `prev_chainstate` has no initialized mempool (required for the test to pass) - `-regtest` flag support for bitcoin-chainstate to enable the testing This work started while experimenting with the bitcoin-chainstate tool and how the kernel API (#30595) behaved when loading a datadir containing assumeutxo data, during the time that PR was still under review. sedited suggested opening a PR to add this test coverage. ACKs for top commit: achow101: ACK 7b5d256 theStack: Concept and code-review ACK 7b5d256 sedited: Re-ACK 7b5d256 Tree-SHA512: 5d3b0050cf2d53144b5f65451c991d5e212117b4541ae1368ecf58fde5f3cca4f018aad6ae32257b9ebb1c28b926424fbcff496ba5487cdc4eb456cea6db8b24
ce63d37 test: use dynamic port allocation to avoid test conflicts (woltx) Pull request description: Use `port=0` for dynamic port allocation in test framework components to avoid intermittent "address already in use" errors when running tests concurrently or when ports are stuck in TIME_WAIT state. Example: #29415 (comment) Changes: - Update `socks5.py` and `p2p.py` to support dynamic port allocation - Convert `feature_proxy.py` and `feature_anchors.py` to use `port=0` ACKs for top commit: achow101: ACK ce63d37 vasild: ACK ce63d37 mzumsande: re-ACK ce63d37 Tree-SHA512: 4efcedca3bde209fbd1bdc2a4ae04b7d53515587d86e421ce61064f78c675c71b45d9782b514c5e7cfc0e92842c947d49f7a3fddb03fe619fcdec9b565f0ecbd
fa3df52 bench: Require semicolon after BENCHMARK(foo) (MarcoFalke) fa8938f bench: Remove incorrect __LINE__ in BENCHMARK macro (MarcoFalke) fa51a28 scripted-diff: Remove priority_level from BENCHMARK macro (MarcoFalke) fa790c3 bench: Remove -priority-level= option (MarcoFalke) Pull request description: The option was added in #26158, when the project was using an autotools-based build system. However, in the meantime this option is unused: * First, commit 27f1121 removed the option from one CI task * Then #32310 removed the option from CMakeList.txt, because: * they only run as a sanity check (fastest version) * no one otherwise runs them, not even CI * issues have been missed due to this Finally, after commit 0ad4376, I don't see a single reason to keep this option, so remove it. Also, there is a commit to turn a silent ignore of duplicate bench names into an error. ACKs for top commit: achow101: ACK fa3df52 l0rinc: ACK fa3df52 hebasto: re-ACK fa3df52, only suggested changes since my recent [review](#34210 (review)). Tree-SHA512: 68a314bff551fa878196d5a615d41d71e1c8c504135e6fc555659aa9f0c8786957d49ba038448e933554a8bc54caea2ddd7d628042c5627bf3bf37628210f8fb
The test `p2p_private_broadcast.py` gets some Python P2P nodes to listen and instructs the SOCKS5 proxy to redirect connections to them instead of to the requested addresses. This way the `bitcoind` which uses the proxy is tricked to think it has connected to real routable internet IP addresses or `.onion` addresses. Picking the ports where to Python P2P nodes to listen however is tricky to be done in a non-conflicting way, given that other tests may run in parallel. #34186 made it possible to let the OS select a free port, so use that in `p2p_private_broadcast.py`.
da56ef2 clusterlin: minimize chunks (feature) (Pieter Wuille) Pull request description: Part of #30289. This was split off from #34023, because it's not really an optimization but a feature. The feature existed pre-SFL, so this brings SFL to parity in terms of functionality with the old code. The idea is that while optimality - as achieved by SFL before this PR - guarantees a linearization whose feerate diagram is optimal, it may be possible to split chunks into smaller equal-feerate parts. This is desirable because even though it doesn't change the diagram, it provides more flexibility for optimization (binpacking is easier when the pieces are smaller). Thus, this PR introduces the stronger notion of "minimality": optimal chunks, which are also split into their smallest possible pieces. To accomplish that, an additional step in the SFL algorithm is added which aims to split chunks into minimal equal-feerate parts where possible, without introducing circular dependencies between them. It works based on the observation that if an (already otherwise optimal) chunk has a way of being split into two equal-feerate parts, and T is a given transaction in the chunk, then we can find the split in two steps: * One time, pretend T has $\epsilon$ higher feerate than it really has. If a split exists with T in the top part, this will find it. * The other time, pretend T has $\epsilon$ lower feerate than it really has. If a split exists with T in the bottom part, this will find it. So we try both on each found optimal chunk. If neither works, the chunk is minimal. If one works, recurse into the split chunks to split them further. ACKs for top commit: instagibbs: reACK da56ef2 marcofleon: crACK da56ef2 Tree-SHA512: 2e94d6b78725f5f9470a939dedef46450b85c4e5e6f30cba0b038622ec2b417380747e8df923d1f303706602ab6d834350716df9678de144f857e3a8d163f6c2
… target fac70ea fuzz: Exclude too expensive inputs in miniscript_string target (MarcoFalke) fa90786 iwyu: Fix includes for test/fuzz/util/descriptor module (MarcoFalke) Pull request description: Fixes #30498 Accepting "expensive" fuzz inputs which have no real use-case is problematic, because it prevents the fuzz engine from spending time on the next useful fuzz input. For example this one will take several seconds (the flamegraph shows the time is spent in minscipt `NoDupCheck`): ``` curl -fLO 'https://raw.githubusercontent.com/bitcoin-core/qa-assets/eac1c57614d7823bcd6079814749f72018aea438/fuzz_corpora/miniscript_string/41bae50cffd1741150a1b330d02ab09f46ff8cd1' FUZZ=miniscript_string /usr/bin/time ./bld-cmake/bin/fuzz ./41bae50cffd1741150a1b330d02ab09f46ff8cd1 ``` Inspecting the inputs shows that it has many sub frags, so rejecting based on `HasTooManySubFrag` should be sufficient. ACKs for top commit: darosior: ACK fac70ea brunoerg: code review ACK fac70ea dergoegge: utACK fac70ea Tree-SHA512: 7f1e0d9ce24d67ec63e5b7c2dd194efa51f38beb013564690afe0f920e5ff1980c85ce344828c0dc3f34b6851db7fe72a76b1a775c6d51c94fb91431834f453b
d09a19f test: add coverage for issue 34206 (Greg Sanders) 4c7cfd3 wallet: remove erroneous-on-reorg Assume() (Greg Sanders) Pull request description: Resolves #34206 I'm not certain the test is worth keeping, but included it for now to show minimal example that crashes without fix. Can be removed. ACKs for top commit: bensig: ACK d09a19f dergoegge: utACK d09a19f Tree-SHA512: 7eac19e97be6db8e38af396c406066fdcec532332e685a38bb33f0a988701c7bd5a0967f51426737fd56972847b761a3d873495928ff66efa8512fb267a9622b
3e34067 test: use ephemeral ports in p2p_private_broadcast.py (w0xlt) Pull request description: The test `p2p_private_broadcast.py` gets some Python P2P nodes to listen and instructs the SOCKS5 proxy to redirect connections to them instead of to the requested addresses. This way the `bitcoind` which uses the proxy is tricked to think it has connected to real routable internet IP addresses or `.onion` addresses. Picking the ports where to Python P2P nodes to listen however is tricky to be done in a non-conflicting way, given that other tests may run in parallel. #34186 made it possible to let the OS select a free port, so use that in `p2p_private_broadcast.py`. --- _Suggested in #29415 (comment) ACKs for top commit: l0rinc: code review ACK 3e34067 polespinasa: tACK 3e34067 mzumsande: utACK 3e34067 Tree-SHA512: e94efd33a1845e1767aaada55f91c60bc5fc1166c281ef578a391e95e2791a922d84aa6ed1ce06e7d6ca1a65f84da52fd79d9b2f40705c1944a53c67b7392e4d
979d41b qa: Fix Windows logging bug (Hennadii Stepanov) Pull request description: The regex `(.*)` was capturing `\r` from subprocess output on Windows, causing the closing parenthesis in logs to wrap to the next line. For [example](https://github.com/hebasto/bitcoin/actions/runs/20993438084/job/60350204808): ``` 208/454 - feature_bip68_sequence.py passed, Duration: 10 s 209/454 - rpc_bind.py --ipv4 skipped (not on a Linux system ) 210/454 - rpc_bind.py --ipv6 skipped (not on a Linux system ) 211/454 - rpc_packages.py passed, Duration: 8 s 212/454 - rpc_bind.py --nonloopback skipped (not on a Linux system ) 213/454 - p2p_feefilter.py passed, Duration: 4 s ``` Stripping whitespace from the regex match fixes the formatting. [See](https://github.com/hebasto/bitcoin/actions/runs/20993564177/job/60350024373): ``` 208/454 - feature_bip68_sequence.py passed, Duration: 9 s 209/454 - rpc_bind.py --ipv4 skipped (not on a Linux system) 210/454 - rpc_bind.py --ipv6 skipped (not on a Linux system) 211/454 - rpc_bind.py --nonloopback skipped (not on a Linux system) 212/454 - rpc_packages.py passed, Duration: 7 s ``` ACKs for top commit: maflcko: lgtm ACK 979d41b l0rinc: lightly tested ACK 979d41b Tree-SHA512: bafe1937a519e45e4cab395bae622acf65220f313c773a0729ba7dccc3a0a048602f1c04b3e8cdd80d2cf68ae36cef802a819530485d5a745db8abcadf141f68
This reverts commit 8ac134b, because it is no longer needed.
fa38ffa contrib: [refactor] Use shorter read_text from pathlib (MarcoFalke) fab8bc0 contrib: Revert "verify-commits sha1 exceptions" (MarcoFalke) Pull request description: This reverts commit 8ac134b, because it is no longer needed. See #34245 (comment) Also, use the shorter pathlib `read_text`, which is available since Python 3.5 ACKs for top commit: dergoegge: utACK fa38ffa sedited: ACK fa38ffa hebasto: ACK fa38ffa. Tree-SHA512: 83049349d4a5c74ad700c2912d727584b88944a75d572c10661a76b69b08093ef7ebf786b359455e36d7467a708de46a77da41a54512e057d7eed8206984c8fd
…let name is empty dd90429 gui: Show an error message if the restored wallet name is empty (Ava Chow) Pull request description: The Restore Wallet dialog rejects wallet names that are empty, but was doing so silently. This is confusing, we should be presenting an error message to the user. ACKs for top commit: hebasto: ACK dd90429. Tested on Fedora 43. Tree-SHA512: f4b60f32d1c2550dbce8613f25d29a92588b1ecfc8e8e5dac691a6bdb21a77508288a904539b68333d96bde5ebb993912253f4a293e4c583891f553d95762e77
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Avance