Skip to content
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

2023 06 tx compression rebase #9

Closed
wants to merge 729 commits into from
Closed
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Feb 26, 2024

  1. Merge bitcoin#29471: doc: Fix CI-detected codespell warnings

    b03b206 Fix CI-detected codespell warnings (Lőrinc)
    
    Pull request description:
    
      Split out the typo fixes encountered in bitcoin#29458 to a separate PR.
    
    ACKs for top commit:
      maflcko:
        ACK b03b206
    
    Tree-SHA512: 99b6fac01ba2ae6e6de9c50d2b481387899844a4b3a77d544c7b8afe7cfd25251a982329688d4739cde8b98ad35afcfd49be7c7cc3dad9bdff1d5915861a206d
    fanquake committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    19b7f2b View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29443: depends: fix BDB compilation on OpenBSD

    0fbf051 depends: fix BDB compilation on OpenBSD (Sebastian Falbesoner)
    
    Pull request description:
    
      Compiling C++ code with `-D_XOPEN_SOURCE=600` causes problems on OpenBSD. If that define is set, the C++ standard header detection routine in BDB's configure script fails due to a missing type name for `locale_t` (see https://gist.github.com/theStack/b41884e31ebc5cdca3220bcaa674cb70 for the relevant config.log part).
    
      This results in `HAVE_CXX_STDHEADERS` not being defined, which then it turn leads to the inclusion of `<iostream.h>` (rather than `<iostream>`), which doesn't exist, as described in bitcoin#28963.
    
      According to a mailing list post discussing a similar problem [1], "OpenBSD provides the POSIX APIs by default", so we don't need this define anyway and can remove it. This fixes the BDB build problem as described in issue bitcoin#28963. See also google/flatbuffers@f87e75a for a similar fix for google's flatbuffer project.
    
      Tested on OpenBSD 7.4 with clang 13.0.0. Fixes bitcoin#28963.
    
      [1] https://www.mail-archive.com/tech@openbsd.org/msg63386.html
    
    ACKs for top commit:
      fanquake:
        ACK 0fbf051
    
    Tree-SHA512: 02139e9081ed855e067bfba8c81b54c657417576e553cc1035a916ada9be049358f5e14d756d5f234c5226bd7e943f61c6ae8990c1b152f9125681b7b777c9b3
    fanquake committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    ac19235 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29467: test: Fix intermittent issue in interface_rest.py

    faeed91 test: Fix intermittent issue in interface_rest.py (MarcoFalke)
    
    Pull request description:
    
      Fixes:
    
      ```
       test  2024-02-22T16:15:37.465000Z TestFramework (ERROR): Assertion failed
        Traceback (most recent call last):
        File "/ci_container_base/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/test_framework.py", line 131, in main
         self.run_test()
        File "/ci_container_base/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/interface_rest.py", line 340, in run_test
         assert_equal(json_obj, mempool_info)
        File "/ci_container_base/ci/scratch/build/bitcoin-x86_64-pc-linux-gnu/test/functional/test_framework/util.py", line 57, in assert_equal
         raise AssertionError("not(%s)" % " == ".join(str(arg) for arg in (thing1, thing2) + args))
       AssertionError: not({'loaded': True, 'size': 3, 'bytes': 312, 'usage': 3600, 'total_fee': Decimal('0.00093600'), 'maxmempool': 300000000, 'mempoolminfee': Decimal('0.00001000'), 'minrelaytxfee': Decimal('0.00001000'), 'incrementalrelayfee': Decimal('0.00001000'), 'unbroadcastcount': 1, 'fullrbf': False} == {'loaded': True, 'size': 3, 'bytes': 312, 'usage': 3600, 'total_fee': Decimal('0.00093600'), 'maxmempool': 300000000, 'mempoolminfee': Decimal('0.00001000'), 'minrelaytxfee': Decimal('0.00001000'), 'incrementalrelayfee': Decimal('0.00001000'), 'unbroadcastcount': 0, 'fullrbf': False})
      ```
    
      https://cirrus-ci.com/task/4852944378527744?logs=ci#L4436
    
    ACKs for top commit:
      m3dwards:
        ACK bitcoin@faeed91
      mzumsande:
        ACK faeed91
    
    Tree-SHA512: 513422229db45d2586c554b9a466e86848bfcf5280b0f000718cbfc44d93dd1af69e19a56f6ac578f5d7aada74ab0c90d4a9e09a324062b6f9ed239e5e34f540
    fanquake committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    60b6ff5 View commit details
    Browse the repository at this point in the history
  4. test: Drop x modifier in fsbridge::fopen call for mingw builds

    The MinGW-w64 toolchain links executables to the old msvcrt C Runtime
    Library that does not support the `x` modifier for the _wfopen()
    function.
    hebasto committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    d2fe905 View commit details
    Browse the repository at this point in the history
  5. test: Remove unnecessary sync_blocks in assumeutxo tests

    The nodes are not connected at this point and no blocks have been mined, so it does not seem do anything
    fjahr committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    2bc1ecf View commit details
    Browse the repository at this point in the history
  6. doc: Update OpenBSD build docs to 7.4

    Tested and used all build options on OpenBSD 7.4 with no issues.
    
    Added a note about referring to depends/README.md for detailed instructions on required dependencies.
    This was added in reference to a conversation in bitcoin#29443
    jessebarton committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    fccfdb2 View commit details
    Browse the repository at this point in the history
  7. crypto: replace non-standard CLZ builtins with c++20's bit_width

    Also some header cleanups.
    theuni committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    52f9bba View commit details
    Browse the repository at this point in the history
  8. crypto: replace CountBits with std::bit_width

    bit_width is a drop-in replacement with an exact meaning in c++, so there is
    no need to continue testing/fuzzing/benchmarking.
    theuni committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    297367b View commit details
    Browse the repository at this point in the history
  9. Merge bitcoin#29357: test: Drop x modifier in fsbridge::fopen cal…

    …l for MinGW builds
    
    d2fe905 test: Drop `x` modifier in `fsbridge::fopen` call for mingw builds (Hennadii Stepanov)
    
    Pull request description:
    
      The MinGW-w64 toolchain links executables to the old msvcrt C Runtime Library that does not support the `x` modifier for the [`_wfopen()`](https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-wfopen?view=msvc-170) function.
    
      Fixes bitcoin#29014.
    
    ACKs for top commit:
      maflcko:
        ACK d2fe905
      fanquake:
        ACK d2fe905 - the plan here should still be to migrate to the newer windows runtime.
    
    Tree-SHA512: 0269b66531e58c093ecda3a3e355a20ee8274e165d7e010f8f125881b3c8d4cfe801abdca4605d81efd3b2dbe9a81896968971f6f53da7f6c6093b76b47c5bc9
    fanquake committed Feb 26, 2024
    Configuration menu
    Copy the full SHA
    4d7d7fd View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    1ec6684 View commit details
    Browse the repository at this point in the history

