Commit Graph

48502 Commits

Author SHA1 Message Date
Ava Chow
a7c30da1f6 Merge bitcoin/bitcoin#34873: net: fix premature stale flagging of unpicked private broadcast txs
325afe664d net: delay stale evaluation and expose time_added in private broadcast (Mccalabrese)
999d18ab1c net: introduce TxSendStatus internal state container (Mccalabrese)

Pull request description:

  **Motivation**
  Currently, freshly added transactions in `private_broadcast` are almost immediately flagged and logged as stale by the `resend-stale` job.

  **The Bug**
  `m_transactions` maps a transaction to a `std::vector<SendStatus>`. When `try_emplace` adds a new transaction, this vector is empty. When `GetStale()` runs, `DerivePriority()` evaluates the empty vector and returns a default `Priority` struct where `last_confirmed` evaluates to the Unix Epoch (Jan 1, 1970). The stale checker sees a 50-year-old timestamp and flags it on the next resend-stale cycle.

  **The Fix**
  Rather than modifying the transient `Priority` struct or creating a "Zombie Transaction" edge case by ignoring transactions with 0 picks, this PR modifies the state container:
  * Wraps the `SendStatus` vector in a new `TxSendStatus` struct inside `private_broadcast.h`.
  * `TxSendStatus` automatically captures `time_added` upon emplace.
  * `GetStale()` now checks `p.num_confirmed == 0` to measure age against `time_added` using a new 5-minute `INITIAL_STALE_DURATION` grace period, falling back to `last_confirmed` and the standard 1-minute `STALE_DURATION` once network interaction begins.

  **Additional Polish**
  * Exposed `time_added` via the `getprivatebroadcastinfo`  RPC endpoint so users can see when a transaction entered the queue.
  * Added a dedicated `stale_unpicked_tx` test case and updated `private_broadcast_tests.cpp` to properly mock the passage of time for the new grace period.
  Closes #34862

ACKs for top commit:
  achow101:
    ACK 325afe664d
  andrewtoth:
    ACK 325afe664d
  vasild:
    ACK 325afe664d

Tree-SHA512: b7790aa5468f7c161ed93e99e9a6d8b4db39ff7d6d6a920764afd18825e08d83bc30b3fb0debeb6175730b5d2496c6be67f3be8674be93f4d07b1e77d17b4a14
2026-04-03 17:46:32 -07:00
Ava Chow
fa1f4feac4 Merge bitcoin/bitcoin#34965: cli: Return more helpful authentication errors
257769a7ce qa: Improve error message (Hodlinator)
20a94c1524 cli: Clearer error messages on authentication failure (Hodlinator)
84c3f8d325 refactor(rpc): GenerateAuthCookieResult -> AuthCookieResult (Hodlinator)

Pull request description:

  Increases precision of error messages to help the user correct authentication issues.

  Inspired by #34935.

ACKs for top commit:
  davidgumberg:
    utACK 257769a7ce
  maflcko:
    review ACK 257769a7ce 🦇
  achow101:
    ACK 257769a7ce
  janb84:
    concept ACK 257769a7ce

Tree-SHA512: 1799db4b2c0ab3b67ed3d768da08c6be4f4beaad91a77406884b73950b420c8264c70b8e60a26a9e6fac058370f6accdb73c821d19bebb6edfbc8d7b84d01232
2026-04-02 15:55:28 -07:00
Ava Chow
4b98962731 Merge bitcoin/bitcoin#34448: ci, iwyu: Fix warnings in src/util and treat them as errors
8b49e2dd4e ci, iwyu: Fix warnings in `src/util` and treat them as errors (Hennadii Stepanov)
6953363be8 refactor: Move license info into new module (Hennadii Stepanov)
eb750d277b iwyu: Remove workaround for issue that has been fixed upstream (Hennadii Stepanov)

