Commit graph

34906 commits

Author SHA1 Message Date
Andreas Kouloumos
f2f6068b69 test: MiniWallet: add send_self_transfer_chain to create chain of txns
With this new method, a chain of transactions can be created. This
method is introduced to further simplify the mempool_package_limits.py
tests.
2022-08-01 19:11:36 +03:00
Andreas Kouloumos
1d6b438ef0 test: use MiniWallet to simplify mempool_package_limits.py tests
Moved `bulk_transaction` into MiniWallet class as `_bulk_tx` private
helper method to be used when the newly added `target_weight` option is
passed to `create_self_transfer*`
2022-08-01 19:11:35 +03:00
MacroFake
ce3b75690d
Merge bitcoin/bitcoin#25613: doc: empty REVIEWERS file
4d06fc4bed doc: empty REVIEWERS file (fanquake)

Pull request description:

  It seems that it's time for our experiment with this file to come to an
  end.

  See discussion here:
  https://github.com/bitcoin/bitcoin/pull/25560/files#r915491743.

ACKs for top commit:
  MarcoFalke:
    ACK 4d06fc4bed seems best to have devs opt-in to this explicitly by themselves

Tree-SHA512: c9d4f85e6401807d5eb4478c523c56d37baf0a11edfd3c04713f21b4217e168876761b3ed26fe2b3477e06dbaf3c4bb8393ce4274ad4a66258f4c170f628b612
2022-08-01 12:05:20 +02:00
MacroFake
2bca32b7c3
Merge bitcoin/bitcoin#24799: Add test case mimicking issue 24765
395767e9f1 Add test case mimicking issue 24765 (Pieter Wuille)

Pull request description:

  This adds a functional test for the concern brought up in #24765. It turned out to be a non-issue, but since I wrote it anyway, it can't hurt to add it.

Top commit has no ACKs.

Tree-SHA512: fc8d57129d8c68f6d9a41b94b5ff676c87b31f53bc958195d4fe312530ec3e038ebd0bc5e8b9d56be77b7b63fd94574685901901404a4ab8726a5e09d89e86c8
2022-08-01 11:58:57 +02:00
MacroFake
eeb5a94e27
Merge bitcoin/bitcoin#25528: ci: run USDT interface tests in the CI
cc7335edc8 ci: run USDT interface test in a VM (0xb10c)
dba6f82342 test: adopt USDT utxocache interface tests (0xb10c)
220a5a2841 test: hook into PID in tracing tests (0xb10c)