Commits on Feb 27, 2024

  1. Merge bitcoin#28178: fuzz: Generate with random libFuzzer settings

    fa3a410 fuzz: Set -rss_limit_mb=8000 for generate as well (MarcoFalke)
    fa4e396 fuzz: Generate with random libFuzzer settings (MarcoFalke)
    
    Pull request description:
    
      Sometimes a libFuzzer setting like `-use_value_profile=1` helps [0], sometimes it hurts [1].
    
      [0] bitcoin#20789 (comment)
      [1] bitcoin#27888 (comment)
    
      By picking a random value, it is ensured that at least some of the runs will have the beneficial configuration set.
    
      Also, set `-max_total_time` to prevent slow fuzz targets from getting a larger time share, or possibly peg to a single core for a long time and block the python script from exiting for a long time. This can be improved in the future. For example, the python script can exit after some time (bitcoin#20752 (comment)). Alternatively, it can measure if coverage progress was made and run for less time if no progress has been made recently anyway, so that more time can be spent on targets that are new or still make progress.
    
    ACKs for top commit:
      murchandamus:
        utACK fa3a410
      dergoegge:
        utACK fa3a410
      brunoerg:
        light ACK fa3a410
    
    Tree-SHA512: bfd04a76ca09aec612397bae5f3f263a608faa7087697169bd4c506c8195c4d2dd84ddc7fcd3ebbc75771eab618fad840af819114968ca3668fc730092376768
    fanquake committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    ee7e4b0 View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29358: test: use v2 everywhere for P2PConnection if --v…

    …2transport is enabled
    
    bf5662c test: enable v2 for python p2p depending on global --v2transport flag (Martin Zumsande)
    6e9e39d test: Don't use v2transport when it's too slow. (Martin Zumsande)
    87549c8 test: enable p2p_invalid_messages.py with v2transport (Martin Zumsande)
    5fc9db5 test: enable p2p_sendtxrcncl.py with v2transport (Martin Zumsande)
    
    Pull request description:
    
      bitcoin#24748 added v2 transport to the python `P2PConnection`, but so far each test that wants to make use of it needs to enable it on an individual basis.
      This PR changes it so that if the test suite is run with `--v2transport` option, v2 is used in each test by default, not only for connections between two bitcoind instances as before, but also wherever `P2PConnection` is used. Individual tests can override this global option.
    
      To do that, a few tests need to be adjusted.
      In addition, I added a commit to always use v1 in a few select subtests that send a large number of large messages (e.g. large reorgs). These tests don't have a fundamental problem with v2 but become very slow due to the unoptimised python ChaCha20 implementation (~30 minutes on my computer, so probably not suitable to be run in the CI).
    
      As a result, `python3 test_runner.py --v2transport` should succeed and use `v2` everywhere (unless v1 is chosen explicitly).
    
      [Edit]: To make the "test each commit" CI pass, several test fixes were squashed into the last commit, which actually enables v2 p2p for `P2PConnection`. I have an unsquashed version at https://github.com/mzumsande/bitcoin/tree/202401_bip324_alltests_unsquashed, in case that helps with review.
    
    ACKs for top commit:
      fjahr:
        tACK bf5662c
      vasild:
        ACK bf5662c
      stratospher:
        reACK bf5662c.
      theStack:
        Tested ACK bf5662c
    
    Tree-SHA512: 4f5a08248ba8a755f7d0f48deb2b79bef03292345cacb7deef01be955481093800e4e56ff218ea56734eef5de1fb3ab0f04657447ea27d393bb536539d7b289d
    fanquake committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    5c6d900 View commit details
    Browse the repository at this point in the history
  3. build: remove -Wdocumentation conditional

    Now that --enable-suppress-external-warnings is on by default, we can
    drop it.
    fanquake committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    b052b2d View commit details
    Browse the repository at this point in the history
  4. Merge bitcoin#29481: doc: Update OpenBSD build docs for 7.4

    fccfdb2 doc: Update OpenBSD build docs to 7.4 (Jesse Barton)
    
    Pull request description:
    
      Updated OpenBSD Build doc for 7.4 after testing all build options. No issues on my end.
    
      Also added a note about referring to depends/README.md for detailed instructions on required dependencies.
      This was added in reference to a conversation in bitcoin#29443
    
    ACKs for top commit:
      fanquake:
        ACK fccfdb2
      theStack:
        lgtm ACK fccfdb2
    
    Tree-SHA512: be6d22b605140b37a71e11c5bbed54f60655832d78cd3cb221eddc77c7621a65c0d71baf436f90819be536d9b5dbf1a0b2c82b6b23d62356addc495403f2ba35
    fanquake committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    6a7ed5e View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    95bddb9 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    e7669e1 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    66abce1 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    2d8495e View commit details
    Browse the repository at this point in the history
  9. [net processing] Don't process mutated blocks

    We preemptively perform a block mutation check before further processing
    a block message (similar to early sanity checks on other messsage
    types). The main reasons for this change are as follows:
    
    - `CBlock::GetHash()` is a foot-gun without a prior mutation check, as
      the hash returned only commits to the header but not to the actual
      transactions (`CBlock::vtx`) contained in the block.
    - We have observed attacks that abused mutated blocks in the past, which
      could have been prevented by simply not processing mutated blocks
      (e.g. bitcoin#27608).
    dergoegge committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    49257c0 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    5bf4f5b View commit details
    Browse the repository at this point in the history
  11. [validation] Cache merkle root and witness commitment checks

    Slight performance improvement by avoiding duplicate work.
    dergoegge committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    1ec6bbe View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    1ed2c98 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    d8087ad View commit details
    Browse the repository at this point in the history
  14. test: Remove Windows-specific code from system_tests/run_command

    This code has been dead since bitcoin#28967.
    
    Required as a precondition for replacing Boost.Process with
    cpp-subprocess to make diff for this code meaningful and reviewable.
    
    The plan is to reintroduce Windows-specific code in this test
    simultaneously with enabling Windows support in cpp-subprocess.
    hebasto committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    51bc1c7 View commit details
    Browse the repository at this point in the history
  15. Squashed 'src/crc32c/' changes from 0bac72c455..b60d2b7334

    b60d2b7334 Merge bitcoin-core/crc32c-subtree#6: Fix UBSan "misaligned-pointer-use" warning on aarch64
    1ac401e32b Fix UBSan "misaligned-pointer-use" warning on aarch64
    
    git-subtree-dir: src/crc32c
    git-subtree-split: b60d2b733406cc64025095c6c2cb3933e222b529
    fanquake committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    5d45552 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    359a8d9 View commit details
    Browse the repository at this point in the history
  17. serialization: replace char-is-int8_t autoconf detection with c++20 c…

    …oncept
    
    This removes the only remaining autoconf macro in our serialization code,
    so it can now be used trivially and safely out-of-tree.
    theuni committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    ad7584d View commit details
    Browse the repository at this point in the history
  18. doc: Fix Broken Links

    justindhillon committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    6fa61e3 View commit details
    Browse the repository at this point in the history
  19. Merge bitcoin#29475: doc: Fix Broken Links

    6fa61e3 doc: Fix Broken Links (Justin Dhillon)
    
    Pull request description:
    
      ### Summery
    
      Here is what I have fixed:
    
      http://voorloopnul.com/blog/a-python-netstat-in-less-than-100-lines-of-code/
       --> https://web.archive.org/web/20190424172231/http://voorloopnul.com/blog/a-python-netstat-in-less-than-100-lines-of-code/
    
      ### Support my work
    
      These links were found with [link-inspector](https://github.com/justindhillon/link-inspector). If you find this PR useful, give the repo a ⭐
    
    ACKs for top commit:
      fjahr:
        ACK 6fa61e3
    
    Tree-SHA512: ba83badfc8a89f33813801f749bcd7ad41d4c9c817ece76f3bb1b60f24c28e99cfccc485a0ba059ec2c1134e8ffb5fa37fdc9835e553229ee5b1167c9b2e8d1f
    fanquake committed Feb 27, 2024
    Configuration menu
    Copy the full SHA
    ba907f9 View commit details
    Browse the repository at this point in the history

Commits on Feb 28, 2024

  1. Configuration menu
    Copy the full SHA
    367bb7a View commit details
    Browse the repository at this point in the history
  2. test: make sure keypool sizes do not change on getrawchangeaddress/…

    …`getnewaddress` failures
    UdjinM6 committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    e073f1d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    2863d7d View commit details
    Browse the repository at this point in the history
  4. net: Move NetPermissionFlags::Implicit verification to `AddWhitelis…

    …tPermissionFlags`
    luke-jr authored and brunoerg committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    9133fd6 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    8e06be3 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    66bc6e2 View commit details
    Browse the repository at this point in the history
  7. test: add option to speed up tx relay/mempool sync

    when `self.noban_tx_relay=True`, the following flag
    `-whitelist=noban,in,out@127.0.0.1`is added to `extra_args`
    to speed up tx relay/mempool sync.
    brunoerg committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    c985eb8 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    e6b8f19 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    0a53361 View commit details
    Browse the repository at this point in the history
  10. serialization: detect byteswap builtins without autoconf tests

    Rather than a complicated set of tests to decide which bswap functions to
    use, always prefer the compiler built-ins when available.
    
    These builtins and fallbacks can all be removed once we're using c++23, which
    adds std::byteswap.
    theuni committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    432b18c View commit details
    Browse the repository at this point in the history
  11. serialization: use internal endian conversion functions

    These replace our platform-specific mess in favor of c++20 endian detection
    via std::endian and internal byteswap functions when necessary.
    
    They no longer rely on autoconf detection.
    theuni committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    86b7f28 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    1484998 View commit details
    Browse the repository at this point in the history
  13. Add benchmark for TryParseHex

    Running `make && ./src/bench/bench_bitcoin -filter=HexParse` a few times results in:
    ```
    |           ns/base16 |            base16/s |    err% |     total | benchmark
    |--------------------:|--------------------:|--------:|----------:|:----------
    |                1.60 |      623,238,893.11 |    0.3% |      0.01 | `HexParse`
    |                1.65 |      606,747,566.34 |    0.6% |      0.01 | `HexParse`
    |                1.60 |      626,149,544.07 |    0.3% |      0.01 | `HexParse`
    ```
    Lőrinc committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    b7489ec View commit details
    Browse the repository at this point in the history
  14. Preallocate result in TryParseHex to avoid resizing

    Running `make && ./src/bench/bench_bitcoin -filter=HexParse` a few times results in:
    ```
    |           ns/base16 |            base16/s |    err% |     total | benchmark
    |--------------------:|--------------------:|--------:|----------:|:----------
    |                0.68 |    1,465,555,976.27 |    0.8% |      0.01 | `HexParse`
    |                0.68 |    1,472,962,920.18 |    0.3% |      0.01 | `HexParse`
    |                0.68 |    1,476,159,423.00 |    0.3% |      0.01 | `HexParse`
    ```
    Lőrinc committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    a19235c View commit details
    Browse the repository at this point in the history
  15. gui: guard accessing a nullptr 'clientModel'

    During shutdown, already queue events dispatched from the backend such
    'numConnectionsChanged' and 'networkActiveChanged' could try to access
    the clientModel object, which might not exist because we manually delete
    it inside 'BitcoinApplication::requestShutdown()'.
    furszy committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    f3a612f View commit details
    Browse the repository at this point in the history
  16. Merge bitcoin#29486: build: remove -Wdocumentation conditional

    b052b2d build: remove -Wdocumentation conditional (fanquake)
    
    Pull request description:
    
      Now that `--enable-suppress-external-warnings` is on by default, we can drop it. CIs are all already building with this flag.
    
    ACKs for top commit:
      Empact:
        Code review ACK bitcoin@b052b2d
      theuni:
        utACK b052b2d
    
    Tree-SHA512: 8b55f366dfeece082090fb87de67d8811967f4c89987a346431b2deb73c3c94401b59ec98bb1cbf790e18894f3d4c4aebb57cbc5fbf931c1046bf40239bc7a58
    fanquake committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    7859f4e View commit details
    Browse the repository at this point in the history
  17. Merge bitcoin#29484: serialization: replace char-is-int8_t autoconf d…

    …etection with c++20 concept
    
    ad7584d serialization: replace char-is-int8_t autoconf detection with c++20 concept (Cory Fields)
    
    Pull request description:
    
      Doesn't depend on bitcoin#29263, but it's really only relevant after that one's merged.
    
      This removes the only remaining autoconf macro in our serialization code (after bitcoin#29263), so it can now be used trivially and safely out-of-tree.
    
      ~Our code does not currently contain any concepts, but couldn't find any discussion or docs about avoiding them. I guess we'll see if this blows up our c-i.~
      Edit: Ignore this. ajtowns pointed out that we're already using a few concepts.
    
      This was introduced in bitcoin#13580. Please check my logic on this as I'm unable to test on a SmartOS system. Even better would be a confirmation from someone who can build there.
    
    ACKs for top commit:
      Empact:
        Code review ACK bitcoin@ad7584d
    
    Tree-SHA512: 1faf65c900700efb1cf3092c607a2230321b393cb2f029fbfb94bc8e50df1dabd7a9e4b91e3b34f0d2f3471aaf18ee7e56d91869db5c5f4bae84da95443e1120
    fanquake committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    bbfddb3 View commit details
    Browse the repository at this point in the history
  18. Merge bitcoin#29493: subtree: update crc32c subtree

    5d45552 Squashed 'src/crc32c/' changes from 0bac72c455..b60d2b7334 (fanquake)
    
    Pull request description:
    
      Update the crc32c subtree. Includes:
      * bitcoin-core/crc32c-subtree#6
    
      Which fixes bitcoin#29178.
    
    ACKs for top commit:
      hebasto:
        ACK 359a8d9.
      theuni:
        ACK 359a8d9
      dergoegge:
        ACK 359a8d9
    
    Tree-SHA512: 2cec81a34ad26bbbc298aea5daffa41e56114d31cc2eb5fe486f46a77c3467bba22bdeca1c52ae97220e119d98818304272fc6337442af55282accabcd4c5833
    fanquake committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    d752831 View commit details
    Browse the repository at this point in the history
  19. Merge bitcoin#29489: test: Remove Windows-specific code from `system_…

    …tests/run_command`
    
    51bc1c7 test: Remove Windows-specific code from `system_tests/run_command` (Hennadii Stepanov)
    
    Pull request description:
    
      The removed code has been dead since bitcoin#28967.
    
      Required as a precondition for replacing Boost.Process with [cpp-subprocess](bitcoin#28981) to make diff for this code meaningful and reviewable.
    
      The plan is to reintroduce Windows-specific code in this test simultaneously with enabling Windows support in cpp-subprocess.
    
    ACKs for top commit:
      Sjors:
        utACK 51bc1c7
      theStack:
        Code-review ACK 51bc1c7
    
    Tree-SHA512: 0e3875c4dc20564332555633daf2227223b10dc3d052557635eced2734575d1e0252fb19e46ea6e6c47a15c51c345f70b6d437e33435abcd0e4fcf29edb50887
    fanquake committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    dfbad09 View commit details
    Browse the repository at this point in the history
  20. Merge bitcoin#29504: ci: print python version on win64 native job

    1484998 ci: print python version on win64 native job (Max Edwards)
    
    Pull request description:
    
      Adds python version output to the Win64 Native CI job on Github Actions. Also clarifies that one of the versions already printed is the VCToolsVersion.
    
      Before:
    
      ![Screenshot 2024-02-28 at 13 47 50](https://github.com/bitcoin/bitcoin/assets/1204616/e01bbba8-e2ad-419f-95d1-925d54b3e87a)
    
      After:
    
      ![Screenshot 2024-02-28 at 13 54 22](https://github.com/bitcoin/bitcoin/assets/1204616/e8917376-c8ca-443e-91c7-a73064bd787b)
    
      Should the individual python test runners print the python version instead or also?
    
    ACKs for top commit:
      hebasto:
        ACK 1484998.
    
    Tree-SHA512: 6d084ff4a667156fa8797450de83bbcf596ddd3b2fa8ec04c1ca9a532a6fec716817b66da34db4ea0184bd802ef613e2b8f6142be9a511c5397785cfbfede0c3
    fanquake committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    8e894be View commit details
    Browse the repository at this point in the history
  21. Merge bitcoin#29412: p2p: Don't process mutated blocks

    d8087ad [test] IsBlockMutated unit tests (dergoegge)
    1ed2c98 Add transaction_identifier::size to allow Span conversion (dergoegge)
    1ec6bbe [validation] Cache merkle root and witness commitment checks (dergoegge)
    5bf4f5b [test] Add regression test for bitcoin#27608 (dergoegge)
    49257c0 [net processing] Don't process mutated blocks (dergoegge)
    2d8495e [validation] Merkle root malleation should be caught by IsBlockMutated (dergoegge)
    66abce1 [validation] Introduce IsBlockMutated (dergoegge)
    e7669e1 [refactor] Cleanup merkle root checks (dergoegge)
    95bddb9 [validation] Isolate merkle root checks (dergoegge)
    
    Pull request description:
    
      This PR proposes to check for mutated blocks early as a defense-in-depth mitigation against attacks leveraging mutated blocks.
    
      We introduce `IsBlockMutated` which catches all known forms of block malleation and use it to do an early mutation check whenever we receive a `block` message.
    
      We have observed attacks that abused mutated blocks in the past, which could have been prevented by simply not processing mutated blocks (e.g. bitcoin#27608 for which a regression test is included in this PR).
    
    ACKs for top commit:
      achow101:
        ACK d8087ad
      maflcko:
        ACK d8087ad 🏄
      fjahr:
        Code review ACK d8087ad
      sr-gi:
        Code review ACK bitcoin@d8087ad
    
    Tree-SHA512: 618ff4ea7f168e10f07504d3651290efbb1bb2ab3b838ffff3527c028caf6c52dedad18d04d3dbc627977479710930e200f2dfae18a08f627efe7e64a57e535f
    achow101 committed Feb 28, 2024
    Configuration menu
    Copy the full SHA
    2649e65 View commit details
    Browse the repository at this point in the history

Commits on Feb 29, 2024

  1. test: Fix intermittent failure in rpc_net.py --v2transport

    Make sure that v2 handshake is complete before comparing getpeerinfo
    outputs so that `transport_protocol_type` isn't stuck at 'detecting'.
    
    - on the python side, this is ensured by default
    `wait_for_handshake = True`  inside `add_p2p_connection()`.
    - on the c++ side, add a wait_until statement till
    `transport_protocol_type = v2`  so that v2 handshake is complete.
    
    Co-Authored-By: Martin Zumsande <mzumsande@gmail.com>
    stratospher and mzumsande committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    0487f91 View commit details
    Browse the repository at this point in the history
  2. tests: Provide more helpful assert_equal errors

    In the functional tests, we often compare dicts with assert_equal, but the
    output makes it very hard to tell exactly which entry in the dicts don't
    match when there are a lot of entries and only minor differences. Change
    the output to make it clearer.
    ajtowns committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    a3badf7 View commit details
    Browse the repository at this point in the history
  3. test: removes unnecessary check from validation_tests

    An unnecessary check was added to the block mutation tests
    in bitcoin#29412 where IsBlockMutated is returning true for the invalid
    reasons: we try to check mutation via transaction duplication,
    but the merkle root is not updated before the check, therefore
    the check fails because the provided root and the computed root
    differ, but not because the block contains the same transaction twice.
    
    The check is meaningless so it can be removed.
    sr-gi committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    6ee3997 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    25eab52 View commit details
    Browse the repository at this point in the history
  5. refactor: gui, simplify boost signals disconnection

    Preventing dangling signals.
    furszy committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    b7aa717 View commit details
    Browse the repository at this point in the history
  6. test: add -v1transport option and use it in test_runner

    This option beats the --v2transport option and is meant to be used in
    test_runner.py.
    It applies these to a few tests that are particulary interesting
    in terms of the transport type.
    This ensures that these tests arei always run with both v1 and v2, irrespective of
    whether the global --v2transport test_runner option is set or not.
    mzumsande committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    547aacf View commit details
    Browse the repository at this point in the history
  7. Merge bitcoin#29511: test: Fix intermittent failure in rpc_net.py --v…

    …2transport
    
    0487f91 test: Fix intermittent failure in rpc_net.py --v2transport (stratospher)
    
    Pull request description:
    
      Fixes bitcoin#29508.
    
      Make sure that v2 handshake is complete before comparing getpeerinfo outputs so that `transport_protocol_type` isn't stuck at 'detecting'.
    
      This is done by adding a wait_until statement till `transport_protocol_type = v2`  so that bitcoind waits until the v2 handshake is complete. (on the python side, this is ensured by default since `wait_for_handshake = True`  inside `add_p2p_connection()`)
    
    ACKs for top commit:
      Sjors:
        ACK 0487f91
      mzumsande:
        Code Review ACK 0487f91
      achow101:
        ACK 0487f91
      vasild:
        ACK 0487f91
    
    Tree-SHA512: 44dd646a61cd38da243f527df7321e22d1821c2b090be43673027746098caf450c6671708ed731ba257952df6b5886e64c9c2f9686a82f6ef0f25780b7a87d3d
    achow101 committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    61aa981 View commit details
    Browse the repository at this point in the history
  8. Merge bitcoin#29510: wallet: getrawchangeaddress and `getnewaddress…

    …` failures should not affect keypools for descriptor wallets
    
    e073f1d test: make sure keypool sizes do not change on `getrawchangeaddress`/`getnewaddress` failures (UdjinM6)
    367bb7a wallet: Avoid updating `ReserveDestination::nIndex` when `GetReservedDestination` fails (UdjinM6)
    
    Pull request description:
    
      I think the expected behaviour of `getrawchangeaddress` and `getnewaddress` RPCs is that their failure should not affect keypool in any way. At least that's how legacy wallets work, you can confirm this behaviour by running `wallet_keypool.py --legacy-wallet` on master with e073f1d applied on top. However running `wallet_keypool.py --descriptors` on the same commit results in the following failure:
      ```
        File "/path/to/bitcoin/test/functional/test_framework/test_framework.py", line 131, in main
          self.run_test()
        File "/path/to/bitcoin/test/functional/wallet_keypool.py", line 114, in run_test
          assert_equal(kp_size_before, kp_size_after)
        File "/path/to/bitcoin/test/functional/test_framework/util.py", line 57, in assert_equal
          raise AssertionError("not(%s)" % " == ".join(str(arg) for arg in (thing1, thing2) + args))
      AssertionError: not([18, 24] == [19, 24])
      ```
    
      This happens because we pass `nIndex` (which is a class member) into `GetReservedDestination` and since it's passed by reference we get an updated value back, so `nIndex` won't be equal `-1` anymore, no matter if the function failed or succeeded. This means that `ReturnDestination` (called by dtor of `ReserveDestination`) will try to return something we did not actually reserve.
    
      The fix is to simply use a temporary variable instead of a class member and only update `nIndex` when `op_address` actually has value, basically do it the same way we do for other class members (`address` and `fInternal`) already.
    
    ACKs for top commit:
      achow101:
        ACK e073f1d
      josibake:
        ACK bitcoin@e073f1d
    
    Tree-SHA512: 1128288a60dd4d8f306ef6f7ac66cdfeae3c9cc35c66ecada2d78fa61ac759f2a757b70fc3976ba8b5081200942b58dfabc184c01ccf911af40ba8c145344651
    achow101 committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    22a5ccf View commit details
    Browse the repository at this point in the history
  9. test: ignore --v2transport for older versions instead of asserting

    Otherwise, a run with
    test_runner.py --v2transport=1 --previous-releases --extended
    would hit the removed assert for wallet_backwards_compatibility.py
    mzumsande committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    3a25a57 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    ecc036c View commit details
    Browse the repository at this point in the history
  11. build: remove confusing and inconsistent disable-asm option

    1. It didn't actually disable asm usage in our code. Regardless of the setting,
       asm is used in random.cpp and support/cleanse.cpp.
    2. The value wasn't forwarded to libsecp as a user might have reasonably
       expected.
    3. We now have the DISABLE_OPTIMIZED_SHA256 define which is what disable-asm
       actually did in practice.
    
    If there is any desire, we can hook DISABLE_OPTIMIZED_SHA256 up to a new
    configure option that actually does what it says.
    theuni committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    376f0f6 View commit details
    Browse the repository at this point in the history
  12. doc: remove references to disable-asm option now that it's gone

    The comment about sha256_sse4::Transform is believed to be old and stale.
    theuni committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    f8a06f7 View commit details
    Browse the repository at this point in the history
  13. Merge bitcoin#29516: test: removes unnecessary check from validation_…

    …tests
    
    6ee3997 test: removes unnecessary check from validation_tests (Sergi Delgado Segura)
    
    Pull request description:
    
      An unnecessary check was added to the block mutation tests in bitcoin#29412 where IsBlockMutated is returning true for the invalid reasons: we try to check mutation via transaction duplication, but the merkle root is not updated before the check, therefore the check fails because the provided root and the computed root differ, but not because the block contains the same transaction twice.
    
      Notice that a proper check to test the duplication case is added a few lines later, so this check is just meaningless and can be removed. Check bitcoin#29412 (comment) for context.
    
    ACKs for top commit:
      maflcko:
        ACK 6ee3997
      dergoegge:
        utACK 6ee3997
      BrandonOdiwuor:
        utACK 6ee3997
    
    Tree-SHA512: e4627668091dda5f589e4c15edac39dc84aabc9b34b8f7fadbf512beb7111d5477e1b69567a34b4a657e48ba66dfb864db5ff37c9bbe3ff24cd32931b2dd89e6
    fanquake committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    9057598 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    efb70cd View commit details
    Browse the repository at this point in the history
  15. Merge bitcoin#29390: test: speedup bip324_cipher.py unit test

    a8c3454 test: speedup bip324_cipher.py unit test (Sebastian Falbesoner)
    
    Pull request description:
    
      Executing the unit tests for the bip324_cipher.py module currently takes quite long (>60 seconds on my older notebook). Most time here is spent in empty plaintext/ciphertext encryption/decryption loops in `test_fschacha20poly1305aead`:
    
      https://github.com/bitcoin/bitcoin/blob/9eeee7caa3f95ee17a645e12d330261f8e3c2dbf/test/functional/test_framework/crypto/bip324_cipher.py#L193-L194
      https://github.com/bitcoin/bitcoin/blob/9eeee7caa3f95ee17a645e12d330261f8e3c2dbf/test/functional/test_framework/crypto/bip324_cipher.py#L198-L199
    
      Their sole purpose is increasing the FSChaCha20Poly1305 packet counter in order to trigger rekeying, i.e. the actual encryption/decryption is not relevant, as the result is thrown away. This commit speeds up the tests by supporting to pass "None" as plaintext/ciphertext, indicating to the routines that no actual encryption/decryption should be done.
    
      The approach here is a bit hacky, a cleaner alternative would probably be to introduce a special `seek`/`skip_packets` method and not touch the encrypt/decrypt routines, but that seemed overkill to me only for speeding up a unit test. Open for suggestions.
    
      master branch:
    
      ```
      $ python3 -m unittest ./test/functional/test_framework/crypto/bip324_cipher.py
      ..
      ----------------------------------------------------------------------
      Ran 2 tests in 64.658s
      ```
      PR branch:
    
      ```
      $ python3 -m unittest ./test/functional/test_framework/crypto/bip324_cipher.py
      ..
      ----------------------------------------------------------------------
      Ran 2 tests in 0.822s
      ```
    
    ACKs for top commit:
      delta1:
        Concept ACK a8c3454
      epiccurious:
        Tested ACK a8c3454.
      achow101:
        ACK a8c3454
      marcofleon:
        ACK a8c3454. The comments at the top of `bip324_cipher.py` specify that this should only be used for testing, so I think this optimization makes sense in that context.
      cbergqvist:
        ACK a8c3454!
      stratospher:
        ACK a8c3454. I think it's worth it because of the significant speedup in the unit test.
    
    Tree-SHA512: 737dd805a850be6e035aa3c6d9e2c5b5b5e89ddc564f84a045c37e0238fef6419912de7c902139b64914abdd647c649fe02a694f1a5e1741d7d4459c041caccc
    achow101 committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    be5399e View commit details
    Browse the repository at this point in the history
  16. Merge bitcoin#29407: build: remove confusing and inconsistent disable…

    …-asm option
    
    f8a06f7 doc: remove references to disable-asm option now that it's gone (Cory Fields)
    376f0f6 build: remove confusing and inconsistent disable-asm option (Cory Fields)
    
    Pull request description:
    
      1. It didn't actually disable asm usage in our code. Regardless of the setting, asm is used in random.cpp and support/cleanse.cpp.
      2. The value wasn't forwarded to libsecp as a user might have reasonably expected.
      3. We now have the DISABLE_OPTIMIZED_SHA256 define which is what disable-asm actually did in practice.
    
      If there is any desire, we can hook DISABLE_OPTIMIZED_SHA256 up to a new configure option that actually does what it says.
    
      Additionally, this is one of the last (THE last?) remaining uses of autoconf defines in our crypto code. As such it seems like low-hanging fruit.
    
    ACKs for top commit:
      fanquake:
        ACK f8a06f7
    
    Tree-SHA512: 4a99c2130225acbe9dc7399ed572a04ca155cbfa3eef8178a632ba533017d264691e6482cceb1d8f9c5d768619d99a2466dea4b82b27b18b872bceae91b92fbb
    fanquake committed Feb 29, 2024
    Configuration menu
    Copy the full SHA
    dfc35c9 View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    a1fbde0 View commit details
    Browse the repository at this point in the history

Commits on Mar 1, 2024

  1. test: fix weight estimates in functional tests

    Updates the weight estimate to be more accurate by removing byte buffers and calculating the length of the count of scriptWitnesses rather than just using the count itself.
    m3dwards committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    3c49e69 View commit details
    Browse the repository at this point in the history
  2. test: fix flaky wallet_send functional test

    Rather than asserting that the exact fees are the same, check the fee rate rounded to nearest interger. This will account for small differences in fees caused by variability in ECDSA signature lengths.
    m3dwards committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    e67ab17 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29518: doc: correct function name in AssumeUTXO design …

    …docs
    
    efb70cd doc: correct function name in AssumeUTXO design docs (jrakibi)
    
    Pull request description:
    
      Corrected the function name from `CompleteSnapshotValidation()` to `MaybeCompleteSnapshotValidation()` in the assumeutxo design documentation.
      This change ensures that the documentation accurately reflects the actual function name used in the code
    
    ACKs for top commit:
      Empact:
        ACK bitcoin@efb70cd
    
    Tree-SHA512: 68b9be3ba710d91a2a955189e227f86b46ccb6a2a13c345d46f276cec6ff12b77ebf9814c4bcb00db7c17e221510e4a2e71175c78a6faf0e0e3159c761bc9b94
    fanquake committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    d72cf82 View commit details
    Browse the repository at this point in the history
  4. Merge bitcoin#29495: fuzz: add target for local address stuff

    25eab52 fuzz: add target for local addresses (brunoerg)
    
    Pull request description:
    
      This PR adds fuzz target for local address functions - (`AddLocal`, `RemoveLocal`, `SeenLocal`, `IsLocal`)
    
    ACKs for top commit:
      dergoegge:
        ACK 25eab52
      vasild:
        ACK 25eab52
    
    Tree-SHA512: 24faaab86dcd8835ba0e2d81fb6322a39a9266c7edf66415dbc4421754054f47efb6e0de4efdc7ea026b0686792658e86a526f7cf27cbc6cf9ed0c4aed376f97
    fanquake committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    ae4165f View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    1703067 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    5fbab37 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    1342a31 View commit details
    Browse the repository at this point in the history
  8. Merge bitcoin#29263: serialization: c++20 endian/byteswap/clz moderni…

    …zation
    
    86b7f28 serialization: use internal endian conversion functions (Cory Fields)
    432b18c serialization: detect byteswap builtins without autoconf tests (Cory Fields)
    297367b crypto: replace CountBits with std::bit_width (Cory Fields)
    52f9bba crypto: replace non-standard CLZ builtins with c++20's bit_width (Cory Fields)
    
    Pull request description:
    
      This replaces bitcoin#28674, bitcoin#29036, and bitcoin#29057. Now ready for testing and review.
    
      Replaces platform-specific endian and byteswap functions. This is especially useful for kernel, as it means that our deep serialization code no longer requires bitcoin-config.h.
    
      I apologize for the size of the last commit, but it's hard to avoid making those changes at once.
    
      All platforms now use our internal functions rather than libc or platform-specific ones, with the exception of MSVC.
    
      Sadly, benchmarking showed that not all compilers are capable of detecting and optimizing byteswap functions, so compiler builtins are instead used where possible. However, they're now detected via macros rather than autoconf checks.
    
      This[ matches how libc++ implements std::byteswap for c++23](https://github.com/llvm/llvm-project/blob/main/libcxx/include/__bit/byteswap.h#L26).
    
      I suggest we move/rename `compat/endian.h`, but I left that out of this PR to avoid bikeshedding.
    
      bitcoin#29057 pointed out some irregularities in benchmarks. After messing with various compilers and configs for a few weeks with these changes, I'm of the opinion that we can't win on every platform every time, so we should take the code that makes sense going forward. That said, if any real-world slowdowns are caused here, we should obviously investigate.
    
    ACKs for top commit:
      maflcko:
        ACK 86b7f28 📘
      fanquake:
        ACK 86b7f28 - we can finish pruning out the __builtin_clz* checks/usage once the minisketch code has been updated. This is more good cleanup pre-CMake & for the kernal.
    
    Tree-SHA512: 715a32ec190c70505ffbce70bfe81fc7b6aa33e376b60292e801f60cf17025aabfcab4e8c53ebb2e28ffc5cf4c20b74fe3dd8548371ad772085c13aec8b7970e
    fanquake committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    8da62a1 View commit details
    Browse the repository at this point in the history
  9. build: move sha256_sse4 into libbitcoin_crypto_base

    Followup to discussion in bitcoin#29407.
    Drops LIBBITCOIN_CRYPTO_SSE4.
    fanquake committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    5216933 View commit details
    Browse the repository at this point in the history
  10. configure: test for unix domain sockets

    Copied from bitcoin#9979
    
    Co-authored-by: laanwj <126646+laanwj@users.noreply.github.com>
    pinheadmz and laanwj committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    adb3a3e View commit details
    Browse the repository at this point in the history
  11. netbase: refactor CreateSock() to accept sa_family_t

    Also implement CService::GetSAFamily() to provide sa_family_t
    pinheadmz committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    bae86c8 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    74f568c View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    3a7d654 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    a89c3f5 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    ac2ecf3 View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    d9318a3 View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    a88bf9d View commit details
    Browse the repository at this point in the history
  18. gui: accomodate unix socket Proxy in updateDefaultProxyNets()

    This will require a follow-up to add unix socket options to the GUI
    pinheadmz committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    c3bd431 View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    c65c0d0 View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    bfe5192 View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    567cec9 View commit details
    Browse the repository at this point in the history
  22. build, msvc: Do not compile redundant sources

    The `test\util\setup_common.cpp` and `wallet\test\util.cpp` sources are
    already compiled and included in the `libtest_util` library, which is
    linked to the `test_bitcoin-qt.exe` binary. This change follows the same
    logic as `Makefile.qttest.include`.
    hebasto committed Mar 1, 2024
    Configuration menu
    Copy the full SHA
    6962c66 View commit details
    Browse the repository at this point in the history

Commits on Mar 2, 2024

  1. ci: Fix functional tests step for pull requests in Windows GHA job

    This functionality has been broken since the Windows runner image
    version `20240128.1.0`.
    hebasto committed Mar 2, 2024
    Configuration menu
    Copy the full SHA
    57e6e22 View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29528: build: move sha256_sse4 into libbitcoin_crypto_base

    5216933 build: move sha256_sse4 into libbitcoin_crypto_base (fanquake)
    
    Pull request description:
    
      Followup to discussion in bitcoin#29407.
      Drops `LIBBITCOIN_CRYPTO_SSE4`.
    
    ACKs for top commit:
      theuni:
        utACK 5216933.
      hebasto:
        ACK 5216933.
      TheCharlatan:
        ACK 5216933
    
    Tree-SHA512: 44889340b7647409a439ebe97012f66383e0e5f3d99200ffd55c124e91d3ed164f02b736ff9dafca2d9ba7e365fcdc79aff054471d4bc240d035b58659407420
    fanquake committed Mar 2, 2024
    Configuration menu
    Copy the full SHA
    fce53f1 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    217c0ce View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2024

  1. Configuration menu
    Copy the full SHA
    990b348 View commit details
    Browse the repository at this point in the history

Commits on Mar 4, 2024

  1. qt: 27.0 translations update

    hebasto committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    632b69f View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29524: p2p: Don't consider blocks mutated if they don't…

    … connect to known prev block
    
    a1fbde0 p2p: Don't consider blocks mutated if they don't connect to known prev block (Greg Sanders)
    
    Pull request description:
    
      Followup to bitcoin#29412 to revert some of the behavior change that was likely unintentional.
    
      Based on comments from bitcoin#29412 (comment)
    
    ACKs for top commit:
      0xB10C:
        utACK a1fbde0
      dergoegge:
        Code review ACK a1fbde0
      Sjors:
        ACK a1fbde0
      sr-gi:
        tACK bitcoin@a1fbde0
    
    Tree-SHA512: be6204c8cc57b271d55c1d02a5c77d03a37738d91cb5ac164f483b0bab3991c24679c5ff02fbaa52bf37ee625874b63f4c9f7b39ad6fd5f3a25386567a0942e4
    fanquake committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    e60804f View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin-core/gui#801: Fix nullptr clientModel access during shu…

    …tdown
    
    b7aa717 refactor: gui, simplify boost signals disconnection (furszy)
    f3a612f gui: guard accessing a nullptr 'clientModel' (furszy)
    
    Pull request description:
    
      Fixing bitcoin#800.
    
      During shutdown, already queue events dispatched from the backend such
      'numConnectionsChanged' and 0networkActiveChanged' could try to access
      the clientModel object, which might not exist because we manually delete
      it inside 'BitcoinApplication::requestShutdown()'.
    
      This happen because boost does not clears the queued events when they arise
      concurrently with the signal disconnection (see https://www.boost.org/doc/libs/1_55_0/doc/html/signals2/thread-safety.html).
      From the docs:
      1) "Note that since we unlock the connection's mutex before executing its associated slot, it is possible a slot will still be executing after it has been disconnected by a [connection::disconnect](https://www.boost.org/doc/libs/1_55_0/doc/html/boost/signals2/connection.html#idp89761576-bb)(), if the disconnect was called concurrently with signal invocation."
      2)  "The fact that concurrent signal invocations use the same combiner object means you need to insure any custom combiner you write is thread-safe"
    
      So, we need to guard `clientModel` before accessing it at the handler side.
    
    ACKs for top commit:
      hebasto:
        re-ACK b7aa717
    
    Tree-SHA512: f1a21d69248628f6a13556a9438c9e4ea9f0a3678aab09ddfe836e78e4eee405a6730d37d39f1445068ada3a110b655b619cf0e090fc2d0cdf99bed061364aeb
    hebasto committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    776d48d View commit details
    Browse the repository at this point in the history
  4. Merge bitcoin#29533: build, msvc: Do not compile redundant sources

    6962c66 build, msvc: Do not compile redundant sources (Hennadii Stepanov)
    
    Pull request description:
    
      The `test\util\setup_common.cpp` and `wallet\test\util.cpp` sources are already compiled and included in the `libtest_util` library, which is linked to the `test_bitcoin-qt.exe` binary. This PR follows the same logic as `Makefile.qttest.include`.
    
      Useful for comparing project files across the master branch and the developing [cmake-staging](https://github.com/hebasto/bitcoin/tree/cmake-staging) branch.
    
    ACKs for top commit:
      sipsorcery:
        utACK 6962c66.
    
    Tree-SHA512: 5c40f52f3c7df3fff994fb136d4b2779ade3857fa14cf167d3f8600f28e821294e3779ebd4f4ab10ad57bdc8e952f99f6eb211e746a986ec24e26c7d1a74c04f
    fanquake committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    98f57cd View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    af78d31 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    1611aa1 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    d9f30b0 View commit details
    Browse the repository at this point in the history
  8. doc: remove rel note fragments

    These have been added to
    https://github.com/bitcoin-core/bitcoin-devwiki/wiki/27.0-Release-Notes-Draft,
    where they can be improved further.
    fanquake committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    6e5eda8 View commit details
    Browse the repository at this point in the history
  9. Merge bitcoin#29546: qt: 27.0 translations update

    632b69f qt: 27.0 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.
    
    ACKs for top commit:
      stickies-v:
        ACK 632b69f , getting a zero-diff when running `update-translations.py` on fce53f1
    
    Tree-SHA512: 1e2823451e9192e60dec9d50e801fca4cdc621e6acabdc15dbd88cab1624e05bd56de9ac818a1ff91002d62e24c0bab0ef1eaad3fd3cc6ef6cd044989d39734f
    fanquake committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    3329b35 View commit details
    Browse the repository at this point in the history
  10. Merge bitcoin#29548: doc: remove rel note fragments

    6e5eda8 doc: remove rel note fragments (fanquake)
    
    Pull request description:
    
      These have been added to https://github.com/bitcoin-core/bitcoin-devwiki/wiki/27.0-Release-Notes-Draft, where they can be improved further.
    
    ACKs for top commit:
      stickies-v:
        ACK 6e5eda8
    
    Tree-SHA512: 66874fe9a64ac3a99a15a602ac68ae0a9e08f52a0fe732e48136b245c2127ed04e8217f86c44459696b03b01532a926ab8d41101c6e670902c1fc31e583b4dc9
    fanquake committed Mar 4, 2024
    Configuration menu
    Copy the full SHA
    98005b6 View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    a8ec9ee View commit details
    Browse the repository at this point in the history

Commits on Mar 5, 2024

  1. Configuration menu
    Copy the full SHA
    9701bc4 View commit details
    Browse the repository at this point in the history
  2. seeds: Update mainnet seeds

    achow101 committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    34a233b View commit details
    Browse the repository at this point in the history
  3. seeds: Update testnet seeds

    achow101 committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    7ab5439 View commit details
    Browse the repository at this point in the history
  4. qt, test: Set organization name

    If `setOrganizationName()` and `setApplicationName()` has not been
    previously called, the `QSettings` object will not be able to read or
    write any settings.
    hebasto committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    49cf635 View commit details
    Browse the repository at this point in the history
  5. qt, test: Clean settings after tests

    A test suite should not leave any artifacts except for those explicitly
    expected.
    
    This change is easy to review with `git diff --ignore-all-space`
    command.
    hebasto committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    0dcbad3 View commit details
    Browse the repository at this point in the history
  6. Merge bitcoin#29502: test: modify weight estimate in functional tests

    e67ab17 test: fix flaky wallet_send functional test (Max Edwards)
    3c49e69 test: fix weight estimates in functional tests (Max Edwards)
    
    Pull request description:
    
      Fixes: bitcoin#25164
    
      The wallet_send functional test has been flaky due to a slightly overestimated weight calculation. This PR makes the weight calculation more accurate, although occasionally, due to how ECDSA signatures can be different lengths it might slightly over estimate. The assertion in the test can handle this slight variation and so should continue passing.
    
      Update:
    
      Because the signature can be shorter that is used in the weight estimation or the final transaction the estimate could be both slightly smaller or slightly larger.
    
    ACKs for top commit:
      achow101:
        ACK e67ab17
      S3RK:
        Code review ACK e67ab17
    
    Tree-SHA512: 3bf73b355309dce860fa1520afb8461e94268e4bcf0e92a8273c279b41b058c44472cf59daafa15a515529b50bd665b5d498bbe4d934f2315dbe810a05bc73f9
    fanquake committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    2b260ea View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    53ffd5a View commit details
    Browse the repository at this point in the history
  8. Merge bitcoin#29567: doc: fix broken reference to CI setup in test/li…

    …nt/README.md
    
    53ffd5a docs: Fix broken reference to CI setup in test/lint/README.md (naiyoma)
    
    Pull request description:
    
      The current [reference](https://github.com/bitcoin/bitcoin/blob/master/test/ci/lint/04_install.sh
      ) for CI setup in /test/lint#readme returns a 404.
    
    ACKs for top commit:
      fanquake:
        ACK 53ffd5a
    
    Tree-SHA512: 813c19a145f09e7da11963598b70dc438acba784eb722e509d6af59dc3af8f5da97628c454bed2b03cc919689603e070796de2db8d784d9162ae34e7b85a77d9
    fanquake committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    3763f20 View commit details
    Browse the repository at this point in the history
  9. Merge bitcoin#29544: doc: update signet faucet link in offline-signin…

    …g-tutorial.md
    
    990b348 doc: update signet faucet link in offline-signing-tutorial.md (Supachai Kheawjuy)
    
    Pull request description:
    
      https://signet.bc-2.jp is broken and https://signetfaucet.com is the same as before.
    
      https://signet.bc-2.jp from archive.org
      <img width="1258" alt="image" src="https://github.com/bitcoin/bitcoin/assets/73651621/36817aa6-95ea-427d-8d1d-93e21af86dce">
    
      https://signetfaucet.com
      <img width="1242" alt="image" src="https://github.com/bitcoin/bitcoin/assets/73651621/e3248fb0-8a6d-45b3-9268-d883d2385c8f">
    
      reference: https://en.bitcoin.it/wiki/Signet#Faucets
    
    ACKs for top commit:
      fanquake:
        ACK 990b348
    
    Tree-SHA512: 482c931168a162cc666ecbe610e80d94ae433ebdc6bc52832bcc40c58592f9d9b8c7f1aea6faa2739873e80c6d4ea70c8a4f78d18067d1739e8070effce83062
    fanquake committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    ba1bf53 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    eb7cc9f View commit details
    Browse the repository at this point in the history
  11. Merge bitcoin#29547: kernel: chainparams updates for 27.x

    d9f30b0 kernel: chainparams updates for 27.x (fanquake)
    1611aa1 kernel: update chainTxData for 27.x (fanquake)
    af78d31 kernel: update nMinimumChainWork & defaultAssumeValid for 27.x (fanquake)
    
    Pull request description:
    
      Update chainparams pre `27.x` branch off.
    
      Note: Remember that some variance is expected in the m_assumed_* sizes.
    
    ACKs for top commit:
      Sjors:
        ACK d9f30b0
      glozow:
        ACK d9f30b0 (checked mainnet locally, checked testnet/signet on block explorers and sanity checked the numbers)
      instagibbs:
        ACK d9f30b0
    
    Tree-SHA512: 6ce65b964334b9d15fff4aa1af6d26fb3ef4eab50b8237fc2cda180230ae724a99d13c9f6b3c58105548d3520c0ca0810f354736132d11793d6c91ad3eeac4c7
    fanquake committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    11a1db8 View commit details
    Browse the repository at this point in the history
  12. Merge bitcoin#29541: test: remove file-wide interpreter.cpp ubsan sup…

    …pression
    
    217c0ce test: remove file-wide interpreter.cpp ubsan suppression (fanquake)
    
    Pull request description:
    
    ACKs for top commit:
      Sjors:
        utACK 217c0ce
      hebasto:
        ACK 217c0ce.
      dergoegge:
        ACK 217c0ce
    
    Tree-SHA512: ae0c2ff4531fdb7b0296709f66b71d4065fe3f32cbd39a44e45934a975b5cf6cf01c2f136f110753efee8e301636f7700278aed1d995b463fc025c07d586a8fa
    fanquake committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    faff279 View commit details
    Browse the repository at this point in the history
  13. Merge bitcoin#29535: ci: Fix functional tests step for pull requests …

    …in Windows GHA job
    
    57e6e22 ci: Fix functional tests step for pull requests in Windows GHA job (Hennadii Stepanov)
    
    Pull request description:
    
      This functionality has been broken since the Windows runner image version `20240128.1.0`.
    
      Fixes bitcoin#29534.
    
    ACKs for top commit:
      fanquake:
        I can ACK 57e6e22 this only based on the fact that in this PR, the native Windows functional tests run: https://github.com/bitcoin/bitcoin/actions/runs/8119259315/job/22194887783#step:27:72, and that the native Windows functional tests are not currently running on master: https://github.com/bitcoin/bitcoin/actions/runs/8131828989/job/22239779585#step:27:63.
      hebasto:
        > I can ACK 57e6e22
      m3dwards:
        ACK bitcoin@57e6e22 as a way to get the tests running again quickly.
    
    Tree-SHA512: 03e04fb96292e31ca0a8057e91b57f0812df92589f52f0602844e151ec5ec296badf5e549b1b606bab85607a3f9cd6abdfd328df80bf268501b537a596db0d96
    fanquake committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    0fa9f17 View commit details
    Browse the repository at this point in the history
  14. fuzz: restrict fopencookie usage to Linux & FreeBSD

    Should fix the GCC compilation portion of bitcoin#29517:
    bitcoin#29517 (comment).
    
    See also:
    https://www.gnu.org/software/gnulib/manual/html_node/fopencookie.html
    but note that FreeBSD has supported this function since 11.x.
    fanquake committed Mar 5, 2024
    Configuration menu
    Copy the full SHA
    312f338 View commit details
    Browse the repository at this point in the history

Commits on Mar 6, 2024

  1. Merge bitcoin#29529: fuzz: restrict fopencookie usage to Linux & FreeBSD

    312f338 fuzz: restrict fopencookie usage to Linux & FreeBSD (fanquake)
    
    Pull request description:
    
      Should fix the GCC compilation portion of bitcoin#29517 (comment).
    
      See also: https://www.gnu.org/software/gnulib/manual/html_node/fopencookie.html.
    
    ACKs for top commit:
      m3dwards:
        ACK bitcoin@312f338
      TheCharlatan:
        utACK 312f338
    
    Tree-SHA512: aa8ff20c3fa735415d05a93b8855877035c300f4d2dfd82f65fd9ed5b5c96ab619b4d84eef114ed0013dc5ff0800cb628ed3801e1efde0cfb0d426930d1673d5
    fanquake committed Mar 6, 2024
    Configuration menu
    Copy the full SHA
    6c77dbf View commit details
    Browse the repository at this point in the history
  2. test: exit with code 1 when no fn tests are found

    Prevents the test_runner from exiting silently with code 0 when no tests were found.
    m3dwards committed Mar 6, 2024
    Configuration menu
    Copy the full SHA
    33268a8 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29561: Fixed seeds update for 27.0

    7ab5439 seeds: Update testnet seeds (Ava Chow)
    34a233b seeds: Update mainnet seeds (Ava Chow)
    9701bc4 makeseeds: Check i2p seeds too (Ava Chow)
    a8ec9ee makeseeds: Update PATTERN_AGENT (Ava Chow)
    
    Pull request description:
    
      The ipv4 and ipv6 seeds are updated from sipa's crawler, as outlined in contrib/seeds/README.md. The onion and i2p seeds are pulled from my node's addrman using `getrawaddrman` and then a connection was made to each node to retrieve the current service flags, block height, and user agent string before filtering through makeseeds.py. The CJDNS nodes were not updated as my node is not connected to that network.
    
      makeseeds.py is also updated for more recent user agent strings as well as being able to handle i2p addresses.
    
      Also updated the testnet seeds.
    
    ACKs for top commit:
      fanquake:
        ACK 7ab5439
    
    Tree-SHA512: 5edba63d51116e5d9a8ae23561ba5a311f4df88c555c60b2d7a6066e63f8cdfd256be7dac9acea4b370879d0d3c3a4b55328c15de4284b5f0d86e6cac2e5ba9b
    fanquake committed Mar 6, 2024
    Configuration menu
    Copy the full SHA
    55bd5d8 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    fd4fe41 View commit details
    Browse the repository at this point in the history
  5. Merge bitcoin#29579: build: bump version to 27.99

    fd4fe41 build: bump version to 27.99 (fanquake)
    
    Pull request description:
    
      27.x has been branched off.
    
    ACKs for top commit:
      glozow:
        slow ACK fd4fe41
      theStack:
        ACK fd4fe41
      dergoegge:
        utACK fd4fe41
    
    Tree-SHA512: 1550becd190c1a5195d3123a83b6ac790797c485e2dbbfb0f4cb0bc0a611d8331a553b94f2896cf8ac3755040d7532d9ee6e312bf3b8e4ca9a5adce6d00c484e
    fanquake committed Mar 6, 2024
    Configuration menu
    Copy the full SHA
    ab5dfdb View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    115c283 View commit details
    Browse the repository at this point in the history

Commits on Mar 7, 2024

  1. Merge bitcoin#29576: Update functional test runner to return error co…

    …de when no tests are found to run
    
    33268a8 test: exit with code 1 when no fn tests are found (Max Edwards)
    
    Pull request description:
    
      As discussed in the following PR comment: bitcoin#29535 (comment)
    
      Prevents the test_runner from exiting silently with code 0 when no tests were found which has recently happened after a GHA runner update such as in this run: https://github.com/bitcoin/bitcoin/actions/runs/8131828989/job/22239779585#step:27:63
    
    ACKs for top commit:
      TheCharlatan:
        ACK 33268a8
      theStack:
        lgtm ACK 33268a8
    
    Tree-SHA512: d389e9f5e4da7ce1627fb2fad9b33baf0b04e75dbdbfc0dbf5f1e3e2b0ae1e79721476c5668476055b0f7de29723ed02c8d7e420081a555030cb784886e240fc
    fanquake committed Mar 7, 2024
    Configuration menu
    Copy the full SHA
    59567d7 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    738a537 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin-core/gui#803: test: Set organization name

    0dcbad3 qt, test: Clean settings after tests (Hennadii Stepanov)
    49cf635 qt, test: Set organization name (Hennadii Stepanov)
    
    Pull request description:
    
      From Qt [docs](https://doc.qt.io/qt-5/qsettings.html#QSettings-4):
    
      > If [`QCoreApplication::setOrganizationName()`](https://doc.qt.io/qt-5/qcoreapplication.html#organizationName-prop) and [`QCoreApplication::setApplicationName()`](https://doc.qt.io/qt-5/qcoreapplication.html#applicationName-prop) has not been previously called, the `QSettings` object will not be able to read or write any settings, and [`status()`](https://doc.qt.io/qt-5/qsettings.html#status) will return [`AccessError`](https://doc.qt.io/qt-5/qsettings.html#Status-enum).
    
      Fixes bitcoin-core/gui#799.
    
    ACKs for top commit:
      pablomartin4btc:
        utACK 0dcbad3
    
    Tree-SHA512: d5ac160f17cc358f0c1b89097193cd5adfd25f5531955c211f3e0994fc084e0a2b8d3aeddebe38f3a8ab5333edef5aa92b18915885c9e58b33f2e5786f31c600
    hebasto committed Mar 7, 2024
    Configuration menu
    Copy the full SHA
    c2c6a7d View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    bd8f035 View commit details
    Browse the repository at this point in the history
  5. build: ignore deprecated-declaration warnings in objc++ macOS code

    These come from GUI code, and haven't/aren't being fixed, see discussion
    in bitcoin-core/gui#112. For now, just ignore
    them entirely. Note that this only applies to ObjCXX code, so will not
    hide any relevant warnings coming from C or CXX code (and they would be
    unlikely in any case).
    
    Alternative to bitcoin#29362, which disables all compiler warnings, for macOS
    builds in the CI.
    
    Relevant output:
    ```bash
    qt/macnotificationhandler.mm:27:9: warning: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
            NSUserNotification* userNotification = [[NSUserNotification alloc] init];
            ^
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
    @interface NSUserNotification : NSObject <NSCopying> {
               ^
    qt/macnotificationhandler.mm:27:50: warning: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
            NSUserNotification* userNotification = [[NSUserNotification alloc] init];
                                                     ^
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
    @interface NSUserNotification : NSObject <NSCopying> {
               ^
    qt/macnotificationhandler.mm:30:11: warning: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
            [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification: userNotification];
              ^
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
    @interface NSUserNotificationCenter : NSObject {
               ^
    3 warnings generated.
    ```
    fanquake committed Mar 7, 2024
    Configuration menu
    Copy the full SHA
    8b7630c View commit details
    Browse the repository at this point in the history
  6. Merge bitcoin#29577: build: ignore deprecated-declarations warnings i…

    …n objc++ macOS code
    
    8b7630c build: ignore deprecated-declaration warnings in objc++ macOS code (fanquake)
    bd8f035 build: Add missed definition for `AM_OBJCXXFLAGS` (Hennadii Stepanov)
    
    Pull request description:
    
      These come from GUI code, and haven't/aren't being fixed, see discussion in bitcoin-core/gui#112. For now, just ignore them entirely. Note that this only applies to ObjCXX code, so will not hide any relevant warnings coming from C or CXX code (and they would be unlikely in any case).
    
      Alternative to bitcoin#29362 (which disables all compiler warnings, for macOS builds in the CI). This PR includes one commit from that PR.
    
      Relevant output:
      ```bash
      qt/macnotificationhandler.mm:27:9: warning: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
              NSUserNotification* userNotification = [[NSUserNotification alloc] init];
              ^
      /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
      @interface NSUserNotification : NSObject <NSCopying> {
                 ^
      qt/macnotificationhandler.mm:27:50: warning: 'NSUserNotification' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
              NSUserNotification* userNotification = [[NSUserNotification alloc] init];
                                                       ^
      /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:24:12: note: 'NSUserNotification' has been explicitly marked deprecated here
      @interface NSUserNotification : NSObject <NSCopying> {
                 ^
      qt/macnotificationhandler.mm:30:11: warning: 'NSUserNotificationCenter' is deprecated: first deprecated in macOS 11.0 - All NSUserNotifications API should be replaced with UserNotifications.frameworks API [-Wdeprecated-declarations]
              [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification: userNotification];
                ^
      /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSUserNotification.h:118:12: note: 'NSUserNotificationCenter' has been explicitly marked deprecated here
      @interface NSUserNotificationCenter : NSObject {
                 ^
      3 warnings generated.
      ```
    
    ACKs for top commit:
      hebasto:
        re-ACK 8b7630c.
    
    Tree-SHA512: 2f1fec97d9aa46aa23989d9fb283fc574dff9dc8f44847bb273b8fcf942f56f64c6d93dfcd7af8fbb52bf152e0fe76818118ce416d8cec5de852c32b6697a243
    fanquake committed Mar 7, 2024
    Configuration menu
    Copy the full SHA
    67fb94c View commit details
    Browse the repository at this point in the history
  7. test: test_bitcoin: allow -testdatadir=<datadir>

    Specifying this argument overrides the path location for test_bitcoin;
    it becomes <datadir>/test_common_Bitcoin Core/<testname>/datadir. Also,
    this directory isn't removed after the test completes. This can make it
    easier for developers to study the results of a test (see the state of
    the data directory after the test runs), and also (for example) have an
    editor open on debug.log to monitor it across multiple test runs instead
    of having to re-open a different pathname each time.
    
    Example usage (note the "--" is needed):
    
    test_bitcoin --run_test=getarg_tests/boolarg -- \
    -testdatadir=/somewhere/mydatadir
    
    This will create (if necessary) and use the data directory:
    
    /somewhere/mydatadir/test_common_Bitcoin Core/getarg_tests/boolarg/datadir
    
    Co-authored-by: furszy <mfurszy@protonmail.com>
    LarryRuane and furszy committed Mar 7, 2024
    Configuration menu
    Copy the full SHA
    d27e2d8 View commit details
    Browse the repository at this point in the history

Commits on Mar 8, 2024

  1. Configuration menu
    Copy the full SHA
    4f1753d View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29583: fuzz: Apply fuzz env (suppressions, etc.) when f…

    …etching harness list
    
    738a537 [fuzz] Apply fuzz env (suppressions, etc.) when fetching harness list (dergoegge)
    
    Pull request description:
    
      The fuzz test runner does not add the UBSan suppressions when fetching the harness list. We can observe this in CI as lots of UBSan errors prior to the harnesses actually executing: https://api.cirrus-ci.com/v1/task/5678606140047360/logs/ci.log
    
      ```
      + test/fuzz/test_runner.py -j10 -l DEBUG /ci_container_base/ci/scratch/qa-assets/fuzz_seed_corpus/ --empty_min_time=60
      /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/string_view:578:38: runtime error: unsigned integer overflow: 12 - 23 cannot be represented in type 'size_type' (aka 'unsigned long')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/string_view:578:38 in
      /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/string_view:578:33: runtime error: implicit conversion from type 'size_type' (aka 'unsigned long') of value 18446744073709551605 (64-bit, unsigned) to type 'const difference_type' (aka 'const long') changed the value to -11 (64-bit, signed)
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/string_view:578:33 in
      crypto/sha256.cpp:75:57: runtime error: left shift of 1359893119 by 26 places cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:75:57 in
      crypto/sha256.cpp:75:79: runtime error: left shift of 1359893119 by 21 places cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:75:79 in
      crypto/sha256.cpp:75:101: runtime error: left shift of 1359893119 by 7 places cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:75:101 in
      crypto/sha256.cpp:82:47: runtime error: unsigned integer overflow: 2968370640 + 2483695512 cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:82:47 in
      crypto/sha256.cpp:74:57: runtime error: left shift of 1779033703 by 30 places cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:74:57 in
      crypto/sha256.cpp:74:79: runtime error: left shift of 1779033703 by 19 places cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:74:79 in
      crypto/sha256.cpp:74:101: runtime error: left shift of 1779033703 by 10 places cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:74:101 in
      crypto/sha256.cpp:83:29: runtime error: unsigned integer overflow: 3458249854 + 980412007 cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:83:29 in
      crypto/sha256.cpp:82:21: runtime error: unsigned integer overflow: 528734635 + 4228187651 cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:82:21 in
      crypto/sha256.cpp:84:7: runtime error: unsigned integer overflow: 1013904242 + 3720769133 cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:84:7 in
      crypto/sha256.cpp:85:12: runtime error: unsigned integer overflow: 3720769133 + 2654153126 cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:85:12 in
      crypto/sha256.cpp:82:33: runtime error: unsigned integer overflow: 4165002546 + 1259303586 cannot be represented in type 'uint32_t' (aka 'unsigned int')
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:82:33 in
      crypto/sha256.cpp:125:50: runtime error: unsigned integer overflow: 3835390401 + 1367343104 cannot be represented in type 'unsigned int'
      SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior crypto/sha256.cpp:125:50 in
      crypto/sha256.cpp:77:58: runtime error: left shift of 1367343104 by 15 places cannot be represented in type 'uint32_t' (aka 'unsigned int')
      ...
      ```
    
      To fix this we simply apply the usual fuzz env variables (that apply the suppressions) when fetching the harness list as well.
    
    ACKs for top commit:
      ismaelsadeeq:
        Tested ACK 738a537
      fanquake:
        ACK 738a537
    
    Tree-SHA512: befebaeb4ee5f2eddca67fc6dc69e997c6a250ea54844e5e6e93d1f6a13be49364a3ace31eaa942b02dcf73612af29ec4ace86c9eb7567b92f6f5dc3ea14dc11
    fanquake committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    c49450d View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29595: doc: Wrap flags with code in developer-notes.md

    4f1753d doc: Wrap flags with code in developer-notes.md (spicyzboss)
    
    Pull request description:
    
      Before wrap code block
      <img width="1077" alt="image" src="https://github.com/bitcoin/bitcoin/assets/73651621/93f39960-311d-411d-acaf-dce69ad36ca0">
    
      After wrap code block
      <img width="1073" alt="image" src="https://github.com/bitcoin/bitcoin/assets/73651621/fe6a5cd2-e981-45b1-a150-5a55fab81ae6">
    
    ACKs for top commit:
      fanquake:
        ACK 4f1753d
    
    Tree-SHA512: 15a123f3a13c62d9cfdf62d5df351b8c2b3f9f666fba5a2722325600d802a29da61773ad32fb9f8483a915f59dd42731ba724b81b7874d39cb9627f0266b5713
    fanquake committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    54172c6 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    8aff3fd View commit details
    Browse the repository at this point in the history
  5. build, msvc: Cleanup bitcoin_config.h.in

    This change mirrors changes from bitcoin#29263.
    hebasto committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    8e17f00 View commit details
    Browse the repository at this point in the history
  6. Merge bitcoin#29600: build, msvc: Cleanup bitcoin_config.h.in

    8e17f00 build, msvc: Cleanup `bitcoin_config.h.in` (Hennadii Stepanov)
    
    Pull request description:
    
      This PR mirrors changes from bitcoin#29263 into the MSVC build system.
    
    ACKs for top commit:
      fanquake:
        ACK 8e17f00
    
    Tree-SHA512: b8e5cca015ff112c2969a60436524e97007ff2c559b3c12425d0549af694b16248311cc3e7c33f798bc095a679933641496836bb846eee6a2a377956ef53f56e
    fanquake committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    1cd2e29 View commit details
    Browse the repository at this point in the history
  7. Reserve memory for ToLower/ToUpper conversions

    Lőrinc committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    6f2f4a4 View commit details
    Browse the repository at this point in the history
  8. wallet: default wallet migration, modify inconvenient backup filename

    On default legacy wallets, the backup filename starts with an "-" due
    to the wallet name being empty. This is inconvenient for systems who
    treat what follows the initial "-" character as flags.
    furszy committed Mar 8, 2024
    Configuration menu
    Copy the full SHA
    a951dba View commit details
    Browse the repository at this point in the history

Commits on Mar 9, 2024

  1. Merge bitcoin#28960: kernel: Remove dependency on CScheduler

    d5228ef kernel: Remove dependency on CScheduler (TheCharlatan)
    06069b3 scripted-diff: Rename MainSignals to ValidationSignals (TheCharlatan)
    0d6d2b6 scripted-diff: Rename SingleThreadedSchedulerClient to SerialTaskRunner (TheCharlatan)
    4abde2c [refactor] Make MainSignals RAII styled (TheCharlatan)
    84f5c13 refactor: De-globalize g_signals (TheCharlatan)
    473dd4b [refactor] Prepare for g_signals de-globalization (TheCharlatan)
    3fba3d5 [refactor] Make signals optional in mempool and chainman (TheCharlatan)
    
    Pull request description:
    
      By defining a virtual interface class for the scheduler client, users of the kernel can now define their own event consuming infrastructure, without having to spawn threads or rely on the scheduler design.
    
      Removing `CScheduler` also allows removing the thread and exception modules from the kernel library.
    
      To make the `CMainSignals` class easier to use from a kernel library perspective, remove its global instantiation and adopt RAII practices.
    
      Renames `CMainSignals` to `ValidationSignals`, which more accurately describes its purpose and scope.
    
      Also make the `ValidationSignals` in the `ChainstateManager` and CTxMemPool` optional. This could be useful in the future for using or testing these classes without having to instantiate any form of signal handling.
    
      ---
    
      This PR is part of the [libbitcoinkernel project](bitcoin#27587). It improves the kernel API and removes two modules from the kernel library.
    
    ACKs for top commit:
      maflcko:
        re-ACK d5228ef 🌄
      ryanofsky:
        Code review ACK d5228ef. Just comment change since last review.
      vasild:
        ACK d5228ef
      furszy:
        diff ACK d5228ef
    
    Tree-SHA512: e93a5f10eb6182effb84bb981859a7ce750e466efd8171045d8d9e7fe46e4065631d9f6f533c5967c4d34c9bb7d7a67e9f4593bd4c5b30cd7b3bbad7be7b331b
    achow101 committed Mar 9, 2024
    Configuration menu
    Copy the full SHA
    c07935b View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29393: i2p: log connection was refused due to arbitrary…

    … port
    
    5b358cd i2p: log connection was refused due to arbitrary port (brunoerg)
    
    Pull request description:
    
      For I2P, we do not try to connect if port is != 0. However, we do not have anything that indicates it or any error when trying to connect with port != 0. This PR adds a log for it. Also, it improves the functional test. With this log we can ensure the reason we won't connect is the port, in the current test, we cannot ensure it.
    
    ACKs for top commit:
      jonatack:
        ACK 5b358cd
      epiccurious:
        re-ACK 5b358cd.
      achow101:
        ACK 5b358cd
      kristapsk:
        re-ACK 5b358cd
      vasild:
        ACK 5b358cd
    
    Tree-SHA512: 027245afa771c9295fff0bfd17c251dca4a9f4c739e5773922de3c030a65ef05d96291edcbdeeaa50ba3add61f75f28d8c00be503e03fc33d3491d1956fc549f
    achow101 committed Mar 9, 2024
    Configuration menu
    Copy the full SHA
    a78ca70 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29569: Rename CalculateHeadersWork to CalculateClaimedH…

    …eadersWork
    
    eb7cc9f Rename CalculateHeadersWork to CalculateClaimedHeadersWork (Greg Sanders)
    
    Pull request description:
    
      And clean up some comments. Confusion about what this is doing seems to be a running theme:
    
      bitcoin#29549 (comment)
    
      bitcoin#27278 (comment)
    
    ACKs for top commit:
      achow101:
        ACK eb7cc9f
      pablomartin4btc:
        ACK eb7cc9f
      0xB10C:
        ACK eb7cc9f
      dergoegge:
        ACK eb7cc9f
      BrandonOdiwuor:
        ACK eb7cc9f
    
    Tree-SHA512: 6ccbc5e417155516487bb220753d189b5341dec05366db88a3fa5b1932eace21fbfaf23408c639bb54b36169a8d0a7536a1ee5e63b4ce5a3b70f2ff8407b6e07
    achow101 committed Mar 9, 2024
    Configuration menu
    Copy the full SHA
    4cc99df View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2024

  1. ci: Add workaround for Homebrew's python link error

    Promoting Homebrew's python@3.12 to the default python3 breaks symbolic
    links on macOS x86_64.
    
    This change adds a workaround for that issue.
    
    Also see: actions/runner-images#9471 etc.
    hebasto committed Mar 10, 2024
    Configuration menu
    Copy the full SHA
    ae5f720 View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2024

  1. Merge bitcoin#26564: test: test_bitcoin: allow -testdatadir=<datadir>

    d27e2d8 test: test_bitcoin: allow -testdatadir=<datadir> (Larry Ruane)
    
    Pull request description:
    
      This backward-compatible change would help with code review, testing, and debugging. When `test_bitcoin` runs, it creates a working or data directory within `/tmp/test_common_Bitcoin\ Core/`, named as a long random (hex) string.
    
      This small patch does three things:
    
      - If the (new) argument `-testdatadir=<datadir>` is given, use `<datadir>/test_temp/<test-name>/datadir` as the working directory
      - When the test starts, remove `<datadir>/test_temp/<test-name>/datadir` if it exists from an earlier run (currently, it's presumed not to exist due to the long random string)
      - Don't delete the working directory at the end of the test if a custom data directory is being used
    
      Example usage, which will remove, create, use `/somewhere/test_temp/getarg_tests/boolarg`, and leave it afterward:
      ```
      $ test_bitcoin --run_test=getarg_tests/boolarg -- -testdatadir=/somewhere
      Running 1 test case...
      Test directory (will not be deleted): "/somewhere/test_temp/getarg_tests/boolarg/datadir"
    
      *** No errors detected
      $ ls -l /somewhere/test_temp/getarg_tests/boolarg/datadir
      total 8
      drwxrwxr-x 2 larry larry 4096 Feb 22 10:28 blocks
      -rw-rw-r-- 1 larry larry 1273 Feb 22 10:28 debug.log
      ```
      (A relative pathname also works.)
    
      This change affects only `test_bitcoin`; it could also be applied to `test_bitcoin-qt` but that's slightly more involved so I'm skipping that for now.
    
      The rationale for this change is that, when running the test using the debugger, it's often useful to watch `debug.log` as the test runs and inspect some of the other files (I've looked at the generated `blknnnn.dat` files for example). Currently, that requires figuring out where the test's working directory is since it changes on every test run. Tests can be run with `-printtoconsole=1` to show debug logging to the terminal, but it's nice to keep `debug.log` continuously open in an editor, for example.
    
      Even if not using a debugger, it's sometimes helpful to see `debug.log` and other artifacts after the test completes.
    
      Similar functionality is already possible with the functional tests using the `--tmpdir=` and `--nocleanup` arguments.
    
    ACKs for top commit:
      davidgumberg:
        ACK bitcoin@d27e2d8
      tdb3:
        re-ACK for d27e2d8
      achow101:
        ACK d27e2d8
      cbergqvist:
        ACK d27e2d8! (Already did some testing with `fs::remove()` to make sure it was compatible with the `util::Lock/UnlockDirectory` implementation).
      marcofleon:
        ACK d27e2d8. I ran all the tests with my previous open file limit and no errors were detected. Also ran some individual tests with no, relative, and absolute paths and everything looks good.
      furszy:
        ACK d27e2d8
    
    Tree-SHA512: a8f535f34a48b6699cb440f97f5562ec643f3bfba4ea685768980b871fc8b6e1135f70fc05dbe19aa2c8bacb1ddeaff212d63473605a7422ff76332b3a6b1f68
    achow101 committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    5ebb406 View commit details
    Browse the repository at this point in the history
  2. [refactor] consolidate valid MempoolAcceptResult processing

    Deduplicate code that exists in both tx processing and ProcessOrphanTx.
    Additionally, this can be reused in a function that handles multiple
    MempoolAcceptResults from package submission.
    glozow committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    9353aa4 View commit details
    Browse the repository at this point in the history
  3. [refactor] consolidate invalid MempoolAcceptResult processing

    Deduplicate code that exists in both tx processing and ProcessOrphanTx.
    Additionally, this can be reused in a function that handles multiple
    MempoolAcceptResults from package submission.
    glozow committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    07cd510 View commit details
    Browse the repository at this point in the history
  4. Merge bitcoin#29514: tests: Provide more helpful assert_equal errors

    a3badf7 tests: Provide more helpful assert_equal errors (Anthony Towns)
    
    Pull request description:
    
      In the functional tests, we often compare dicts with assert_equal, but the output makes it very hard to tell exactly which entry in the dicts don't match when there are a lot of entries and only minor differences. Change the output to make it clearer.
    
    ACKs for top commit:
      achow101:
        ACK a3badf7
      vasild:
        ACK a3badf7
      brunoerg:
        utACK a3badf7
      josibake:
        ACK bitcoin@a3badf7
      BrandonOdiwuor:
        Code Review ACK a3badf7
    
    Tree-SHA512: 1d4b4a3b2e2e28ab09f10b41b04b52b37f64e0d8a54e2306f37de0c3eb3299a7ad4ba225b9efa67057a75e90d008a17385c810a32c9b212d240be280c2dcf2e5
    achow101 committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    10d7b6e View commit details
    Browse the repository at this point in the history
  5. Merge bitcoin#28120: p2p: make block download logic aware of limited …

    …peers threshold
    
    c5b5843 test: avoid requesting blocks beyond limited peer threshold (furszy)
    2f6a055 p2p: sync from limited peer, only request blocks below threshold (furszy)
    7312772 refactor: Make FindNextBlocks friendlier (furszy)
    
    Pull request description:
    
      Even when the node believes it has IBD completed, need to avoid
      requesting historical blocks from network-limited peers.
      Otherwise, the limited peer will disconnect right away.
    
      The simplest scenario could be a node that gets synced, drops
      connections, and stays inactive for a while. Then, once it re-connects
      (IBD stays completed), the node tries to fetch all the missing blocks
      from any peer, getting disconnected by the limited ones.
    
      Note:
      Can verify the behavior by cherry-picking the test commit alone on
      master. It will fail there.
    
    ACKs for top commit:
      achow101:
        ACK c5b5843
      vasild:
        ACK c5b5843
      mzumsande:
        Code Review ACK c5b5843
      pinheadmz:
        ACK c5b5843
    
    Tree-SHA512: 9e550698bc6e63cc587b2b988a87d0ab555a8fa188c91c3f33287f8201d77c28b373331845356ad86f17bb21c15950b6466bc1cafd0ce8139d70364cb71c2ad2
    achow101 committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    4a90374 View commit details
    Browse the repository at this point in the history
  6. refactor: Add missing {} around error() calls

    This is required for the next commit to be correct.
    MarcoFalke committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    fa9a5e8 View commit details
    Browse the repository at this point in the history
  7. scripted-diff: return error(...); ==> error(...); return false;

    This is needed for the next commit.
    
    -BEGIN VERIFY SCRIPT-
     # Separate sed invocations to replace one-line, and two-line error(...) calls
     sed -i             --regexp-extended 's!( +)return (error\(.*\);)!\1\2\n\1return false;!g'             $( git grep -l 'return error(' )
     sed -i --null-data --regexp-extended 's!( +)return (error\([^\n]*\n[^\n]*\);)!\1\2\n\1return false;!g' $( git grep -l 'return error(' )
    -END VERIFY SCRIPT-
    MarcoFalke committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    fa1d624 View commit details
    Browse the repository at this point in the history
  8. refactor: Make error() return type void

    This is needed for the next commit to compile.
    MarcoFalke committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    fa808fb View commit details
    Browse the repository at this point in the history
  9. scripted-diff: Replace error() with LogError()

    This fixes the log output when -logsourcelocations is used.
    
    Also, instead of 'ERROR:', the log will now say '[error]', like other
    errors logged with LogError.
    
    -BEGIN VERIFY SCRIPT-
     sed -i --regexp-extended 's!  error\("([^"]+)"!  LogError("\1\\n"!g' $( git grep -l '  error(' ./src/ )
    -END VERIFY SCRIPT-
    MarcoFalke committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    fad0335 View commit details
    Browse the repository at this point in the history
  10. refactor: Remove unused error()

    MarcoFalke committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    fa39151 View commit details
    Browse the repository at this point in the history
  11. Merge bitcoin#29586: wallet: default wallet migration, modify inconve…

    …nient backup filename
    
    a951dba wallet: default wallet migration, modify inconvenient backup filename (furszy)
    
    Pull request description:
    
      Fixes bitcoin#29584
    
      On default legacy wallets, the backup filename starts with an "-" due to the wallet name being empty. This is inconvenient for systems who treat what follows the initial "-" character as flags.
    
      Note:
      As the user can freely set the wallet name to anything, we could also guard the backup filename against other inconvenient characters in the future (we need to be careful here, because the wallet name could also be a path).
    
    ACKs for top commit:
      achow101:
        ACK a951dba
      brunoerg:
        utACK a951dba
      vasild:
        ACK  a951dba
    
    Tree-SHA512: 6347bb12cfb50526a4baad96e4f1df9d82b493f79f0a0f7e0a1c8335a86a1e8e147c7b7f95cec6ede6f4507506a7eaf7972bd35131a2d5ed4cbbf38d94f0a9ca
    achow101 committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    b4a0575 View commit details
    Browse the repository at this point in the history
  12. Merge bitcoin#29483: test, ci: add --v1transport option, add --v2tran…

    …sport to a CI task
    
    ecc036c ci: add --v2transport to an existing CI job (Martin Zumsande)
    3a25a57 test: ignore --v2transport for older versions instead of asserting (Martin Zumsande)
    547aacf test: add -v1transport option and use it in test_runner (Martin Zumsande)
    
    Pull request description:
    
      This suggests a strategy to run the functional tests with both v1 and v2 transport in the CI.
    
      **Status Quo:**
      There is both the global `--v2transport` option for the `test_runner.py` (not enabled by default), plus the possibility to specify `--v2transport` for particular tests, which is used for a handful of tests. Currently, when running `test_runner.py --v2transport`, these tests are run twice with the same `--v2transport` configuration, as has been noted in bitcoin#29358 (comment), which is wasteful.
    
      **Suggested Change:**
      Fix this by adding a `--v1transport` option and using it in `test_runner.py`, so that irrespective of the global `--v2transport` flag, the  tests that run twice use v1 in one run and v2 in the other.
      Also add `--v2transport` to one CI task (`multiprocess, i686, DEBUG`).
      This means, that for each CI task, the majority of functional tests will run once using the global `--v2transport` option if provided, while a few selected tests will always run two times, once with `v1` and once with `v2`.
    
      **Rationale:**
      A simpler alternative would have been to remove all test-specific `--v2transport` commands from `test_runner.py` and just enable `--v2transport` option for a few CI tasks. I didn't do that because it would have meant that v2 would never be running in the CI for some platforms, and also be run a lot less locally by users and devs (who would have to actively enable the `--v2transport` option).
    
    ACKs for top commit:
      tdb3:
        ACK for ecc036c.
      achow101:
        ACK ecc036c
      stratospher:
        ACK ecc036c.
      vasild:
        ACK ecc036c
    
    Tree-SHA512: 375b2293d49991f2fbd8e1bb646c0034004a09cee36063bc32996b721323eb19a43d7b2f36b3f9a3fdca846d74f48d8f1387565c03ef5d34b3481d2a0fe1d328
    achow101 committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    02c7fd8 View commit details
    Browse the repository at this point in the history
  13. Merge bitcoin#29458: refactor: Preallocate result in TryParseHex to a…

    …void resizing
    
    a19235c Preallocate result in `TryParseHex` to avoid resizing (Lőrinc)
    b7489ec Add benchmark for TryParseHex (Lőrinc)
    
    Pull request description:
    
      This pull request introduces optimizations to the `TryParseHex` function, focusing primarily on the ideal case (valid hexadecimal input without spaces).
      A new benchmark, `HexParse` was introduced in a separate commit.
    
      The main optimization preallocates the result vector based on the input string's length. This aims to completely avoid costly dynamic reallocations when no spaces are present.
    
      ------------
    
      Before:
      ```
      |           ns/base16 |            base16/s |    err% |     total | benchmark
      |--------------------:|--------------------:|--------:|----------:|:----------
      |                1.60 |      623,238,893.11 |    0.3% |      0.01 | `HexParse`
      |                1.65 |      606,747,566.34 |    0.6% |      0.01 | `HexParse`
      |                1.60 |      626,149,544.07 |    0.3% |      0.01 | `HexParse`
      ```
    
      After:
      ```
      |           ns/base16 |            base16/s |    err% |     total | benchmark
      |--------------------:|--------------------:|--------:|----------:|:----------
      |                0.68 |    1,465,555,976.27 |    0.8% |      0.01 | `HexParse`
      |                0.68 |    1,472,962,920.18 |    0.3% |      0.01 | `HexParse`
      |                0.68 |    1,476,159,423.00 |    0.3% |      0.01 | `HexParse`
      ```
    
    ACKs for top commit:
      achow101:
        ACK a19235c
      hebasto:
        ACK a19235c.
      andrewtoth:
        Re-ACK a19235c
      Empact:
        Re-ACK bitcoin@a19235c
    
    Tree-SHA512: e09a59791104be3fd1026862ce98de9efafa1f949626fa01e3b7d58e6a2ef02a11f0de55ddba5c43230a53effd24e6d368c1e12848b17e8ce91d7908a59333f0
    achow101 committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    6dda050 View commit details
    Browse the repository at this point in the history
  14. test: p2p: support disconnect waiting for add_outbound_p2p_connection

    Adds a new boolean parameter `wait_for_disconnect` to the
    `add_outbound_p2p_connection` method. If set, the node under
    test is checked to disconnect immediately after receiving the
    version message (same logic as for feeler connections).
    theStack committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    405ac81 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    c4a67d3 View commit details
    Browse the repository at this point in the history
  16. Merge bitcoin#29007: test: create deterministic addrman in the functi…

    …onal tests
    
    2cc8ca1 [test] Use deterministic addrman in addrman info tests (stratospher)
    a897866 [test] Restart a node with empty addrman (stratospher)
    71c1991 [test] Use deterministic addrman in addpeeraddress test (stratospher)
    7b868e6 Revert "test: avoid non-determinism in asmap-addrman test" (stratospher)
    69e091f [init] Create deterministic addrman in tests using -test=addrman (stratospher)
    be25ac3 [init] Remove -addrmantest command line arg (stratospher)
    802e6e1 [init] Add new command line arg for use only in functional tests (stratospher)
    
    Pull request description:
    
      An address is placed in a `[bucket,position]` in the addrman table (new table or tried table) using the `addpeeraddress` RPC. This `[bucket,position]` is calculated using `nKey`(and other metrics) for the addrman which is chosen randomly during every run.
    
      Supposing there are 2 addresses to be placed in an addrman table. During every test run, a different `[bucket,position]` would be calculated for each address.These calculated `[bucket,position]` could even be the same for the 2 addresses in some test runs and result in collisions in the addrman. We wouldn't be able to predict when the collisions are going to happen because we can't predict the `nKey` value which is chosen at random. This can cause flaky tests.
    
      Because of these non deterministic collisions, we are limited in what we can do to test addrman functionality. Currently in our tests don't add a second address to prevent these collisions from happening - we only keep 1 address in the new table and 1 address in the tried table. See bitcoin#26988 (comment), bitcoin#23084, [bitcoin#22831(comment)](https://github.com/bitcoin/bitcoin/pull/22831/files#r708302639).
    
      This PR lets us create a deterministic addrman with fixed `nKey` so that we can know the `[bucket,position]` collisions beforehand, safely add more addresses in an addrman table and write more extensive tests.
    
    ACKs for top commit:
      amitiuttarwar:
        ACK 2cc8ca1
      achow101:
        ACK 2cc8ca1
      0xB10C:
        ACK 2cc8ca1
      mzumsande:
        Code Review ACK 2cc8ca1
    
    Tree-SHA512: 8acd9bdfe7de1eb44d22373bf13533d8ecf602df966fdd5b8b78afcd8cc35a286c95d2712f67a89473a0d68dded7d38f5599f6e4bf95a6589475444545bfb189
    achow101 committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    a945f09 View commit details
    Browse the repository at this point in the history
  17. test: p2p: check limited peers desirability (depending on best block …

    …depth)
    
    This adds coverage for the logic introduced in PR bitcoin#28170
    ("p2p: adaptive connections services flags").
    theStack committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    2f23987 View commit details
    Browse the repository at this point in the history
  18. ci, macos: Use --break-system-packages with Homebrew's python

    Homebrew's python@3.12 is marked as externally managed (PEP 668),
    necessitating different approaches for installing Python packages.
    
    For more details, please refer to https://github.com/orgs/Homebrew/discussions/3404.
    hebasto committed Mar 11, 2024
    Configuration menu
    Copy the full SHA
    acc06bc View commit details
    Browse the repository at this point in the history

Commits on Mar 12, 2024

  1. Merge bitcoin#29598: depends: don't use -h with touch on OpenBSD

    8aff3fd depends: don't use -h with touch on OpenBSD (fanquake)
    
    Pull request description:
    
      Should fix bitcoin#29447.
    
    ACKs for top commit:
      theStack:
        Tested ACK 8aff3fd
      hebasto:
        ACK 8aff3fd, tested on OpenBSD 7.1 by running the following commands twice and observing the same output:
    
    Tree-SHA512: c054f80d347600617b21d5a7051315d43ebf858088a28f9b4bd43515f16f957d8033857a194f50556a6f0c67a8afbc2a50e143a477fbb4ef2d36e6365976b82f
    fanquake committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    e705909 View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29236: log: Nuke error(...)

    fa39151 refactor: Remove unused error() (MarcoFalke)
    fad0335 scripted-diff: Replace error() with LogError() (MarcoFalke)
    fa808fb refactor: Make error() return type void (MarcoFalke)
    fa1d624 scripted-diff:  return error(...);  ==>  error(...); return false; (MarcoFalke)
    fa9a5e8 refactor: Add missing {} around error() calls (MarcoFalke)
    
    Pull request description:
    
      `error(...)` has many issues:
    
      * It is often used in the context of `return error(...)`, implying that it has a "fancy" type, creating confusion with `util::Result/Error`
      * `-logsourcelocations` does not work with it, because it will pretend the error happened inside of `logging.h`
      * The log line contains `ERROR: `, as opposed to `[error]`, like for other errors logged with `LogError`.
    
      Fix all issues by removing it.
    
    ACKs for top commit:
      fjahr:
        re-utACK fa39151
      stickies-v:
        re-ACK fa39151, no changes since 4a90374
      ryanofsky:
        Code review ACK fa39151. Just rebase since last review
    
    Tree-SHA512: ec5bb502ab0d3733fdb14a8a00762638fce0417afd8dd6294ae0d485ce2b7ca5b1efeb50fc2cd7467f6c652e4ed3e99b0f283b08aeca04bbfb7ea4f2c95d283a
    fanquake committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    31be1a4 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29610: ci: Fix "macOS native" job

    acc06bc ci, macos: Use `--break-system-packages` with Homebrew's python (Hennadii Stepanov)
    ae5f720 ci: Add workaround for Homebrew's python link error (Hennadii Stepanov)
    
    Pull request description:
    
      Homebrew [promoted](Homebrew/homebrew-core#150390) `python@3.12` to the default `python3`. Now, our "macOS native" CI job is facing the following issues:
    
      1. Installing `qt@5` [requires](https://github.com/bitcoin/bitcoin/actions/runs/8216848118/job/22471875454#step:4:51) re-installing `python@3.12`:
      ```
      ==> Fetching dependencies for qt@5: readline, python@3.12 and gettext
      ```
      2. Re-installing `python@3.12` [fails](https://github.com/bitcoin/bitcoin/actions/runs/8216848118/job/22471875454#step:4:127) due to symbolic link conflicts on macOS `x86_64`:
      ```
      ==> Pouring python@3.12--3.12.2_1.ventura.bottle.tar.gz
      Error: The `brew link` step did not complete successfully
      ```
      3. Homebrew's `python@3.12` is marked as externally managed (according to PEP 668), necessitating different approaches for installing Python packages.
    
      This pull request resolves all the issues mentioned above.
    
    ACKs for top commit:
      m3dwards:
        reACK bitcoin@acc06bc to get the CI passing again.
    
    Tree-SHA512: 82cf72bff328f1e0725342431ac14ad4bae7a758186d97db6c7a558e4b661dcbf3fabe536978e26e709c5f6f7f5c11aac46642634c6685f1291592d8d825ad87
    fanquake committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    bd55b7a View commit details
    Browse the repository at this point in the history
  4. Merge bitcoin#29620: ci: add print of powershell version to win64 job

    115c283 ci: add print of powershell version to win64 job (Max Edwards)
    
    Pull request description:
    
      Extraction of just printing powershell version from closed PR: bitcoin#29581
    
      See bitcoin#29581 (comment) for the cause of a CI failure which was a powershell update.
    
      This PR will make it easier to notice in the future that PS has changed.
    
    ACKs for top commit:
      hebasto:
        ACK 115c283. We still use PowerShell in some steps of the "Win64 native" CI job.
    
    Tree-SHA512: 4c7ba9df4f0a98491120326f05e877a995f43a387fe9bbd193549b32f5a4488f85f83e472c9277db457110a7deda04f08832fe6e8129aff4b0b7278be23d4e35
    fanquake committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    d14c728 View commit details
    Browse the repository at this point in the history
  5. bench: basic block filter index initial sync

    Introduce benchmark for the block filter index sync.
    And makes synchronous 'Sync()' mechanism accessible.
    furszy committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    bcbd7eb View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    331f044 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    a6756ec View commit details
    Browse the repository at this point in the history
  8. lint: Fix lint-whitespace issues

    MarcoFalke committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    fa57294 View commit details
    Browse the repository at this point in the history
  9. blockstorage: do not flush block to disk if it is already there

    test: ensure we can reindex from read-only block files now
    pinheadmz committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    dfcef53 View commit details
    Browse the repository at this point in the history
  10. index: cache last block filter header

    Avoid disk read operations on every new processed block.
    furszy committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    f1469eb View commit details
    Browse the repository at this point in the history
  11. index: decrease ThreadSync cs_main contention

    Only NextSyncBlock requires cs_main lock. The
    other function calls like Commit or Rewind will
    lock or not cs_main internally when they need it.
    
    Avoiding keeping cs_main locked when Commit() or
    Rewind() write data to disk.
    furszy committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    0faafb5 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    99afb9d View commit details
    Browse the repository at this point in the history
  13. log: Remove error() reference

    fjahr committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    d0e6564 View commit details
    Browse the repository at this point in the history
  14. Merge bitcoin#29306: policy: enable sibling eviction for v3 transactions

    1342a31 [functional test] sibling eviction (glozow)
    5fbab37 [unit test] sibling not returned from SingleV3Checks if 1p2c or 3gen (glozow)
    1703067 [policy] sibling eviction for v3 transactions (glozow)
    b5d15f7 [refactor] return pair from SingleV3Checks (glozow)
    
    Pull request description:
    
      When we receive a v3 transaction that would bust a mempool transaction's descendant limit, instead of rejecting the new tx, consider replacing the other descendant if it is much higher feerate (using existing RBF criteria to assess that it's more incentive compatible and to avoid DoS).
    
      Delving post with more background and motivation: https://delvingbitcoin.org/t/sibling-eviction-for-v3-transactions/472
    
    ACKs for top commit:
      sdaftuar:
        ACK 1342a31
      achow101:
        ACK 1342a31
      instagibbs:
        ACK bitcoin@1342a31
    
    Tree-SHA512: dd957d49e51db78758f566c49bddc579b72478e371275c592d3d5ba097d20de47a6c81952045021b99d82a787f5b799baf16dd0ee0e6de90ba12e21e275352be
    achow101 committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    12dae63 View commit details
    Browse the repository at this point in the history
  15. ci: use Debian Bookworm (GCC 12) for win64 job

    Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
    fanquake and MarcoFalke committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    0da6451 View commit details
    Browse the repository at this point in the history
  16. ci: use Debian Bookworm (GCC 12) for ARM ci job

    Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
    fanquake and MarcoFalke committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    ce54330 View commit details
    Browse the repository at this point in the history
  17. guix: use GCC 12.3.0

    Retain native GCC 10 toolchain for macOS, to prevent compile failures in
    native tools (this will be removed entirely when we tansition to LLD).
    Update the vmov-alignment patch, for changes in GCC 12.
    fanquake committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    001412a View commit details
    Browse the repository at this point in the history
  18. guix: temporarily disable powerpcle taget

    There non-determinism issues when compiling for this target across
    x86_64 and aarch64.
    fanquake committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    10d5653 View commit details
    Browse the repository at this point in the history
  19. blockstorage: check nPos in ReadRawBlockFromDisk before seeking back

    ReadRawBlockFromDisk assumes a non-null pos that has an nPos >= 8.
    This simple check makes the function safer to call in the future,
    so callers don't need to worry about causing UB if the pos is null.
    andrewtoth committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    da338aa View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    38265cc View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    0865ab8 View commit details
    Browse the repository at this point in the history
  22. rpc: read raw block in getblock and deserialize for verbosity > 0

    Note that for speed this commit also removes the proof of work and
    signet signature checks before returning the block in getblock.
    It is assumed if a block is stored it will be valid.
    andrewtoth committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    95ce078 View commit details
    Browse the repository at this point in the history
  23. rest: read raw block in rest_block and deserialize for json

    Note that for speed this commit also removes the proof of work and
    signet signature checks before returning the block in getblock.
    It is assumed if a block is stored it will be valid.
    andrewtoth committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    e710cef View commit details
    Browse the repository at this point in the history
  24. Merge bitcoin#27114: p2p: Allow whitelisting manual connections

    0a53361 docs: add release notes for bitcoin#27114 (brunoerg)
    e6b8f19 test: add coverage for whitelisting manual connections (brunoerg)
    c985eb8 test: add option to speed up tx relay/mempool sync (brunoerg)
    66bc6e2 Accept "in" and "out" flags to -whitelist to allow whitelisting manual connections (Luke Dashjr)
    8e06be3 net_processing: Move extra service flag into InitializeNode (Luke Dashjr)
    9133fd6 net: Move `NetPermissionFlags::Implicit` verification to `AddWhitelistPermissionFlags` (Luke Dashjr)
    2863d7d net: store `-whitelist{force}relay` values in `CConnman` (brunoerg)
    
    Pull request description:
    
      Revives bitcoin#17167. It allows whitelisting manual connections. Fixes bitcoin#9923
    
      Since there are some PRs/issues around this topic, I'll list some motivations/comments for whitelisting outbound connections from them:
      - Speed-up tx relay/mempool sync for testing purposes (my personal motivation for this) - In bitcoin#26970, theStack pointed out that we whitelist peers to speed up tx relay for fast mempool synchronization, however, since it applies only for inbound connections and considering the topology `node0 <--- node1 <---- node2 <--- ... <-- nodeN`,  if a tx is submitted from any node other than node0, the mempool synchronization can take quite long.
      - bitcoin#29058 (comment) - "Before enabling -v2transport by default (which I'd image may happen after bitcoin#24748) we could consider a way to force manual connections to be only-v1 or even only-v2 (disabling reconnect-with-v1). A possibility could be through a net permission flag, if bitcoin#27114 makes it in."
      - bitcoin#17167 (comment) - "This would allow us to use bitcoin#25355 when making outgoing connections to all nodes, except to whitelisted ones for which we would use our persistent I2P address."
      - Force-relay/mempool permissions for a node you intentionally connected to.
    
    ACKs for top commit:
      achow101:
        ACK 0a53361
      sr-gi:
        re-ACK [0a53361](bitcoin@0a53361)
      pinheadmz:
        ACK 0a53361
    
    Tree-SHA512: 97a79bb854110da04540897d2619eda409d829016aafdf1825ab5515334b0b42ef82f33cd41587af235b3af6ddcec3f2905ca038b5ab22e4c8a03d34f27aebe1
    achow101 committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    bef9917 View commit details
    Browse the repository at this point in the history
  25. Merge bitcoin#26415: rpc,rest,zmq: faster getblock, NotifyBlock and r…

    …est_block by reading raw block
    
    e710cef rest: read raw block in rest_block and deserialize for json (Andrew Toth)
    95ce078 rpc: read raw block in getblock and deserialize for verbosity > 0 (Andrew Toth)
    0865ab8 test: check more details on zmq raw block response (Andrew Toth)
    38265cc zmq: read raw block with ReadRawBlockFromDisk (Andrew Toth)
    da338aa blockstorage: check nPos in ReadRawBlockFromDisk before seeking back (Andrew Toth)
    
    Pull request description:
    
      For the `getblock` endpoint with `verbosity=0`, the  `rest_block` REST endpoint for `bin` and `hex`, and zmq `NotifyBlock` we don't have to deserialize the block since we're just sending the raw data. This PR uses `ReadRawBlockFromDisk` instead of `ReadBlockFromDisk` to serve these requests, and only deserializes for `verbosity > 0` and `json` REST requests. See benchmarks in bitcoin#26684.
    
      Benchmarked using ApacheBench. Requesting block 750,000 in binary 10k times on a single core (set `-rest=1` in config):
      `ab -n 10000 -c 1 "http://127.0.0.1:8332/rest/block/0000000000000000000592a974b1b9f087cb77628bb4a097d5c2c11b3476a58e.bin"`
    
      On master, mean time 15ms.
      On this branch, mean time 1ms.
    
      For RPC
      ```
      echo '{"jsonrpc": "1.0", "id": "curltest", "method": "getblock", "params": ["0000000000000000000592a974b1b9f087cb77628bb4a097d5c2c11b3476a58e", 0]}' > /tmp/data.json
      ab -p /tmp/data.json -n 1000 -c 1 -A user:password "http://127.0.0.1:8332/"
      ```
      On master, mean time 32ms
      On this branch, mean time 13ms
    
    ACKs for top commit:
      achow101:
        re-ACK e710cef
    
    Tree-SHA512: 4cea13c7b563b2139d041b1fdcfdb793c8cc688654ae08db07e7ee6b875c5e582b8185db3ae603abbfb06d2164724f29205774620b48c493726b991999af289e
    achow101 committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    bde3db4 View commit details
    Browse the repository at this point in the history
  26. Merge bitcoin#29633: log: Remove error() reference

    d0e6564 log: Remove error() reference (Fabian Jahr)
    
    Pull request description:
    
      Mini-followup to bitcoin#29236 that was just merged. Removes a reference to `error()` that was missed in a comment.
    
    ACKs for top commit:
      ryanofsky:
        Code review ACK d0e6564. Just dropped LogPrintf reference since last review
      stickies-v:
        ACK d0e6564
      Empact:
        ACK bitcoin@d0e6564
    
    Tree-SHA512: 8abe4895951013c2ceca9a57743aacabaf8af831d07eee9ae8372c121c16e88b7226f0e537200c3464792e19ac7e03b57ba0be31f43add8802753972b0aefc48
    fanquake committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    1105aa4 View commit details
    Browse the repository at this point in the history
  27. test: fix intermittent failures with test=addrman

    The nKey of the addrman is generated the first time the node is
    started. Therefore, restarting a node or turning it off and on
    again won't make a previously non-deterministic addrman
    deterministic.
    
    Co-authored-by: 0xb10c <b10c@b10c.me>
    mzumsande and 0xB10C committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    432a542 View commit details
    Browse the repository at this point in the history
  28. test: simplify test_runner.py

    Remove the num_running variable as it can be implied by the
    length of the jobs list.
    
    Remove the i variable as it can be implied by the length of the
    test_results list.
    
    Instead of counting results to determine if finished, make the
    queue object itself responsible (by looking at running jobs and
    jobs left).
    
    Originally proposed by @sipa in PR bitcoin#23995.
    
    Co-authored-by: Pieter Wuille <pieter@wuille.net>
    tdb3 and sipa committed Mar 12, 2024
    Configuration menu
    Copy the full SHA
    0831b54 View commit details
    Browse the repository at this point in the history

Commits on Mar 13, 2024

  1. Merge bitcoin#27375: net: support unix domain sockets for -proxy and …

    …-onion
    
    567cec9 doc: add release notes and help text for unix sockets (Matthew Zipkin)
    bfe5192 test: cover UNIX sockets in feature_proxy.py (Matthew Zipkin)
    c65c0d0 init: allow UNIX socket path for -proxy and -onion (Matthew Zipkin)
    c3bd431 gui: accomodate unix socket Proxy in updateDefaultProxyNets() (Matthew Zipkin)
    a88bf9d i2p: construct Session with Proxy instead of CService (Matthew Zipkin)
    d9318a3 net: split ConnectToSocket() from ConnectDirectly() for unix sockets (Matthew Zipkin)
    ac2ecf3 proxy: rename randomize_credentials to m_randomize_credentials (Matthew Zipkin)
    a89c3f5 netbase: extend Proxy class to wrap UNIX socket as well as TCP (Matthew Zipkin)
    3a7d654 net: move CreateSock() calls from ConnectNode() to netbase methods (Matthew Zipkin)
    74f568c netbase: allow CreateSock() to create UNIX sockets if supported (Matthew Zipkin)
    bae86c8 netbase: refactor CreateSock() to accept sa_family_t (Matthew Zipkin)
    adb3a3e configure: test for unix domain sockets (Matthew Zipkin)
    
    Pull request description:
    
      Closes bitcoin#27252
    
      UNIX domain sockets are a mechanism for inter-process communication that are faster than local TCP ports (because there is no need for TCP overhead) and potentially more secure because access is managed by the filesystem instead of serving an open port on the system.
    
      There has been work on [unix domain sockets before](bitcoin#9979) but for now I just wanted to start on this single use-case which is enabling unix sockets from the client side, specifically connecting to a local Tor proxy (Tor can listen on unix sockets and even enforces strict curent-user-only access permission before binding) configured by `-onion=` or `-proxy=`
    
      I copied the prefix `unix:` usage from Tor. With this patch built locally you can test with your own filesystem path (example):
    
      `tor --SocksPort unix:/Users/matthewzipkin/torsocket/x`
    
      `bitcoind -proxy=unix:/Users/matthewzipkin/torsocket/x`
    
      Prep work for this feature includes:
      - Moving where and how we create `sockaddr` and `Sock` to accommodate `AF_UNIX` without disturbing `CService`
      - Expanding `Proxy` class to represent either a `CService` or a UNIX socket (by its file path)
    
      Future work:
      - Enable UNIX sockets for ZMQ (bitcoin#27679)
      - Enable UNIX sockets for I2P SAM proxy (some code is included in this PR but not tested or exposed to user options yet)
      - Enable UNIX sockets on windows where supported
      - Update Network Proxies dialog in GUI to support UNIX sockets
    
    ACKs for top commit:
      Sjors:
        re-ACK 567cec9
      tdb3:
        re ACK for 567cec9.
      achow101:
        ACK 567cec9
      vasild:
        ACK 567cec9
    
    Tree-SHA512: de81860e56d5de83217a18df4c35297732b4ad491e293a0153d2d02a0bde1d022700a1131279b187ef219651487537354b9d06d10fde56225500c7e257df92c1
    achow101 committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    0ed2c13 View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29619: refactor: consolidate MempoolAcceptResult proces…

    …sing
    
    07cd510 [refactor] consolidate invalid MempoolAcceptResult processing (glozow)
    9353aa4 [refactor] consolidate valid MempoolAcceptResult processing (glozow)
    
    Pull request description:
    
      Every time we try to `ProcessTransaction` (i.e. submit a tx to mempool), we use the result to update a few net processing data structures. For example, after a failure, the {wtxid, txid, both, neither} (depending on reason) should be cached in `m_recent_rejects` so we don't try to download/validate it again.
    
      There are 2 current places and at least 1 future place where we need to process `MempoolAcceptResult`:
      - In the `ProcessMessage` logic after receiving and validating a tx
      - In `ProcessOrphanTx` where we retry orphans
      - With bitcoin#28970, after processing a package of transactions, we should do these updates for each tx in the package.
    
      Consolidate this code so it isn't repeated in 2 places and so we can reuse it in a future PR.
    
    ACKs for top commit:
      instagibbs:
        ACK 07cd510
      achow101:
        ACK 07cd510
      dergoegge:
        Code review ACK 07cd510
      TheCharlatan:
        ACK 07cd510
    
    Tree-SHA512: c4e74cb65e4f52882fca52e6682efa5dcf1562d98418454e09be256ffd026caae642a90aa5b9cccaae214be240d6f4be9d87b516953b2ee69a655f16ea569ed9
    achow101 committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    264ca9d View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29606: refactor: Reserve memory for ToLower/ToUpper con…

    …versions
    
    6f2f4a4 Reserve memory for ToLower/ToUpper conversions (Lőrinc)
    
    Pull request description:
    
      Similarly to bitcoin#29458, we're preallocating the result string based on the input string's length.
      The methods were already [covered by tests](https://github.com/bitcoin/bitcoin/blob/master/src/test/util_tests.cpp#L1250-L1276).
    
    ACKs for top commit:
      tdb3:
        ACK for 6f2f4a4
      maflcko:
        lgtm ACK 6f2f4a4
      achow101:
        ACK 6f2f4a4
      Empact:
        Code Review ACK bitcoin@6f2f4a4
      stickies-v:
        ACK 6f2f4a4
    
    Tree-SHA512: e3ba7af77decdc73272d804c94fef0b11028a85f3c0ea1ed6386672611b1c35fce151f02e64f5bb5acb5ba506aaa54577719b07925b9cc745143cf5c7e5eb262
    achow101 committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    c38157b View commit details
    Browse the repository at this point in the history
  4. RPC: Add maxfeerate and maxburnamount args to submitpackage

    And thread the feerate value through ProcessNewPackage to
    reject individual transactions that exceed the given
    feerate. This allows subpackage processing, and is
    compatible with future package RBF work.
    instagibbs committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    38f70ba View commit details
    Browse the repository at this point in the history
  5. Merge bitcoin#28193: test: add script compression coverage for not-on…

    …-curve P2PK outputs
    
    28287cf test: add script compression coverage for not-on-curve P2PK outputs (Sebastian Falbesoner)
    
    Pull request description:
    
      This PR adds unit test coverage for the script compression functions `{Compress,Decompress}Script` in the special case of uncompressed P2PK outputs (scriptPubKey: OP_PUSH65 <0x04 ....> OP_CHECKSIG) with [pubkeys that are not fully valid](https://github.com/bitcoin/bitcoin/blob/44b05bf3fef2468783dcebf651654fdd30717e7e/src/pubkey.cpp#L297-L302), i.e. where the encoded point is not on the secp256k1 curve. For those outputs, script compression is not possible, as the y coordinate of the pubkey can't be recovered (see also call-site of `IsToPubKey`):
    
      https://github.com/bitcoin/bitcoin/blob/44b05bf3fef2468783dcebf651654fdd30717e7e/src/compressor.cpp#L49-L50
    
      Likewise, for a compressed script of an uncompressed P2PK script (i.e. compression ids 4 and 5) where the x coordinate is not on the curve, decompression fails:
    
      https://github.com/bitcoin/bitcoin/blob/44b05bf3fef2468783dcebf651654fdd30717e7e/src/compressor.cpp#L122-L129
    
      Note that the term "compression" is used here in two different meanings (though they are related), which might be a little confusing. The encoding of a pubkey can either be compressed (33-bytes with 0x02/0x03 prefixes) or uncompressed (65-bytes with 0x04 prefix). On the other hand there is also compression for whole output scripts, which is used for storing scriptPubKeys in the UTXO set in a compact way (and also for the `dumptxoutset` result, accordingly). P2PK output scripts with uncompressed pubkeys get compressed by storing only the x-coordinate and the sign as a prefix (0x04 = even, 0x05 = odd). Was diving deeper into the subject while working on bitcoin#27432, where the script decompression of uncompressed P2PK needed special handling (see also bitcoin#24628 (comment)).
    
      Trivia: as of now (block 801066), there are 13 uncompressed P2PK outputs in the UTXO set with a pubkey not on the curve (which obviously means they are unspendable).
    
    ACKs for top commit:
      achow101:
        ACK 28287cf
      tdb3:
        ACK for 28287cf.
      cbergqvist:
        ACK 28287cf!
      marcofleon:
        Nicely done, ACK 28287cf. Built the PR branch, ran the unit and functional tests, everything passed.
    
    Tree-SHA512: 777b6c3065654fbfa1ce94926f4cadb91a9ca9dc4dd4af6008ad77bd1da5416f156ad0dfa880d26faab2e168bf9b27e0a068abc9a2be2534d82bee61ee055c65
    achow101 committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    ef6329f View commit details
    Browse the repository at this point in the history
  6. Merge bitcoin#29478: test: Test new header sync behavior in loadtxoutset

    1ec6684 test: Add test for loadtxoutset when headers are not synced (Fabian Jahr)
    2bc1ecf test: Remove unnecessary sync_blocks in assumeutxo tests (Fabian Jahr)
    
    Pull request description:
    
      It adds a test for the change to `loadtxoutset` made in bitcoin#29345.  Before that change the test doesn't fail right away but times out after 10 minutes.
    
      Also removes a `sync_blocks` call that didn't seem to do anything valuable.
    
    ACKs for top commit:
      achow101:
        ACK 1ec6684
      pablomartin4btc:
        tACK 1ec6684
      BrandonOdiwuor:
        ACK 1ec6684
      theStack:
        ACK 1ec6684
    
    Tree-SHA512: 1337decdf91e4a4f7213fcf8ace1d705e5c1422e0ac3872a59b5be9c33e743850cb8f5f7474750a534952eefd5cfe43fe85a54efb9bc0e47515136a2903676e5
    achow101 committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    a85e5a7 View commit details
    Browse the repository at this point in the history
  7. lint: Use git --no-pager to print any output in one go

    MarcoFalke committed Mar 13, 2024
    Configuration menu
    Copy the full SHA
    5555395 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    c70e4fc View commit details
    Browse the repository at this point in the history

Commits on Mar 14, 2024

  1. ci: Better tidy errors

    MarcoFalke committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    fae70ba View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29649: netbase: remove unnecessary log message

    c70e4fc netbase: remove unnecessary log message (Matthew Zipkin)
    
    Pull request description:
    
      This is a follow-up to bitcoin#27375 that removes a spammy non-debug-level log message we don't need.
      See bitcoin#27375 (comment)
    
    ACKs for top commit:
      fanquake:
        ACK c70e4fc - thanks. Merging this now because it's swamping non-debug logs. i.e:
    
    Tree-SHA512: 837682860abdf740fce5dc88c8599e066660cf16b4cab1473391eb51ad538ae52d236ecd3543df866e2a2165870397a8bf21ad9f5125ed8212a3fe207d615553
    fanquake committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    55c6323 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29497: test: simplify test_runner.py

    0831b54 test: simplify test_runner.py (tdb3)
    
    Pull request description:
    
      Implements the simplifications to test_runner.py proposed by sipa in PR bitcoin#23995.
    
      Remove the num_running variable as it can be implied by the length of the jobs list.
    
      Remove the i variable as it can be implied by the length of the test_results list.
    
      Instead of counting results to determine if finished, make the queue object itself
      responsible (by looking at running jobs and jobs left).
    
    ACKs for top commit:
      mzumsande:
        re-ACK 0831b54
      davidgumberg:
        reACK bitcoin@0831b54
      marcofleon:
        re-ACK 0831b54
    
    Tree-SHA512: e5473e68d49cd779b29d97635329283ae7195412cb1e92461675715ca7eedb6519a1a93ba28d40ca6f015d270f7bcd3e77cef279d9cd655155ab7805b49638f1
    fanquake committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    6850d72 View commit details
    Browse the repository at this point in the history
  4. Merge bitcoin#27897: guix: use GCC 12.3.0 to build releases

    10d5653 guix: temporarily disable powerpcle taget (fanquake)
    001412a guix: use GCC 12.3.0 (fanquake)
    ce54330 ci: use Debian Bookworm (GCC 12) for ARM ci job (fanquake)
    0da6451 ci: use Debian Bookworm (GCC 12) for win64 job (fanquake)
    
    Pull request description:
    
      Switch to using [GCC `12.3.0`](https://gcc.gnu.org/gcc-12/) to build release binaries.
    
      Temporarily disables the `powerpc64le-linux-gnu` target due to non-determinism issues when building across `aarch64` and `x86_64`. Trying to fix the non-determinism was going to require trying to selectively disable optimization flags, which is already not ideal (and didn't fix all issues), and the migration to GCC 12 as our release compiler is now the blocker for multiple other (c++20 and similar) changes, so leaving this blocked on the `powerpc64le` binaries does not seem like a good tradeoff.
    
    ACKs for top commit:
      TheCharlatan:
        ACK 10d5653
    
    Tree-SHA512: 401bbaaf2b72c795a06a24875ffd666151b41bae8f45bda10526ff4f6b59782704246afc6585f6b849021cbff8a7b861961d139bffe45536aaaeb3952b72ae57
    fanquake committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    e1ce5b8 View commit details
    Browse the repository at this point in the history
  5. depends: drop 1 qt determinism patch

    No-longer required now that we are building with GCC 12.
    fanquake committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    76d6537 View commit details
    Browse the repository at this point in the history
  6. build: Bump g++ minimum supported version to 11

    MarcoFalke committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    fa8409e View commit details
    Browse the repository at this point in the history
  7. Merge bitcoin#29459: test: check_mempool_result negative feerate

    bf264e0 test: check_mempool_result negative feerate (kevkevin)
    
    Pull request description:
    
      Adds test coverage in `mempool_accept.py` to check if a negative `maxfeerate` is input into `check_mempool_result`
      Asserts "Amount out of range" error message and `-3` error code
    
      Motivated by this [comment](https://github.com/bitcoin/bitcoin/pull/29434/files#r1491112250)
    
    ACKs for top commit:
      maflcko:
        lgtm ACK bf264e0
      brunoerg:
        nice, utACK bf264e0
      davidgumberg:
        Looks great, ACK bitcoin@bf264e0
    
    Tree-SHA512: 58931b774cc887c616f2fd91af3ee65cc5db55acd8e2875c76de448c80bd4e020b057c5f4f85556431377f0d0e7553771fb285d1ec20cf64f64ec92a47776b78
    glozow committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    3d255df View commit details
    Browse the repository at this point in the history
  8. guix: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a

    This includes a commit to fix building LLVM 17 on riscv64, see
    https://git.savannah.gnu.org/cgit/guix.git/commit/?id=4e26331a5ee87928a16888c36d51e270f0f10f90.
    
    Followup to discussion in
    bitcoin#28880 (comment).
    
    If you don't have riscv64 hardware, this can be tested with the
    following:
    ```bash
    guix time-machine --commit=d5ca4d4fd713a9f7e17e074a1e37dda99bbb09fc -- build --target=riscv64-linux-gnu  llvm
    ....
    riscv64-linux-gnu-ld: CMakeFiles/dsymutil.dir/dsymutil.cpp.o: undefined reference to symbol '__atomic_fetch_and_1@@LIBATOMIC_1.0'
    riscv64-linux-gnu-ld: /gnu/store/i4ga0pnr1b74bir2bjyp8mcrrbsvk7d3-gcc-cross-riscv64-linux-gnu-11.3.0-lib/riscv64-linux-gnu/lib/libatomic.so.1:
      error adding symbols: DSO missing from command line
    collect2: error: ld returned 1 exit status
    
    guix time-machine --commit=dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a -- build --target=riscv64-linux-gnu  llvm
    ....
    grafting '/gnu/store/7y0j0y8jaz4mjx2nz0y42wdnxxjp6id6-llvm-17.0.6-opt-viewer' -> '/gnu/store/8xvahrrjscbprh6cjj0qp5bm9mm78wwa-llvm-17.0.6-opt-viewer'...
    grafting '/gnu/store/bjhw648bz7ijd2p9hgzzdbw1q8hpagk8-llvm-17.0.6' -> '/gnu/store/x50qi8i2ywgpx6azv4k55ms0w5xjxxg5-llvm-17.0.6'...
    successfully built /gnu/store/q9xvk8gzzvb4dxfzf6yi5164zd0d1vj2-llvm-17.0.6.drv
    ```
    fanquake committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    cf5faf7 View commit details
    Browse the repository at this point in the history
  9. Remove unused g++-10 workaround

    This reverts d4999d4
    MarcoFalke committed Mar 14, 2024
    Configuration menu
    Copy the full SHA
    fa5844f View commit details
    Browse the repository at this point in the history

Commits on Mar 15, 2024

  1. Merge bitcoin#29650: depends: drop 1 Qt determinism patch

    76d6537 depends: drop 1 qt determinism patch (fanquake)
    
    Pull request description:
    
      No-longer required now that we are building with GCC 12.
    
      Guix Build (x86_64 && aarch64):
      ```bash
      e1c5b2c1c1a184e9d6985f26d26c61ca049e4541c699c6c9ce334beb832ed8da  guix-build-76d6537698e4/output/aarch64-linux-gnu/SHA256SUMS.part
      22f5d39fd9eac2d1fdbf2794fd6272ce05a1dfda2aeb2280a5dbafe76d0eec3d  guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu-debug.tar.gz
      1cc798fb30b9e85e3b94049a671e2881b6b8694e52ae5e6468805c8ea6ea637f  guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu.tar.gz
      a8c4ecc550aba01292885343ae9d53e31dfc0ef26f885fcf00493c754c5f9deb  guix-build-76d6537698e4/output/arm-linux-gnueabihf/SHA256SUMS.part
      d037b87949640d441b1ea000fd3fb27a508a699c5a6d69b6647611325cb9b7f5  guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf-debug.tar.gz
      a858a0bce444a9eaf2b36d188198e54cdc14d85e344863d9e176dca94e458537  guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf.tar.gz
      a802412eb9f2bbe2c573052581c21c44281e78c65d6ebc243105d5004768f0f9  guix-build-76d6537698e4/output/arm64-apple-darwin/SHA256SUMS.part
      20eeb2a28f096f53eeae61c64082c7eef0fb4d4e8dd7fb173a6cc19bf1960165  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.tar.gz
      54fae4652f21772d4d861b1a9dd3dcb913f088e6b7049a566c748ccdf2acede3  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.zip
      e986f3d8311df3ab26860c8747e9634687617609a317fdf242365d408235f417  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin.tar.gz
      3efced764d3b62362c906f1fbbdecf347be1aab877afb2d6ce8f39d24b3d7437  guix-build-76d6537698e4/output/dist-archive/bitcoin-76d6537698e4.tar.gz
      6bd047bd080ae0d0a08a15e83a79dfd17bf29227599517d0bccae17a0224a741  guix-build-76d6537698e4/output/powerpc64-linux-gnu/SHA256SUMS.part
      102909ef544962e08577464b3293c0013237391b7577d7abc26f1244d3d0157d  guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu-debug.tar.gz
      01cf35c37093f768c953697c8d0102316e1e719befd2853a74266bcc2105c52c  guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu.tar.gz
      467f858d1aba32ee290e6ba00feee632fcb56907f77e5b48f4de969d8ce78457  guix-build-76d6537698e4/output/riscv64-linux-gnu/SHA256SUMS.part
      893cb65a79709c58ebafb003ce43b1cd51434d9c0a9175b7dfede6aa99fec3d2  guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu-debug.tar.gz
      be3bd03cdef59928eb8a18bd59f48ad27ae38a6382bf94651774845adbd28308  guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu.tar.gz
      1ff2b04cccd44c4c6526387307fb381f52fbc36b31a51730435d6b99e0fa4610  guix-build-76d6537698e4/output/x86_64-apple-darwin/SHA256SUMS.part
      9c84639c4b7e1e39c06da4c9430efe94993ce97fbc279b38502c1d4fc25ac801  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.tar.gz
      e65c009c728aa42f24b6970018336058adc78fba09b85aa76310de98fdabb8ad  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.zip
      1a85307eec81cc13e5d599db1bb7cddd3d4f6847f2bad7685e096c439b44489a  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin.tar.gz
      10189926b6ccef3ab1feee3edce34a80a30e60ee67c00519e344fefd6c9880d0  guix-build-76d6537698e4/output/x86_64-linux-gnu/SHA256SUMS.part
      0094570197c0a91b7a903c1250bf899ea50d7452608da03f5dd825febd5e216b  guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu-debug.tar.gz
      8375afd9ea4376b354548270323fa0f5f3244579b59dcdf9c26330337b5719ab  guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu.tar.gz
      5a30053ee8db9eb2d083e8569a1a69b24acc84de1028f3f40d5e902a1174e49e  guix-build-76d6537698e4/output/x86_64-w64-mingw32/SHA256SUMS.part
      1d624077e027dd6f213c85d75fdbac12d61c45235946817c406132fbd222c939  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-debug.zip
      e75107ce5608d83708b4e9b5a64d50e0282560ee2d8d915a20993fd383d2d456  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-setup-unsigned.exe
      7fb1f412fd71e0e8302add6bcc5679ad6990d87c16688a396769844f72ae7c82  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-unsigned.tar.gz
      be24df85e0834823f0ad9611667100330972d3a18460099d7df5b4386fbd6403  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64.zip
      ```
    
    ACKs for top commit:
      TheCharlatan:
        ACK 76d6537
    
    Tree-SHA512: 69e698e9b0036ecb1f89db82427c25d0368d2178c3dc2bc751181c19a1139929bf0da160af6f3e021ca3da59ea66f7b7330aa6295f5e65c6ef0bbcf369fcbc94
    fanquake committed Mar 15, 2024
    Configuration menu
    Copy the full SHA
    178b4d4 View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29487: lint: Fix lint-whitespace issues

    5555395 lint: Use git --no-pager to print any output in one go (MarcoFalke)
    fa57294 lint: Fix lint-whitespace issues (MarcoFalke)
    
    Pull request description:
    
      The lint check has many issues:
    
      * It uses `COMMIT_RANGE`, which is brittle code, apparently making it harder to run the CI locally, or self-hosted. See bitcoin#29274 (comment)
      * The result depends on `COMMIT_RANGE`, or the number of commits passed to the script, which can cause false negatives or false positives.
      * It is based on the diff output, parsing it, and printing it again, which is brittle as well.
      * The output does not include line number, making it harder to act on a lint error.
    
      Fix all issues by removing the script and replacing it with a simple call to `git grep -I --line-number ...`.
    
    ACKs for top commit:
      TheCharlatan:
        Re-ACK 5555395
    
    Tree-SHA512: 71ea8b6382af064beb72fb17f21a0ae9e9238c97e7fa43c2ec353fd1dd73a7bbd696ba0f0a9f65d1eff7c86cbf6cc104a992cb5450a3d50f122955e835270065
    fanquake committed Mar 15, 2024
    Configuration menu
    Copy the full SHA
    015ac13 View commit details
    Browse the repository at this point in the history
  3. ci: Bump TIDY_LLVM_V

    This change switches to the latest IWYU 0.22, which is compatible with
    Clang 18.
    hebasto committed Mar 15, 2024
    Configuration menu
    Copy the full SHA
    636c986 View commit details
    Browse the repository at this point in the history

Commits on Mar 17, 2024

  1. Configuration menu
    Copy the full SHA
    626f8e3 View commit details
    Browse the repository at this point in the history
  2. ci: Drop --enable-c++20 option

    This option has ceased to exist since bitcoin#28349.
    hebasto committed Mar 17, 2024
    Configuration menu
    Copy the full SHA
    64722e4 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    fad7f42 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    cfa057b View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    742d2b9 View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2024

  1. Merge bitcoin#29537: lint: Misc improvements for lint runner

    742d2b9 lint: Add lint runner build dir and lint pycache to clean task (Fabian Jahr)
    cfa057b lint: Add lint runner build dir to gitignore (Fabian Jahr)
    fad7f42 lint: Clarify lint runner rust dependency (Fabian Jahr)
    
    Pull request description:
    
      1. Document the dependency to rust being installed locally
      2. Add the build output directory to gitignore
      3. Clean up the build output directory when running `make clean`
    
    ACKs for top commit:
      maflcko:
        ACK 742d2b9
      TheCharlatan:
        ACK 742d2b9
    
    Tree-SHA512: 36751d852e579830a9e6915b846886a6edaf4e42d508a4773ab502afda10b47c30c7c6bbd3e3158539ea5cf51592c2fe49c4221d271511006653a2d79119ed8c
    fanquake committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    f1a19d7 View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29091: build: Bump g++ minimum supported version to 11

    fa5844f Remove unused g++-10 workaround (MarcoFalke)
    fa8409e build: Bump g++ minimum supported version to 11 (MarcoFalke)
    
    Pull request description:
    
      This drops support for vanilla Ubuntu Focal 20.04 and Debian (Oldstable) Bullseye, compiling from source. Users on those operating systems would have to stick with a pre-compiled release, a previous release branch of Bitcoin Core, upgrade their system, compile their own compiler, or use a non-vanilla PPA or package manager.
    
      Otherwise, g++-11 is offered by common distributions:
    
      * https://packages.ubuntu.com/jammy/g++ (`g++-11`)
      * https://packages.debian.org/bookworm/g++ (`g++-12`)
      * FreeBSD 12/13 ships with g++ 12
      * CentOS-like 9 ships with g++ 11
      * OpenSuse Tumbleweed ships with g++ 13 https://software.opensuse.org/package/gcc13-c++ (No idea about OpenSuse Leap)
    
    ACKs for top commit:
      TheCharlatan:
        ACK fa5844f
      fanquake:
        ACK fa5844f
    
    Tree-SHA512: fc72d3a53956a0a4a6475ebf56b5fce76c3c4c793ed8e774327cad2b0f307d2d1c8aeafe2a414a7eb51f8de6d4bb78d30b8f60bf6e383234079851e72015c6e3
    fanquake committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    7af95af View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29659: ci: Bump TIDY_LLVM_V

    636c986 ci: Bump `TIDY_LLVM_V` (Hennadii Stepanov)
    
    Pull request description:
    
      This PR switches to the latest [IWYU 0.22](https://github.com/include-what-you-use/include-what-you-use/releases/tag/0.22), which is compatible with Clang 18.
    
    ACKs for top commit:
      fanquake:
        ACK 636c986
    
    Tree-SHA512: 78ce89244c5e487dd1be8b4bd2ca6f06d19b04b78289ebc21985110574053545dcce5eb622edf2bede2cf7bb58360170e976d30a4484a127d34dd17b1c604e9c
    fanquake committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    aba9024 View commit details
    Browse the repository at this point in the history
  4. assumeutxo test: Add RPC test for fake nTx and nChainTx values

    The fake values will be removed in an upcoming commit, so it is useful to have
    test coverage confirming the change in behavior.
    ryanofsky committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    f252e68 View commit details
    Browse the repository at this point in the history
  5. ci: add getchaintxstats ubsan suppressions

    Add ubsan suppressions for integer overflows in the getchaintxstats RPC.
    
    getchainstatstx line "int nTxDiff = pindex->nChainTx - past_block.nChainTx" can
    trigger ubsan integer overflows when assumeutxo snapshots are loaded, from
    subtracting unsigned values and assigning the result to a signed int.
    
    The overflow behavior probably exists in current code but is hard to trigger
    because it would require calling getchainstatstx at the right time with
    specific parameters as background blocks are being downloaded. But the overflow
    behavior becomes easier to trigger in the upcoming commit removing fake
    nChainTx values, so a suppression needs to be added before then for CI to pass.
    
    getchainstatstx should probably be improved separately in another PR to not
    need this suppression, and handle edge cases and missing nChainTx values more
    carefully.
    ryanofsky committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    63e8fc9 View commit details
    Browse the repository at this point in the history
  6. validation: Check GuessVerificationProgress is not called with discon…

    …nected block
    
    Use Assume macro as suggested bitcoin#29370 (comment)
    ryanofsky committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    0fd915e View commit details
    Browse the repository at this point in the history
  7. doc: Improve comments describing setBlockIndexCandidates checks

    The checks are changing slightly in the next commit, so try to explains the
    ones that exist to avoid confusion
    (bitcoin#29370 (comment))
    ryanofsky committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    9b97d5b View commit details
    Browse the repository at this point in the history
  8. assumeutxo: Get rid of faked nTx and nChainTx values

    The `PopulateAndValidateSnapshot` function introduced in
    f6e2da5 from bitcoin#19806 has been setting fake
    `nTx` and `nChainTx` values that can show up in RPC results (see bitcoin#29328) and
    make `CBlockIndex` state hard to reason about, because it is difficult to know
    whether the values are real or fake.
    
    Revert to previous behavior of setting `nTx` and `nChainTx` to 0 when the
    values are unknown, instead of faking them.
    
    This commit fixes at least two assert failures in the (pindex->nChainTx ==
    pindex->nTx + prev_chain_tx) check that would happen previously. Tests for
    these failures are added separately in the next two commits.
    
    Compatibility note: This change could result in -checkblockindex failures if a
    snapshot was loaded by a previous version of Bitcoin Core and not fully
    validated, because fake nTx values will have been saved to the block index. It
    would be pretty easy to avoid these failures by adding some compatibility code
    to `LoadBlockIndex` and changing `nTx` values from 1 to 0 when they are fake
    (when `(pindex->nStatus & BLOCK_VALID_MASK) < BLOCK_VALID_TRANSACTIONS`), but a
    little simpler not to worry about being compatible in this case.
    ryanofsky committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    ef29c8b View commit details
    Browse the repository at this point in the history
  9. test: assumeutxo stale block CheckBlockIndex crash test

    Add a test for a CheckBlockIndex crash that would happen before previous
    "assumeutxo: Get rid of faked nTx and nChainTx values" commit.
    
    The crash was an assert failure in the (pindex->nChainTx == pindex->nTx +
    prev_chain_tx) check that would previously happen if a snapshot was loaded, and
    a block was submitted which forked from the chain before the snapshot block and
    after the last downloaded background chain block. This block would not be
    marked assumed-valid because it would not be an ancestor of the snapshot, and
    it would have nTx set, nChainTx unset, and prev->nChainTx set with a fake
    value, so the assert would fail. After the fix, prev->nChainTx is unset instead
    of being set to a fake value, so the assert succeeds. This test was originally
    posted by maflcko in
    bitcoin#29261 (comment)
    
    Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
    ryanofsky and MarcoFalke committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    0391458 View commit details
    Browse the repository at this point in the history
  10. test: assumeutxo snapshot block CheckBlockIndex crash test

    Add a test for a CheckBlockIndex crash that would happen before previous
    "assumeutxo: Get rid of faked nTx and nChainTx values" commit.
    
    The crash was an assert failure in the (pindex->nChainTx == pindex->nTx +
    prev_chain_tx) check that would previously happen if the snapshot block was
    submitted after loading the snapshot and downloading a few blocks after the
    snapshot. In that case ReceivedBlockTransactions() previously would overwrite
    the nChainTx value of the submitted snapshot block with a fake value based on
    the previous block, so the (pindex->nChainTx == pindex->nTx + prev_chain_tx)
    check would later fail on the first block after the snapshot. This test was
    originally posted by Martin Zumsande <mzumsande@gmail.com> in
    bitcoin#29370 (comment)
    
    Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
    ryanofsky and mzumsande committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    ef174e9 View commit details
    Browse the repository at this point in the history
  11. Merge bitcoin#29669: ci: Drop --enable-c++20 option

    64722e4 ci: Drop `--enable-c++20` option (Hennadii Stepanov)
    
    Pull request description:
    
      This option has ceased to exist since bitcoin#28349.
    
    ACKs for top commit:
      maflcko:
        ACK 64722e4
    
    Tree-SHA512: bd392c331f775605615e1b236682269b83a1e6363a4d3f09c4d8d54495cf3d22973a921ebf6b8a9f813ba6c024d3324761f3291aaf7f473995f5eaa4c195bc43
    fanquake committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    9a459e3 View commit details
    Browse the repository at this point in the history
  12. assumeutxo: Remove BLOCK_ASSUMED_VALID flag

    Flag adds complexity and is not currently used for anything.
    ryanofsky committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    9d9a745 View commit details
    Browse the repository at this point in the history
  13. Merge bitcoin#28950: RPC: Add maxfeerate and maxburnamount args to su…

    …bmitpackage
    
    38f70ba RPC: Add maxfeerate and maxburnamount args to submitpackage (Greg Sanders)
    
    Pull request description:
    
      Resolves bitcoin#28949
    
      I couldn't manage to do it very cleanly outside of (sub)package evaluation itself, since it would change the current interface very heavily. Instead I threaded through the max fee argument and used that directly via ATMPArgs. From that perspective, this is somewhat a reversion from bitcoin#19339. In a post-cluster mempool world, these checks could be consolidated to right after the given (ancestor) package is linearized/chunked, by just checking the feerate of the top chunk and rejecting the submission entirely if the top chunk is too high.
    
      The implication here is that subpackages can be submitted to the mempool prior to hitting this new fee-based error condition.
    
    ACKs for top commit:
      ismaelsadeeq:
        Re-ACK bitcoin@38f70ba 👍🏾
      glozow:
        ACK 38f70ba with some non-blocking nits
      murchandamus:
        LGTM, code review ACK 38f70ba
    
    Tree-SHA512: 38212aa9de25730944cee58b0806a3d37097e42719af8dd7de91ce86bb5d9770b6f7c37354bf418bd8ba571c52947da1dcdbb968bf429dd1dbdf8715315af18f
    glozow committed Mar 18, 2024
    Configuration menu
    Copy the full SHA
    5d045c3 View commit details
    Browse the repository at this point in the history

Commits on Mar 19, 2024

  1. Merge bitcoin#29667: fuzz: actually test garbage >64b in p2p transpor…

    …t test
    
    626f8e3 fuzz: actually test garbage >64b in p2p transport test (Pieter Wuille)
    
    Pull request description:
    
      This fixes an oversight from bitcoin#28196: in the `p2p_transport_bidirectional_v2` fuzz test, when the desired garbage length is over 64 bytes, the code would actually use garbage length 0. Fix this.
    
    ACKs for top commit:
      instagibbs:
        ACK bitcoin@626f8e3
      brunoerg:
        crACK 626f8e3
    
    Tree-SHA512: f6346367adb10464b6c9d20aef43625531d2a4d8110887ad03214b8c1907b83560f2dd5b5415e2180a40b4cd276d51881b32b60c740471b5c6bb218aa19848d8
    fanquake committed Mar 19, 2024
    Configuration menu
    Copy the full SHA
    0f89e86 View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#29639: test: fix intermittent failures with test=addrman

    432a542 test: fix intermittent failures with test=addrman (Martin Zumsande)
    
    Pull request description:
    
      The `nKey` of the addrman is generated the first time the node is started with an empty `peers.dat`. Therefore, restarting a node or turning it off and on again won't make a previously non-deterministic addrman deterministic.
      This could lead to intermittent failures in `feature_asmap.py` and `rpc_net.py`
    
      Fixes bitcoin#29634
    
    ACKs for top commit:
      kevkevinpal:
        ACK [432a542](bitcoin@432a542)
      stratospher:
        Tested ACK 432a542.
      brunoerg:
        crACK 432a542
      0xB10C:
        ACK 432a542
    
    Tree-SHA512: a8e284baeb0be2df7284b8a2792cb9edc9e2d5b877a3b29ab7277ffdb75b17efa58a4d42576441eb493cd518e7c5ffdb05597b27e42b5001cf1a80e78bb04c83
    fanquake committed Mar 19, 2024
    Configuration menu
    Copy the full SHA
    9f2609d View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#29094: ci: Better tidy errors

    fae70ba ci: Better tidy errors (MarcoFalke)
    
    Pull request description:
    
      Currently tidy errors are not nice, because the user may have to scroll up to see them in a large block of text. See for example (before) https://github.com/bitcoin/bitcoin/runs/19670551485
    
      Fix that by `tee`ing the output to a file and summarizing the errors in the end again. See for example (after): https://github.com/bitcoin/bitcoin/runs/22647850662
    
    ACKs for top commit:
      hebasto:
        ACK fae70ba, logs with errors look cleaner.
      TheCharlatan:
        ACK fae70ba
    
    Tree-SHA512: dcaea557fed40089409d16ce2cbaa8a9cfbf047f601d5daadfee0823b0eed7badc12d803addc0b7b6bb3f1eaf5c787fccb2488475d32c4efd80835f386f761dd
    fanquake committed Mar 19, 2024
    Configuration menu
    Copy the full SHA
    8e95a9c View commit details
    Browse the repository at this point in the history
  4. ci: Bump msan to llvm-18

    MarcoFalke committed Mar 19, 2024
    Configuration menu
    Copy the full SHA
    faecf3a View commit details
    Browse the repository at this point in the history
  5. Merge bitcoin#29192: Weaken serfloat tests

    6e873df serfloat: improve/simplify tests (Pieter Wuille)
    b45f1f5 serfloat: do not test encode(bits)=bits anymore (Pieter Wuille)
    
    Pull request description:
    
      Closes bitcoin#28941.
    
      Our current tests for serfloat verify two distinct properties:
      1. Whether they roundtrip `double`->`uint64_t`->`double` (excluding NaN values) on all systems.
      2. Whether on systems with a typical floating point unit that encoding matches the hardware representation, as before v22.0, we would dump the hardware representation directly to disk and we wanted to retain compatibility with that.
    
      bitcoin#28941 seems to show that the second property doesn't always hold, but just for "subnormal" numbers (below $2^{-1021}$). Since we don't care about encoding these numbers, we could exclude such subnormal numbers from the hardware-identical representation test, but this PR goes further and just drops the second property entirely, as I don't think we care about edge-case compatibility with pre-v22.0 code for fee_estimates.dat (the only place it is used).
    
    ACKs for top commit:
      glozow:
        ACK 6e873df
      fanquake:
        ACK 6e873df - It's not as much of a priority, but I think we could still backport this.
    
    Tree-SHA512: e18ceee0753a7ee7e999fdfa10b014dc5bb67b6ef79522a0f8c76b889adcfa785772fc26ed7559bcb5a09a9938e243bb54eedd9549bc59080a2c8090155e2267
    fanquake committed Mar 19, 2024
    Configuration menu
    Copy the full SHA
    479ecc0 View commit details
    Browse the repository at this point in the history
  6. index: Move last_locator_write_time and logging to end of threadsync …

    …loop
    
    This avoids having commit print a needless error message during init.
    
    Co-authored-by: furszy <mfurszy@protonmail.com>
    fjahr and furszy committed Mar 19, 2024
    Configuration menu
    Copy the full SHA
    f65b0f6 View commit details
    Browse the repository at this point in the history
  7. Merge bitcoin#29279: test: p2p: check disconnect due to lack of desir…

    …able service flags
    
    2f23987 test: p2p: check limited peers desirability (depending on best block depth) (Sebastian Falbesoner)
    c4a67d3 test: p2p: check disconnect due to lack of desirable service flags (Sebastian Falbesoner)
    405ac81 test: p2p: support disconnect waiting for `add_outbound_p2p_connection` (Sebastian Falbesoner)
    
    Pull request description:
    
      This PR adds missing test coverage for disconnecting peers which don't offer the desirable service flags in their VERSION message:
      https://github.com/bitcoin/bitcoin/blob/5f3a0574c45477288bc678b15f24940486084576/src/net_processing.cpp#L3384-L3389
      This check is relevant for the connection types "outbound-full-relay", "block-relay-only" and "addr-fetch" (see `CNode::ExpectServicesFromConn(...)`). Feeler connections always disconnect, which is also tested here.
    
      In lack of finding a proper file where this test would fit in, I created a new one. Happy to take suggestions there.
    
    ACKs for top commit:
      davidgumberg:
        reACK bitcoin@2f23987
      itornaza:
        tested ACK 2f23987
      fjahr:
        re-utACK 2f23987
      cbergqvist:
        re ACK 2f23987
      stratospher:
        tested ACK 2f23987. 🚀
    
    Tree-SHA512: cf75d9d4379d0f34fa1e13152e6a8d93cd51b9573466ab3a2fec32dc3e1ac49b174bd1063cae558bc736b111c8a6e7058b1b57a496df56255221bf367d29eb5d
    glozow committed Mar 19, 2024
    Configuration menu
    Copy the full SHA
    3d216ba View commit details
    Browse the repository at this point in the history

Commits on Mar 20, 2024

  1. Merge bitcoin#29676: ci: Bump msan to llvm-18

    faecf3a ci: Bump msan to llvm-18 (MarcoFalke)
    
    Pull request description:
    
      Last one: bitcoin#28476
    
    ACKs for top commit:
      fanquake:
        ACK faecf3a - There is now a 18.1.2, but given it doesn't fix the instrumenting in libunwind, we don't need that here. I've tested that both jobs are now working on both arches.
    
    Tree-SHA512: 489c0b343bdc732687131317a570f3efbb18a3f548736d739da90d1a1e784df1dbb208c2da8a2a7740f27f961a841c477487a14c4d59910368f651225f0779b2
    fanquake committed Mar 20, 2024
    Configuration menu
    Copy the full SHA
    5b9831a View commit details
    Browse the repository at this point in the history
  2. Merge bitcoin#28955: index: block filters sync, reduce disk read oper…

    …ations by caching last header
    
    99afb9d refactor: init, simplify index shutdown code (furszy)
    0faafb5 index: decrease ThreadSync cs_main contention (furszy)
    f1469eb index: cache last block filter header (furszy)
    a6756ec index: blockfilter, decouple header lookup into its own function (furszy)
    331f044 index: blockfilter, decouple Write into its own function (furszy)
    bcbd7eb bench: basic block filter index initial sync (furszy)
    
    Pull request description:
    
      Work decoupled from bitcoin#26966 per request.
    
      The aim is to remove an unnecessary disk read operation that currently takes place with every new arriving block (or scanned block during background sync). Instead of reading the last filter header from disk merely to access its hash for constructing the next filter, this work caches it, occupying just 32 more bytes in memory.
    
      Also, reduces `cs_main` lock contention during the index initial sync process. And, simplifies the indexes initialization and shutdown procedure.
    
      Testing Note:
      To compare the changes, added a pretty basic benchmark in the second commit. Alternatively, could also test the changes by timing the block filter sync from scratch on any network; start the node with `-blockfilterindex` and monitor the logs until the syncing process finish.
    
      Local Benchmark Results:
    
      *Master (c252a0f):
      |               ns/op |                op/s |    err% |     total | benchmark
      |--------------------:|--------------------:|--------:|----------:|:----------
      |      132,042,516.60 |                7.57 |    0.3% |      7.79 | `BlockFilterIndexSync`
    
      *PR (43a212c):
      |               ns/op |                op/s |    err% |     total | benchmark
      |--------------------:|--------------------:|--------:|----------:|:----------
      |      126,915,841.60 |                7.88 |    0.6% |      7.51 | `BlockFilterIndexSync`
    
    ACKs for top commit:
      Sjors:
        re-ACK 99afb9d
      achow101:
        ACK 99afb9d
      TheCharlatan:
        Re-ACK 99afb9d
      andrewtoth:
        ACK 99afb9d
    
    Tree-SHA512: 927daadd68f4ee1ca781a89519539b895f5185a76ebaf525fbc246ea8dcf40d44a82def00ac34b188640802844b312270067f1b33e65a2479e06be9169c616de
    achow101 committed Mar 20, 2024
    Configuration menu
    Copy the full SHA
    0b96a19 View commit details
    Browse the repository at this point in the history
  3. Merge bitcoin#27039: blockstorage: do not flush block to disk if it i…

    …s already there
    
    dfcef53 blockstorage: do not flush block to disk if it is already there (Matthew Zipkin)
    
    Pull request description:
    
      Closes bitcoin#2039
    
      When reindexing from flat-file block storage there is no need to write anything back to disk, since the block data is already there. This PR skips flushing to disk those blocks that already have a known position in the datastore. Skipping this means that users can write-protect the `blk` files on disk which may be useful for security or even safely sharing that data between multiple bitcoind instances.
    
      `FindBlockPos()` may also flush the undo data file, but again this is skipped if the corresponding block position is known, like during the initial stage of a reindex when block data is being indexed. Once the block index is complete the validation mechanism will call `ConnectBlock()` which will save undo data at that time.
    
      The call stack looks like this:
    
      ```
      init()
      ThreadImport() <-- process fReindex flag
      LoadExternalBlockFile()
      AcceptBlock()
      SaveBlockToDisk()
      FindBlockPos()
      FlushBlockFile() <-- unnecessary if block is already on disk
      ```
    
      A larger refactor of this part of the code was started by mzumsande here:  https://github.com/mzumsande/bitcoin/tree/202207_refactor_findblockpos including this fix, reviewers can let me know if the changes should be combined.
    
    ACKs for top commit:
      sipa:
        utACK dfcef53
      mzumsande:
        re-ACK dfcef53
      achow101:
        ACK dfcef53
      furszy:
        Rebase diff ACK dfcef53.
    
    Tree-SHA512: 385c5ac1288b325135398d0ddd3ab788fa98cc0ca19bd2474c74039f2ce70d5088c1d1c9d4dd10aefcbd4c757767ec5805d07ba8cee9289a66f96e6f9eaa5279
    achow101 committed Mar 20, 2024
    Configuration menu
    Copy the full SHA
    69ddee6 View commit details
    Browse the repository at this point in the history
  4. Merge bitcoin#29370: assumeutxo: Get rid of faked nTx and nChainTx va…

    …lues
    
    9d9a745 assumeutxo: Remove BLOCK_ASSUMED_VALID flag (Ryan Ofsky)
    ef174e9 test: assumeutxo snapshot block CheckBlockIndex crash test (Ryan Ofsky)
    0391458 test: assumeutxo stale block CheckBlockIndex crash test (Ryan Ofsky)
    ef29c8b assumeutxo: Get rid of faked nTx and nChainTx values (Ryan Ofsky)
    9b97d5b doc: Improve comments describing setBlockIndexCandidates checks (Ryan Ofsky)
    0fd915e validation: Check GuessVerificationProgress is not called with disconnected block (Ryan Ofsky)
    63e8fc9 ci: add getchaintxstats ubsan suppressions (Ryan Ofsky)
    f252e68 assumeutxo test: Add RPC test for fake nTx and nChainTx values (Ryan Ofsky)
    
    Pull request description:
    
      The `PopulateAndValidateSnapshot` function introduced in f6e2da5 from bitcoin#19806 has been setting fake `nTx` and `nChainTx` values that can show up in RPC results (bitcoin#29328) and make `CBlockIndex` state hard to reason about, because it is difficult to know whether the values are real or fake.
    
      Revert to previous behavior of setting `nTx` and `nChainTx` to 0 when the values are unknown, instead of faking them. Also drop no-longer needed `BLOCK_ASSUMED_VALID` flag.
    
      Dropping the faked values also fixes assert failures in the `CheckBlockIndex` `(pindex->nChainTx == pindex->nTx + prev_chain_tx)` check that could happen previously if forked or out-of-order blocks before the snapshot got submitted while the snapshot was being validated. The PR includes two commits adding tests for these failures and describing them in detail.
    
      Compatibility note: This change could cause new `-checkblockindex` failures if a snapshot was loaded by a previous version of Bitcoin Core and not fully validated, because fake `nTx` values will have been saved to the block index. It would be pretty easy to avoid these failures by adding some compatibility code to `LoadBlockIndex` and changing `nTx` values from 1 to 0 when they are fake (when `(pindex->nStatus & BLOCK_VALID_MASK) < BLOCK_VALID_TRANSACTIONS`), but a little simpler not to worry about being compatible in this case.
    
    ACKs for top commit:
      Sjors:
        re-ACK 9d9a745
      achow101:
        ACK 9d9a745
      mzumsande:
        Tested ACK 9d9a745
      maflcko:
        ACK 9d9a745 🎯
    
    Tree-SHA512: b1e1e2731ec36be30d5f5914042517219378fc31486674030c29d9c7488ed83fb60ba7095600f469dc32f0d8ba79c49ff7706303006507654e1762f26ee416e0
    achow101 committed Mar 20, 2024
    Configuration menu
    Copy the full SHA
    b50554b View commit details
    Browse the repository at this point in the history
  5. Merge bitcoin#29671: index: avoid "failed to commit" errors on initia…

    …lization
    
    f65b0f6 index: Move last_locator_write_time and logging to end of threadsync loop (Fabian Jahr)
    
    Pull request description:
    
      In the index sync thread, when initializing an index for the first time, stop callng BaseIndex::Commit when m_best_block_index is null, to avoid a spurious "failed to commit" error from that function. This error started happening in commit bitcoin@7878f97 from bitcoin#25494 and was reported by pstratem in bitcoin#26903 with an alternate fix.
    
    ACKs for top commit:
      achow101:
        ACK f65b0f6
      ryanofsky:
        Code review ACK f65b0f6. Just moved log "Syncing" log line since last commit to avoid having to call now() twice.
      furszy:
        ACK f65b0f6
      TheCharlatan:
        ACK f65b0f6
    
    Tree-SHA512: afa8f05786318d36346d167ff53ea0b3bc8abdb0ad04465d199dc3eb91e9f837369e24fcb7e24b5757b02d698ec504e61da6ac365eaf006c874fc07a424a7e20
    achow101 committed Mar 20, 2024
    Configuration menu
    Copy the full SHA
    bf1b638 View commit details
    Browse the repository at this point in the history

Commits on Mar 21, 2024

  1. Merge bitcoin#29651: guix: bump time-machine to dc4842797bfdc5f9f3f5f…

    …725bf189c2b68bd6b5a
    
    cf5faf7 guix: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a (fanquake)
    
    Pull request description:
    
      This includes a commit to fix building LLVM 17 on riscv64, see https://git.savannah.gnu.org/cgit/guix.git/commit/?id=4e26331a5ee87928a16888c36d51e270f0f10f90.
    
      Followup to discussion in bitcoin#28880 (comment).
    
      If you don't have riscv64 hardware, this can be tested with the following:
      ```bash
      # observe failure when cross-compiling using our current time-machine
      guix time-machine --commit=d5ca4d4fd713a9f7e17e074a1e37dda99bbb09fc -- build --target=riscv64-linux-gnu  llvm
      ....
      riscv64-linux-gnu-ld: CMakeFiles/dsymutil.dir/dsymutil.cpp.o: undefined reference to symbol '__atomic_fetch_and_1@@LIBATOMIC_1.0'
      riscv64-linux-gnu-ld: /gnu/store/i4ga0pnr1b74bir2bjyp8mcrrbsvk7d3-gcc-cross-riscv64-linux-gnu-11.3.0-lib/riscv64-linux-gnu/lib/libatomic.so.1:
        error adding symbols: DSO missing from command line
      collect2: error: ld returned 1 exit status
    
      # build success when using the new time-machine
      guix time-machine --commit=dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a -- build --target=riscv64-linux-gnu  llvm
      ....
      grafting '/gnu/store/7y0j0y8jaz4mjx2nz0y42wdnxxjp6id6-llvm-17.0.6-opt-viewer' -> '/gnu/store/8xvahrrjscbprh6cjj0qp5bm9mm78wwa-llvm-17.0.6-opt-viewer'...
      grafting '/gnu/store/bjhw648bz7ijd2p9hgzzdbw1q8hpagk8-llvm-17.0.6' -> '/gnu/store/x50qi8i2ywgpx6azv4k55ms0w5xjxxg5-llvm-17.0.6'...
      successfully built /gnu/store/q9xvk8gzzvb4dxfzf6yi5164zd0d1vj2-llvm-17.0.6.drv
      ```
    
      Also includes at least:
      Linux Headers 6.1.67 -> 6.1.80
    
    ACKs for top commit:
      TheCharlatan:
        ACK cf5faf7
      hebasto:
        ACK cf5faf7, tested on x86_64 hardware as described in the PR description.
    
    Tree-SHA512: b49d4f90effeec666b12b5447a24c90315b82675cfc166bc1230ac173134bab6b277fc7e064bbb75e990275165b2b27d88e4ec1cdeea4750541ec6443cb50f41
    fanquake committed Mar 21, 2024
    Configuration menu
    Copy the full SHA
    71b6319 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0226a63 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    ecdac2c View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    7a16b0e View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    d9e992d View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    d977d35 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    26f08d7 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    64cc05e View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    b6f2f55 View commit details
    Browse the repository at this point in the history
  10. test: Added RPC tests for compressrawtransaction and decompressrawtra…

    …nsaction, For valid assets_tests run compression tests, Added unit tests for new primitives
    TomBriar committed Mar 21, 2024
    Configuration menu
    Copy the full SHA
    f488d3a View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    6f92525 View commit details
    Browse the repository at this point in the history