Commit graph

43349 commits

Author SHA1 Message Date
glozow
f34fe0806a
Merge bitcoin/bitcoin#31122: cluster mempool: Implement changeset interface for mempool
5736d1ddac tracing: pass if replaced by tx/pkg to tracepoint (0xb10c)
a4ec07f194 doc: add comments for CTxMemPool::ChangeSet (Suhas Daftuar)
83f814b1d1 Remove m_all_conflicts from SubPackageState (Suhas Daftuar)
d3c8e7dfb6 Ensure that we don't add duplicate transactions in rbf fuzz tests (Suhas Daftuar)
d7dc9fd2f7 Move CalculateChunksForRBF() to the mempool changeset (Suhas Daftuar)
284a1d33f1 Move prioritisation into changeset (Suhas Daftuar)
446b08b599 Don't distinguish between direct conflicts and all conflicts when doing cluster-size-2-rbf checks (Suhas Daftuar)
b53041021a Duplicate transactions are not permitted within a changeset (Suhas Daftuar)
b447416fdd Public mempool removal methods Assume() no changeset is outstanding (Suhas Daftuar)
2b30f4d36c Make RemoveStaged() private (Suhas Daftuar)
18829194ca Enforce that there is only one changeset at a time (Suhas Daftuar)
7fb62f7db6 Apply mempool changeset transactions directly into the mempool (Suhas Daftuar)
34b6c5833d Clean up FinalizeSubpackage to avoid workspace-specific information (Suhas Daftuar)
57983b8add Move LimitMempoolSize to take place outside FinalizeSubpackage (Suhas Daftuar)
01e145b975 Move changeset from workspace to subpackage (Suhas Daftuar)
802214c083 Introduce mempool changesets (Suhas Daftuar)
87d92fa340 test: Add unit test coverage of package rbf + prioritisetransaction (Suhas Daftuar)
15d982f91e Add package hash to package-rbf log message (Suhas Daftuar)

Pull request description:

  part of cluster mempool: #30289

  It became clear while working on cluster mempool that it would be helpful for transaction validation if we could consider a full set of proposed changes to the mempool -- consisting of a set of transactions to add, and a set of transactions (ie conflicts) to simultaneously remove -- and perform calculations on what the mempool would look like if the proposed changes were to be applied.  Two specific examples of where we'd like to do this:

  - Determining if ancestor/descendant/TRUC limits would be violated (in the future, cluster limits) if either a single transaction or a package of transactions were to be accepted
  - Determining if an RBF would make the mempool "better", however that idea is defined, both in the single transaction and package of transaction cases

  In preparation for cluster mempool, I have pulled this reworking of the mempool interface out of #28676 so it can be reviewed on its own.  I have not re-implemented ancestor/descendant limits to be run through the changeset, since with cluster mempool those limits will be going away, so this seems like wasted effort.  However, I have rebased #28676 on top of this branch so reviewers can see what the new mempool interface could look like in the cluster mempool setting.

  There are some minor behavior changes here, which I believe are inconsequential:
  - In the package validation setting, transactions would be added to the mempool before the `ConsensusScriptChecks()` are run. In theory, `ConsensusScriptChecks()` should always pass if the `PolicyScriptChecks()` have passed and it's just a belt-and-suspenders for us, but if somehow they were to diverge then there could be some small behavior change from adding transactions and then removing them, versus never adding them at all.
  - The error reporting on `CheckConflictTopology()` has slightly changed due to no longer distinguishing between direct conflicts and indirect conflicts. I believe this should be entirely inconsequential because there shouldn't be a logical difference between those two ideas from the perspective of this function, but I did have to update some error strings in some tests.
  - Because, in a package setting, RBFs now happen as part of the entire package being accepted, the logging has changed slightly because we do not know which transaction specifically evicted a given removed transaction.
    -  Specifically, the "package hash" is now used to reference the set of transactions that are being accepted, rather than any single txid. The log message relating to package RBF that happen in the `TXPACKAGES` category has been updated as well to include the package hash, so that it's possible to see which specific set of transactions are being referenced by that package hash.
    - Relatedly, the tracepoint logging in the package rbf case has been updated as well to reference the package hash, rather than a transaction hash.

ACKs for top commit:
  naumenkogs:
    ACK 5736d1ddac
  instagibbs:
    ACK 5736d1ddac
  ismaelsadeeq:
    reACK 5736d1ddac
  glozow:
    ACK 5736d1ddac

Tree-SHA512: 21810872e082920d337c89ac406085aa71c5f8e5151ab07aedf41e6601f60a909b22fbf462ef3b735d5d5881e9b76142c53957158e674dd5dfe6f6aabbdf630b
2024-11-20 07:48:29 -05:00
merge-script
b2d952c0f5
Merge bitcoin/bitcoin#31331: doc: add copyright header to p2p_headers_presync
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
7d3703dec3 doc: add copyright header to p2p_headers_presync (fanquake)

Pull request description:

  Add the missing copyright header.

ACKs for top commit:
  willcl-ark:
    ACK 7d3703dec3

