39739 Commits

Author SHA1 Message Date
Sebastian Falbesoner
fa1d49542e refactor: share and use GenerateRandomKey helper
Making the `GenerateRandomKey` helper available to other modules via
key.{h.cpp} allows us to create random private keys directly at
instantiation of CKey, in contrast to the two-step process of creating
the instance and then having to call `MakeNewKey(...)`.
2023-12-23 13:26:00 +01:00
fanquake
4b1196a985
Merge bitcoin/bitcoin#28880: build: switch to using LLVM 17.x for macOS builds
b335710782c2545e6eeed67b5e1763c07eab26b0 depends: patch around non-determinism in qt (fanquake)
e8ecec45756d7121edfaa1321c597d88ce7ec6db build: rename native_clang to native_llvm (fanquake)
b0c290340c1e1398dc9eb51b3e48a040de3f47d6 Revert "build: Patch Qt to handle minimum macOS version properly" (fanquake)
558250dec15e43b66c7b5a96543dd184925b6209 guix: use clang-toolchain-17 for macOS build (fanquake)
5ddd7c65b415629d4b57fb238d5fd39b049ccf79 build: Bump `native_clang` up to 17.0.6 (Hennadii Stepanov)

Pull request description:

  This is the last step before #21778. We need LLVM 17.x so that lld has `-fixup_chains`.

ACKs for top commit:
  theuni:
    ACK b335710782c2545e6eeed67b5e1763c07eab26b0.
  TheCharlatan:
    ACK b335710782c2545e6eeed67b5e1763c07eab26b0

Tree-SHA512: 8142956196a481178f360258c2e4d924178d552966b713323f29f2deba7e5ec73a3da1c9d79d97c9e7f6aa18ed7429cd6660826aa633e6dde1ac56000b9ad57f
2023-12-22 10:35:06 +00:00
Ava Chow
dca0f231fa
Merge bitcoin/bitcoin#29056: refactor: Print verbose serialize compiler error messages
fae526345de539ab8f9b80100f6dfbe8e1d3284b Allow std::byte C-style array serialization (MarcoFalke)
fa898e6836a8fc2c7b6c8c15ad21818b16a89863 refactor: Print verbose serialize compiler error messages (MarcoFalke)

Pull request description:

  Currently, trying to serialize an object that can't be serialized will fail with a short error message. For example, the diff and the error message:

  ```diff
  diff --git a/src/test/serialize_tests.cpp b/src/test/serialize_tests.cpp
  index d75eb499b4..773f49845b 100644
  --- a/src/test/serialize_tests.cpp
  +++ b/src/test/serialize_tests.cpp
  @@ -62,6 +62,8 @@ public:

   BOOST_AUTO_TEST_CASE(sizes)
   {
  +    int b[4];
  +    DataStream{} << b << Span{b};
       BOOST_CHECK_EQUAL(sizeof(unsigned char), GetSerializeSize((unsigned char)0));
       BOOST_CHECK_EQUAL(sizeof(int8_t), GetSerializeSize(int8_t(0)));
       BOOST_CHECK_EQUAL(sizeof(uint8_t), GetSerializeSize(uint8_t(0)));
  ```

  ```
  ./serialize.h:765:6: error: member reference base type 'const int[4]' is not a structure or union
    765 |     a.Serialize(os);
        |     ~^~~~~~~~~~
  ```
  ```
  ./serialize.h:277:109: error: no matching function for call to 'UCharCast'
    277 | template <typename Stream, typename B> void Serialize(Stream& s, Span<B> span) { (void)/* force byte-type */UCharCast(span.data()); s.write(AsBytes(span)); }
        |                                                                                                             ^~~~~~~~~
  ```

  This is fine. However, it would be more helpful for developers and more accurate by the compiler to explain why each function is not selected.

  Fix this by using C++20 concepts where appropriate.

ACKs for top commit:
  ajtowns:
    reACK fae526345de539ab8f9b80100f6dfbe8e1d3284b
  achow101:
    ACK fae526345de539ab8f9b80100f6dfbe8e1d3284b
  TheCharlatan:
    Re-ACK fae526345de539ab8f9b80100f6dfbe8e1d3284b

Tree-SHA512: e03a684ccfcc5fbcad7f8a4899945a05989b555175fdcaebdb113aff46b52b4ee7b467192748edf99c5c348a620f8e52ab98bed3f3fca88280a64dbca458fe8a
2023-12-21 12:27:21 -05:00
Ava Chow
eefe4bacdd
Merge bitcoin/bitcoin#29027: wallet: fix key parsing check for miniscript expressions
e1281f1bbd884f15d40053c9bc24794d0ce9a58a wallet: fix key parsing check for miniscript expressions in `ParseScript` (brunoerg)

Pull request description:

  In `ParseScript`, when processing miniscript expressions, the way we check for key parsing error is wrong, the actual code is unreachable because we're checking it into `if (node)` (successful parsing) statement.