Pull request description:

  Changes a CI task that runs test the previously not run `test/functional/interface_usdt_*.py` functional tests (added in https://github.com/bitcoin/bitcoin/pull/24358).

  This task is run as CirussCI `compute_engine_instance` VM as hooking into the tracepoints is not possible in CirrusCI docker containers (https://github.com/bitcoin/bitcoin/issues/23296#issuecomment-1024920845). We use an unoffical PPA and untrusted  `bpfcc-tools` package in the CI as the Ubuntu jammy and Debian bullseye packages are outdated. We hope use an official package when new Ubuntu/Debian releases are available for the use with Google Compute Engine.

  We make sure to hook into `bitcoind` binaries in USDT interface tests via their PID, instead of their path. This makes sure multiple functional tests running in parallel don't interfere with each other.

  The utxocache USDT interface tests is adopted to a change of the functional test framework that wasn't detected as the tests weren't run in the CI. As the tracepoints expose internals, it can happen that we need to adopt the interface test when internals change. This is a bit awkward, and if it happens to frequently, we should consider generalizing the tests a bit more. For now it's fine, I think.

  See the individual commit messages for more details on the changes.

  Fixes https://github.com/bitcoin/bitcoin/issues/24782
  Fixes https://github.com/bitcoin/bitcoin/issues/23296

  I'd like to hear from reviewers:
  - Are we OK with using the [`hadret/bpfcc`](https://launchpad.net/~hadret/+archive/ubuntu/bpfcc) PPA for now? There is a clear plan when to drop it and as is currently, it could only impact the newly added VM task.
  - ~~Adding a new task increases CI runtime and costs. Should an existing `container` CI task be ported to a VM and reused instead?~~ Yes, see https://github.com/bitcoin/bitcoin/pull/25528#issuecomment-1179509525

ACKs for top commit:
  MarcoFalke:
    cr ACK cc7335edc8

Tree-SHA512: b7fddccc0a77d82371229d048abe0bf2c4ccaa45906497ef3040cf99e7f05561890aef4c253c40e4afc96bb838c9787fae81c8454c6fd9db583276e005a4ccb3
2022-08-01 11:27:29 +02:00
MacroFake
da23320998
Merge bitcoin/bitcoin#25651: refactor: make all NodeImpl/ChainImpl/ExternalSignerImpl members public, rm temporaries, simplify
4bedfd702a refactor: remove unneeded temporaries in node/interfaces, simplify code (Jon Atack)
b27ba169eb refactor: make all NodeImpl/ChainImpl/ExternalSignerImpl members public (Jon Atack)

Pull request description:

  - Make all `NodeImpl`, `ChainImpl` and `ExternalSignerImpl` class members `public` (and document why), to be consistent in all the `*Impl` classes in `src/node/interfaces.cpp` and `src/wallet/interfaces.cpp` and to help future reviewers and contributors.

  - Remove unneeded temporaries in `NodeImpl` and `ChainImpl` methods in `src/node/interfaces.cpp` and simplify, to make the code easier to read and understand and to improve performance by avoiding unnecessary move operations.

ACKs for top commit:
  ryanofsky:
    Code review ACK 4bedfd702a. Changes since last review, applying suggested style & simplifiying first commit. Also avoiding another lock in second commit.

Tree-SHA512: 112f7cad5e2838c94c5b79d61328f42fe75fdb97f401ab49eccf696fc2c6a8a0c0ee55ec974c0602acf7423f78bb82e90eb8a0cc531e1d3347f73b7c83685504
2022-08-01 11:19:55 +02:00
MacroFake
f5eadcb148
Merge bitcoin/bitcoin#25663: tracing: do not use coin after move in CCoinsViewCache::AddCoin
f8e228476f tracing: do not use `coin` after move in `CCoinsViewCache::AddCoin` (Seibart Nedor)

Pull request description:

  This is fix for https://github.com/bitcoin/bitcoin/issues/25640.

ACKs for top commit:
  0xB10C:
    ACK f8e228476f

Tree-SHA512: e7643ac8e6b6247aaf250f44572c4b458da4aea030ac0268227564e6857200e9c23efe325cfc535f46498cbeccaf46301551efeeb54b062f71d2dcf1ffe71fb8
2022-08-01 11:05:02 +02:00
MacroFake
c5ba1d92b6
Merge bitcoin/bitcoin#25610: wallet, rpc: Opt in to RBF by default
ab3c06db1a doc: Release notes for default RBF (Andrew Chow)
61d9149e78 rpc: Default rbf enabled (Andrew Chow)
e3c33637ba wallet: Enable -walletrbf by default (Andrew Chow)

Pull request description:

  The GUI currently opts in to RBF by default, but RPCs do not, and `-walletrbf` is default disabled. This PR makes the default in those two places to also opt in.

  The last time this was proposed (#9527), the primary objections were the novelty at the time, the inability to bump transactions, and the gui not having the option to disable rbf. In the 5 years since, RBF usage has steadily grown, with ~27% of txs opting in. The GUI has the option to enable/disable RBF, and is also defaulted to having it enabled. And we have the ability to bump RBF'd transactions in both the RPC and the GUI. So I think it makes sense to finally change the default to always opt in to RBF.

ACKs for top commit:
  darosior:
    reACK ab3c06db1a
  aureleoules:
    ACK ab3c06db1a.
  glozow:
    utACK ab3c06db1a

Tree-SHA512: 81b012c5033e270f86a87a6a196ccc549eb54b158eebf88e917cc6621d40d7bdcd1566b602688907dd5d364b95a557b29f97dce869cea512e339588262c027b6
2022-08-01 10:53:11 +02:00
fanquake
b3c7c023b6
Merge bitcoin/bitcoin#25719: build: Bump Qt to 5.15.5 in depends
fd0e8df67c qt: use patch over sed for guix CROSS_LIBRARY_PATH change (fanquake)
ecb617fefe build: Bump Qt to 5.15.5 in depends (Hennadii Stepanov)

Pull request description:

  Bumping Qt patch version allows to drop the `fix_limits_header.patch`.

  Guix builds on `x86_64`:
  ```
  6e403f6442f904a17e00f2c5d539c38a6d736963deaca080aaf7e45911f32cd4  guix-build-fd0e8df67cae/output/aarch64-linux-gnu/SHA256SUMS.part
  9faf7c7eba364848ab59f78d68a7ef74fc96c1d4b64c9132c8cdeaa3e90dd11c  guix-build-fd0e8df67cae/output/aarch64-linux-gnu/bitcoin-fd0e8df67cae-aarch64-linux-gnu-debug.tar.gz
  5a6a63c1e81f088db952ddd5184f673583cbce122de8a5714ba313064ac4536d  guix-build-fd0e8df67cae/output/aarch64-linux-gnu/bitcoin-fd0e8df67cae-aarch64-linux-gnu.tar.gz
  d1f0d94a0996d268a498fce2080a456544ccd60c263eb25c6bb335570ee0e181  guix-build-fd0e8df67cae/output/arm-linux-gnueabihf/SHA256SUMS.part
  ec89d624ec30f0117e435ff31fe3431c15eb0ef2c31fc33f7a1c6b71d8af1166  guix-build-fd0e8df67cae/output/arm-linux-gnueabihf/bitcoin-fd0e8df67cae-arm-linux-gnueabihf-debug.tar.gz
  71521ee2e382bb3b1e85db0e702cb3d91a6c713f290cb3835f6e6a6ff65de22b  guix-build-fd0e8df67cae/output/arm-linux-gnueabihf/bitcoin-fd0e8df67cae-arm-linux-gnueabihf.tar.gz
  e757341c8000cdc74b266217bd1bc3ec2fa4d0a53270cef4fe18182010dde213  guix-build-fd0e8df67cae/output/arm64-apple-darwin/SHA256SUMS.part
  a361215f99ef2e10decc2c97ad5aea62e268554101cd34a75a28a0f8cc25bc4d  guix-build-fd0e8df67cae/output/arm64-apple-darwin/bitcoin-fd0e8df67cae-arm64-apple-darwin-unsigned.dmg
  81b91ab355544d247c2781bf2e323a70c27780665c3098d8ef01a59d291725f6  guix-build-fd0e8df67cae/output/arm64-apple-darwin/bitcoin-fd0e8df67cae-arm64-apple-darwin-unsigned.tar.gz
  0b4e6ae2c66ecf49b2223d8d7fabd00765942ffeb4972fd699e4a9d13f176b6b  guix-build-fd0e8df67cae/output/arm64-apple-darwin/bitcoin-fd0e8df67cae-arm64-apple-darwin.tar.gz
  94f4a4a319a896c1ce37980fdac0c6bf9b62e2a8ca46476a10895a4fd8d0403f  guix-build-fd0e8df67cae/output/dist-archive/bitcoin-fd0e8df67cae.tar.gz
  cf963b63fabc7e832b9469c9c048b08dcee344cb2044e7930bca53dfdc18c3dd  guix-build-fd0e8df67cae/output/powerpc64-linux-gnu/SHA256SUMS.part
  50ac40337bed023900ecf1bd3f557276dba8d97cd613f9342e0f7a72e4c7e6f1  guix-build-fd0e8df67cae/output/powerpc64-linux-gnu/bitcoin-fd0e8df67cae-powerpc64-linux-gnu-debug.tar.gz
  6884eba5928b831434ae9a1e5c2945185d1e6f013537aac0a05ae9775ab1df7d  guix-build-fd0e8df67cae/output/powerpc64-linux-gnu/bitcoin-fd0e8df67cae-powerpc64-linux-gnu.tar.gz
  ad502cdbf072a3875f4cbf653e9b5593c5f5324edc0e38100234a9778a73cc09  guix-build-fd0e8df67cae/output/powerpc64le-linux-gnu/SHA256SUMS.part
  e426a8f45095bc6019612a58f60267f6b084e3c273ec70509a0a8759e90e68d2  guix-build-fd0e8df67cae/output/powerpc64le-linux-gnu/bitcoin-fd0e8df67cae-powerpc64le-linux-gnu-debug.tar.gz
  a68ec3ba7e63382dc44f99806badc62e660dd3ae2d9d74d48e7e8378fd5c03f4  guix-build-fd0e8df67cae/output/powerpc64le-linux-gnu/bitcoin-fd0e8df67cae-powerpc64le-linux-gnu.tar.gz
  67d0bf587538fb151aa867363ab7724543607adda2b8be7dffbc263959e02f67  guix-build-fd0e8df67cae/output/riscv64-linux-gnu/SHA256SUMS.part
  093c874104e8f8c7bd73c362be471aba6d0c25828c22b2a8324056d516849242  guix-build-fd0e8df67cae/output/riscv64-linux-gnu/bitcoin-fd0e8df67cae-riscv64-linux-gnu-debug.tar.gz
  82b03ba2283a8667ea3c3fa86a5f64be7c7a4c0423b92bd8f3dfe71a78c3b210  guix-build-fd0e8df67cae/output/riscv64-linux-gnu/bitcoin-fd0e8df67cae-riscv64-linux-gnu.tar.gz
  5a30433c33322b9deabe4d6fc655f6dd9e6e73f2ae09b01502ce1a9377e1ce16  guix-build-fd0e8df67cae/output/x86_64-apple-darwin/SHA256SUMS.part
  473a3df8d63a112ca3e76620a56f6a5781b74c594451c86c26ccfef63cc2b023  guix-build-fd0e8df67cae/output/x86_64-apple-darwin/bitcoin-fd0e8df67cae-x86_64-apple-darwin-unsigned.dmg
  fa0eb43787745d6973ceb880003acf9f5be6e14c5c310bcc359a05cb52dd20a8  guix-build-fd0e8df67cae/output/x86_64-apple-darwin/bitcoin-fd0e8df67cae-x86_64-apple-darwin-unsigned.tar.gz
  90ccac950577f15e5dc729e9f94bff39fa0a9f0a96a27eee249df15a604eec44  guix-build-fd0e8df67cae/output/x86_64-apple-darwin/bitcoin-fd0e8df67cae-x86_64-apple-darwin.tar.gz
  fffda44e37d74908fcb5974a7c290d4e36d457605824f5d3f79b15e4eae5c1e7  guix-build-fd0e8df67cae/output/x86_64-linux-gnu/SHA256SUMS.part
  7d807b88d20a759236013fec99d8b16240dc064a0a5a6eb5d51ba02af467d959  guix-build-fd0e8df67cae/output/x86_64-linux-gnu/bitcoin-fd0e8df67cae-x86_64-linux-gnu-debug.tar.gz
  8141de0e3aa4174dea1e1cc3ee6344e857650fdd3180e7a4e8359f84733933fe  guix-build-fd0e8df67cae/output/x86_64-linux-gnu/bitcoin-fd0e8df67cae-x86_64-linux-gnu.tar.gz
  653b6c61d4ab5c5dcb8f36aefb518dc14d7fcf9f7d684a521c7705cbda9ff2fe  guix-build-fd0e8df67cae/output/x86_64-w64-mingw32/SHA256SUMS.part
  999dc6af5a7262c579be1c9904c1ac2deff0617a48d89d60902de5ba9e3684e6  guix-build-fd0e8df67cae/output/x86_64-w64-mingw32/bitcoin-fd0e8df67cae-win64-debug.zip
  03a90e2d6191b6ab84ffb38f845e0565ecf34b5d3b34b7fc36edc99e1feef347  guix-build-fd0e8df67cae/output/x86_64-w64-mingw32/bitcoin-fd0e8df67cae-win64-setup-unsigned.exe
  6866e0ba9bd4da9487b679f3216cde3d6d455ca074f22de05552b6faf6a6cfca  guix-build-fd0e8df67cae/output/x86_64-w64-mingw32/bitcoin-fd0e8df67cae-win64-unsigned.tar.gz
  208d38d00b4a96fb34b558e221f05d08efa078a0d143a2bb2f63fa201c64f29d  guix-build-fd0e8df67cae/output/x86_64-w64-mingw32/bitcoin-fd0e8df67cae-win64.zip
  ```

ACKs for top commit:
  fanquake:
    ACK fd0e8df67c
  jarolrod:
    ACK fd0e8df67c

Tree-SHA512: befa9f8cde4839983a6ff5aac6a4e127022d6ce43af924a42ae53d7e2fab115e7ef1455719de4f92fcc47f94e38c3fe55e663775edff49bd6204d1b2fdeed870
2022-08-01 09:48:39 +01:00
fanquake
28be13ec99
Merge bitcoin/bitcoin#25739: Update leveldb subtree
f608f25313 Squashed 'src/leveldb/' changes from 330dd6235f..22f1e4a02f (fanquake)

Pull request description:

  Replaces #25463 (for master).

  Includes:
  - https://github.com/bitcoin-core/leveldb-subtree/pull/32

  Guix Build (arm64):
  ```bash
  ed41ae2555ae3b638b65d870cef385805e621481831ae992e84645f5c234af63  guix-build-bec911e37ac8/output/arm-linux-gnueabihf/SHA256SUMS.part
  7d8237026bfccedee0e56e14d7b89cf2dcb52195b94070dc4b6c3c6970fdc774  guix-build-bec911e37ac8/output/arm-linux-gnueabihf/bitcoin-bec911e37ac8-arm-linux-gnueabihf-debug.tar.gz
  1afeff9d70864be66f7ac48d31d1977c7844e2cc117d3f0438fb2f9c6f6a56a4  guix-build-bec911e37ac8/output/arm-linux-gnueabihf/bitcoin-bec911e37ac8-arm-linux-gnueabihf.tar.gz
  ab2df265897a0142093b582d3c61e2b17a713d93e478b47c7aa2b0a677295007  guix-build-bec911e37ac8/output/arm64-apple-darwin/SHA256SUMS.part
  025a52babdee479800801e951f6fe1fe490e1f5fe8361104eb85e7b0319cdb37  guix-build-bec911e37ac8/output/arm64-apple-darwin/bitcoin-bec911e37ac8-arm64-apple-darwin-unsigned.dmg
  7b2992bf5543891b1e6ef4f48c52fc5febc58cc31ccf4307edd27d4d630aa54a  guix-build-bec911e37ac8/output/arm64-apple-darwin/bitcoin-bec911e37ac8-arm64-apple-darwin-unsigned.tar.gz
  3d93eb009ab6459cdca5fe767795f94ba5e00e5969e44bac19c7a5f344d42030  guix-build-bec911e37ac8/output/arm64-apple-darwin/bitcoin-bec911e37ac8-arm64-apple-darwin.tar.gz
  b8c30c5c561c96bc4e280ececc0dd1cd673bc6194591b848903aa6c54c9d37cf  guix-build-bec911e37ac8/output/dist-archive/bitcoin-bec911e37ac8.tar.gz
  cb2632b9b5ff473e504d3d6244191eb5a852718f8ac8bb1032ba1c65e07d6b3f  guix-build-bec911e37ac8/output/powerpc64-linux-gnu/SHA256SUMS.part
  26ecc2f42ce37f8bd7ba24bf2f80f493cd1fd45b58409de71c44e2445c291c8c  guix-build-bec911e37ac8/output/powerpc64-linux-gnu/bitcoin-bec911e37ac8-powerpc64-linux-gnu-debug.tar.gz
  4a83381ea472cc71b4a1c6569483a7e85a5f53065c1633828bf7a75d357b0297  guix-build-bec911e37ac8/output/powerpc64-linux-gnu/bitcoin-bec911e37ac8-powerpc64-linux-gnu.tar.gz
  455a9af5e7ee1c2857d87abec29284ae7bb447cf7cb2b3befa2f8e0a0a8cbec6  guix-build-bec911e37ac8/output/powerpc64le-linux-gnu/SHA256SUMS.part
  3445f53fd150032ec3c3f324e001b4ecf72728900961a7a7789c32ceb7616617  guix-build-bec911e37ac8/output/powerpc64le-linux-gnu/bitcoin-bec911e37ac8-powerpc64le-linux-gnu-debug.tar.gz
  baefeaac88bb4fbf8662c8e1150b043aa2534535a82e828c13e971d2c5fa5cbd  guix-build-bec911e37ac8/output/powerpc64le-linux-gnu/bitcoin-bec911e37ac8-powerpc64le-linux-gnu.tar.gz
  543484396a47def1636d4e54d4a105c7093265c8896165a4140edec10aeef880  guix-build-bec911e37ac8/output/riscv64-linux-gnu/SHA256SUMS.part
  ac1f6e57016703f1319a3ef80014581aee96053e56525b8cd11ada2395496b86  guix-build-bec911e37ac8/output/riscv64-linux-gnu/bitcoin-bec911e37ac8-riscv64-linux-gnu-debug.tar.gz
  f9a2b65ed21f777524b078046c84b98239b0fbb92eae8d840bc7a25cab0eec6d  guix-build-bec911e37ac8/output/riscv64-linux-gnu/bitcoin-bec911e37ac8-riscv64-linux-gnu.tar.gz
  a08ed0ee78ab1c4c815ba8368f1a21d3bd4327ce1104cb3793d63edd2bde1ef4  guix-build-bec911e37ac8/output/x86_64-apple-darwin/SHA256SUMS.part
  74059397c6c8f0e899b60415d1aae04f2f7df18b8f39cea9f314e5e0c2e0ede6  guix-build-bec911e37ac8/output/x86_64-apple-darwin/bitcoin-bec911e37ac8-x86_64-apple-darwin-unsigned.dmg
  6909ff6f59b78059d505f2b98e6fad63a4e3deb843566061c4cd6e94be1de066  guix-build-bec911e37ac8/output/x86_64-apple-darwin/bitcoin-bec911e37ac8-x86_64-apple-darwin-unsigned.tar.gz
  21b45719d927422acc69662108e7255d8cd0b1d832493e70c622c1b1b3a3a314  guix-build-bec911e37ac8/output/x86_64-apple-darwin/bitcoin-bec911e37ac8-x86_64-apple-darwin.tar.gz
  b5fdee6fd2dbcdaa6302f388c7fcaa6d130ff91fd5760e19facf6e24c7216ef6  guix-build-bec911e37ac8/output/x86_64-linux-gnu/SHA256SUMS.part
  56db24b0b0d2f463c8085a12502977c6d4f4ee5b85484e52522361f54ab3a6aa  guix-build-bec911e37ac8/output/x86_64-linux-gnu/bitcoin-bec911e37ac8-x86_64-linux-gnu-debug.tar.gz
  96dbe08e2ed0f68fe734dd6f0280c2d22af7b56c84debde424367054f118173f  guix-build-bec911e37ac8/output/x86_64-linux-gnu/bitcoin-bec911e37ac8-x86_64-linux-gnu.tar.gz
  70ac424b229befb2834a8a02ce27551e3ddde2d438497e8c11a3cedf0cea5d3c  guix-build-bec911e37ac8/output/x86_64-w64-mingw32/SHA256SUMS.part
  bad144a599b28e8dc0018cc2fd1754543e79df39d651e58f565c197241f2b8cb  guix-build-bec911e37ac8/output/x86_64-w64-mingw32/bitcoin-bec911e37ac8-win64-debug.zip
  7ce2e72621eb070a8d23b7edbaaccc9f06257b82b9851c1cad4c61f08d2c7451  guix-build-bec911e37ac8/output/x86_64-w64-mingw32/bitcoin-bec911e37ac8-win64-setup-unsigned.exe
  5f726ef8b478e3ac90b93cd3ae3c38a0e7bffa5f80306c46a7535518a73251c7  guix-build-bec911e37ac8/output/x86_64-w64-mingw32/bitcoin-bec911e37ac8-win64-unsigned.tar.gz
  87cf1a23e948e471ed35c6a518813505c907c58788b55665829e7f12f33bd312  guix-build-bec911e37ac8/output/x86_64-w64-mingw32/bitcoin-bec911e37ac8-win64.zip
  ```

ACKs for top commit:
  hebasto:
    ACK bec911e37a, I have reviewed the code and it looks OK, I agree it can be merged.
  jarolrod:
    ACK bec911e37a

Tree-SHA512: 190381d9489ec6cc52bb9557750925c8574f1344eb6893095e9e31e66a579bd1bc283e8cbfcba52cec3fb072985895f929103b6f5351a23f908bdd0a04b474f1
2022-08-01 09:40:04 +01:00
MacroFake
5215c80edc
Merge bitcoin/bitcoin#25709: script: actually trigger the optimization in BuildScript
00897d0677 script: actually trigger the optimization in BuildScript (Antoine Poinsot)

Pull request description:

  The counter is an optimization over calling `ret.empty()`. It was
  suggested that the compiler would realize `cnt` is only `0` on the first
  iteration, and not actually emit the check and conditional.

  This optimization was actually not triggered at all, since we
  incremented `cnt` at the beginning of the first iteration. Fix it by
  incrementing at the end instead.

  This was reported by Github user "Janus".

  Fixes #25682. Note this does *not* change semantics. It only allows the optimization of moving instead of copying on first `CScript` element to actually be reachable.

ACKs for top commit:
  sipa:
    utACK 00897d0677
  MarcoFalke:
    review ACK 00897d0677

Tree-SHA512: b575bd444b0cd2fe754ec5f3e2f3f53d2696d5dcebedcace1e38be372c82365e75938dfe185429ed5a83efe1a395e204bfb33efe56c10defc5811eaee50580e3
2022-07-30 17:49:02 +02:00
fanquake
8e37afcb13
Merge bitcoin/bitcoin#25484: Guix: enable toolchain hardening by default
c99a1ecc52 guix: enable hardening options in GCC Build (fanquake)
aa87879a77 guix: pass enable-bind-now to glibc (fanquake)
3897a131d0 guix: enable SSP for RISC-V glibc (2.27) (fanquake)

Pull request description:

  The GCC (10.3.0) and glibcs (2.24 and 2.27) we build both support configuration option for turning on hardening features by default.

  For example, [our GCC provides](https://gcc.gnu.org/install/configure.html) `--enable-default-pie`:
  > Turn on -fPIE and -pie by default.

  `--enable-default-ssp`:
  > Turn on -fstack-protector-strong by default.

  and `--enable-cet` options:
  > Enable building target run-time libraries with control-flow instrumentation, see -fcf-protection option.

  It also provides `--enable-standard-branch-protection`, but we don't do that here, because we don't support building with it yet (#24123).

  You could verify the that the on-by-default pie flags are working by Guix building master + this change:
  ```diff
  --- a/configure.ac
  +++ b/configure.ac
  @@ -971,7 +971,6 @@ if test "$use_hardening" != "no"; then
     AX_CHECK_LINK_FLAG([-Wl,-z,relro], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"], [], [$LDFLAG_WERROR])
     AX_CHECK_LINK_FLAG([-Wl,-z,now], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"], [], [$LDFLAG_WERROR])
     AX_CHECK_LINK_FLAG([-Wl,-z,separate-code], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,separate-code"], [], [$LDFLAG_WERROR])
  -  AX_CHECK_LINK_FLAG([-fPIE -pie], [PIE_FLAGS="-fPIE"; HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"], [], [$CXXFLAG_WERROR])
   ```
  and verifying that the `PIE` security checks fail. Then, build this PR branch, + the same change, and checking that they still pass.

  A similar thing can be done with the stack-protector, i.e perform a Guix build, and observe the security checks failing after applying this diff to master:
  ```diff
  --- a/configure.ac
  +++ b/configure.ac
  @@ -936,8 +936,6 @@ dnl -fstack-reuse=none for all gcc builds. (Only gcc understands this flag)
   AX_CHECK_COMPILE_FLAG([-fstack-reuse=none], [HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-reuse=none"])
   if test "$use_hardening" != "no"; then
     use_hardening=yes
  -  AX_CHECK_COMPILE_FLAG([-Wstack-protector], [HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
  -  AX_CHECK_COMPILE_FLAG([-fstack-protector-all], [HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
  ```

  Then check that a build doesn't fail when building this PR + that change. Although it should be noted that the security checks will pass for this + that change, even though the GCC option is for stack-protector-strong, rather than stack-protector-all. This is because our stack protector check is currently just for the presencse of the canary, and not a check that every function is instrumented.

  [For glibc](https://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html), we enable `--enable-stack-protector=all` (RISC-V only):
  > Compile the C library and all other parts of the glibc package using the GCC -fstack-protector, -fstack-protector-strong or -fstack-protector-all options to detect stack overruns. Only the dynamic linker and a small number of routines called directly from assembler are excluded from this protection.

  and `--enable-bind-now`:
  > Disable lazy binding for installed shared objects and programs. This provides additional security hardening because it enables full RELRO and a read-only global offset table (GOT), at the cost of slightly increased program load times.

  You could check that the stack-protector option is being used for the RISC-V builds, by comparing the contents of a function that comes from glibc, i.e `atexit`, in a build of master:
  ```bash
  riscv64-linux-gnu/src/bitcoind:     file format elf64-littleriscv

  00000000007aa078 <atexit>:
    7aa078:003a5617          auipca2,0x3a5
    7aa07c:f8863603          lda2,-120(a2) # b4f000 <__dso_handle>
    7aa080:4581                lia1,0
    7aa082:ff8b3317          auipct1,0xff8b3
    7aa086:41e30067          jr1054(t1) # 5d4a0 <__cxa_atexit@plt>
  ```

  vs this PR:
  ```bash
  riscv64-linux-gnu/src/bitcoind:     file format elf64-littleriscv

  00000000007aa078 <atexit>:
    7aa078:003aa797          auipca5,0x3aa
    7aa07c:3c87b783          lda5,968(a5) # b54440 <__stack_chk_guard@GLIBC_2.27>
    7aa080:6398                lda4,0(a5)
    7aa082:1101                addisp,sp,-32
    7aa084:ec06                sdra,24(sp)
    7aa086:e43a                sda4,8(sp)
    7aa088:6722                lda4,8(sp)
    7aa08a:639c                lda5,0(a5)
    7aa08c:00f71d63          bnea4,a5,7aa0a6 <atexit+0x2e>
    7aa090:60e2                ldra,24(sp)
    7aa092:003a5617          auipca2,0x3a5
    7aa096:f6e63603          lda2,-146(a2) # b4f000 <__dso_handle>
    7aa09a:4581                lia1,0
    7aa09c:6105                addisp,sp,32
    7aa09e:ff8b3317          auipct1,0xff8b3
    7aa0a2:40230067          jr1026(t1) # 5d4a0 <__cxa_atexit@plt>
    7aa0a6:ff8b3097          auipcra,0xff8b3
    7aa0aa:2ba080e7          jalr698(ra) # 5d360 <__stack_chk_fail@plt>
  ```

  Note that none of the above means we would actually remove the use of hardening flags from our configure.

  Guix Build (x86_64):
  ```bash
  8de8ceac0f34729f17c64cd3b788d8e73e8a29cf51ec88ae33e04b1002f07162  guix-build-c99a1ecc52d8/output/aarch64-linux-gnu/SHA256SUMS.part
  d638d329d2d23324aa8cb491b5fa9cfc59e7998cc95f6c47540ae34767316764  guix-build-c99a1ecc52d8/output/aarch64-linux-gnu/bitcoin-c99a1ecc52d8-aarch64-linux-gnu-debug.tar.gz
  ce57cfd97109e2cebc91936653e291073230e9da1197d60edd6703c2c8e4961a  guix-build-c99a1ecc52d8/output/aarch64-linux-gnu/bitcoin-c99a1ecc52d8-aarch64-linux-gnu.tar.gz
  917770f42ca696048c11ce3e7a100b9cc59cbe482878bccf11c1d84e327e61a7  guix-build-c99a1ecc52d8/output/arm-linux-gnueabihf/SHA256SUMS.part
  a5e6ea54cb58941b2dceaa036495c65d83e3ae65b806af7124718df428206b38  guix-build-c99a1ecc52d8/output/arm-linux-gnueabihf/bitcoin-c99a1ecc52d8-arm-linux-gnueabihf-debug.tar.gz
  c035aa6599aeab74445bcf15966886fafb1e4397d6f4e66e4e5ff05770f3af94  guix-build-c99a1ecc52d8/output/arm-linux-gnueabihf/bitcoin-c99a1ecc52d8-arm-linux-gnueabihf.tar.gz
  a48654be85a540b393fefa87f75f10fcb1652cfb824eb5cb32da9aeffdbe9843  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/SHA256SUMS.part
  8cf48b00d6cbe7bc203043dde34ca51a82e25bc3b4e91802730209a90637a8ed  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/bitcoin-c99a1ecc52d8-arm64-apple-darwin-unsigned.dmg
  6ff1c1f0fbf64303421f71a91c14020554ab96673f2461aae80ef2249a846ebd  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/bitcoin-c99a1ecc52d8-arm64-apple-darwin-unsigned.tar.gz
  0df1d3d95759b26a9cc448dba29291c5d940e9faf9a79c7658775285498809eb  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/bitcoin-c99a1ecc52d8-arm64-apple-darwin.tar.gz
  3556666828f68205b8b82771a7046e10e10cf31bd894c6ed389bbaa2397b917c  guix-build-c99a1ecc52d8/output/dist-archive/bitcoin-c99a1ecc52d8.tar.gz
  970390a724f2b9e40731942a427a5893a489fdac9c970a5a2f52cd684c4e2bcb  guix-build-c99a1ecc52d8/output/powerpc64-linux-gnu/SHA256SUMS.part
  c281257c8f9466aca2d68971ff8cd219288f62a601396d4f8f1497a4404fac11  guix-build-c99a1ecc52d8/output/powerpc64-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64-linux-gnu-debug.tar.gz
  79e68965a50907f4c3382143f7c58dd71b927f87fe80a62c06b434232d764b93  guix-build-c99a1ecc52d8/output/powerpc64-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64-linux-gnu.tar.gz
  b65be16861b1d11225f5497c58adbc585bb1b192096018f006ae11c851235d65  guix-build-c99a1ecc52d8/output/powerpc64le-linux-gnu/SHA256SUMS.part
  5edb31e2d6702ab3e24189db1a1151bb40dc009a2d6f196eca19124947400a24  guix-build-c99a1ecc52d8/output/powerpc64le-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64le-linux-gnu-debug.tar.gz
  d6e0414082f91a443bcfee9647f8cf9ad09d13fdf6acd6070866505b420db8eb  guix-build-c99a1ecc52d8/output/powerpc64le-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64le-linux-gnu.tar.gz
  89edc84604ea960dff7598999cabb14e2dbd7d585021acfd3065e0e8ebb77786  guix-build-c99a1ecc52d8/output/riscv64-linux-gnu/SHA256SUMS.part
  091d582c7797792ab62653e61aa2192db768fb624615a2393284d7fad2a643bd  guix-build-c99a1ecc52d8/output/riscv64-linux-gnu/bitcoin-c99a1ecc52d8-riscv64-linux-gnu-debug.tar.gz
  fcc20f8f7e2889f544e10d77e714496fd44e3dfdb2d1919b12ec5d41aeb9a8ac  guix-build-c99a1ecc52d8/output/riscv64-linux-gnu/bitcoin-c99a1ecc52d8-riscv64-linux-gnu.tar.gz
  4b736dbfca1c0eb37390d791a9cdfe12aa3111f65a0c92775cd68044696f5b17  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/SHA256SUMS.part
  dc51605e5c0f25e25aa1672471c2096e2c95f59d9c7adbee81714ad33da559a0  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/bitcoin-c99a1ecc52d8-x86_64-apple-darwin-unsigned.dmg
  96a7b7b0144049215a4e51a01c4c90dcbf8469590a380fe2b1faca652f80c545  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/bitcoin-c99a1ecc52d8-x86_64-apple-darwin-unsigned.tar.gz
  8d0a9e33e02db7c234d3cff2cf8489a93ae83a0efb9c02dd0a4a43b1615d5f75  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/bitcoin-c99a1ecc52d8-x86_64-apple-darwin.tar.gz
  60e21c7d8eb8422bf3280d63fca7e3983b8d62949b46f582e483bfadf42d9838  guix-build-c99a1ecc52d8/output/x86_64-linux-gnu/SHA256SUMS.part
  93cce61cbd237e8d63a7b60fd7c0611834d2587899f241c80ad3e7c31ce9f5c6  guix-build-c99a1ecc52d8/output/x86_64-linux-gnu/bitcoin-c99a1ecc52d8-x86_64-linux-gnu-debug.tar.gz
  86e6d35ced80385dbebc9d0b4e443a86d9b5dfecff4928fccb4331fc37b7c8bc  guix-build-c99a1ecc52d8/output/x86_64-linux-gnu/bitcoin-c99a1ecc52d8-x86_64-linux-gnu.tar.gz
  cdf1045063b8ad18735d623fa45867a3b6fbcabefac6ef763ad4d04e956ef2b7  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/SHA256SUMS.part
  e032c517396d818f2a5f7a2f8453966de37a1734f2f2d95ad0e39358647f5068  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64-debug.zip
  b09cc098672215e810b4a11df0ebce760f716546d76745367898bb1850a6a8b4  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64-setup-unsigned.exe
  a27108b306be7099a426bf2e02009b7271c8c04394bf5c5aa4f592b69be77fb5  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64-unsigned.tar.gz
  a682fe68b09de24e1bdef49836d4fc5080e779fac66a73c9dcafb8fc6126af3a  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64.zip
  ```

  Guix Build (arm64):
  ```bash
  917770f42ca696048c11ce3e7a100b9cc59cbe482878bccf11c1d84e327e61a7  guix-build-c99a1ecc52d8/output/arm-linux-gnueabihf/SHA256SUMS.part
  a5e6ea54cb58941b2dceaa036495c65d83e3ae65b806af7124718df428206b38  guix-build-c99a1ecc52d8/output/arm-linux-gnueabihf/bitcoin-c99a1ecc52d8-arm-linux-gnueabihf-debug.tar.gz
  c035aa6599aeab74445bcf15966886fafb1e4397d6f4e66e4e5ff05770f3af94  guix-build-c99a1ecc52d8/output/arm-linux-gnueabihf/bitcoin-c99a1ecc52d8-arm-linux-gnueabihf.tar.gz
  1a306a6dc68183f210aa56c6eb07785654e1c2e21ac9e2bd866d8fdec34a527c  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/SHA256SUMS.part
  7da1d43adabf4725b6244df9625b683f47669949ffbcf37184619e431151138f  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/bitcoin-c99a1ecc52d8-arm64-apple-darwin-unsigned.dmg
  ac38ae4188927e2e0b0d3bdaae9d314424e4f7e3ab2a90c6cbedc8a985ae237e  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/bitcoin-c99a1ecc52d8-arm64-apple-darwin-unsigned.tar.gz
  1b1653f3b3dff1bf5737223a4e5c2b674b700baba4ef594e3c7a040b5e81f3f6  guix-build-c99a1ecc52d8/output/arm64-apple-darwin/bitcoin-c99a1ecc52d8-arm64-apple-darwin.tar.gz
  3556666828f68205b8b82771a7046e10e10cf31bd894c6ed389bbaa2397b917c  guix-build-c99a1ecc52d8/output/dist-archive/bitcoin-c99a1ecc52d8.tar.gz
  970390a724f2b9e40731942a427a5893a489fdac9c970a5a2f52cd684c4e2bcb  guix-build-c99a1ecc52d8/output/powerpc64-linux-gnu/SHA256SUMS.part
  c281257c8f9466aca2d68971ff8cd219288f62a601396d4f8f1497a4404fac11  guix-build-c99a1ecc52d8/output/powerpc64-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64-linux-gnu-debug.tar.gz
  79e68965a50907f4c3382143f7c58dd71b927f87fe80a62c06b434232d764b93  guix-build-c99a1ecc52d8/output/powerpc64-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64-linux-gnu.tar.gz
  b65be16861b1d11225f5497c58adbc585bb1b192096018f006ae11c851235d65  guix-build-c99a1ecc52d8/output/powerpc64le-linux-gnu/SHA256SUMS.part
  5edb31e2d6702ab3e24189db1a1151bb40dc009a2d6f196eca19124947400a24  guix-build-c99a1ecc52d8/output/powerpc64le-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64le-linux-gnu-debug.tar.gz
  d6e0414082f91a443bcfee9647f8cf9ad09d13fdf6acd6070866505b420db8eb  guix-build-c99a1ecc52d8/output/powerpc64le-linux-gnu/bitcoin-c99a1ecc52d8-powerpc64le-linux-gnu.tar.gz
  89edc84604ea960dff7598999cabb14e2dbd7d585021acfd3065e0e8ebb77786  guix-build-c99a1ecc52d8/output/riscv64-linux-gnu/SHA256SUMS.part
  091d582c7797792ab62653e61aa2192db768fb624615a2393284d7fad2a643bd  guix-build-c99a1ecc52d8/output/riscv64-linux-gnu/bitcoin-c99a1ecc52d8-riscv64-linux-gnu-debug.tar.gz
  fcc20f8f7e2889f544e10d77e714496fd44e3dfdb2d1919b12ec5d41aeb9a8ac  guix-build-c99a1ecc52d8/output/riscv64-linux-gnu/bitcoin-c99a1ecc52d8-riscv64-linux-gnu.tar.gz
  4b736dbfca1c0eb37390d791a9cdfe12aa3111f65a0c92775cd68044696f5b17  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/SHA256SUMS.part
  dc51605e5c0f25e25aa1672471c2096e2c95f59d9c7adbee81714ad33da559a0  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/bitcoin-c99a1ecc52d8-x86_64-apple-darwin-unsigned.dmg
  96a7b7b0144049215a4e51a01c4c90dcbf8469590a380fe2b1faca652f80c545  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/bitcoin-c99a1ecc52d8-x86_64-apple-darwin-unsigned.tar.gz
  8d0a9e33e02db7c234d3cff2cf8489a93ae83a0efb9c02dd0a4a43b1615d5f75  guix-build-c99a1ecc52d8/output/x86_64-apple-darwin/bitcoin-c99a1ecc52d8-x86_64-apple-darwin.tar.gz
  60e21c7d8eb8422bf3280d63fca7e3983b8d62949b46f582e483bfadf42d9838  guix-build-c99a1ecc52d8/output/x86_64-linux-gnu/SHA256SUMS.part
  93cce61cbd237e8d63a7b60fd7c0611834d2587899f241c80ad3e7c31ce9f5c6  guix-build-c99a1ecc52d8/output/x86_64-linux-gnu/bitcoin-c99a1ecc52d8-x86_64-linux-gnu-debug.tar.gz
  86e6d35ced80385dbebc9d0b4e443a86d9b5dfecff4928fccb4331fc37b7c8bc  guix-build-c99a1ecc52d8/output/x86_64-linux-gnu/bitcoin-c99a1ecc52d8-x86_64-linux-gnu.tar.gz
  cdf1045063b8ad18735d623fa45867a3b6fbcabefac6ef763ad4d04e956ef2b7  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/SHA256SUMS.part
  e032c517396d818f2a5f7a2f8453966de37a1734f2f2d95ad0e39358647f5068  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64-debug.zip
  b09cc098672215e810b4a11df0ebce760f716546d76745367898bb1850a6a8b4  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64-setup-unsigned.exe
  a27108b306be7099a426bf2e02009b7271c8c04394bf5c5aa4f592b69be77fb5  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64-unsigned.tar.gz
  a682fe68b09de24e1bdef49836d4fc5080e779fac66a73c9dcafb8fc6126af3a  guix-build-c99a1ecc52d8/output/x86_64-w64-mingw32/bitcoin-c99a1ecc52d8-win64.zip
  ```

ACKs for top commit:
  hebasto:
    ACK c99a1ecc52

Tree-SHA512: bb895544c06bab741b965d853e60151a2e38e058c5c373f8e1a01a652220d47c8a0227a31fa96d6e81a48126d677fdec1cb47c20c104c89953d4ca051924b402
2022-07-30 16:28:55 +01:00
fanquake
fd0e8df67c
qt: use patch over sed for guix CROSS_LIBRARY_PATH change 2022-07-30 16:03:46 +01:00
Hennadii Stepanov
ecb617fefe
build: Bump Qt to 5.15.5 in depends 2022-07-30 15:44:20 +01:00
fanquake
6745e3693e
Merge bitcoin/bitcoin#25738: depends: use a patch instead of sed in libxcb
8f1ff487b3 libxcb: use a patch instead of sed (fanquake)

Pull request description:

  To remove the unneeded pthread-stubs requirement.

  Should almost be enough to close #16838.

  seds dead (mostly). The usage left in `qt.mk` are for substituting runtime values.

ACKs for top commit:
  hebasto:
    ACK 8f1ff487b3.

Tree-SHA512: 2b6ebbe98a838d8e08e54737292b02176ff4c85a541ae1ec0c590c75e33ba92289628b88ca3144f2e214f4327515f7fd22c39687312f44183b759815c092b24f
2022-07-30 09:34:00 +01:00
fanquake
4d06fc4bed
doc: empty REVIEWERS file
It seems that it's time for our experiment with this file to come to an
end.

See discussion here:
https://github.com/bitcoin/bitcoin/pull/25560/files#r915491743.
2022-07-30 09:05:07 +01:00
MacroFake
ab3db34836
Merge bitcoin/bitcoin#25713: tidy: run clang-tidy in quiet mode
3fe58a98d3 tidy: run clang-tidy in quiet mode (fanquake)

Pull request description:

  This should cut the amount of output by atleast half.

  ```bash
  /opt/homebrew/opt/llvm/bin/clang-tidy --use-color -p=bitcoin bitcoin/src/wallet/test/fuzz/coinselection.cpp
  278 warnings generated.
  Suppressed 278 warnings (278 in non-user code).
  Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
  ```
  becomes
  ```bash
  /opt/homebrew/opt/llvm/bin/clang-tidy --use-color -p=/bitcoin -quiet bitcoin/src/wallet/test/fuzz/coinselection.cpp
  278 warnings generated.
  ```

  See https://clang.llvm.org/extra/clang-tidy/.

  >   --quiet
  > Run clang-tidy in quiet mode. This suppresses
  > printing statistics about ignored warnings and
  > warnings treated as errors if the respective
  > options are specified.

  However the `run-clang-tidy` option is `-quiet`. See f28c006a58/clang-tools-extra/clang-tidy/tool/run-clang-tidy.py (L244).

ACKs for top commit:
  jamesob:
    ACK 3fe58a98d3

Tree-SHA512: 936cfab09a78e71a4a2a2b3539087c1a95fe279923cc8c3f950c70924d6920dcd54b0da8b5493a1337c23a3b25834ab0db5a6b0c660c6e46d750f0fc966e7625
2022-07-30 09:26:22 +02:00
Jon Atack
4bedfd702a refactor: remove unneeded temporaries in node/interfaces, simplify code
- make the code easier to read and understand

- improve performance by avoiding unnecessary move operations

- the cleaner, simpler, and easier to read the code is, the
  better chance the compiler has at implementing it well
2022-07-29 19:41:23 +02:00
Jon Atack
b27ba169eb refactor: make all NodeImpl/ChainImpl/ExternalSignerImpl members public
as the classes themselves are private, and to be consistent within all the
*Impl classes in src/node/interfaces.cpp and src/wallet/interfaces.cpp
following this order:

public:
  // ... virtual methods ...
  // ... nonvirtual helper methods ...
  // ... data members ...

and add documentation in src/node/interfaces.cpp and src/wallet/interfaces.cpp
to help future reviewers and contributors.
2022-07-29 19:27:16 +02:00
fanquake
3fe58a98d3
tidy: run clang-tidy in quiet mode 2022-07-29 16:12:45 +01:00
fanquake
5871b5b5ab
Merge bitcoin/bitcoin#25571: refactor: Make mapBlocksUnknownParent local, and rename it
dd065dae9f refactor: Make mapBlocksUnknownParent local, and rename it (Hennadii Stepanov)

Pull request description:

  This PR is a second attempt at #19594. This PR has two motivations:

  - Improve code hygiene by eliminating a global variable, `mapBlocksUnknownParent`
  - Fix fuzz test OOM when running too long ([see #19594 comment](https://github.com/bitcoin/bitcoin/pull/19594#issuecomment-958801638))

  A minor added advantage is to release `mapBlocksUnknownParent` memory when the reindexing phase is done. The current situation is somewhat similar to a memory leak because this map exists unused for the remaining lifetime of the process. It's true that this map should be empty of data elements after use, but its internal metadata (indexing structures, etc.) can have non-trivial size because there can be many thousands of simultaneous elements in this map.

  This PR helps our efforts to reduce the use of global variables. This variable isn't just global, it's hidden inside a function (it looks like a local variable but has the `static` attribute).

  This global variable exists because the `-reindex` processing code calls `LoadExternalBlockFile()` multiple times (once for each block file), but that function must preserve some state between calls (the `mapBlocksUnknownParent` map). This PR fixes this by allocating this map as a local variable in the caller's scope and passing it in on each call. When reindexing completes, the map goes out of scope and is deallocated.

  I tested this manually by reindexing on mainnet and signet. Also, the existing `feature_reindex.py` functional test passes.

ACKs for top commit:
  mzumsande:
    re-ACK dd065dae9f
  theStack:
    re-ACK dd065dae9f
  shaavan:
    reACK dd065dae9f

Tree-SHA512: 9cd20e44d2fa1096dd405bc107bc065ea8f904f5b3f63080341b08d8cf57b790df565f58815c2f331377d044d5306708b4bf6bdfc5ef8d0ed85d8e97d744732c
2022-07-29 15:47:23 +01:00
MacroFake
b1c8ea45c9
Merge bitcoin/bitcoin#25683: refactor: log nEvicted message in LimitOrphans then return void
b4b657ba57 refactor: log `nEvicted` message in `LimitOrphans` then return void (chinggg)

Pull request description:

  Fix https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=49347

  LimitOrphans() can log expired tx and it should log evicted tx as well instead of returning the `nEvicted` number for caller to print the message.
  Since `LimitOrphans()` now returns void, the redundant assertion check in fuzz test is also removed.

Top commit has no ACKs.

Tree-SHA512: 18c41702321b0e59812590cd389f3163831d431f4ebdc3b3e1e0698496a6bdbac52288f28f779237a58813c6717da1a35e8933d509822978ff726c1b13cfc778
2022-07-29 16:17:16 +02:00
fanquake
bec911e37a
Update leveldb-subtree subtree to latest upstream 2022-07-29 14:43:11 +01:00
fanquake
f608f25313 Squashed 'src/leveldb/' changes from 330dd6235f..22f1e4a02f
22f1e4a02f Merge bitcoin-core/leveldb-subtree#32: fix macro HAVE_O_CLOEXEC when O_CLOEXEC not found
1eeb1cb879 fix macro HAVE_O_CLOEXEC when O_CLOEXEC not found

git-subtree-dir: src/leveldb
git-subtree-split: 22f1e4a02fd8e96090bb699a04c95c784aa88e74
2022-07-29 14:43:11 +01:00
fanquake
8f1ff487b3
libxcb: use a patch instead of sed
To remove the unneeded pthread-stubs requirements.
2022-07-29 14:02:23 +01:00
Andrew Chow
1abbae65eb
Merge bitcoin/bitcoin#24584: wallet: avoid mixing different OutputTypes during coin selection
71d1d13627 test: add unit test for AvailableCoins (josibake)
da03cb41a4 test: functional test for new coin selection logic (josibake)
438e04845b wallet: run coin selection by `OutputType` (josibake)
77b0707206 refactor: use CoinsResult struct in SelectCoins (josibake)
2e67291ca3 refactor: store by OutputType in CoinsResult (josibake)

Pull request description:

  # Concept

  Following https://github.com/bitcoin/bitcoin/pull/23789, Bitcoin Core wallet will now generate a change address that matches the payment address type. This improves privacy by not revealing which of the outputs is the change at the time of the transaction in scenarios where the input address types differ from the payment address type. However, information about the change can be leaked in a later transaction. This proposal attempts to address that concern.

  ## Leaking information in a later transaction

  Consider the following scenario:

  ![mix input types(1)](https://user-images.githubusercontent.com/7444140/158597086-788339b0-c698-4b60-bd45-9ede4cd3a483.png)

  1. Alice has a wallet with bech32 type UTXOs and pays Bob, who gives her a P2SH address
  2. Alice's wallet generates a P2SH change output, preserving her privacy in `txid: a`
  3. Alice then pays Carol, who gives her a bech32 address
  4. Alice's wallet combines the P2SH UTXO with a bech32 UTXO and `txid: b` has two bech32 outputs

  From a chain analysis perspective, it is reasonable to infer that the P2SH input in `txid: b` was the change from `txid: a`. To avoid leaking information in this scenario, Alice's wallet should avoid picking the P2SH output and instead fund the transaction with only bech32 Outputs. If the payment to Carol can be funded with just the P2SH output, it should be preferred over the bech32 outputs as this will convert the P2SH UTXO to bech32 UTXOs via the payment and change outputs of the new transaction.

  **TLDR;** Avoid mixing output types, spend non-default `OutputTypes` when it is economical to do so.

  # Approach

  `AvailableCoins` now populates a struct, which makes it easier to access coins by `OutputType`. Coin selection tries to find a funding solution by each output type and chooses the most economical by waste metric. If a solution can't be found without mixing, coin selection runs over the entire wallet, allowing mixing, which is the same as the current behavior.

  I've also added a functional test (`test/functional/wallet_avoid_mixing_output_types.py`) and unit test (`src/wallet/test/availablecoins_tests.cpp`.

ACKs for top commit:
  achow101:
    re-ACK 71d1d13627
  aureleoules:
    ACK 71d1d13627.
  Xekyo:
    reACK 71d1d13627 via `git range-diff master 6530d19 71d1d13`
  LarryRuane:
    ACK 71d1d13627

Tree-SHA512: 2e0716efdae5adf5479446fabc731ae81d595131d3b8bade98b64ba323d0e0c6d964a67f8c14c89c428998bda47993fa924f3cfca1529e2bd49eaa4e31b7e426
2022-07-28 18:16:51 -04:00
Andrew Chow
317ef0368b
Merge bitcoin/bitcoin#25670: test: check that combining PSBTs with different txs fails
4e616d20c9 test: check that combining PSBTs with different txs fails (Sebastian Falbesoner)
2a428c7989 test: support passing PSBTMaps directly to PSBT ctor (Sebastian Falbesoner)

Pull request description:

  This PR adds missing test coverage for the `combinepsbt` RPC, in the case of combining two PSBTs with different transactions:
  b8067cd435/src/psbt.cpp (L24-L27)
  The calling function `CombinePSBTs` checks for the false return value and then returns the transaction error string `PSBT_MISMATCH`:
  b8067cd435/src/psbt.cpp (L433-L435)
  b8067cd435/src/util/error.cpp (L30-L31)

ACKs for top commit:
  instagibbs:
    reACK 4e616d20c9
  achow101:
    ACK 4e616d20c9

Tree-SHA512: 45b2b224b13b44ad69ae62e4bc20f74cab32770cf8127b026ec47a7520f7253148fdbf1fad612afece59e45a6738bef9a351ae87ea98dc83d095cc78f6db0318
2022-07-28 17:34:28 -04:00
glozow
41205bf442
Merge bitcoin/bitcoin#25674: add unit tests for RBF rules in isolation
c320cddb1b [unit tests] individual RBF Rules in isolation (glozow)

Pull request description:

  Test each RBF rule more thoroughly and in isolation so we're not relying on things like overall mempool acceptance logic, ordering of mempool checks, RPC results, etc.

  RBF was pretty recently refactored out, so there isn't much unit test coverage. From https://marcofalke.github.io/btc_cov/test_bitcoin.coverage/src/policy/rbf.cpp.gcov.html:
  ![image](https://user-images.githubusercontent.com/25183001/180783280-6777f4b4-ef95-462a-b414-1a9e268836a6.png)

ACKs for top commit:
  instagibbs:
    reACK c320cddb1b
  jonatack:
    ACK c320cddb1b
  w0xlt:
    ACK c320cddb1b

Tree-SHA512: dab555214496255801b9ea92b7bf708bba1ff23edf055c85e29be5eab7d7a863440ee19588aacdce54b2c03feaa4b5963eb159ed89473560bd228737cbfec160
2022-07-28 17:15:15 +01:00
fanquake
c99a1ecc52
guix: enable hardening options in GCC Build
Pass `--enable-default-pie` and `--enable-default-ssp` when configuring
our GCCs. This achieves the following:

--enable-default-pie
	Turn on -fPIE and -pie by default.

--enable-default-ssp
	Turn on -fstack-protector-strong by default.

Note that this isn't a replacement for passing hardneing flags
ourselves, but introduces some redundency, and there isn't really a
reason to not build a more "hardenings enabled" toolchain by default.

See also:
https://gcc.gnu.org/install/configure.html
2022-07-28 14:30:38 +01:00
fanquake
aa87879a77
guix: pass enable-bind-now to glibc
Both glibcs we build support `--enable-bind-now`:
Disable lazy binding for installed shared objects and programs.
This provides additional security hardening because it enables full RELRO
and a read-only global offset table (GOT), at the cost of slightly
increased program load times.

See:
https://www.gnu.org/software/libc/manual/html_node/Configuring-and-compiling.html
2022-07-28 14:30:38 +01:00
fanquake
3897a131d0
guix: enable SSP for RISC-V glibc (2.27)
Pass `--enable-stack-protector=all` when building the glibc used for the
RISC-V toolchain, to enable stack smashing protection on all functions,
in the glibc code.
2022-07-28 14:30:38 +01:00
glozow
c320cddb1b
[unit tests] individual RBF Rules in isolation
Test each component of the RBF policy in isolation. Unlike the RBF
functional tests, these do not rely on things like RPC results, mempool
submission, etc.
2022-07-28 12:05:05 +01:00
fanquake
62c864605a
Merge bitcoin/bitcoin#25723: test: Drop unused boost workaround
ba9a8e6cc1 test: Drop unused boost workaround (Hennadii Stepanov)

Pull request description:

  This PR is a follow up of bitcoin/bitcoin#24065 and removes the workaround which has already been removed in other [places](https://github.com/bitcoin/bitcoin/pull/24065/files#diff-19427b0dd1a791adc728c82e88f267751ba4f1c751e19262cac03cccd2822216).

  Moreover, this workaround won't be required even if bitcoin/bitcoin#25696 is ever merged.

ACKs for top commit:
  fanquake:
    ACK ba9a8e6cc1

Tree-SHA512: db19fc1550252d7a82a08f388ff6078c78452365e74b41e7bc36cbbc4d0fed9342636e8f2371bb8e78c9d11ee721d6363bcc21d11787f3aac967a6c4a9cc346f
2022-07-28 11:17:06 +01:00
chinggg
b4b657ba57 refactor: log nEvicted message in LimitOrphans then return void
`LimitOrphans()` can log expired tx and it should log evicted tx as well
instead of returning the number for caller to print the message.
Since `LimitOrphans()` now return void, the redundant assertion check in
fuzz test is also removed.
2022-07-28 14:39:45 +08:00
Hennadii Stepanov
ba9a8e6cc1
test: Drop unused boost workaround 2022-07-27 20:38:05 +01:00
fanquake
207a228773
Merge bitcoin/bitcoin#25697: depends: expat 2.4.8 & fix building with -flto
e838a98475 depends: re-enable using -flto when building expat (fanquake)
304452558c depends: expat 2.4.8 (fanquake)

Pull request description:

  Currently, when building the expat package in depends, using `-flto` (`LTO=1`), the configure check can fail, because it cannot determine the system endianess:
  ```bash
  configure:18718: result: unknown
  configure:18733: error: unknown endianness
   presetting ac_cv_c_bigendian=no (or yes) will help
  ```

  Fix that by defining `_DEFAULT_SOURCE`, which in turn defines `__USE_MISC` (`features.h`):
  ```c
  #if defined _DEFAULT_SOURCE
  # define __USE_MISC1
  #endif
  ```
  which exposes additional definitions in `endian.h`:
  ```c
  #include <features.h>

  /* Get the definitions of __*_ENDIAN, __BYTE_ORDER, and __FLOAT_WORD_ORDER.  */
  #include <bits/endian.h>

  #ifdef __USE_MISC
  # define LITTLE_ENDIAN__LITTLE_ENDIAN
  # define BIG_ENDIAN__BIG_ENDIAN
  # define PDP_ENDIAN__PDP_ENDIAN
  # define BYTE_ORDER__BYTE_ORDER
  #endif
  ```
  and gives us a working configure.

  You could test building this change with Guix + LTO with [this branch](https://github.com/fanquake/bitcoin/tree/lto_in_guix). Note that that build may fail for other reasons (on x86_64), unrelated to this change.

  Some related upstream discussion:
  https://bugs.gentoo.org/757681
  https://forums.gentoo.org/viewtopic-t-1013786.html

ACKs for top commit:
  hebasto:
    re-ACK e838a98475, only [suggested](https://github.com/bitcoin/bitcoin/pull/25697#discussion_r929735675) changes since my recent [review](https://github.com/bitcoin/bitcoin/pull/25697#pullrequestreview-1050657421).
  jarolrod:
    code review ACK e838a98475

Tree-SHA512: 9dbf64c9bd1fd995a4d1addc011ffeff83d50df736030012346c97605e63aed4b5bac390a81abe646c1be28ad6fd600f64560dcb26bbc2edf5d513ca3b180bfa
2022-07-27 12:56:17 +01:00
fanquake
9ba73758c9
Merge bitcoin/bitcoin#24697: refactor address relay time
fa64dd6673 refactor: Use type-safe std::chrono for addrman time (MarcoFalke)
fa2ae373f3 Add type-safe AdjustedTime() getter to timedata (MarcoFalke)
fa5103a9f5 Add ChronoFormatter to serialize (MarcoFalke)
fa253d385f util: Add HoursDouble (MarcoFalke)
fa21fc60c2 scripted-diff: Rename addrman time symbols (MarcoFalke)
fa9284c3e9 refactor: Remove not needed std::max (MacroFake)

Pull request description:

  Those refactors are overlapping with, but otherwise largely unrelated to #24662.

ACKs for top commit:
  naumenkogs:
    utACK fa64dd6673
  dergoegge:
    Code review ACK fa64dd6673

Tree-SHA512: a50625e78036e7220a11997e6d9b6c6b317cb38ce02b1835fb41cbee2d8bfb1faf29b29d8990be78d6b5e15e9a9d8dec33bf25fa439b47610ef708950969724b
2022-07-27 10:30:32 +01:00
fanquake
687aba8669
Merge bitcoin/bitcoin#25708: depends: always use correct ar for win qt build
3009180751 depends: always use correct ar for win qt (fanquake)

Pull request description:

  If we don't set this explicitly, then qt will still use it's default
  windows ar, when building with LTO (when we want it to use gcc-ar).

  So set `QMAKE_LIB` which is used for win32, and defaults to `ar rc`, to `our_ar rc`.
  This way we always get the correct ar.

  Issue can be seen building in Guix with LTO. i.e:
  ```bash
  x86_64-w64-mingw32-ar: .obj/release/hb-blob.o: plugin needed to handle lto object
  ```

  Guix Build (x86_64):
  ```bash
  6c24d8a86c2410d5dbf29e8087c1bcd230aeb3f5c8ba3bf63e4edf07503cd689  guix-build-300918075144/output/aarch64-linux-gnu/SHA256SUMS.part
  deb6c99f2efa3b60569fb31fbe543a97071af707f3b6e68825de93e7f1adaab0  guix-build-300918075144/output/aarch64-linux-gnu/bitcoin-300918075144-aarch64-linux-gnu-debug.tar.gz
  d3f14344f472d2c0540ac9254935f3008fb6b8286aa6c52045243a42dd05f2e4  guix-build-300918075144/output/aarch64-linux-gnu/bitcoin-300918075144-aarch64-linux-gnu.tar.gz
  fe97d5c4eb398c18689e7e68b1d97ab9ccbd12d1f0085eff8bd49de242675963  guix-build-300918075144/output/arm-linux-gnueabihf/SHA256SUMS.part
  239dfcaaaee91164c0e6d8835b613af51e43ece4bf7e17236f55c1a4facf8cd7  guix-build-300918075144/output/arm-linux-gnueabihf/bitcoin-300918075144-arm-linux-gnueabihf-debug.tar.gz
  29fe2ffb5c85f654cf23efd43035f1db6cff4e532839b50e7610dd588ad6680b  guix-build-300918075144/output/arm-linux-gnueabihf/bitcoin-300918075144-arm-linux-gnueabihf.tar.gz
  a100ce07e5566284a1b213174295c49573e8d93bfea86ad35b3b2dcb85d6c263  guix-build-300918075144/output/arm64-apple-darwin/SHA256SUMS.part
  593f57ff35de42f262bdae8085afcd49f33e7db350fd0cb0850bc560414a302a  guix-build-300918075144/output/arm64-apple-darwin/bitcoin-300918075144-arm64-apple-darwin-unsigned.dmg
  6d5ae0ff77dfb0a7f74621a859c00060cda86c426c604b19269987163b67e413  guix-build-300918075144/output/arm64-apple-darwin/bitcoin-300918075144-arm64-apple-darwin-unsigned.tar.gz
  14bc35725df2dbbd1e3447f57d128125cf65a182d4bb081c840947a0af69bce4  guix-build-300918075144/output/arm64-apple-darwin/bitcoin-300918075144-arm64-apple-darwin.tar.gz
  29da16189e087c7fc90909d4dfc8002e37ce4ab035d6a94f0d73724d81ce565b  guix-build-300918075144/output/dist-archive/bitcoin-300918075144.tar.gz
  fe4a4a3b84f7782c7d65fdc7d4cbdf6fa57a7898d347ad932cbd4b5d3d7712b4  guix-build-300918075144/output/powerpc64-linux-gnu/SHA256SUMS.part
  e612386c452d04c7a9c9a624efa00f905928af39694067d903635fc7476d0e2c  guix-build-300918075144/output/powerpc64-linux-gnu/bitcoin-300918075144-powerpc64-linux-gnu-debug.tar.gz
  148ff9a17842287e1d541d032bab3c96df98d0c8a2175a132d896e4617799b5b  guix-build-300918075144/output/powerpc64-linux-gnu/bitcoin-300918075144-powerpc64-linux-gnu.tar.gz
  d67e6ad7a8ae2c3a0305602aabbed22ccdf07e354fbc1991b99d9ba58f451d1b  guix-build-300918075144/output/powerpc64le-linux-gnu/SHA256SUMS.part
  a776fb31b742d391cee1b2401204f41b3e93793cc2b54cdfcfca1f1b24a49051  guix-build-300918075144/output/powerpc64le-linux-gnu/bitcoin-300918075144-powerpc64le-linux-gnu-debug.tar.gz
  9bfc9255af051fe3801a556bdeaa940a74399ab7b3b677e5313e5e720a87e9cf  guix-build-300918075144/output/powerpc64le-linux-gnu/bitcoin-300918075144-powerpc64le-linux-gnu.tar.gz
  bc74550b70614e7c07500507943f7b7cda7ec0097908e459b84edfcf9c5f2de7  guix-build-300918075144/output/riscv64-linux-gnu/SHA256SUMS.part
  00906c4d9ba5aa6f567c8c3cfa0d44749f944a182f531ff6724284dc70157f88  guix-build-300918075144/output/riscv64-linux-gnu/bitcoin-300918075144-riscv64-linux-gnu-debug.tar.gz
  9cd40cbaeb3a68faf500410559443376957aafda081e0cdef2a0d17c9b49d933  guix-build-300918075144/output/riscv64-linux-gnu/bitcoin-300918075144-riscv64-linux-gnu.tar.gz
  f9bc2d2cf92493af543a9199763ab913d86bf602f3f5123913ad313391527d75  guix-build-300918075144/output/x86_64-apple-darwin/SHA256SUMS.part
  ba60756267e7fa7add1bb4375c98a65bd730a72a86646e3ddfb8496c1e1b695a  guix-build-300918075144/output/x86_64-apple-darwin/bitcoin-300918075144-x86_64-apple-darwin-unsigned.dmg
  fa44e1d7b861e1f02232ef35e81b28dc78dcf52631944ec38768bc2e08943fa5  guix-build-300918075144/output/x86_64-apple-darwin/bitcoin-300918075144-x86_64-apple-darwin-unsigned.tar.gz
  57ddb381261a1c242e683c12db6c2cfc0bb690bef73ad596f6503e07522f90ff  guix-build-300918075144/output/x86_64-apple-darwin/bitcoin-300918075144-x86_64-apple-darwin.tar.gz
  95e409a241da708c8eefe87c1ba419258f3e4918a36cddd3bc50dbc754a9958e  guix-build-300918075144/output/x86_64-linux-gnu/SHA256SUMS.part
  6b0548280d8558aa68d3a9006beb95a5402e98e64a92a7b211a4341e67b00e85  guix-build-300918075144/output/x86_64-linux-gnu/bitcoin-300918075144-x86_64-linux-gnu-debug.tar.gz
  612a684ed3dc374a81806a50946c85c6d043704945596bed7c5f0f7e998ebf10  guix-build-300918075144/output/x86_64-linux-gnu/bitcoin-300918075144-x86_64-linux-gnu.tar.gz
  a5adc490213892f93e2ea62af2aac6db26127afc721a44cb787b0207b8c16d07  guix-build-300918075144/output/x86_64-w64-mingw32/SHA256SUMS.part
  1c7bf2d489e8d950b22be16506465da70b9402a4e23c770e04a74fb69d05c18c  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64-debug.zip
  2a04f07ca0e46a18b68088093eee0bbfbdeb51ec72bb18c2282168d54f748fc4  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64-setup-unsigned.exe
  e519347ff375e79d12acd8db87a9b216c5363d4b3cce09d7a8f79b85ba0deb85  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64-unsigned.tar.gz
  e49571279f9e5897d5217e5d5fb319467ca213ba7b4e99904e262a1cd1e65df6  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64.zip
  ```

  Guix Build (arm64):
  ```bash
  fe97d5c4eb398c18689e7e68b1d97ab9ccbd12d1f0085eff8bd49de242675963  guix-build-300918075144/output/arm-linux-gnueabihf/SHA256SUMS.part
  239dfcaaaee91164c0e6d8835b613af51e43ece4bf7e17236f55c1a4facf8cd7  guix-build-300918075144/output/arm-linux-gnueabihf/bitcoin-300918075144-arm-linux-gnueabihf-debug.tar.gz
  29fe2ffb5c85f654cf23efd43035f1db6cff4e532839b50e7610dd588ad6680b  guix-build-300918075144/output/arm-linux-gnueabihf/bitcoin-300918075144-arm-linux-gnueabihf.tar.gz
  8ef780a952f6a8352ec897f5446be2c49c2bf06825442dfb38037a2160973ba6  guix-build-300918075144/output/arm64-apple-darwin/SHA256SUMS.part
  4c80a8d78c3bfcef0c6368b54f3112746ee8912bbd7efcebe9f7072ad7f47c32  guix-build-300918075144/output/arm64-apple-darwin/bitcoin-300918075144-arm64-apple-darwin-unsigned.dmg
  d3aa00742093b62165de0fa74b9c2eef0cc37e245cd1720c82a14db30b05ed40  guix-build-300918075144/output/arm64-apple-darwin/bitcoin-300918075144-arm64-apple-darwin-unsigned.tar.gz
  67b56f78a0d410ea346f2aa7432b73d4ab99f8471debd2d8e1459d18fcfdf39f  guix-build-300918075144/output/arm64-apple-darwin/bitcoin-300918075144-arm64-apple-darwin.tar.gz
  29da16189e087c7fc90909d4dfc8002e37ce4ab035d6a94f0d73724d81ce565b  guix-build-300918075144/output/dist-archive/bitcoin-300918075144.tar.gz
  fe4a4a3b84f7782c7d65fdc7d4cbdf6fa57a7898d347ad932cbd4b5d3d7712b4  guix-build-300918075144/output/powerpc64-linux-gnu/SHA256SUMS.part
  e612386c452d04c7a9c9a624efa00f905928af39694067d903635fc7476d0e2c  guix-build-300918075144/output/powerpc64-linux-gnu/bitcoin-300918075144-powerpc64-linux-gnu-debug.tar.gz
  148ff9a17842287e1d541d032bab3c96df98d0c8a2175a132d896e4617799b5b  guix-build-300918075144/output/powerpc64-linux-gnu/bitcoin-300918075144-powerpc64-linux-gnu.tar.gz
  d67e6ad7a8ae2c3a0305602aabbed22ccdf07e354fbc1991b99d9ba58f451d1b  guix-build-300918075144/output/powerpc64le-linux-gnu/SHA256SUMS.part
  a776fb31b742d391cee1b2401204f41b3e93793cc2b54cdfcfca1f1b24a49051  guix-build-300918075144/output/powerpc64le-linux-gnu/bitcoin-300918075144-powerpc64le-linux-gnu-debug.tar.gz
  9bfc9255af051fe3801a556bdeaa940a74399ab7b3b677e5313e5e720a87e9cf  guix-build-300918075144/output/powerpc64le-linux-gnu/bitcoin-300918075144-powerpc64le-linux-gnu.tar.gz
  bc74550b70614e7c07500507943f7b7cda7ec0097908e459b84edfcf9c5f2de7  guix-build-300918075144/output/riscv64-linux-gnu/SHA256SUMS.part
  00906c4d9ba5aa6f567c8c3cfa0d44749f944a182f531ff6724284dc70157f88  guix-build-300918075144/output/riscv64-linux-gnu/bitcoin-300918075144-riscv64-linux-gnu-debug.tar.gz
  9cd40cbaeb3a68faf500410559443376957aafda081e0cdef2a0d17c9b49d933  guix-build-300918075144/output/riscv64-linux-gnu/bitcoin-300918075144-riscv64-linux-gnu.tar.gz
  f9bc2d2cf92493af543a9199763ab913d86bf602f3f5123913ad313391527d75  guix-build-300918075144/output/x86_64-apple-darwin/SHA256SUMS.part
  ba60756267e7fa7add1bb4375c98a65bd730a72a86646e3ddfb8496c1e1b695a  guix-build-300918075144/output/x86_64-apple-darwin/bitcoin-300918075144-x86_64-apple-darwin-unsigned.dmg
  fa44e1d7b861e1f02232ef35e81b28dc78dcf52631944ec38768bc2e08943fa5  guix-build-300918075144/output/x86_64-apple-darwin/bitcoin-300918075144-x86_64-apple-darwin-unsigned.tar.gz
  57ddb381261a1c242e683c12db6c2cfc0bb690bef73ad596f6503e07522f90ff  guix-build-300918075144/output/x86_64-apple-darwin/bitcoin-300918075144-x86_64-apple-darwin.tar.gz
  95e409a241da708c8eefe87c1ba419258f3e4918a36cddd3bc50dbc754a9958e  guix-build-300918075144/output/x86_64-linux-gnu/SHA256SUMS.part
  6b0548280d8558aa68d3a9006beb95a5402e98e64a92a7b211a4341e67b00e85  guix-build-300918075144/output/x86_64-linux-gnu/bitcoin-300918075144-x86_64-linux-gnu-debug.tar.gz
  612a684ed3dc374a81806a50946c85c6d043704945596bed7c5f0f7e998ebf10  guix-build-300918075144/output/x86_64-linux-gnu/bitcoin-300918075144-x86_64-linux-gnu.tar.gz
  a5adc490213892f93e2ea62af2aac6db26127afc721a44cb787b0207b8c16d07  guix-build-300918075144/output/x86_64-w64-mingw32/SHA256SUMS.part
  1c7bf2d489e8d950b22be16506465da70b9402a4e23c770e04a74fb69d05c18c  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64-debug.zip
  2a04f07ca0e46a18b68088093eee0bbfbdeb51ec72bb18c2282168d54f748fc4  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64-setup-unsigned.exe
  e519347ff375e79d12acd8db87a9b216c5363d4b3cce09d7a8f79b85ba0deb85  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64-unsigned.tar.gz
  e49571279f9e5897d5217e5d5fb319467ca213ba7b4e99904e262a1cd1e65df6  guix-build-300918075144/output/x86_64-w64-mingw32/bitcoin-300918075144-win64.zip
  ```

ACKs for top commit:
  hebasto:
    ACK 3009180751, tested on Ubuntu 22.04.
  jarolrod:
    tACK 3009180751

Tree-SHA512: f1a108ed81b043075250918549471e51c930c8bde617c6cdec0e450e0e2c7f679916a7097561a8f1dbdf00072844b5bbcfc7770dc2c2b265b9e82757fec8f498
2022-07-27 09:47:57 +01:00
MacroFake
7f79746bf0
Merge bitcoin/bitcoin#25705: tidy: enable readability-redundant-string-init
49168df073 tidy: enable readability-redundant-string-init (fanquake)
4ddd746bf9 refactor: remove unnecessary string initializations (fanquake)

Pull request description:

  Remove unnecessary `std::string` = "" initializations. Enable `readability-redundant-string-init`.

  See:
  https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-init.html

ACKs for top commit:
  shaavan:
    ACK 49168df073

Tree-SHA512: 69e72a434908c9166d407551657b310361ae2ef0170f8289cb1c2b8e96a4632be718c0d55cb12af03a3c3d621d9583eced88e5e9d924abb0a8b1a9b36c903d66
2022-07-26 17:47:55 +02:00
fanquake
5671217477
Merge bitcoin/bitcoin#24974: refactor: Make FEELER_SLEEP_WINDOW type safe (std::chrono)
fa74e726c4 refactor: Make FEELER_SLEEP_WINDOW type safe (std::chrono) (MacroFake)
fa3b3cb9b5 Expose underlying clock in CThreadInterrupt (MacroFake)

Pull request description:

  This gets rid of the `value*1000` manual conversion.

ACKs for top commit:
  naumenkogs:
    utACK fa74e726c4
  dergoegge:
    Code review ACK fa74e726c4

Tree-SHA512: 90409c05c25f0dd2f1c4dead78f707ebfd78b7d84ea4db9fcefd9c4958a1a3338ac657cd9e99eb8b47d52d4485fa3c947dce4ee1559fb56ae65878685e1ed9a3
2022-07-26 15:09:21 +01:00
MacroFake
c90f86e4c7
Merge bitcoin/bitcoin#25694: refactor: Make CTransaction constructor explicit
fa2247a9f9 refactor: Make CTransaction constructor explicit (MacroFake)

Pull request description:

  It involves calculating two hashes, so the performance impact should be
  made explicit.

  Also, add the module to iwyu.

ACKs for top commit:
  aureleoules:
    ACK fa2247a9f9.
  hebasto:
    ACK fa2247a9f9, I have reviewed the code and it looks OK, I agree it can be merged.

Tree-SHA512: e236c352a472c7edfd4f0319a5a16a59f627b0ab7eb8531b53c75d730a3fa3e990a939978dcd952cd73e647925fc79bfa6d9fd87624bbc3ef180f40f95acef19
2022-07-26 13:15:00 +02:00
Antoine Poinsot
00897d0677
script: actually trigger the optimization in BuildScript
The counter is an optimization over calling `ret.empty()`. It was
suggested that the compiler would realize `cnt` is only `0` on the first
iteration, and not actually emit the check and conditional.

This optimization was actually not triggered at all, since we
incremented `cnt` at the beginning of the first iteration. Fix it by
incrementing at the end instead.

This was reported by Github user "Janus".
2022-07-26 13:02:48 +02:00
fanquake
e838a98475
depends: re-enable using -flto when building expat 2022-07-26 11:37:55 +01:00
fanquake
304452558c
depends: expat 2.4.8 2022-07-26 11:37:35 +01:00
glozow
31c1b14754
Merge bitcoin/bitcoin#25689: fuzz: Remove no-op SetMempoolConstraints
fa57c449cf fuzz: Remove no-op SetMempoolConstraints (MacroFake)

Pull request description:

  Now that the mempool no longer uses the args manager (after commit e4e201dfd9), there is no point setting the mempool limits after it is constructed.

  Fix that by setting them once right before the mempool is constructed.

ACKs for top commit:
  dongcarl:
    utACK fa57c449cf
  glozow:
    utACK fa57c449cf

Tree-SHA512: d236f9cdcee8c2076272b82c97f8a5942f1ecf119ab36edafd42088ef97554592348a61e1fbe504fd52b30301ef0177813042599ad12e8cb95b4a20586c85bb0
2022-07-26 10:54:14 +01:00
fanquake
49168df073
tidy: enable readability-redundant-string-init
See:
https://releases.llvm.org/14.0.0/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-init.html
2022-07-26 10:16:42 +01:00
fanquake
4ddd746bf9
refactor: remove unnecessary string initializations 2022-07-26 10:16:42 +01:00
fanquake
a65f6d8cbb
Merge bitcoin/bitcoin#25699: scripted-diff: Replace NullUniValue with UniValue::VNULL
fa28d0f3c3 scripted-diff: Replace NullUniValue with UniValue::VNULL (MacroFake)
fa962103e8 fuzz: refactor: Replace NullUniValue with UniValue{} (MacroFake)

Pull request description:

  This refactor is needed to disable the (potentially expensive for large json) UniValue copy constructors.

ACKs for top commit:
  fanquake:
    ACK fa28d0f3c3

Tree-SHA512: 7d4204cce0a6fc4ecda96973de77d15b7e4c7caa3e0e890e1f5b9a4b9ace8b240b1f7565d6ab586e168a5fa1201b6c60a924868ef34d6abfbfd8ab7f0f99fbc7
2022-07-26 10:08:15 +01:00
MarcoFalke
fa64dd6673
refactor: Use type-safe std::chrono for addrman time 2022-07-26 11:06:10 +02:00
MarcoFalke
fa2ae373f3
Add type-safe AdjustedTime() getter to timedata
Also, fix includes.

The getter will be used in a future commit.
2022-07-26 11:05:54 +02:00