Pull request description:

  This PR [continues](https://github.com/bitcoin/bitcoin/pull/33725#issuecomment-3466897433) the ongoing effort to enforce IWYU warnings.

  See [Developer Notes](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#using-iwyu).

ACKs for top commit:
  achow101:
    ACK 8b49e2dd4e
  maflcko:
    review ACK 8b49e2dd4e 👘
  BrandonOdiwuor:
    Code Review ACK 8b49e2dd4e

Tree-SHA512: f6a21d58947f714be7ad3c230857a7c974ac4c1b5099f1e8e8db9b6e3e01ba12270481e39a1c3cb8d93f326cea4f33c662becc65c80e46a38c6b49bb0c2f523f
2026-04-02 15:48:53 -07:00
Ava Chow
59199fa5ea Merge bitcoin/bitcoin#33908: kernel: add context‑free block validation API (btck_check_block_context_free) with POW/Merkle flags
0587c56091 kernel: Expose context-free block validation (w0xlt)
71f827c3c2 kernel: Expose consensus parameters (`btck_ConsensusParams`) (w0xlt)

Pull request description:

  This PR exposes Bitcoin Core’s context‑free block checks to library users via a new C API entry point, `btck_check_block_context_free`.

  Callers can validate a block’s structure (size/weight, coinbase rules, per‑tx context‑free checks) and optionally re‑run Proof‑of‑Work and Merkle‑root verification without touching chainstate, the block index, or the UTXO set.

  Rationale
  Clients embedding the kernel need a pure block sanity check without requiring node state or disk writes (candidate block validation, for example). This API offers that surface in a single call, with optional PoW/Merkle toggles to avoid redundant work when the header has already been validated or when Merkle verification is deferred.

ACKs for top commit:
  yuvicc:
    re-ACK 0587c56091
  achow101:
    ACK 0587c56091
  sedited:
    ACK 0587c56091

Tree-SHA512: 6bd53e4964909335d1f2fee30ff96c95a8dd2c84bcdfe11c50ba369301822e5dea9bbe2376bb6d6b4652875152071eb0446657042b00429f29581da4fcea71a9
2026-04-02 15:28:07 -07:00
Ava Chow
8cc690ea9b Merge bitcoin/bitcoin#34379: wallet: fix gethdkeys RPC for descriptors with partial xprvs
43c528aba9 wallet, test: update `gethdkeys` functional test (rkrux)
6e3a0afc2f wallet: fix `gethdkeys` RPC for descriptors with partial xprvs (rkrux)

Pull request description:

  Fixes #34378

  A non-watch-only wallet allows to import descriptors with partial private keys, eg: a multisig descriptor with one private key and one public key. In case an xpub is imported in any such descriptors whose private key the wallet doesn't have, then the `gethdkeys` RPC throws an unhandled error like below when the private keys are requested.

  This fix ensures that such calls are properly handled by conditionally finding the corresponding xprv and the related functional test is accordingly updated.

  ```
  ➜ bitcoincli -named gethdkeys private=true
  error code: -1
  error message:
  map::at:  key not found
  ```

ACKs for top commit:
  achow101:
    ACK 43c528aba9
  w0xlt:
    ACK 43c528aba9
  Eunovo:
    Tested ACK 43c528aba9

Tree-SHA512: 106e02ee368a3fa94d116f54f2fa71f9886e4753e331b91ce13a346559d5497ef6cd7ddaa8736fcfe1a7ac427a44d647fb75e523eb72f917fa866adbe0dbad30
2026-04-01 14:32:49 -07:00
Ava Chow
194f57109d Merge bitcoin/bitcoin#34976: lint: Clarify rmtree/remove_all error message with preferred alternatives
fa955af618 lint: Clarify rmtree/remove_all error message with preferred alternatives (MarcoFalke)

Pull request description:

  An error message without a suggestion to fix will often lead developers to come up with a creative solution to side-step the grep in the linter (such as using an `auto` alias or other style-change).

  Try to avoid this by mentioning a recommended solution.

ACKs for top commit:
  davidgumberg:
    ACK fa955af618
  achow101:
    ACK fa955af618
  hodlinator:
    ACK fa955af618

Tree-SHA512: d5741b2fdb1cfcffc26144c3bb78478e46d7ecb5c3340cbb09584fe1274a3cc8c6872b997e33b8bd2097630d916133a3f5bf41a1d09527e597be9829d6d3e51b
2026-04-01 13:28:42 -07:00
Ava Chow
1189702d2f Merge bitcoin/bitcoin#34982: kernel: Remove NONNULL annotation from destroy method
75608547b4 kernel: Remove NONNULL annotation from destroy method (Alexander Wiederin)

Pull request description:

  Follow-up to https://github.com/bitcoin/bitcoin/pull/33796#discussion_r2959817508

  ### Summary
  This PR removes the `BITCOINKERNEL_ARG_NONNULL` annotation from the `btck_block_validation_state_destroy` method in the Kernel API.

  ### Motivation
  No other *_destroy function in the Kernel API carries the NONNULL annotation. Following the convention set by free(), destroy functions should accept null pointers.

  ### Usage:
  Before:
  ```c
  btck_BlockValidationState* state = NULL;
  btck_block_validation_state_destroy(state); // violates nonnull contract
  ```

  After:
  ```c
  btck_BlockValidationState* state = NULL;
  btck_block_validation_state_destroy(state); // well-defined
  ```

ACKs for top commit:
  yuvicc:
    lgtm! ACK 75608547b4
  kevkevinpal:
    ACK [7560854](75608547b4)
  achow101:
    ACK 75608547b4
  janb84:
    ACK 75608547b4
  theStack:
    ACK 75608547b4
  w0xlt:
    ACK 75608547b4
  stickies-v:
    ACK 75608547b4

Tree-SHA512: 9577098940f49b8f7fd1fb20afe750e9eaaf9d90d25ec3c4f423de223a1fbd0bca6d520061f576eb3923f18e1f2744b3f60d0d0715dfa3832fea83cb538170c2
2026-04-01 11:34:13 -07:00
Ava Chow
52c3381fa8 Merge bitcoin/bitcoin#33506: test: sock: Enable all socket tests on Windows
9316d96240 test: sock: Enable socket pair tests on Windows (David Gumberg)

Pull request description:

  Some `class Sock`  tests were previously disabled because Windows lacks [`socketpair(2)`](https://man7.org/linux/man-pages/man2/socketpair.2.html) which is used as a helper function in the socket tests, but is not strictly necessary or related to the `Socket` class under testing. This PR adds a `CreateSocketPair()` helper which creates a sender socket and receiver socket with a TCP connection, enabling these test cases for Windows. This also enables future tests that require more granular control over sockets than what `socketpair()` allows for, like using `setsockopt()` before connecting a socket.

  This change is generally an improvement, but is also broken out of a [branch](github.com/davidgumberg/bitcoin/tree/2025-09-02-0xB10C-prefill-rebase) that does compact block prefilling up to the available bytes in the connection's current TCP window (see [delving post](https://delvingbitcoin.org/t/stats-on-compact-block-reconstructions/1052/34)). Creating connected socket pairs is useful for added tests in that branch that validate querying the current TCP window state, and without this change those tests don't run on Windows.

ACKs for top commit:
  achow101:
    ACK 9316d96240
  sedited:
    ACK 9316d96240
  w0xlt:
    reACK 9316d96240

Tree-SHA512: 23ad7070555bb934b0eb18d114e918bd2d50657d20d2221d8c98cd0e558e27e32e5ef89e8074c108a90d7309e539318d23cea43d2ad8eb10e635b114f5f1a87d
2026-04-01 11:22:40 -07:00
Hennadii Stepanov
24609389a4 Merge bitcoin/bitcoin#34986: docs: remove duplicate ///@} from bitcoinkernel.h
7abf6f6fb6 docs: remove duplicate ///@} from bitcoinkernel.h (Alexander Wiederin)

Pull request description:

  ### Summary

  Removes a redundant **group end marker** in the kernel API docs.

  ### Motivation

  Cleans kernel API documentation.

ACKs for top commit:
  maflcko:
    lgtm ACK 7abf6f6fb6
  kevkevinpal:
    ACK [7abf6f6](7abf6f6fb6)
  theStack:
    ACK 7abf6f6fb6

Tree-SHA512: a5b9895c2f2bbce7a13197ab18e4f1fafe3e27062f16d63a077cd6b8633f5c82014167f7bb3142217f772a96fc3b41be49d0753e6ef8e0693afe59d030c74432
2026-04-01 18:33:59 +01:00
Alexander Wiederin
7abf6f6fb6 docs: remove duplicate ///@} from bitcoinkernel.h 2026-04-01 16:47:51 +02:00
Alexander Wiederin
75608547b4 kernel: Remove NONNULL annotation from destroy method
No other *_destroy function in the Kernel API carries this annotation.
Following the convention set by free(), destroy functions should accept
null pointers.
2026-04-01 13:23:54 +02:00
MarcoFalke
fa955af618 lint: Clarify rmtree/remove_all error message with preferred alternatives 2026-04-01 10:21:52 +02:00
merge-script
8e789322c5 Merge bitcoin/bitcoin#34944: guix: Clean up module list in manifest
325f743eed guix: Clean up module list in manifest (Hennadii Stepanov)

Pull request description:

  These modules are no longer in use:

  1. `cmake-build-system` since bitcoin/bitcoin#34550.

  2. `gnu-build-system` since bitcoin/bitcoin#34627.

  3. `download` since bitcoin/bitcoin#34550.

  4. `cc-for-target` from `utils` since bitcoin/bitcoin#34627.

ACKs for top commit:
  janb84:
    ACK 325f743eed

Tree-SHA512: 5f32a74cc5c13cd4cd181f6d23fe5198e71a0d8f18378f4a2e38aa7a06eedd6f2c5cfbeea9b8eb50baac4d6c5c5bf6aa4d898143c8f2f9899871c6c2991d1b59
2026-04-01 10:53:21 +08:00
merge-script
8b461c530e Merge bitcoin/bitcoin#34956: depends, qt: Fix build on aarch64 macOS 26.4
3aeccb7d73 depends, qt: Fix build on aarch64 macOS 26.4 (Hennadii Stepanov)

Pull request description:

  Fixes https://github.com/bitcoin/bitcoin/issues/34951.

  See an upstream issue: https://qt-project.atlassian.net/browse/QTBUG-145239.

ACKs for top commit:
  fanquake:
    ACK 3aeccb7d73

Tree-SHA512: ab8bc42072077d72068eac17ba5d69c98f313dd4e13c5ffcd3a3cc33eb5f8afe2495f470410edc4a8ee60a6c0942c5b117dcf0a46b2194388db2eee82ee69f86
2026-04-01 08:27:50 +08:00
merge-script
aeb667f6b7 Merge bitcoin/bitcoin#33343: help: enrich help text for -loadblock
2e041b4905 help: enrich help text for `-loadblock` (Hao Xu)

Pull request description:

  `-loadblock` doesn't support XOR-ed files, mention it in its help text to avoid troubles for users.

ACKs for top commit:
  maflcko:
    lgtm ACK 2e041b4905
  sedited:
    ACK 2e041b4905

Tree-SHA512: 1883824c15687799d60ddabc53d5dc2c274e56c8292da5e7e412adaef65abf70c7f778ef7675c65f738c1e4855e5b0f929e87631b0a52695873e58f8245b3a8d
2026-04-01 08:15:54 +08:00
Ava Chow
0831173c01 Merge bitcoin/bitcoin#34640: wallet: rpc: Improve error message for low feerates.
98fcd7af23 wallet: rpc: Improve error message for low feerates. (David Gumberg)

Pull request description:

  Giving the user a hint about what action to take when they encounter an error related to a feerate that is below the minimum. I encountered this myself not knowing about `-mintxfee` and the manpage was slightly less than clear,

  ```
         -mintxfee=<amt>

                Fee rates (in BTC/kvB) smaller than this are considered zero fee for  transaction  creation
                (default: 0.00001)
  ```

ACKs for top commit:
  achow101:
    ACK 98fcd7af23
  ismaelsadeeq:
    ACK  98fcd7af23
  w0xlt:
    ACK 98fcd7af23

Tree-SHA512: 8471bfd5682ca59137541ab4da670e85947cf7812baa9e07d816e352fccfb5e0e71a06c2baf1a5422d78a7da8c08b9fcbb73d85cc9daba88b7c22e802abe5b2e
2026-03-31 11:38:44 -07:00
merge-script
d0ed369b3b Merge bitcoin/bitcoin#34049: rpc: Disallow captures in RPCMethodImpl
5a81d73a81 scripted-diff: rpc: Don't pointlessly capture in RPCMethod lambdas (Anthony Towns)
4e789299af scripted-diff: rpc: Rename RPCHelpMan to RPCMethod (Anthony Towns)

Pull request description:

  When defining `RPCHelpMan` objects, we usually return a lambda, and mostly we define those via `[&](...) { ... }` which explicitly captures any parameters or local variables by reference. If we were to actually use any of those captures (we don't), we would invoke undefined behaviour. So instead, convert all the `[&]` to `[]` to avoid capturing.

  While we're at it, rename `RPCHelpMan` to `RPCMethod`, reflecting its greater responsibility since #19386.

ACKs for top commit:
  maflcko:
    review ACK 5a81d73a81 🏣
  stickies-v:
    ACK 5a81d73a81
  rkrux:
    code review ACK 5a81d73a81

Tree-SHA512: 72e9232857ba5bf4c346fb963a2028047f7c7e9b420ef58b3108669204bfbb6952342cfcfd2e8a06f813a21545abf7fc8b0ad422f00d7ec9c1134626cd1650e6
2026-04-01 00:08:28 +08:00
merge-script
5deed3deab Merge bitcoin/bitcoin#34958: test: mining: add coverage for GBT's "coinbasevalue" result field
12c3c3f81d test: mining: add coverage for GBT's "coinbasevalue" result field (Sebastian Falbesoner)

Pull request description:

  This PR adds missing coverage for the "coinbasevalue" result field of the `getblocktemplate` RPC call. Specifically, the introduced test checks that the value is set to claim the full block reward (subsidy plus fees). Can be verified with the following patch, which succeeds on master and fails on the PR branch:

  ```diff
  diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp
  index a935810d91..ba9ac9dadb 100644
  --- a/src/rpc/mining.cpp
  +++ b/src/rpc/mining.cpp
  @@ -998,7 +998,7 @@ static RPCHelpMan getblocktemplate()
       result.pushKV("previousblockhash", block.hashPrevBlock.GetHex());
       result.pushKV("transactions", std::move(transactions));
       result.pushKV("coinbaseaux", std::move(aux));
  -    result.pushKV("coinbasevalue", block.vtx[0]->vout[0].nValue);
  +    result.pushKV("coinbasevalue", block.vtx[0]->vout[0].nValue - 1);
       result.pushKV("longpollid", tip.GetHex() + ToString(nTransactionsUpdatedLast));
       result.pushKV("target", hashTarget.GetHex());
       result.pushKV("mintime", GetMinimumTime(pindexPrev, consensusParams.DifficultyAdjustmentInterval()));

  ```

  I'm not sure how relevant this field is nowadays in real-world mining scenarios (we use it for the signet miner at least), but it seems useful to have a test for it anyways. Stumbled upon this while looking at https://github.com/bitcoin-inquisition/bitcoin/pull/111.

ACKs for top commit:
  maflcko:
    lgtm ACK 12c3c3f81d
  Sjors:
    ACK 12c3c3f81d

Tree-SHA512: ae10f63c99b21cf7771feefe3d0e47b2e0d511aceb344cf11efa9182d78f2960f1e079797b8a36db110a3c54acb27a3706413a710a74bf56aed29ea162a6aab2
2026-03-31 23:57:26 +08:00
merge-script
54fa356365 Merge bitcoin/bitcoin#34957: policy: remove incorrect MANDATORY_SCRIPT_VERIFY_FLAGS comment
5fa6898818 policy: remove incorrect MANDATORY_SCRIPT_VERIFY_FLAGS comment (ismaelsadeeq)

Pull request description:

  Since https://github.com/bitcoin/bitcoin/pull/33050

  This comment claiming that failing mandatory script checks may trigger a DoS ban/punishment is false.
  `CheckInputScript` also dispute this comment.

  b0f68f0a3a/src/validation.cpp (L2113-L2118)

ACKs for top commit:
  darosior:
    utACK 5fa6898818
  instagibbs:
    ACK 5fa6898818

Tree-SHA512: 84ad68b158e334b0e945f33007de58807b0b3335b1873412b0f359f0fa52d0819e93f42b28ebb6fbe5b355f2710f61e0dd731dc4bce20ccc1b7b2c546a9df550
2026-03-31 23:44:41 +08:00
merge-script
4757b71aa7 Merge bitcoin/bitcoin#34938: refactor: Return std::optional over bool+mut&
fabab69e9e refactor: Return std::optional from ParseDouble (MarcoFalke)
fa0a09441d refactor: Return std::optional from GetWalletNameFromJSONRPCRequest (MarcoFalke)
fafb0c4cbe refactor: Return std::optional from GetLogCategory (MarcoFalke)

Pull request description:

  Using a bool to indicate whether a mutable in-out param was written to is fine in legacy code, but otherwise confusing and brittle:

  * Sometimes the in-out-param is written to, even when the function returns `false`, like in `ParseDouble`.
  * Call sites must manually check the return value

  Fix those issues by returning `std::optional<_>` from `ParseDouble` (and a few other functions).

  This refactor is a style cleanup and does not change any behavior.

ACKs for top commit:
  stickies-v:
    re-ACK fabab69e9e
  hodlinator:
    crACK fabab69e9e
  rkrux:
    code review ACK fabab69e9e

Tree-SHA512: e27a27174e9d2200da8b0ca9b6cc056e94d2b25e6332975f1ad660ee85b02680a65ac93b2ed29f10da0ae5f6dc8395bddc9e973a3f925c68a0c8116c9282ea09
2026-03-31 23:42:49 +08:00
Hodlinator
257769a7ce qa: Improve error message 2026-03-31 12:25:06 +02:00
Hodlinator
20a94c1524 cli: Clearer error messages on authentication failure
Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
2026-03-31 12:25:05 +02:00
Hodlinator
84c3f8d325 refactor(rpc): GenerateAuthCookieResult -> AuthCookieResult
Type will be used for reading the cookie in next commit.

Also corrects ERR/ERROR mismatch in docstring in request.h, and changes to CamelCase to avoid potential collision with Windows headers (https://github.com/bitcoin/bitcoin/pull/34965#issuecomment-4161331392).
2026-03-31 12:15:17 +02:00
Ava Chow
c97ac44c34 Merge bitcoin/bitcoin#32297: bitcoin-cli: Add -ipcconnect option
4565cff72c bitcoin-gui: Implement missing Init::makeMining method (Ryan Ofsky)
fbea576c26 test: add interface_ipc_cli.py testing bitcoin-cli -ipcconnect (Ryan Ofsky)
0448a19b1b ipc: Improve -ipcconnect error checking (Ryan Ofsky)
8d614bfa47 bitcoin-cli: Add -ipcconnect option (Ryan Ofsky)
6a54834895 ipc: Expose an RPC interface over the -ipcbind socket (Ryan Ofsky)
df76891a3b refactor: Add ExecuteHTTPRPC function (Ryan Ofsky)
3cd1cd3ad3 ipc: Add MakeBasicInit function (Ryan Ofsky)

Pull request description:

  This implements an idea from sipa in https://github.com/bitcoin/bitcoin/issues/28722#issuecomment-2807026958 to allow `bitcoin-cli` to connect to the node via IPC instead of TCP, if the ENABLE_IPC cmake option is enabled and the node has been started with `-ipcbind`.

  This feature can be tested with:

  ```
  build/bin/bitcoin-node -regtest -ipcbind=unix -debug=ipc
  build/bin/bitcoin-cli -regtest -ipcconnect=unix -getinfo
  ```

  The -ipconnect parameter can also be omitted, since this change also makes `bitcoin-cli` prefer IPC over HTTP by default, and falling back to HTTP if an IPC connection can't be established.

  ---

  This PR is part of the [process separation project](https://github.com/bitcoin/bitcoin/issues/28722).

ACKs for top commit:
  achow101:
    ACK 4565cff72c
  pinheadmz:
    ACK 4565cff72c
  enirox001:
    Tested ACK 4565cff72c

Tree-SHA512: cb0dc521d82591e4eb2723a37ae60949309a206265e0ccfbee1f4d59b426b770426fafa1e842819a2fa27322ecdfcd226f31da70f91c2c31b8095e1380666f1f
2026-03-30 15:12:04 -07:00
Ava Chow
a846a7c805 Merge bitcoin/bitcoin#34811: doc: update cjdns.md for current cjdns installation and peering
6b99a3e4f0 doc: update cjdns.md for current upstream changes (w0xlt)

Pull request description:

  Update `doc/cjdns.md`. Users following the current doc hit dead links when trying to set up cjdns peering. The upstream cjdns project has reorganized its README and now supports automatic peering, making most of the existing instructions obsolete.

  Summary

  * Remove broken links to cjdns README sections ("2. Find a friend", "3. Connect your node to your friend's node") that no longer exist upstream

  * Remove reference to `hyperboria/peers` repo and `testAvailable.py` (last updated Feb 2024, likely stale)

  * Add `cjdns.sh` as recommended install method alongside building from source

  * Document automatic peering via DNS seeding (default since cjdns v22), which makes manual peer discovery unnecessary for most users

  * Simplify manual peering instructions with a clear `connectTo` example and link to upstream `doc/peering.md`

  * Add `cjdnstool peers show` as the way to verify network connectivity

  The Bitcoin Core-specific sections (`-cjdnsreachable`, `-onlynet=cjdns`, admin commands, etc.) are unchanged.

ACKs for top commit:
  achow101:
    ACK 6b99a3e4f0
  stratospher:
    ACK 6b99a3e. worked on nixos.
  brunoerg:
    reACK 6b99a3e4f0
  naiyoma:
    TestedACK 6b99a3e4f0

Tree-SHA512: 00a703a788e96af4fd9456246644c3047b1d5cbed41d97f4f4f64f60b34cd6ffbf052d5e8f32365e65fd09a44fd0e16dd0dd45f6c75563f18075414f9b3eb1e7
2026-03-30 14:00:10 -07:00
Sebastian Falbesoner
12c3c3f81d test: mining: add coverage for GBT's "coinbasevalue" result field
Add missing test coverage for the `getblocktemplate` RPC call
"coinbasevalue" field, specifically that it is set to claim the
full block reward.
2026-03-30 19:05:08 +02:00
Hennadii Stepanov
8b49e2dd4e ci, iwyu: Fix warnings in src/util and treat them as errors 2026-03-30 16:39:42 +01:00
Hennadii Stepanov
6953363be8 refactor: Move license info into new module 2026-03-30 16:34:48 +01:00
Hennadii Stepanov
eb750d277b iwyu: Remove workaround for issue that has been fixed upstream
This was overlooked in bitcoin/bitcoin#34896.
2026-03-30 16:34:24 +01:00
ismaelsadeeq
5fa6898818 policy: remove incorrect MANDATORY_SCRIPT_VERIFY_FLAGS comment
The claim that failing mandatory script checks may trigger a DoS ban
is incorrect; Bitcoin Core does not automatically ban peers for
violating any of these flag checks.
2026-03-30 15:10:53 +01:00
Hennadii Stepanov
3aeccb7d73 depends, qt: Fix build on aarch64 macOS 26.4 2026-03-30 14:41:29 +01:00
merge-script
f6e6fad0d9 Merge bitcoin/bitcoin#34867: wallet: document importdescriptors error object fields
445143bfc6 wallet: document structured importdescriptors errors (Renato Britto)

Pull request description:

  Related to #29912 and the machine-readable OpenRPC generated from `RPCHelpMan` metadata work discussed in #34683. Split out from #34764 per review feedback that this change is conceptually separate from the broader elision work there.

  The `importdescriptors` RPC help currently documents the optional `error` field using an elided `JSONRPC error` placeholder. This PR replaces that with explicit `code` and `message` fields.

  `importdescriptors` already returns a structured JSON-RPC error object in practice, so this makes the documented result schema match the existing response shape more closely.

  This PR changes `importdescriptors` help text, and the runtime checks on the returned json to be more strict.

ACKs for top commit:
  nervana21:
    tACK 445143bfc6
  maflcko:
    lgtm ACK 445143bfc6

Tree-SHA512: 3bda1cc7dd222c1d2e4dfbb2ee4a3f0201914c8b6bed5efb7fe7866227867c43235a9c5f5ec6f56e7ba286db0a43962c782d7ff29eec9aef4e70dc2c3daa6a0e
2026-03-30 20:11:06 +08:00
merge-script
0e2122c62e Merge bitcoin/bitcoin#32875: index: handle case where pindex_prev equals chain tip in NextSyncBlock()
db3c25cfae index: add explicit early exit in NextSyncBlock() when the input is the chain tip (Hao Xu)

Pull request description:

  When `pindex_prev` is the chain tip, `NextSyncBlock()` should return `nullptr` (there's no next block to sync). Currently this works, but relies on the fork/reorg path to produce the result: `chain.Next(tip)` returns `nullptr`, falling through to `FindFork(tip)` which returns `tip` itself, then `chain.Next(tip)` returns `nullptr` again.
  Add an explicit early return for this case. This makes `NextSyncBlock()`'s three cases self-documenting:

  1. next block exists on the active chain — return it
  2. at the chain tip — return `nullptr`
  3. on a stale branch — find the fork point and return the block after it

  It also makes the existing comment ("Since block is not in the chain") accurate — the tip is in the chain, so it shouldn't reach that path.

ACKs for top commit:
  optout21:
    crACK db3c25cfae
  furszy:
    ACK db3c25cfae
  stickies-v:
    ACK db3c25cfae

Tree-SHA512: c1633bb3d3ffed2643c8e174c2b2283deaeffd0a06eb3fb2cf03eed097bfdc5cf6fbd7ebdcdb44fd56f712be8004ad46c730a33990fb1fc6cfa629c9b14f8cd9
2026-03-30 20:01:40 +08:00
merge-script
550f603025 Merge bitcoin/bitcoin#34382: test: wallet: Check fallbackfee default argument behavior.
3dcdb2b9ba test: wallet: Warning for excessive fallback fee. (David Gumberg)
6664e41e56 test: wallet: -fallbackfee default is 0 (David Gumberg)
d28c989243 test: wallet: refactor: fallbackfee extract common send failure checks. (David Gumberg)

Pull request description:

  In an unmerged branch of #32636 (097e00f907) I unintentionally broke default `-fallbackfee` behavior, but this was not caught by any tests. See https://github.com/bitcoin/bitcoin/pull/32636#discussion_r2706102550.

  Something like the following diff does not cause any test failures on master despite causing a behavior change:

  ```diff
  diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
  index bc27018cd2..079610fba0 100644
  --- a/src/wallet/wallet.cpp
  +++ b/src/wallet/wallet.cpp
  @@ -3048,24 +3048,24 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
       if (const auto arg{args.GetArg("-fallbackfee")}) {
           std::optional<CAmount> fallback_fee = ParseMoney(*arg);
           if (!fallback_fee) {
               error = strprintf(_("Invalid amount for %s=<amount>: '%s'"), "-fallbackfee", *arg);
               return nullptr;
           } else if (fallback_fee.value() > HIGH_TX_FEE_PER_KB) {
               warnings.push_back(AmountHighWarn("-fallbackfee") + Untranslated(" ") +
                                  _("This is the transaction fee you may pay when fee estimates are not available."));
           }
           walletInstance->m_fallback_fee = CFeeRate{fallback_fee.value()};
  +        // Disable fallback fee in case value was set to 0, enable if non-null value
  +        walletInstance->m_allow_fallback_fee = walletInstance->m_fallback_fee.GetFeePerK() != 0;
       }

  -    // Disable fallback fee in case value was set to 0, enable if non-null value
  -    walletInstance->m_allow_fallback_fee = walletInstance->m_fallback_fee.GetFeePerK() != 0;
  ```

  This PR adds a functional test check that when no `-fallbackfee` argument is set and fee estimation is not possible, that sending fails because `-fallbackfee` is disabled by default.

ACKs for top commit:
  maflcko:
    review ACK 3dcdb2b9ba 🐞
  w0xlt:
    reACK 3dcdb2b9ba
  ismaelsadeeq:
    reACK 3dcdb2b9ba 👾

Tree-SHA512: 715625673a781ba3ddfed25f0836b01c2197480bd56732fd1ce548e8969573c2a36601de0b8913b3b79a47b8149022aabcf409b62297e7c2c47b68a8843e6570
2026-03-30 19:50:19 +08:00
merge-script
b0f68f0a3a Merge bitcoin/bitcoin#34804: Update libmultiprocess subtree to fix race conditions on disconnects
2478a15ef9 Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f (Ryan Ofsky)

Pull request description:

  Includes:

  - https://github.com/bitcoin-core/libmultiprocess/pull/246
  - https://github.com/bitcoin-core/libmultiprocess/pull/242
  - https://github.com/bitcoin-core/libmultiprocess/pull/247
  - https://github.com/bitcoin-core/libmultiprocess/pull/251
  - https://github.com/bitcoin-core/libmultiprocess/pull/255
  - https://github.com/bitcoin-core/libmultiprocess/pull/258
  - https://github.com/bitcoin-core/libmultiprocess/pull/262
  - https://github.com/bitcoin-core/libmultiprocess/pull/253
  - https://github.com/bitcoin-core/libmultiprocess/pull/263
  - https://github.com/bitcoin-core/libmultiprocess/pull/256
  - https://github.com/bitcoin-core/libmultiprocess/pull/264
  - https://github.com/bitcoin-core/libmultiprocess/pull/249
  - https://github.com/bitcoin-core/libmultiprocess/pull/265

  The main change is https://github.com/bitcoin-core/libmultiprocess/pull/249 which fixes 3 intermittent race conditions detected in bitcoin core CI and antithesis: #34711/#34756, #34777, and #34782.

  The changes can be verified by running `test/lint/git-subtree-check.sh src/ipc/libmultiprocess` as described in [developer notes](https://github.com/bitcoin/bitcoin/blob/master/doc/developer-notes.md#subtrees) and [lint instructions](https://github.com/bitcoin/bitcoin/tree/master/test/lint#git-subtree-checksh)

ACKs for top commit:
  Sjors:
    ACK 613a548648
  ismaelsadeeq:
    ACK 613a548648

Tree-SHA512: d99eebc8b4f45b3c3099298167362cf5e7f3e9e622eef9f17af56388ee5207d77a04b915b2a5a894493e0395aeda70111216f2da0d2a6553f4f6396b3d31a744
2026-03-30 19:31:06 +08:00
Hennadii Stepanov
325f743eed guix: Clean up module list in manifest
These modules are no longer in use:
1. `cmake-build-system` since bitcoin/bitcoin#34550.
2. `gnu-build-system` since bitcoin/bitcoin#34627.
3. `download` since bitcoin/bitcoin#34550.
4. `cc-for-target` from `utils` since bitcoin/bitcoin#34627.
2026-03-30 11:29:43 +01:00
MarcoFalke
fabab69e9e refactor: Return std::optional from ParseDouble 2026-03-30 09:03:06 +02:00
MarcoFalke
fa0a09441d refactor: Return std::optional from GetWalletNameFromJSONRPCRequest 2026-03-30 09:03:04 +02:00
MarcoFalke
fafb0c4cbe refactor: Return std::optional from GetLogCategory 2026-03-30 09:03:03 +02:00
merge-script
826819a510 Merge bitcoin/bitcoin#34939: fuzz: Use CAmount for storing best_waste
890a09b1e4 fuzz: Use CAmount for storing best_waste (Ava Chow)

Pull request description:

  Waste is a CAmount, which is an int64_t. This will overflow an int, so `best_waste` should also be a `CAmount`.

  Fixes #34936

ACKs for top commit:
  murchandamus:
    ACK 890a09b1e4
  furszy:
    ACK 890a09b1e4

Tree-SHA512: c6c4f530960f038675d4549c2285c6a4a828099a631486e317ec1215d89688ce109304654a95800978607c360c2ed34803523f5c56ebf7c2324ca095f87825b8
2026-03-30 09:39:42 +08:00
Hennadii Stepanov
2b6af628b1 Merge bitcoin/bitcoin#34491: ci: add FreeBSD Clang cross job
65379bb8d0 ci: add FreeBSD cross CI job (fanquake)
f44191f163 depends: build qrencode for Freebsd (fanquake)
7f7018738e depends: FreeBSD cross with Clang (fanquake)
6464f14081 depends: disable inotify in Freebsd Qt build (fanquake)

Pull request description:

  Alternative to #33562, which was adding a native FreeBSD job; however that had issues with permissions/caching, as well as potential determinism issues. This adds a FreeBSD cross job using Linux and Clang.

  Would close #33438. The same changes here could also be used to produce FreeBSD binaries out of Guix.

ACKs for top commit:
  hebasto:
    ACK 65379bb8d0. I've cross-compiled on Ubuntu 25.10 for FreeBSD 14.4 and 15.0. The former binaries (`bitcoind`, `test_bitcoin` and `bitcoin-qt`) were tested on FreeBSD 14.4 locally.

Tree-SHA512: 52a3edaa56fe40ca901416cb9e1af04a84505526edfa7309bfa40024baa7d3b1a05303659553d9fbcf1f49d4e3d42b415a1e2523d448b22724d1415a49331259
2026-03-29 11:08:48 +01:00
merge-script
e602ad62d0 Merge bitcoin/bitcoin#34919: test: script: boundary at exactly 65535 bytes must use OP_PUSHDATA2
f899674639 test: script: boundary at exactly 65535 bytes must use OP_PUSHDATA2 (Bruno Garcia)

Pull request description:

  I noticed that the following mutant is not killed by any current test (can be tested with: `cmake --build build -j $(nproc) && ./build/bin/test_bitcoin && ./build/test/functional/test_runner.py -j $(nproc) -F`):

  ```diff
  diff --git a/src/script/script.cpp b/src/script/script.cpp
  index 3f764aaf21..5cff51d2cf 100644
  --- a/src/script/script.cpp
  +++ b/src/script/script.cpp
  @@ -387,7 +387,7 @@ bool CheckMinimalPush(const std::vector<unsigned char>& data, opcodetype opcode)
       } else if (data.size() <= 255) {
           // Must have used OP_PUSHDATA.
           return opcode == OP_PUSHDATA1;
  -    } else if (data.size() <= 65535) {
  +    } else if (data.size() < 65535) {
           // Must have used OP_PUSHDATA2.
           return opcode == OP_PUSHDATA2;
       }
  ```

  This PR addresses it by adding a new test case to ensure that the boundary at exactly 65535 bytes must use OP_PUSHDATA2 as well.

ACKs for top commit:
  kevkevinpal:
    tACK [f899674](f899674639)
  danielabrozzoni:
    tACK f899674639
  darosior:
    utACK f899674639
  w0xlt:
    ACK f899674639

Tree-SHA512: ad35cc992aa351d26151cb79d1b1d5d960b1d80a98b3076a709aa19f7b5135edb87a957d2c84f359e86da8a15f7f0196301bfaff5ae554aecc65d81c97f8af3e
2026-03-28 14:55:59 +08:00
merge-script
954374d405 Merge bitcoin/bitcoin#34926: test: Replace DEBUG_LOG_OUT with -printtoconsole=1
261d229455 test: Replace DEBUG_LOG_OUT with -printtoconsole=1 (Hodlinator)

Pull request description:

  `-printtoconsole=1` has the same functionality but works in more cases than `DEBUG_LOG_OUT`, so remove the latter (`-printtoconsole` is already used when fuzzing). This means we can drop `G_TEST_LOG_FUN`.

  ---
  Behavior can be verified through
  ```shell
  ctest --test-dir build --debug
  ```
  and checking for:
  ```
  142: Test command: /home/hodlinator/bc/2/build/bin/test_bitcoin "--run_test=coinselector_tests" "--catch_system_error=no" "--log_level=test_suite" "--" "-printtoconsole=1"
  ...
  142: 2026-03-26T13:40:02.169392Z [test] [../src/kernel/context.cpp:20] [operator()] Using the 'sse4(1way);sse41(4way);avx2(8way)' SHA256 implementation
  ```

  ---
  Inspired by: https://github.com/bitcoin/bitcoin/pull/34918#discussion_r2994780532

ACKs for top commit:
  nkatha23:
    ACK 261d229
  maflcko:
    review ACK 261d229455 📬
  kevkevinpal:
    crACK [261d229](261d229455)
  janb84:
    cr ACK 261d229455

Tree-SHA512: f4c793b4a00730ade113241baeaaef08ae0333df15ada5929dd46aacd1ac875733e58aa341fac8fb5875eb5ebca735d40c664bf0ef62132094e0c993da5b20e5
2026-03-28 14:44:16 +08:00
Ava Chow
890a09b1e4 fuzz: Use CAmount for storing best_waste
Waste is a CAmount, which is an int64_t. This will overflow an int, so
`best_waste` should also be a `CAmount`.
2026-03-27 17:31:02 -07:00
Ryan Ofsky
613a548648 Merge commit '2478a15ef966cc93d47dd0f461a44be39bc51534' into pr/subtree-9 2026-03-27 05:50:19 -04:00
Ryan Ofsky
2478a15ef9 Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f
70f632bda8f Merge bitcoin-core/libmultiprocess#265: ci: set LC_ALL in shell scripts
8e8e564259a Merge bitcoin-core/libmultiprocess#249: fixes for race conditions on disconnects
05d34cc2ec3 ci: set LC_ALL in shell scripts
e606fd84a8c Merge bitcoin-core/libmultiprocess#264: ci: reduce nproc multipliers
ff0eed1bf18 refactor: Use loop variable in type-context.h
ff1d8ba172a refactor: Move type-context.h getParams() call closer to use
1dbc59a4aa3 race fix: m_on_cancel called after request finishes
1643d05ba07 test: m_on_cancel called after request finishes
f5509a31fcc race fix: getParams() called after request cancel
4a60c39f24a test: getParams() called after request cancel
f11ec29ed20 race fix: worker thread destroyed before it is initialized
a1d643348f4 test: worker thread destroyed before it is initialized
336023382c4 ci: reduce nproc multipliers
b090beb9651 Merge bitcoin-core/libmultiprocess#256: ci: cache gnu32 nix store
be8622816da ci: cache gnu32 nix store
975270b619c Merge bitcoin-core/libmultiprocess#263: ci: bump timeout factor to 40
09f10e5a598 ci: bump timeout factor to 40
db8f76ad290 Merge bitcoin-core/libmultiprocess#253: ci: run some Bitcoin Core CI jobs
55a9b557b19 ci: set Bitcoin Core CI test repetition
fb0fc84d556 ci: add TSan job with instrumented libc++
0f29c38725b ci: add Bitcoin Core IPC tests (ASan + macOS)
3f64320315d Merge bitcoin-core/libmultiprocess#262: ci: enable clang-tidy in macOS job, use nullptr
cd9f8bdc9f0 Merge bitcoin-core/libmultiprocess#258: log: add socket connected info message and demote destroy logs to debug
b5d6258a42f Merge bitcoin-core/libmultiprocess#255: fix: use unsigned char cast and sizeof in LogEscape escape sequence
d94688e2c32 Merge bitcoin-core/libmultiprocess#251: Improved CustomBuildField for std::optional in IPC/libmultiprocess
a9499fad755 mp: use nullptr with pthread_threadid_np
f499e37850f ci: enable clang-tidy in macOS job
98f1352159d log: add socket connected info message and demote destroy logs to debug
554a481ea73 fix: use unsigned char cast and sizeof in LogEscape escape sequence
1977b9f3f65 Use std::forward in CustomBuildField for std::optional to allow move semantics, resolves FIXME
22bec918c97 Merge bitcoin-core/libmultiprocess#247: type-map: Work around LLVM 22 "out of bounds index" error
8a5e3ae6ed2 Merge bitcoin-core/libmultiprocess#242: proxy-types: add CustomHasField hook to map Cap'n Proto values to null C++ values
e8d35246918 Merge bitcoin-core/libmultiprocess#246: doc: Bump version 8 > 9
97d877053b6 proxy-types: add CustomHasField hook for nullable decode paths
8c2f10252c9 refactor: add missing includes to mp/type-data.h
b1638aceb40 doc: Bump version 8 > 9
f61af487217 type-map: Work around LLVM 22 "out of bounds index" error

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 70f632bda8f80449b6240f98da768206a535a04e
2026-03-27 05:50:19 -04:00
merge-script
4f8bd396f8 Merge bitcoin/bitcoin#34913: fuzz: Use time helpers in node_eviction
fa1ebde1ad fuzz: Use time helpers in node_eviction (MarcoFalke)

Pull request description:

  The `node_eviction` fuzz test has many issues:

  * It uses the full `int64_t` range (in seconds) as input, which is absurdly large (millions of years) and also violates https://en.cppreference.com/w/cpp/chrono/duration.html:

  > Each of the predefined duration types up to hours covers a range of at least ±292 years.

  * It does not use the existing `ConsumeDuration` and `ConsumeTime` helpers, which makes specifying a proper range difficult.

  So fix all issues by using `ConsumeTime` for time points with default arguments, and `ConsumeDuration` with the same precision, as well as possibly negative values.

ACKs for top commit:
  marcofleon:
    crACK fa1ebde1ad
  brunoerg:
    reACK fa1ebde1ad
  w0xlt:
    ACK fa1ebde1ad

Tree-SHA512: 22045e6c563a9169327737895ea2f3a7b1dcb4fd24fce56d91caa1e132d03a85cbaaa5f78218d23cfa203fe2ee4b147894c02870eb20ae1c232ad55ccdb6f7f7
2026-03-27 08:40:54 +08:00
Ava Chow
21da421b42 Merge bitcoin/bitcoin#34439: qa: Drop recursive deletes from test code, add lint checks.
0d1301b47a test: functional: drop rmtree usage and add lint check (David Gumberg)
8bfb422de8 test: functional: drop unused --keepcache argument (David Gumberg)
a7e4a59d6d qa: Remove all instances of `remove_all` except test cleanup (David Gumberg)

Pull request description:

  Both `fs::remove_all` and `shutil::rmtree()` are a bit dangerous, and most of their uses are not necessary, this PR removes most instances of both.

  `remove_all()` is still used in in `src/test/util/setup_common.cpp` as part of `BasicTestingSetup::BasicTestingSetup`'s constructor and destructor, and it is used in the kernel test code's [`TestDirectory`](4ae00e9a71/src/test/kernel/test_kernel.cpp (L100-L112)):

  734899a4c4/src/test/kernel/test_kernel.cpp (L100-L112)

  In both cases, `remove_all` is likely necessary, but the kernel's test code is RAII, ideally `BasicTestingSetup` could be made similar in a follow-up or in this PR if reviewers think it is important.

  Similarly in the python code, most usage was unnecessary, but there are a few places where `rmtree()` was necessary, I have added sanity checks to make sure these are inside of the `tmpdir` before doing recursive delete there.

ACKs for top commit:
  achow101:
    ACK 0d1301b47a
  hodlinator:
    ACK 0d1301b47a
  sedited:
    ACK 0d1301b47a

Tree-SHA512: da8ca23846b73eff0eaff61a5f80ba1decf63db783dcd86b25f88f4862ae28816fc9e2e9ee71283ec800d73097b1cfae64e3c5ba0e991be69c200c6098f24d6e
2026-03-26 13:05:01 -07:00
Ava Chow
8a8edc8d88 Merge bitcoin/bitcoin#34741: refactor: Return std::optional from GetNameProxy/GetProxy
fa73ed467c refactor: Fix redundant conversion to std::string and then to std::string_view [performance-string-view-conversions] (MarcoFalke)
fa270fdacf refactor: Return std::optional from GetProxy (MarcoFalke)
faeac1a931 refactor: Return std::optional from GetNameProxy (MarcoFalke)

Pull request description:

  Currently the getters have a mutable reference as inout param and return a bool to indicate success. This is confusing, because the success bool is redundant with the `IsValid()` state on the proxy object.

  So in theory, the functions could reset the mutable proxy object to an invalid state and return `void`.

  However, this would also be confusing, because devs can forget to check `IsValid()`.

  Fix all issues by using `std::optional<Proxy>`, where devs no longer have to check `IsValid()` manually, or a separate bool. Note that new code in the repo is already using `std::optional<Proxy>`, see `git grep 'std::optional<Proxy>' bitcoin-core/master`. Also, `std::optional<Proxy>` will enforce checking at compile time, whereas calling `Proxy::IsValid` is not enforced.

ACKs for top commit:
  achow101:
    ACK fa73ed467c
  sedited:
    ACK fa73ed467c
  ViniciusCestarii:
    ACK fa73ed467c
  frankomosh:
    Code Review ACK fa73ed467c. Good refactor, correctly replaces the bool + mutable reference output parameter pattern with `std::optional<Proxy>` across `GetProxy` and `GetNameProxy`. Semantics are preserved.

Tree-SHA512: c6a1e1d1691958d2e6507e32e3484f96703fba03ccc710145ae2fb84b1254fb0e6e1d8d78e9b572daf5ea485247b73568704881762379b50bcf939a35494dd13
2026-03-26 11:38:14 -07:00
Ava Chow
a5609fc249 Merge bitcoin/bitcoin#34458: net: Don't log own ips during discover
a49f97ff4a net: Don't log own ips during discover (sedited)

Pull request description:

  The -logips option seems to imply that ip addresses are only logged when it is set. This seems like an obvious case for not logging these by default. There might be prior discussion around this, but I was unable to find why these might be exempt. There are also a few issues (both open and closed) where printing these lines was useful.

ACKs for top commit:
  l0rinc:
    tested ACK a49f97ff4a
  achow101:
    ACK a49f97ff4a
  willcl-ark:
    tACK a49f97ff4a
  danielabrozzoni:
    tACK a49f97ff4a

Tree-SHA512: 177911c5607b794965facf568fec71eb22fc8e9d16f4fee5088745e8aba51cb4ce839876c456470dc52839ebc36976dc6b81a50f546941aebb8db538d8fd4554
2026-03-26 11:27:06 -07:00