Tree-SHA512: c1be62ac9ebb6ef0210670e80aa473da287b26c4f29e347a4f837652ed4c2bb71f952c83f14fc13f1b523f8712d79d78bda5dcdf5fd6fc61788c1d86a67a4729
2024-11-20 12:02:25 +00:00
fanquake
7d3703dec3
doc: add copyright header to p2p_headers_presync 2024-11-20 11:48:53 +00:00
merge-script
116b8c5573
Merge bitcoin/bitcoin#31213: fuzz: Fix difficulty target generation in p2p_headers_presync
a6ca8f3243 fuzz: Fix difficulty target generation in p2p_headers_presync (marcofleon)
fa327c77e3 util: Add ConsumeArithUInt256InRange fuzzing helper (marcofleon)

Pull request description:

  In the `p2p_headers_presync` fuzz target, this assertion failed:
  ```
   assert(total_work < chainman.MinimumChainWork());
   ```
  Input that triggered the failure: [p2ppresync_crash.txt](https://github.com/user-attachments/files/17620203/p2ppresync_crash.txt)

  The test previously used `ConsumeIntegralInRange` to generate header difficulty targets within a hardcoded range. The fuzzer found specific values in that range that correspond to very low thresholds due to how [`SetCompact`][setcompact-link] works. The total work of a long enough test chain ended up exceeding `MinimumChainWork`.

  Fix this by adding a new `ConsumeArithUInt256InRange` helper function and use it in the fuzz test to generate target values within the originally intended range. The target is then converted to an `nBits` value using `GetCompact()`.

  For some more context, see https://github.com/bitcoin/bitcoin/pull/30918.

  [setcompact-link]: 6463117a29/src/arith_uint256.h (L251-L271)

ACKs for top commit:
  instagibbs:
    ACK a6ca8f3243
  dergoegge:
    Code review ACK a6ca8f3243
  brunoerg:
    code review ACK a6ca8f3243

Tree-SHA512: 92013d9d37bd3f11992ee678ba9745196efbdc4d773fd14994116629260bea46ffc9fa3923d443af7b623d39c6211900ce98a349c62ad1976e12312c37ef9df0
2024-11-20 11:46:22 +00:00
merge-script
15c1f47a00
Merge bitcoin/bitcoin#31327: doc: Correct PR Review Club frequency from weekly to monthly
637f437a16 doc: remove PR Review Club frequency (Gabriele Bocchi)

Pull request description:

  The PR Review Club is mentioned as weekly in the CONTRIBUTING.md file, but it is held monthly as per the official [Bitcoin Core PR Review Club website](https://bitcoincore.reviews/). This PR updates the documentation to just remove the frequency.

ACKs for top commit:
  fanquake:
    ACK 637f437a16

Tree-SHA512: 27bf8a0e32edd8bedb5301ceb3c744ff4629403292a7ad00b633921f36278443ae297cd53708a533b1d6e6eab863b831e11247b95277b94cce28e3d5ddb7d9b9
2024-11-20 10:58:02 +00:00
merge-script
1209a1082c
Merge bitcoin/bitcoin#31315: build: Enable -Wbidi-chars=any
fa7857ccda build: Enable -Wbidi-chars=any (MarcoFalke)

Pull request description:

  I don't see a use-case for UTF-8 bidirectional control characters in this codebase. So disable them for now.

  Ref: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wbidi-chars_003d

ACKs for top commit:
  fanquake:
    ACK fa7857ccda

Tree-SHA512: 29cf78a2bd0fd94f919f4cd1d1038009a574b4d011146c69bf94d3c06951606200b7d1f827ac6f2fb4540e8f45118ba72b3ccf6c20ef8048e819974371d8f67a
2024-11-20 10:55:30 +00:00
merge-script
ab22726def
Merge bitcoin/bitcoin#31276: guix: scope pkg-config to Linux only
bcd82b13f4 Remove pkgconfig from toolchain file (TheCharlatan)
319a4e8261 depends: drop sqlite pkgconfig file (fanquake)
a8fe1fd38b depends: better cleanup after fontconfig (fanquake)
17e79c9260 depends: fully remove libtool archives from Qt build (fanquake)
8ca85651c8 guix: move pkg-config to Linux builds (fanquake)
e3e648cf41 depends: drop pkg-config option from Qt build (fanquake)
0d185bd99f doc: update depends doc to prefer .cmake outputs (fanquake)

Pull request description:

  After #31181, `pkg-config` is no-longer needed for macOS or Windows Guix builds. It's still needed for Linux, as it's used by a Qt subdependency (fontconfig to find freetype). However we should also no-longer need it for Qt itself, when building using depends.

ACKs for top commit:
  TheCharlatan:
    ACK bcd82b13f4

Tree-SHA512: 89ae68281030d43fcb6c5c96429cd038a21f13a8ca19ea828ada47e8f9f0aa7407854a67c9003652817e47ab9565573b7028342e3e11bb1cca1d823c483081cd
2024-11-20 10:53:35 +00:00
Gabriele Bocchi
637f437a16
doc: remove PR Review Club frequency 2024-11-20 11:16:39 +01:00
merge-script
e122309958
Merge bitcoin/bitcoin#31317: test: Revert to random path element
faaaf59f71 test: Make g_rng_temp_path rand, not dependent on SeedRandomForTest (MarcoFalke)
fa80b08fef test: Revert to random path element (MarcoFalke)

Pull request description:

  The randomness in the path element is required to allow a single fuzz test to run in parallel. Previous releases used a uint256 random value, but 10 random bytes should be sufficient as well, while avoiding a `MAX_PATH` violation on Windows.

  The issue was introduced by myself, by suggesting to use the current time in https://github.com/bitcoin/bitcoin/pull/31000#discussion_r1835351305.

ACKs for top commit:
  kevkevinpal:
    reACK faaaf59f71
  hodlinator:
    ACK faaaf59f71
  tdb3:
    re ACK faaaf59f71
  dergoegge:
    ACK faaaf59f71

Tree-SHA512: f12256c8b353618291030f71bf36eab97a25ffeaa28e36a5f2c6718dfc1fbbc8548c71475edec53d59026f2a779a05778db83f0530dd3e1d1faf6e4fc0ee7d70
2024-11-20 10:10:54 +00:00
brunoerg
1807df3d9f test: addrman: tried 3 times and never a success so isTerrible=true 2024-11-19 17:37:24 -03:00
Ava Chow
2666d83da5
Merge bitcoin/bitcoin#30893: test: Introduce ensure_for helper
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
111465d72d test: Remove unused attempts parameter from wait_until (Fabian Jahr)
5468a23eb9 test: Add check_interval parameter to wait_until (Fabian Jahr)
16c87d91fd test: Introduce ensure_for helper (Fabian Jahr)

Pull request description:

  A repeating pattern in the functional tests is that the test sleeps for a while to ensure that a certain condition is still true after some amount of time has elapsed. Most recently a new case of this was added in #30807. This PR here introduces an `ensure` helper to streamline this functionality.

  Some approach considerations:
  - It is possible to construct this by reusing `wait_until` and wrapping it in `try` internally. However, the logger output of the failing wait would still be printed which seems irritating. So I opted for simplified but similar internals to `wait_until`.
  - This implementation starts for a failure in the condition right away which has the nice side-effect that it might give feedback on a failure earlier than is currently the case. However, in some cases, it may be expected that the condition may still be false at the beginning and then turns true until time has run out, something that would work when the test sleeps without checking in a loop. I decided against this design (and even against adding it as an option) because such a test design seems like it would be racy either way.
  - I have also been going back and forth on naming. To me `ensure` works well but I am also not a native speaker, happy consider a different name if others don't think it's clear enough.

ACKs for top commit:
  maflcko:
    re-ACK 111465d72d 🍋
  achow101:
    ACK 111465d72d
  tdb3:
    code review re ACK 111465d72d
  furszy:
    utACK 111465d72d

Tree-SHA512: ce01a4f3531995375a6fbf01b27d51daa9d4c3d7cd10381be6e86ec5925d2965861000f7cb4796b8d40aabe3b64c4c27e2811270e4e3c9916689575b8ba4a2aa
2024-11-19 13:56:20 -05:00
Ava Chow
55347a5018 test: Rework migratewallet to use previous release (v28.0) 2024-11-19 11:59:02 -05:00
MarcoFalke
faaaf59f71
test: Make g_rng_temp_path rand, not dependent on SeedRandomForTest 2024-11-19 17:31:59 +01:00
merge-script
746f93b4f0
Merge bitcoin/bitcoin#31307: build: Temporarily disable compiling fuzz/utxo_snapshot.cpp with MSVC
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
b2d5361002 build: Temporarily disable compiling `fuzz/utxo_snapshot.cpp` with MSVC (Hennadii Stepanov)

Pull request description:

  This PR suggests a temporary workaround for a compiler bug [introduced](https://github.com/bitcoin/bitcoin/issues/31303) in Visual Studio 2022 version 17.12.

  This workaround is required to fix the CI until the upstream compiler bug is resolved.

ACKs for top commit:
  maflcko:
    lgtm ACK b2d5361002
  TheCharlatan:
    ACK b2d5361002
  brunoerg:
    ACK b2d5361002

Tree-SHA512: 8f8b772253f6f61d9e24c6ae8692511c7c1229c7d20a45fe680ad6a3909c59b58b504589f06d3135d9708a61684be4aba6a426f7f5f60020551f52b9090d3030
2024-11-19 10:38:24 +00:00
Hodlinator
e8a2054edc
doc args: Document narrow scope of -color 2024-11-18 23:04:19 +01:00
James O'Beirne
25fe087de5 rpc: move-only: move ScriptPubKeyDoc to utils 2024-11-18 15:22:44 -05:00
MarcoFalke
fa80b08fef
test: Revert to random path element 2024-11-18 14:21:15 +01:00
TheCharlatan
8f85d36d68
refactor: Clamp worker threads in ChainstateManager constructor
This ensures the options are applied consistently from contexts where
they might not pass through the args manager, such as in some tests, or
when used through the kernel library.

This is similar to the patch applied in 09ef322acc.
2024-11-18 11:13:20 +01:00
MarcoFalke
fa7857ccda
build: Enable -Wbidi-chars=any 2024-11-18 11:02:39 +01:00
Hennadii Stepanov
b2d5361002
build: Temporarily disable compiling fuzz/utxo_snapshot.cpp with MSVC
Visual Studio 2022 version 17.12 introduced a bug that causes an
internal compiler error.

See: https://github.com/bitcoin/bitcoin/issues/31303.
2024-11-17 16:52:42 +00:00
Sjors Provoost
9aa50152c1
Add destroy to BlockTemplate schema
This ensures that if a client no longer needs a block template,
the node can clear its memory as soon as possible.

A block template may hold on to transactions that are no longer
in the mempool, so this can be significant.
2024-11-15 19:14:54 +01:00
MarcoFalke
fa3e074304
refactor: Tidy fixups
Requested by clang-tidy:

src/wallet/salvage.cpp:119:18: error: use emplace_back instead of push_back [modernize-use-emplace,-warnings-as-errors]
   119 |         warnings.push_back(Untranslated("Salvage: Database salvage found errors, all data may not be recoverable."));
       |                  ^~~~~~~~~~
       |                  emplace_back(
2024-11-15 17:16:54 +01:00
MarcoFalke
fa72646f2b
move-only: Detail_CheckNumFormatSpecifiers and G_TRANSLATION_FUN
This is required for a future commit. Can be reviewed via the git
options --color-moved=dimmed-zebra --color-moved-ws=ignore-all-space

Also move util::detail::Hex to a proper namespace instead of an inline
namespace so it doesn't conflict with the new util::detail namespace, and
won't create other problems for callers trying to use the inline namespaces.

Also fix a misleading comment in util_string_tests.cpp.

Co-Authored-By: Ryan Ofsky <ryan@ofsky.org>
2024-11-15 17:16:27 +01:00
MarcoFalke
faff8403f0
refactor: Pick translated string after format
This passes the return value of _() directly to strprintf so the format
string can be checked at compile time in a future commit.
2024-11-15 17:16:03 +01:00
Ryan Ofsky
ccc2d3abcd
Merge bitcoin/bitcoin#31287: refactor: Avoid std::string format strings
Some checks failed
CI / test each commit (push) Has been cancelled
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Has been cancelled
CI / Win64 native, VS 2022 (push) Has been cancelled
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Has been cancelled
fa1177e3d7 refactor: Avoid std::string format strings (MarcoFalke)

Pull request description:

  This changes some unchecked `std::string` format strings to use string literals, which are `consteval` checked at compile-time.

  Split out, because it is used in several pull requests.

ACKs for top commit:
  l0rinc:
    ACK fa1177e3d7
  tdb3:
    code review and light test ACK fa1177e3d7
  rkrux:
    tACK fa1177e3d7
  ryanofsky:
    Code review ACK fa1177e3d7

Tree-SHA512: 7cc70a49b07dadc386336687b463043e79e94a46d18db0184c9813218536e87e954a1afeb8739d5d8706e7b2f355d3f7984048c7de2725851b463985f1c5369f
2024-11-15 09:53:18 -05:00
Greg Sanders
62016b3230 Use std::ranges for ephemeral policy checks 2024-11-15 09:31:59 -05:00
Greg Sanders
3ed930a1f4 Have HasDust and PreCheckValidEphemeralTx take CTransaction 2024-11-15 09:31:59 -05:00
Greg Sanders
04a614bf9a Rename CheckValidEphemeralTx to PreCheckEphemeralTx 2024-11-15 09:31:59 -05:00
Ava Chow
85bcfeea23
Merge bitcoin/bitcoin#30666: validation: fix m_best_header tracking and BLOCK_FAILED_CHILD assignment
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
0bd53d913c test: add test for getchaintips behavior with invalid chains (Martin Zumsande)
ccd98ea4c8 test: cleanup rpc_getchaintips.py (Martin Zumsande)
f5149ddb9b validation: mark blocks building on an invalid block as BLOCK_FAILED_CHILD (Martin Zumsande)
783cb7337f validation: call RecalculateBestHeader in InvalidChainFound (Martin Zumsande)
9275e9689a rpc: call RecalculateBestHeader as part of reconsiderblock (Martin Zumsande)
a51e91783a validation: add RecalculateBestHeader() function (Martin Zumsande)

Pull request description:

  `m_best_header` (the most-work header not known to be on an invalid chain) can be wrong in the context of invalidation / reconsideration of blocks. This can happen naturally (a valid header is received and stored in our block tree db; when the full block arrives, it is found to be invalid) or triggered by the user with the `invalidateblock` / `reconsiderblock` rpc.

  We don't currently use `m_best_header` for any critical things (see OP of #16974 for a list that still seems up-to-date), so it being wrong affects mostly rpcs.

  This PR proposes to recalculate it if necessary by looping over the block index and finding the best header. It also suggest to mark headers between an invalidatetd block and the previous `m_best_header` as invalid, so they won't be considered in the recalculation.
  It adds tests to `rpc_invalidateblock.py` and `rpc_getchaintips.py` that fail on master.

  One alternative to this suggested in the past would be to introduce a continuous tracking of header tips (#12138).
  While this might be more performant, it is also more complicated, and situations where we need this data are only be remotely triggerable by paying the cost of creating a valid PoW header for an invalid block.
  Therefore I think it isn't necessary to optimise for performance here, plus the solution in this PR doesn't perform any extra steps in the normal node operation where no invalidated blocks are encountered.

  Fixes  #26245

ACKs for top commit:
  fjahr:
    reACK 0bd53d913c
  achow101:
    ACK 0bd53d913c
  TheCharlatan:
    Re-ACK 0bd53d913c

Tree-SHA512: 23c2fc42d7c7bb4f9b4ba4949646b3d0031dd29ed15484e436afd66cd821ed48e0f16a1d02f45477b5d0d73a006f6e81a56b82d9721e0dee2e924219f528b445
2024-11-14 16:54:41 -05:00
Ava Chow
2257c6d68f
Merge bitcoin/bitcoin#30487: ci: skip Github CI on branch pushes for forks
8610bcef9d ci: skip Github CI on branch pushes for forks (Sjors Provoost)

Pull request description:

  When a contributor maintains a fork of the repo, any pull request they make to their own fork, or to the main repository, will trigger two CI runs one for the branch push and one for the pull request.

  After this PR when `SKIP_BRANCH_PUSH` is set, pushes made to git branches inside fork repositories will no longer trigger CI runs, unless the git branches are associated with PRs in the fork repository, or the main repository.

  The same behaviour was added for Cirrus in e9bfbb5414.

  Note to maintainers: `SKIP_BRANCH_PUSH=true` needs to be set for the GUI repo to maintain existing behaviour.

ACKs for top commit:
  m3dwards:
    ACK 8610bcef9d
  achow101:
    ACK 8610bcef9d
  vasild:
    ACK 8610bcef9d

Tree-SHA512: 4055153f03f0cb60a97ce26157ab9db40a4609dee9f060ed7b06aa8841df5bd8e1a42ff2ac0f20bd69e221e8e67bff062a9a361a291124070a03dd51c609e845
2024-11-14 16:45:07 -05:00
Ava Chow
380e1f44e8
Merge bitcoin/bitcoin#30349: benchmark: Improve SipHash_32b accuracy to avoid potential optimization issues
42066f45ff Refactor SipHash_32b benchmark to improve accuracy and avoid optimization issues (Lőrinc)

Pull request description:

  This PR stems from the discussions in https://github.com/bitcoin/bitcoin/pull/30317#discussion_r1649187336

  The previous benchmark for `SipHash` was slightly less accurate in representing real-world usage and allowed for potential compiler optimizations that could invalidate the benchmark.
  This change aims to ensure the benchmark produces more realistic results.

  By modifying the initial values and only incrementing the bytes of `val`, the benchmark should reflects a more typical usage patterns - and prevent the compiler from optimizing away the calculations.

  -------

  On my M1 processor the benchmark's speed changed significantly (but the CI seems to produce the same result as before):

  > cmake -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_BENCH=ON && cmake --build build -j10 &&
  ./build/src/bench/bench_bitcoin --filter=SipHash_32b --min-time=1000

  Before:
  |               ns/op |                op/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |               35.15 |       28,445,856.66 |    0.2% |      1.10 | `SipHash_32b`

  After (note that only the benchmark changed):
  |               ns/op |                op/s |    err% |     total | benchmark
  |--------------------:|--------------------:|--------:|----------:|:----------
  |               22.05 |       45,350,886.64 |    0.3% |      1.10 | `SipHash_32b`

ACKs for top commit:
  maflcko:
    review ACK 42066f45ff
  achow101:
    ACK 42066f45ff
  hodlinator:
    ACK 42066f45ff

Tree-SHA512: 6bbe9d725d4c3396642e55ce48c31baa5339e56838d6d5fb377fb1069daa9292375e7020ceff7da0d78befffc1e984f717b5232217fe911989613480adaa937e
2024-11-14 16:36:33 -05:00
Ava Chow
1a8f51e745
Merge bitcoin/bitcoin#28843: [refactor] Cleanup BlockAssembler mempool usage
192dac1d33 [refactor] Cleanup BlockAssembler mempool usage (TheCharlatan)

Pull request description:

  The `addPackageTxs` method of the `BlockAssembler` currently has access to two mempool variables, as an argument and as a member. Clean this up and clarify that they both are the same mempool instance by removing the argument and instead only using the member variable in the method.

  This was noticed in this PR review: https://github.com/bitcoin/bitcoin/pull/25223#discussion_r898164322.

ACKs for top commit:
  achow101:
    ACK 192dac1d33
  danielabrozzoni:
    re-ACK 192dac1
  stickies-v:
    ACK 192dac1d33

Tree-SHA512: a5ae7d6d771fbb5b54f23624b4d3429acf07bbe38179a462a078c825d60c89a725ad4e13fe7067eebea7dfec63c56c8f39b5077b0d949d594f500affcc1272d1
2024-11-14 16:30:48 -05:00
merge-script
2d944e982c
Merge bitcoin/bitcoin#31285: guix: remove util-linux
4d66854982 ci: remove util-linux from centos CI (fanquake)
cdf34be7c9 guix: remove util-linux (fanquake)

Pull request description:

  `hexdump` was used for the tests, until CMake. This package is no-longer needed to complete a Guix build (or needed in the CI). `util-linux` has been in the manifest since Guix was first introduced (3e80ec3ea9).

  Guix build:
  ```bash
  b681575760a0d19445a17d0d54f50a65d705923caee3a7cd7502e6611950dc11  guix-build-4d668549825c/output/aarch64-linux-gnu/SHA256SUMS.part
  7af1420fedd8b4d10df650e92840287106dd74c289b6ef6fd2fd039387824647  guix-build-4d668549825c/output/aarch64-linux-gnu/bitcoin-4d668549825c-aarch64-linux-gnu-debug.tar.gz
  bd6520732b5c7805002a3227fe2d16f56a77453d913f5204e5be869aaf4a9534  guix-build-4d668549825c/output/aarch64-linux-gnu/bitcoin-4d668549825c-aarch64-linux-gnu.tar.gz
  83230468eb9289d294f7bdbb9b410cb7473a2e4dd1463097559dc0752f53cbc0  guix-build-4d668549825c/output/arm-linux-gnueabihf/SHA256SUMS.part
  b4d79380642763428b7ca79a66c5920797864b163759081be5369631b4c33c73  guix-build-4d668549825c/output/arm-linux-gnueabihf/bitcoin-4d668549825c-arm-linux-gnueabihf-debug.tar.gz
  65d0c3888ca98dc9c7a1d6c25c9d6bc66ca6435c1fb42178ef8794dfa3b40255  guix-build-4d668549825c/output/arm-linux-gnueabihf/bitcoin-4d668549825c-arm-linux-gnueabihf.tar.gz
  17d6297ddd9a94913987c596715e66cff0d91d726d06cca2eeb8f3c94056e8db  guix-build-4d668549825c/output/arm64-apple-darwin/SHA256SUMS.part
  02faa61796d88b3cff69feeddc50bc579195da3676e5daace2ffc2332f3cbc1a  guix-build-4d668549825c/output/arm64-apple-darwin/bitcoin-4d668549825c-arm64-apple-darwin-unsigned.tar.gz
  0e02ef1418f56f67c472dc785041c1988637e509e77337d2a6eeb69b0c4cd844  guix-build-4d668549825c/output/arm64-apple-darwin/bitcoin-4d668549825c-arm64-apple-darwin-unsigned.zip
  d4320588db28f4f98b5de4c2e725e02b2f5f1379e376e534f1e4509928d187d4  guix-build-4d668549825c/output/arm64-apple-darwin/bitcoin-4d668549825c-arm64-apple-darwin.tar.gz
  7aa217a438fb97f0438ed1d8478cbeb52fd974fac94cbe7cf6c780231e17d8d6  guix-build-4d668549825c/output/dist-archive/bitcoin-4d668549825c.tar.gz
  157f1b597eee99ee64722ec28a2770d6fea84bbd711f83ad22ab2bb6b44f15fc  guix-build-4d668549825c/output/powerpc64-linux-gnu/SHA256SUMS.part
  60569cdafcf802648c44d2c55758fc5cd2c00d4c37c0f31d9da95e8472438c57  guix-build-4d668549825c/output/powerpc64-linux-gnu/bitcoin-4d668549825c-powerpc64-linux-gnu-debug.tar.gz
  5e1581caf3404ffcb1b061d518465f584faf543e3da69b1b116f8a70368455d8  guix-build-4d668549825c/output/powerpc64-linux-gnu/bitcoin-4d668549825c-powerpc64-linux-gnu.tar.gz
  db62e80ca99b163d62fc4d473f87de56d97da52dd37ec5043aaaaf4cf96bde25  guix-build-4d668549825c/output/riscv64-linux-gnu/SHA256SUMS.part
  47905dd06466f5c197689f9e02d417f959904762321f6dc70e3bf2cc9a2fc04d  guix-build-4d668549825c/output/riscv64-linux-gnu/bitcoin-4d668549825c-riscv64-linux-gnu-debug.tar.gz
  558b9ff6aff7b1a49f7bbba81d57025192aca532e7ee6b90b61a36bba0bfd342  guix-build-4d668549825c/output/riscv64-linux-gnu/bitcoin-4d668549825c-riscv64-linux-gnu.tar.gz
  a946b5d730fa12f6e388db31e2e4b5de2c48653f16613146fb848ce9cdee8b81  guix-build-4d668549825c/output/x86_64-apple-darwin/SHA256SUMS.part
  6d0bfd4443507fe46422b099a2e92e28024c800a37d43539382ac0d8cb00f45d  guix-build-4d668549825c/output/x86_64-apple-darwin/bitcoin-4d668549825c-x86_64-apple-darwin-unsigned.tar.gz
  06ef2f4df72377b9f2bb872d624fdcbf391470e4694b85295eb529d90e37ff62  guix-build-4d668549825c/output/x86_64-apple-darwin/bitcoin-4d668549825c-x86_64-apple-darwin-unsigned.zip
  bc9fe0032d6f5e9d9576ddb9ea5333bb1d0741731dfa4da4ef1b3daf7dd9241d  guix-build-4d668549825c/output/x86_64-apple-darwin/bitcoin-4d668549825c-x86_64-apple-darwin.tar.gz
  4668e50be850961409a4ade5bb7522cc2366e9ab31542247243fa8473d100cb1  guix-build-4d668549825c/output/x86_64-linux-gnu/SHA256SUMS.part
  63662bbd98f8d71346ab24b956cb27a1aa03a48825e7c965ced0338024cc97e8  guix-build-4d668549825c/output/x86_64-linux-gnu/bitcoin-4d668549825c-x86_64-linux-gnu-debug.tar.gz
  514a726a2bae3944de8e1dbb606bade4f129f01477d5c607fb5e489b22792462  guix-build-4d668549825c/output/x86_64-linux-gnu/bitcoin-4d668549825c-x86_64-linux-gnu.tar.gz
  365a33f3046c680a399d9dabeaca589dd7918642c79f0c33205a724084ff5c1c  guix-build-4d668549825c/output/x86_64-w64-mingw32/SHA256SUMS.part
  306c6425c1cebaf9dae65853bc3035d478e7670c333616270d63c4ffd08ec724  guix-build-4d668549825c/output/x86_64-w64-mingw32/bitcoin-4d668549825c-win64-debug.zip
  817fff3665f49a9eda4e7929e95c645172f6f0432410f4a0319638ce80a50771  guix-build-4d668549825c/output/x86_64-w64-mingw32/bitcoin-4d668549825c-win64-setup-unsigned.exe
  f06e3a88a19b29dbad03e1667183eb295a2e6a6e6f69bcdd6f53c7ee4d777a7d  guix-build-4d668549825c/output/x86_64-w64-mingw32/bitcoin-4d668549825c-win64-unsigned.tar.gz
  ec1c6fc83198e7e9e1871f1ac25ac49c519a2dab11bb09e1a7153161cb284b79  guix-build-4d668549825c/output/x86_64-w64-mingw32/bitcoin-4d668549825c-win64.zip
  ```

ACKs for top commit:
  TheCharlatan:
    ACK 4d66854982

Tree-SHA512: 6550ee4f5b4646252afe72286c76f3a275ce5f700b2f6df161414df441c8d271c6d23e76c7a4de763dcc965a4a28b75fb1a71c08ed7eeac337857398d6b52128
2024-11-14 18:29:45 +00:00
TheCharlatan
bcd82b13f4
Remove pkgconfig from toolchain file 2024-11-14 13:39:09 +00:00
fanquake
319a4e8261
depends: drop sqlite pkgconfig file 2024-11-14 13:39:08 +00:00
MarcoFalke
fa1177e3d7
refactor: Avoid std::string format strings
Pass literal format strings instead of std::string so formats can be
checked at compile time.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
Co-authored-by: stickies-v <stickies-v@protonmail.com>
2024-11-14 12:44:13 +01:00
fanquake
a8fe1fd38b
depends: better cleanup after fontconfig 2024-11-14 11:32:47 +00:00
fanquake
17e79c9260
depends: fully remove libtool archives from Qt build
`Qt5Zlib.la` was hanging around.
2024-11-14 11:32:47 +00:00
fanquake
8ca85651c8
guix: move pkg-config to Linux builds
This is no-longer needed for macOS or Windows, and is only required on
Linux for a Qt sub dependency (fontconfig to find freetype).
2024-11-14 11:32:47 +00:00
fanquake
e3e648cf41
depends: drop pkg-config option from Qt build 2024-11-14 11:32:47 +00:00
fanquake
0d185bd99f
doc: update depends doc to prefer .cmake outputs 2024-11-14 11:32:46 +00:00
merge-script
e546b4e1a0
Merge bitcoin/bitcoin#31225: doc: Fix grammatical errors in multisig-tutorial.md
Some checks are pending
CI / test each commit (push) Waiting to run
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
ac286e0d1b doc: Fix grammatical errors in multisig-tutorial.md (secp512k2)

Pull request description:

  This pull request fixes grammatical errors in the `multisig-tutorial.md` document.

ACKs for top commit:
  Abdulkbk:
    ACK ac286e0d1b

Tree-SHA512: 684fe16e802431109957b9cde441353edeb16ffffde4282310c1a6f104adffc53347d00a2cf3a5969a78803f3177d6056ca37d3b7e8be52c2ec43ec0b9fcf4d9
2024-11-14 10:25:58 +00:00
merge-script
f44e39c9d0
Merge bitcoin/bitcoin#31174: tinyformat: Add compile-time checking for literal format strings
fe39acf88f tinyformat: Add compile-time checking for literal format strings (Ryan Ofsky)
184f34f2d0 util: Support dynamic width & precision in ConstevalFormatString (Ryan Ofsky)

Pull request description:

  Add compile-time checking for literal format strings passed to `strprintf` and `tfm::format` to make sure the right number of format arguments are passed.

  There is still no compile-time checking if non-literal `std::string` or `bilingual_str` format strings are passed, but this is improved in other PRs:

  - [#31061](https://github.com/bitcoin/bitcoin/pull/31061) implements compile-time checking for translated strings
  - [#31072](https://github.com/bitcoin/bitcoin/pull/31072) increases compile-time checking by using literal strings as format strings, instead of `std::string` and `bilingual_str`
  - [#31149](https://github.com/bitcoin/bitcoin/pull/31149) may drop the `std::string`  overload for `strprintf` to [require](https://github.com/bitcoin/bitcoin/pull/31149#issuecomment-2444579999) compile-time checking

ACKs for top commit:
  maflcko:
    re-ACK fe39acf88f 🕐
  l0rinc:
    ACK fe39acf88f
  hodlinator:
    re-ACK fe39acf88f

Tree-SHA512: f1ddef0c96b9468c5ffe31b42dc19f1922583dd14f2e180b618d992c98614c5cc7db9f9cd917ef503f833bbc7dbec78e4489d0035416dce6840837e1d66d87cb
2024-11-14 10:18:44 +00:00
merge-script
69c0313444
Merge bitcoin/bitcoin#31269: validation: Remove RECENT_CONSENSUS_CHANGE validation result
e80e4c6ff9 validation: Remove RECENT_CONSENSUS_CHANGE validation result (TheCharlatan)

Pull request description:

  The *_RECENT_CONSENSUS_CHANGE variants in the validation result enumerations were always unused. They seem to have been kept around speculatively for a soft fork after segwit, however they were never used for taproot either. This points at them not having a clear purpose. Based on the original pull requests' comments their usage was never entirely clear:
  https://github.com/bitcoin/bitcoin/pull/11639#issuecomment-370234133 https://github.com/bitcoin/bitcoin/pull/15141#discussion_r271039747

  Since they are part of the validation interface and need to be exposed by the kernel library keeping them around may also be confusing to future users of the library.

ACKs for top commit:
  sipa:
    ACK e80e4c6ff9
  naumenkogs:
    ACK e80e4c6ff9
  dergoegge:
    ACK e80e4c6ff9
  ajtowns:
    ACK e80e4c6ff9

Tree-SHA512: 0af17c4435bb1b5a4f43600da30545cbbe95a7d642419cabdefabfb82b9335d92262c1c48be7ca2f2a024078ae9447161228b6f951d2f508a51159a31947fb54
2024-11-14 09:43:47 +00:00
Andre Alves
299e2220e9 gen-manpages: implement --skip-missing-binaries
With --skip-missing-binaries, instead of stopping the execution of
gen-manpages.py when a binary is not found, continue generating
manpages for the available binaries and skip the missing ones.
2024-11-14 01:15:00 -03:00
Ava Chow
4228259294
Merge bitcoin/bitcoin#31000: bench: add support for custom data directory
Some checks are pending
CI / macOS 14 native, arm64, no depends, sqlite only, gui (push) Waiting to run
CI / test each commit (push) Waiting to run
CI / Win64 native, VS 2022 (push) Waiting to run
CI / ASan + LSan + UBSan + integer, no depends, USDT (push) Waiting to run
fa66e0887c bench: add support for custom data directory (furszy)
ad9c2cceda test, bench: specialize working directory name (furszy)

Pull request description:

  Expands the benchmark framework with the existing `-testdatadir` arg,
  enabling the ability to change the benchmark data directory.

  This is useful for running benchmarks on different storage devices, and
  not just under the OS `/tmp/` directory.

  A good use case is #28574, where we are benchmarking the wallet
  migration process on an HDD.

ACKs for top commit:
  maflcko:
    re-ACK fa66e0887c
  achow101:
    ACK fa66e0887c
  tdb3:
    re ACK fa66e0887c
  hodlinator:
    re-ACK fa66e0887c
  pablomartin4btc:
    re-ACK fa66e0887c

Tree-SHA512: 4e87206c07e26fe193c07074ae9eb0cc9c70a58aeea8cf27d18fb5425d77e4b00dbe0e6d6a75c17b427744e9066458b9a84e5ef7b0420f02a4fccb9c5ef4dacc
2024-11-13 19:14:23 -05:00
0xb10c
5736d1ddac tracing: pass if replaced by tx/pkg to tracepoint
The mempool:replaced tracepoint now reports either a txid or a
package hash (previously it always was a txid). To let users know
if a txid or package hash is passed, a boolean argument is added
the the tracepoint.

In the functional test, a ctypes.Structure class for MempoolReplaced
is introduced as Python warns the following when not explcitly
casting it to a ctype:

  Type: 'bool' not recognized. Please define the data with ctypes manually.
2024-11-13 13:27:01 -05:00
Suhas Daftuar
a4ec07f194 doc: add comments for CTxMemPool::ChangeSet 2024-11-13 13:27:01 -05:00
Suhas Daftuar
83f814b1d1 Remove m_all_conflicts from SubPackageState 2024-11-13 13:27:01 -05:00
Suhas Daftuar
d3c8e7dfb6 Ensure that we don't add duplicate transactions in rbf fuzz tests 2024-11-13 13:27:01 -05:00