ACKs for top commit:
  sipa:
    utACK e1281f1bbd884f15d40053c9bc24794d0ce9a58a
  RandyMcMillan:
    utACK e1281f1bbd
  achow101:
    ACK e1281f1bbd884f15d40053c9bc24794d0ce9a58a

Tree-SHA512: c4b3765d32673928a1f6d84ecbaa311870da9a9625753ed15ea57c802a9f16ddafa48c1dc66c0e4be284c5862e7821ed94135498ed9b9f3d7342a080035da289
2023-12-21 12:06:35 -05:00
fanquake
b335710782
depends: patch around non-determinism in qt 2023-12-21 09:37:33 +00:00
fanquake
e8ecec4575
build: rename native_clang to native_llvm
This is more correct, as this is downloading LLVM, and already unpacking
and using more than just clang.
2023-12-21 09:37:33 +00:00
fanquake
b0c290340c
Revert "build: Patch Qt to handle minimum macOS version properly"
This reverts commit 05aca093819be276ac7d648472c6ed5c7d235cc5.
2023-12-21 09:37:33 +00:00
fanquake
558250dec1
guix: use clang-toolchain-17 for macOS build
Version is 17.0.6.
2023-12-21 09:37:33 +00:00
Hennadii Stepanov
5ddd7c65b4
build: Bump native_clang up to 17.0.6 2023-12-21 09:37:32 +00:00
Ava Chow
7524fcff86
Merge bitcoin/bitcoin#28372: fuzz: coinselection, improve min_viable_change/change_output_size
cd810075eddd8b1a7139559b475b56126f70a93d fuzz: coinselection, improve `min_viable_change`/`change_output_size` (brunoerg)

Pull request description:

  Instead of "randomly" fuzzing `min_viable_change` and `change_output_size`, and since they're correlated, this PR changes the approach to fuzz them according to the logic in `CreateTransactionInternal`.

ACKs for top commit:
  murchandamus:
    ACK cd810075eddd8b1a7139559b475b56126f70a93d
  achow101:
    ACK cd810075eddd8b1a7139559b475b56126f70a93d
  furszy:
    Code ACK cd810075eddd

Tree-SHA512: 4539b469f00cdf666078d80c07ed062726f804e390400348148cd3092db9cdc178c6d00ead39aef19acf97badfb6576ce23546d8967387e81c5398d52d7f4404
2023-12-20 19:45:41 -05:00
glozow
3a0f54dd24
Merge bitcoin/bitcoin#29115: [doc]: add doxygen comment describing what CheckPackageLimits returns
19bb65bf255df0f876e37de90fb8c4c6229cdf52 [doc]: add doxygen return comment for CheckPackageLimits (ismaelsadeeq)

Pull request description:

  This PR adds a  doxygen comment on `CheckPackageLimits` describing what the method returns.

  Fixes https://github.com/bitcoin/bitcoin/pull/28863#discussion_r1429805433

ACKs for top commit:
  Sjors:
    utACK 19bb65bf255df0f876e37de90fb8c4c6229cdf52
  Zero-1729:
    utACK 19bb65bf255df0f876e37de90fb8c4c6229cdf52

Tree-SHA512: ccf1cc00a44d3fff60f28ad6766019a9f61b349729eab3cb02bc76b13c2e55441348a1602d806e60e4b2eabeb1f5d1ddacddf86c0bcdb78b078bb3a863b650c2
2023-12-20 10:48:41 +00:00
Ava Chow
e3847f7ac4
Merge bitcoin/bitcoin#29037: Add multiplication operator to CFeeRate
1757452cc55a6dacc62e4258043ee4d711fd281a test: Add tests for CFeeRate multiplication operator (Kashif Smith)
1553c8078698df1058b62e8fdadaf74160977b30 Add multiplication operator to CFeeRate (Murch)

Pull request description:

  Allows us to use
  `coin_selection_params.m_long_term_feerate * 3`
  or
  `3 * coin_selection_params.m_long_term_feerate`
  instead of
  `CFeeRate{coin_selection_params.m_long_term_feerate.GetFee(3000)}`

  inspired by https://github.com/bitcoin/bitcoin/pull/27877#discussion_r1414455724

ACKs for top commit:
  kevkevinpal:
    reACK [1757452](1757452cc5)
  achow101:
    ACK 1757452cc55a6dacc62e4258043ee4d711fd281a
  ajtowns:
    ACK 1757452cc55a6dacc62e4258043ee4d711fd281a ; lgtm
  ismaelsadeeq:
    ACK 1757452cc55a6dacc62e4258043ee4d711fd281a

Tree-SHA512: a86faac1efd1b7688630cd811246533d184d56b62064a7fd9007de95dbf81fa668aa2252253d102fba67517b6a4ca2dc367c5388b8ab936215734d7d370740cf
2023-12-19 19:36:06 -05:00
ismaelsadeeq
19bb65bf25 [doc]: add doxygen return comment for CheckPackageLimits 2023-12-19 17:12:45 +01:00
glozow
dd391944dc
Merge bitcoin/bitcoin#28863: wallet, mempool: propagete checkChainLimits error message to wallet
8dec9c560b53488c1e71d8f74241c7dce42cb387 wallet, mempool: propagete `checkChainLimits` error message to wallet (ismaelsadeeq)

Pull request description:

  * Requested in [#28391 comment](https://github.com/bitcoin/bitcoin/pull/28391#discussion_r1382997719)

  * The error message is static when a new transaction is created and package limit is reached.
  `Transaction has too long of a mempool chain`
  While the [`CTxMempool::CheckPackageLimits`](5800c558eb/src/txmempool.cpp (L199)) provide explicit information about the error message.
  * This PR updates [`CTxMempool::CheckPackageLimits`](5800c558eb/src/txmempool.cpp (L199)) return type to `util::Result<void>`, `CheckPackageLimits` now returns void when package limit is not hit, and returns the error string whenever package limit is hit instead of using out parameter `errString`.
  * The PR updates [`checkChainLimits`](5800c558eb/src/node/interfaces.cpp (L703)) return type to `util::Result<void>`.

  * Now the wallet `CreateTransactionInternal` will have access to the package limit error string whenever its hit.
  * Also Updated functional test to reflect the error message from `CTxMempool::CheckPackageLimits` output.

ACKs for top commit:
  glozow:
    utACK 8dec9c560b
  Sjors:
    utACK 8dec9c560b53488c1e71d8f74241c7dce42cb387
  TheCharlatan:
    Re-ACK 8dec9c560b53488c1e71d8f74241c7dce42cb387

Tree-SHA512: ddeac18aeba6f8e3be0e3fe76bf3db655352e3b415169f1f83ea1e8976a2f3e3de021c8da6880eb8382ab52d545e418e3f4d57adcc68ecb4f390339710ee6f30
2023-12-18 15:35:11 +00:00
fanquake
eef19c4ce2
Merge bitcoin/bitcoin#29064: fuzz: Improve fuzzing stability for minisketch harness
b2fc7a2eda103724ac8cbeaf99df3ce6f5b7d974 [fuzz] Improve fuzzing stability for minisketch harness (dergoegge)

Pull request description:

  The `minisketch` harness has low stability due to:
  * Rng internal to minisketch
  * Benchmarkning for the best minisketch impl

  Fix this by seeding the rng and letting the fuzzer choose the impl.

  Also see #29018.

ACKs for top commit:
  maflcko:
    review ACK b2fc7a2eda103724ac8cbeaf99df3ce6f5b7d974

Tree-SHA512: 3d81414299c6803c34e928a53bcf843722fa8c38e1d3676cde7fa80923f9058b1ad4b9a2941f718303a6641b17eeb28b4a22eda09678102e9fb7c4e31d06f8f2
2023-12-18 13:54:00 +00:00
fanquake
c840dea27e
Merge bitcoin/bitcoin#29078: build: Bump guix time-machine to unlock riscv64 metal
fa87a2072b91c591d2714bc70488b395c22df95d build: Bump guix time-machine to unlock riscv64 metal (MarcoFalke)

Pull request description:

  Closes https://github.com/bitcoin/bitcoin/issues/29020

ACKs for top commit:
  fanquake:
    ACK fa87a2072b91c591d2714bc70488b395c22df95d

Tree-SHA512: a4681f560ebab2f74c2dc8e5a9851d23c1f3fd7235b19343950afdc126d4bc77fc733fa852f55d18656ba592f37a9fff487d8af776f6b952eb4f52c1affa8ba4
2023-12-18 12:54:31 +00:00
fanquake
4b94578fd8
Merge bitcoin/bitcoin#29079: fuzz: Limit p2p fuzz targets to MAX_PROTOCOL_MESSAGE_LENGTH
fa769d3e41daec696452b8a0a8753ba511b0a4b5 fuzz: Limit p2p fuzz targets to MAX_PROTOCOL_MESSAGE_LENGTH (MarcoFalke)

Pull request description:

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

ACKs for top commit:
  dergoegge:
    utACK fa769d3e41daec696452b8a0a8753ba511b0a4b5
  brunoerg:
    crACK fa769d3e41daec696452b8a0a8753ba511b0a4b5

Tree-SHA512: 46f70d1acf4e2f95055c70162909010c6322f8504a810906e1ab4db470dc2525f9a494b8427b254279bc68b1c8b87338c943787fd5249df7113556740701a51a
2023-12-18 12:52:59 +00:00
fanquake
925a750d99
Merge bitcoin/bitcoin#28844: contrib: drop GCC MAX_VERSION to 4.3.0 in symbol-check
ff896d25819da1c1e80591595c922fb093942645 contrib: drop GCC MAX_VERSION to 4.3.0 in symbol-check (fanquake)

Pull request description:

  Reflect the actual symbols used, i.e:

  ```bash
  bitcoind: symbol __bswapsi2 from unsupported version GCC_4.3.0(7)
  ```

ACKs for top commit:
  TheCharlatan:
    ACK ff896d25819da1c1e80591595c922fb093942645

Tree-SHA512: b38ff8f4dd78d2d1c9063c53544dc4f240c3043f142e1581f7ba42f088a509293f6f17cc402c60ac82bff3b36668866b87e0e9e4d10d929484bb4c7a3e654f25
2023-12-18 12:48:14 +00:00
ismaelsadeeq
8dec9c560b wallet, mempool: propagete checkChainLimits error message to wallet
Update CheckPackageLimits to use util::Result to pass the error message
instead of out parameter.

Also update test to reflect the error message from `CTxMempool`
`CheckPackageLimits` output.
2023-12-17 21:13:44 +01:00
Ava Chow
3695ecbf68
Merge bitcoin/bitcoin#29088: tests: Don't depend on value of DEFAULT_PERMIT_BAREMULTISIG
7b45744df33c6a4759eae1a3984f389cbac837c2 tests: ensure functional tests set permitbaremultisig=1 when needed (Anthony Towns)
7dfabdcf860c529772a54b0e8fa235cbb4a78b4d tests: test both settings for permitbaremultisig in p2sh tests (Anthony Towns)

Pull request description:

  Update unit and functional tests so that they continue to work if the default for `-permitbaremultisig` is changed.

ACKs for top commit:
  maflcko:
    lgtm ACK 7b45744df33c6a4759eae1a3984f389cbac837c2
  instagibbs:
    crACK 7b45744df3
  ajtowns:
    > crACK [7b45744](7b45744df3)
  achow101:
    ACK 7b45744df33c6a4759eae1a3984f389cbac837c2
  glozow:
    ACK 7b45744df33c6a4759eae1a3984f389cbac837c2, changed default locally and all tests passed

Tree-SHA512: f89f9e2bb11f07662cfd57390196df9e531064e1bd662e1db7dcfc97694394ae5e8014e9d209b9405aa09195bf46fc331b7fba10378065cdb270cbd0669ae904
2023-12-15 16:22:54 -05:00
MarcoFalke
fae526345d
Allow std::byte C-style array serialization 2023-12-15 15:21:22 +01:00
MarcoFalke
fa898e6836
refactor: Print verbose serialize compiler error messages 2023-12-15 15:20:54 +01:00
fanquake
9776186e9f
Merge bitcoin/bitcoin#29087: Update security.md contact for achow101
e7d66509dc393400079eb885a497dd4e968eade6 Update security.md contact for achow101 (Ava Chow)

Pull request description:

ACKs for top commit:
  maflcko:
    lgtm ACK e7d66509dc393400079eb885a497dd4e968eade6
  0xB10C:
    ACK e7d66509dc393400079eb885a497dd4e968eade6

Tree-SHA512: 73247b612d1c2c99973de90edede0153de4cacbf9c66b87c07cb1429cb80a1b23fb497c7263494f05869605a0a5cd9b2173bc1c64c8beacb5990f69d39101168
2023-12-15 10:13:47 +00:00
brunoerg
cd810075ed fuzz: coinselection, improve min_viable_change/change_output_size
Change it to use same approach from
`CreateTransactionInternal`.
2023-12-15 06:28:42 -03:00
Anthony Towns
7b45744df3 tests: ensure functional tests set permitbaremultisig=1 when needed
The mempool_dust and mempool_sigoplimits functional tests both use bare
multisig txs, so ensure they're allowed by policy.
2023-12-15 18:37:29 +10:00
Anthony Towns
7dfabdcf86 tests: test both settings for permitbaremultisig in p2sh tests 2023-12-15 18:37:24 +10:00
Ava Chow
e7d66509dc Update security.md contact for achow101 2023-12-14 18:14:54 -05:00
Ava Chow
1b2dedbf5c
Merge bitcoin/bitcoin#29040: refactor: Remove pre-C++20 code, fs::path cleanup
66667130416b86208e01a0eb5541a15ea805ac26 refactor: Rename fs::path::u8string() to fs::path::utf8string() (MarcoFalke)
856c88776f8486446602476a1c9e133ac0cff510 ArgsManager: return path by value from GetBlocksDirPath() (Vasil Dimov)
fa3d9304e80c214c8b073f12a7f4b08c5a94af04 refactor: Remove pre-C++20 fs code (MarcoFalke)
fa00098e1a493aa3cce20335d18e7f5f2fb7a4a8 Add tests for C++20 std::u8string (MarcoFalke)
fa2bac08c22182e738a8cabf1b24a9dbf3b092d2 refactor: Avoid copy/move in fs.h (MarcoFalke)
faea30227ba633da5ab257d0247853e0927244bb refactor: Use C++20 std::chrono::days (MarcoFalke)

Pull request description:

  This:

  * Removes dead code.
  * Avoids unused copies in some places.
  * Adds copies in other places for safety.

ACKs for top commit:
  achow101:
    ACK 66667130416b86208e01a0eb5541a15ea805ac26
  ryanofsky:
    Code review ACK 66667130416b86208e01a0eb5541a15ea805ac26. Just documentation change since last review.
  stickies-v:
    re-ACK 66667130416b86208e01a0eb5541a15ea805ac26

Tree-SHA512: 6176e44f30b310d51632ec2d3827c3819905d0ddc6a4b57acfcb6cfa1f9735176da75ee8ed4a4abd1296cb0b83bee9374cc6f91ffac87c19b63c435eeadf3f46
2023-12-14 16:46:54 -05:00
Ava Chow
08e6aaabef
Merge bitcoin/bitcoin#28920: wallet: birth time update during tx scanning
1ce45baed7dd2da3f1cb85c9c25110e5537451ae rpc: getwalletinfo, return wallet 'birthtime' (furszy)
83c66444d0604f0a9ec3bc3f89d4f1a810b7cda0 test: coverage for wallet birth time interaction with -reindex (furszy)
6f497377aa17cb8a590fd7717fa8ededf4249999 wallet: fix legacy spkm default birth time (furszy)
75fbf444c1e13c6ba0e79a34871534c845a13849 wallet: birth time update during tx scanning (furszy)
b4306e3c8db6cbaedc8845c6d21c750b39f682bf refactor: rename FirstKeyTimeChanged to MaybeUpdateBirthTime (furszy)

Pull request description:

  Fixing #28897.

  As the user may have imported a descriptor with a timestamp newer
  than the actual birth time of the first key (by setting 'timestamp=now'),
  the wallet needs to update the birth time when it detects a transaction
  older than the oldest descriptor timestamp.

  Testing Notes:
  Can cherry-pick the test commit on top of master. It will fail there.

ACKs for top commit:
  Sjors:
    re-utACK 1ce45baed7dd2da3f1cb85c9c25110e5537451ae
  achow101:
    ACK 1ce45baed7dd2da3f1cb85c9c25110e5537451ae

Tree-SHA512: 10c2382f87356ae9ea3fcb637d7edc5ed0e51e13cc2729c314c9ffb57c684b9ac3c4b757b85810c0a674020b7287c43d3be8273bcf75e2aff0cc1c037f1159f9
2023-12-14 16:27:40 -05:00
Ava Chow
4ad5c71adb
Merge bitcoin/bitcoin#28051: Get rid of shutdown.cpp/shutdown.h, use SignalInterrupt directly
6db04be102807ee0120981a9b8de62a55439dabb Get rid of shutdown.cpp/shutdown.h, use SignalInterrupt directly (Ryan Ofsky)
213542b625a6a4885fcbdfe236629a5f381eeb05 refactor: Add InitContext function to initialize NodeContext with global pointers (Ryan Ofsky)
feeb7b816affa790e02e7ba0780c4ef33d2310ff refactor: Remove calls to StartShutdown from KernelNotifications (Ryan Ofsky)
6824eecaf1e74624cf149ed20abd9145c49d614a refactor: Remove call to StartShutdown from stop RPC (Ryan Ofsky)
1d92d89edbb1812dc353084c62772ebb1024d632 util: Get rid of uncaught exceptions thrown by SignalInterrupt class (Ryan Ofsky)
ba93966368d3aaa426b97837ef475ec5aa612f5f refactor: Remove call to ShutdownRequested from IndexWaitSynced (Ryan Ofsky)
42e5829d9710ebebda5de356fab01dd7c149d5fa refactor: Remove call to ShutdownRequested from HTTPRequest (Ryan Ofsky)
73133c36aa9cc09546eabac18d0ea35274dd5d72 refactor: Add NodeContext::shutdown member (Ryan Ofsky)
f4a8bd6e2f03e786a84dd7763d1c04665e6371f2 refactor: Remove call to StartShutdown from qt (Ryan Ofsky)
f0c73c1336bee74fe2d58474ac36bca28c219e85 refactor: Remove call to ShutdownRequested from rpc/mining (Ryan Ofsky)
263b23f0082c60516acced1b03abb8e4d8f9ee46 refactor: Remove call to ShutdownRequested from chainstate init (Ryan Ofsky)

Pull request description:

  This change drops `shutdown.h` and `shutdown.cpp` files, replacing them with a `NodeContext::shutdown` member which is used to trigger shutdowns directly. This gets rid of an unnecessary layer of indirection, and allows getting rid of the `kernel::g_context` global.

  Additionally, this PR tries to improve error handling of `SignalInterrupt` code by marking relevant methods `[[nodiscard]]` to avoid the possibility of uncaught exceptions mentioned https://github.com/bitcoin/bitcoin/pull/27861#discussion_r1255496707.

  Behavior is changing In a few cases which are noted in individual commit messages. Particularly: GUI code more consistently interrupts RPCs when it is shutting down, shutdown state no longer persists between unit tests, the stop RPC now returns an RPC error if requesting shutdown fails instead of aborting, and other failed shutdown calls now log errors instead of aborting.

  This PR is a net reduction in lines of code, but in some cases the explicit error handling and lack of global shutdown functions do make it more verbose. The verbosity can be seen as good thing if it discourages more code from directly triggering shutdowns, and instead encourages code to return errors or send notifications that could be translated into shutdowns. Probably a number of existing shutdown calls could just be replaced by better error handling.

ACKs for top commit:
  achow101:
    ACK 6db04be102807ee0120981a9b8de62a55439dabb
  TheCharlatan:
    Re-ACK 6db04be102807ee0120981a9b8de62a55439dabb
  maflcko:
    ACK 6db04be102807ee0120981a9b8de62a55439dabb 👗
  stickies-v:
    re-ACK 6db04be102807ee0120981a9b8de62a55439dabb

Tree-SHA512: 7a34cb69085f37e813c43bdaded1a0cbf6c53bd95fdde96f0cb45346127fc934604c43bccd3328231ca2f1faf712a7418d047ceabd22ef2dca3c32ebb659e634
2023-12-14 15:14:00 -05:00
dergoegge
b2fc7a2eda [fuzz] Improve fuzzing stability for minisketch harness
* Seed minisketch rng
* Use fuzzer chosen minisketch impl instead of benchmarking for the best
  impl
2023-12-14 20:10:21 +00:00
Ava Chow
9860471708
Merge bitcoin/bitcoin#29070: test: add TestNode wait_until helper
bf0f7dbec6590a54ec890e7a2ca5d85427995334 test: add TestNode wait_until helper (Nikodemas Tuckus)

Pull request description:

  Add `wait_until` method that wraps the `wait_until_helper_internal` call.

  Closes https://github.com/bitcoin/bitcoin/issues/29029.

ACKs for top commit:
  maflcko:
    lgtm ACK bf0f7dbec6590a54ec890e7a2ca5d85427995334
  mohamedawnallah:
    LGTM! Code Review ACK bf0f7dbec6
  achow101:
    ACK bf0f7dbec6590a54ec890e7a2ca5d85427995334
  BrandonOdiwuor:
    Code review ACK bf0f7dbec6590a54ec890e7a2ca5d85427995334

Tree-SHA512: 05aab589c814f51a14e1483eb57c10b88385714e3eb2d0973c0ee2877f2b963a76837f34215fe2e6bd1c8d735f5af7dd2098331e1eda28587f39e513bc6e1a6a
2023-12-14 14:19:16 -05:00
Ava Chow
4d7b787ad6
Merge bitcoin/bitcoin#29022: Make bitcoin-tx replaceable value optional
98afe7866185ed4157ffc581763e11dc02fcbae0 doc: Update bitcoin-tx replaceable documentation (Kashif Smith)
94feaf2b66d68b3c849375e1d9d3a81c17cd2045 tests: Add unit tests for bitcoin-tx replaceable command (Kashif Smith)
c2b836b119eeed8727d73bcca5e95055eb93fb1a bitcoin-tx: Make replaceable value optional (Kashif Smith)

Pull request description:

  This fixes #28638. The issue was originally raised by dooglus, who also suggested the patch found in this code. Additionally, test coverage has been added and documentation has been updated.

ACKs for top commit:
  achow101:
    ACK 98afe7866185ed4157ffc581763e11dc02fcbae0
  pinheadmz:
    ACK 98afe7866185ed4157ffc581763e11dc02fcbae0
  hernanmarino:
    Tested ACK 98afe7866185ed4157ffc581763e11dc02fcbae0
  instagibbs:
    untested ACK 98afe78661

Tree-SHA512: ea1384aba7b0014c8cbeb7280d66b1e617d406fb02471dff33873057132b80518c94c7caa4b0426c26d17ce8aa393107de319dde781ace8df72f0314c8c75159
2023-12-14 13:54:00 -05:00
MarcoFalke
6666713041
refactor: Rename fs::path::u8string() to fs::path::utf8string() 2023-12-14 16:22:40 +01:00
Hennadii Stepanov
e6dbf48c64
Merge bitcoin/bitcoin#29080: ci: Set HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK to avoid unrelated failures
43c3246af774bda284111056268a814477f9b256 ci: Set `HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK` to avoid failures (Hennadii Stepanov)

Pull request description:

  Homebrew attempts to check for outdated dependents or those with broken linkage. Such behavior might lead to failures when Homebrew updates them on old macOS images. For example, https://github.com/bitcoin/bitcoin/actions/runs/7199058794/job/19609891263 using the macOS image version `20231025.2`.

  This PR prevents such behavior.

ACKs for top commit:
  maflcko:
    lgtm ACK 43c3246af774bda284111056268a814477f9b256
  ismaelsadeeq:
    re ACK 43c3246af7

Tree-SHA512: cbe3cef5adf3f00eb618ba17aad3dc76c0c5d11142122a26b93619ae47dc50771e9e095caa898213325ed6ff41c07119429c0a9094bb98ead5601855d07bb2ea
2023-12-14 13:30:32 +00:00
Hennadii Stepanov
43c3246af7
ci: Set HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK to avoid failures
Homebrew attempts to check for outdated dependents or those with broken
linkage. Such behavior might lead to failures when Homebrew updates them
on old macOS images.

This change prevents such behavior.
2023-12-14 12:18:53 +00:00
MarcoFalke
fa769d3e41
fuzz: Limit p2p fuzz targets to MAX_PROTOCOL_MESSAGE_LENGTH 2023-12-14 12:39:02 +01:00
MarcoFalke
fa87a2072b
build: Bump guix time-machine to unlock riscv64 metal 2023-12-14 11:41:40 +01:00
Ava Chow
9f0f83d650
Merge bitcoin/bitcoin#29065: bench: wallet, fix change position out of range error
37c75c58202f89b752500f76c872d7f8caf6bdb3 test: wallet, fix change position out of range error (furszy)

Pull request description:

  Fixes #29061. Only the benchmark is affected.

  Since #25273, the behavior of 'inserting change at a random position'
  is instructed by passing ´std::nullopt´ instead of -1.

  Also, added missing documentation about the meaning of
  'change_pos=std::nullopt' inside 'CWallet::CreateTransaction()'

ACKs for top commit:
  achow101:
    ACK 37c75c58202f89b752500f76c872d7f8caf6bdb3
  kevkevinpal:
    ACK [37c75c5](37c75c5820)
  BrandonOdiwuor:
    ACK 37c75c58202f89b752500f76c872d7f8caf6bdb3

Tree-SHA512: d9a8d8533540455716a5090fcf407573cad9f0d0018a05f903f89e51620302f9b256318db6f7338b85c047f7fab372d724e916b1721d7ed302dbf3d845b08734
2023-12-13 12:45:30 -05:00
fanquake
019ec8a601
Merge bitcoin/bitcoin#29075: msvc: Fix test\config.ini content
f76e59d02ea819928b45bd18d9c3a5b1aab36fe2 msvc: Fix `test\config.ini` content (Hennadii Stepanov)

Pull request description:

  This PR:
  1. Closes https://github.com/bitcoin/bitcoin/issues/29074.
  2. Enables the `tool_signet_miner.py` test.

ACKs for top commit:
  fanquake:
    ACK f76e59d02ea819928b45bd18d9c3a5b1aab36fe2

Tree-SHA512: d6e4f5b1c2018426b5b3e3239d7a2e993ae4f6598e4afc7ea484a1d2cb203b5a9fa011bbc5cbda5c596d84f99a632a776b21fa48a1ed70930fbbec0241782f93
2023-12-13 16:30:43 +00:00
Hennadii Stepanov
f76e59d02e
msvc: Fix test\config.ini content 2023-12-13 15:00:34 +00:00
fanquake
0830dcb313
Merge bitcoin/bitcoin#29066: Bump minimum required Boost version due to migration to C++20
49a90915aa3ee8e3a7e163f23a55de931faf8523 build: Bump minimum required Boost to 1.73.0 to support C++20 (Hennadii Stepanov)

Pull request description:

  Boost versions <1.73 have C++20-specific bugs that were fixed in the following commits:
  - 15fcf21356
  - 495c095dc0

  I tested [`libboost1.71-dev`](https://packages.ubuntu.com/focal/libboost1.71-dev) in Ubuntu 20.04 and Boost 1.71, 1.72, 1.73 in our depends build system.

  Closes https://github.com/bitcoin/bitcoin/issues/29063.

ACKs for top commit:
  fanquake:
    ACK 49a90915aa3ee8e3a7e163f23a55de931faf8523

Tree-SHA512: b8ebc08af85abfa3fda70961bd1136ee9e5149dd76a3f901e43acba624d231971873cba5cbf30837f9e5ab58790b8330f241a76cb76d8cf5dce5ad0cca33fba8
2023-12-13 14:32:00 +00:00
fanquake
f0e829022a
Merge bitcoin/bitcoin#28967: build: disable external-signer for Windows
308aec3e5655327d98e0428d8205d246f24d6af5 build: disable external-signer for Windows (fanquake)
35537318a19360ddf1ea8f0c1e6d8ad49e635516 ci: remove --enable-external-signer from win64 job (fanquake)

Pull request description:

  It's come to light that Boost ASIO (a Boost Process sub dep) has in some
  instances, been quietly  initialising our network stack on Windows (see
  PR https://github.com/bitcoin/bitcoin/pull/28486 and discussion in https://github.com/bitcoin/bitcoin/issues/28940).

  This has been shielding a bug in our own code, but the larger issue
  is that Boost Process/ASIO is running code before main, and doing things
  like setting up networking. This undermines our own assumptions about
  how our binary works, happens before we run any sanity checks,
  and before we call our own code to setup networking. Note that ASIO also
  calls WSAStartup with version `2.0`, whereas we call with `2.2`.

  It's also not clear why a feature like external signer would have a
  dependency that would be doing anything network/socket related,
  given it only exists to spawn a local process.

  See also the discussion in https://github.com/bitcoin/bitcoin/issues/24907. Note that the maintaince of Boost Process in general,
  has not really improved. For example, rather than fixing bugs like https://github.com/boostorg/process/issues/111,
  i.e, https://github.com/boostorg/process/pull/317, the maintainer chooses to just wrap exception causing overflows
  in try-catch blocks: 0c42a58eac. These changes get merged in large,
  unreviewed PRs, i.e https://github.com/boostorg/process/pull/319.

  This PR disables external-signer on Windows for now. If, in future, someone
  changes how Boost Process works, or replaces it entirely with some
  properly reviewed and maintained code, we could reenable this feature on
  Windows.

ACKs for top commit:
  hebasto:
    re-ACK 308aec3e5655327d98e0428d8205d246f24d6af5.
  TheCharlatan:
    ACK 308aec3e5655327d98e0428d8205d246f24d6af5

Tree-SHA512: 7405f7fc9833eeaacd6836c4e5b1c1a7845a40c1fdd55c1060152f8d8189e4777464fde650e11eb1539556a75dddf49667105987078b1457493ee772945da66e
2023-12-13 11:55:21 +00:00
fanquake
8431a19537
Merge bitcoin/bitcoin#29068: test: Actually fail when a python unit test fails
fa0534d7e47d44428d3f9dea6d2f6b8e86df22d4 test: Actually fail when a python unit test fails (MarcoFalke)

Pull request description:

  Currently python unit test failures are ignored.

  Fix this.

ACKs for top commit:
  theStack:
    ACK fa0534d7e47d44428d3f9dea6d2f6b8e86df22d4
  BrandonOdiwuor:
    ACK fa0534d7e47d44428d3f9dea6d2f6b8e86df22d4

Tree-SHA512: c136be4c8d861d966f380e04d5d14b711b90c4011101302dae1332496e493207c5c673927586ed35b02b61a0b050bf45053a31e6ff766ec52f1d054caf0985e2
2023-12-13 11:23:59 +00:00
fanquake
54f6756e52
Merge bitcoin/bitcoin#28846: depends: fix libmultiprocess build on aarch64
bde8d63b17637c507a543cebe90f2998b5847373 depends: build libmultiprocess with position independant code (fanquake)
506634d79d6427925cd458f67799fe59e0ab14dd depends: always install libmultiprocess to /lib (fanquake)
beb309626381bf189cd2ae8bde83078b9de47c6a depends: always install capnp to /lib (fanquake)

Pull request description:

  Change to always install libmultiprocess into `lib/`. On some systems (my Fedora aarch64 box), libmultiprocess was being installed into `lib64/`, and then configure would fail to pick it up, because we only add `lib/` to pkgconfig/ldflags out of depends. Rather than adding lib64 to those, I opted for installing libmultiprocess into lib, with every other dependency we build.

  This was broken in our build after https://github.com/chaincodelabs/libmultiprocess/pull/79 upstream.

ACKs for top commit:
  ryanofsky:
    Code review ACK bde8d63b17637c507a543cebe90f2998b5847373. Only changes since last review were reverting the native_capnp change as suggested, and changing the order of the first two commits.

Tree-SHA512: ddd547e4ac224f2f199c569efd91104db7f2c243b124f9535aa0d9377315775ac566d699101580ce45ddd6676ad3e0c8cbe256334eeed9548205c2fa04d02102
2023-12-13 10:44:22 +00:00
Nikodemas Tuckus
bf0f7dbec6 test: add TestNode wait_until helper 2023-12-13 11:24:03 +01:00
fanquake
f48a789385
Merge bitcoin/bitcoin#28075: util: Remove DirIsWritable, GetUniquePath
fa3da629a1aebcb4500803d7417feed8e34285b0 Remove DirIsWritable, GetUniquePath (MarcoFalke)
fad3a9793b71df5bb0b17cc3758cf3466d08c015 Return LockResult::ErrorWrite in LockDirectory (MarcoFalke)
fa0afe740843c308f6287b923f1f4d758cf2a3f6 refactor: Return enum in LockDirectory (MarcoFalke)

Pull request description:

  `GetUniquePath` is only used in tests and in `DirIsWritable`. The check by `DirIsWritable` is redundant with the check done in `LockDirectory`.

  Fix the redundancy by removing everything, except `LockDirectory`.

ACKs for top commit:
  TheCharlatan:
    Re-ACK fa3da629a1aebcb4500803d7417feed8e34285b0
  hebasto:
    ACK fa3da629a1aebcb4500803d7417feed8e34285b0, I have reviewed the code and it looks OK.

Tree-SHA512: e95f18cd586de7582e9c08ac7ddb860bfcfcbc8963804f45c5784c5e4c0598dc59ae7e45dd4daf30a5020dbf8433f5db2ad06e46a8676371982003790043c6c9
2023-12-13 10:06:16 +00:00
MarcoFalke
fa0534d7e4
test: Actually fail when a python unit test fails 2023-12-12 21:18:08 +01:00
Hennadii Stepanov
49a90915aa
build: Bump minimum required Boost to 1.73.0 to support C++20
Boost versions <1.73 have C++20-specific bugs that were fixed in the
following commits:
- 15fcf21356
- 495c095dc0
2023-12-12 19:59:52 +00:00
furszy
37c75c5820
test: wallet, fix change position out of range error
Since #25273, the behavior of 'inserting change at a random
position' is instructed by passing std::nullopt instead of -1.

Also, added missing documentation about the meaning of
'change_pos=std::nullopt' inside 'CWallet::CreateTransaction()'
2023-12-12 15:20:38 -03:00