48210 Commits

Author SHA1 Message Date
merge-script
136132e075
Merge bitcoin/bitcoin#34776: guix: Make guix-clean more careful
be6d24ec22cc2ef8086098d6322b024e07c5758c guix: Make guix-clean less destructive (Hodlinator)

Pull request description:

  * Show preview and ask for confirmation before git clean unless used with "--force"
  * Error out when user tries to pass args such as "guix-clean --help"

ACKs for top commit:
  kevkevinpal:
    reACK [be6d24e](be6d24ec22)
  janb84:
    ACK be6d24ec22cc2ef8086098d6322b024e07c5758c
  sedited:
    ACK be6d24ec22cc2ef8086098d6322b024e07c5758c
  willcl-ark:
    ACK be6d24ec22cc2ef8086098d6322b024e07c5758c

Tree-SHA512: 19fc6e5dc68f2886f5fb970ff39d040a8088eedca56ad5b86622297614b0d164df9ddd5a8b24b972060e9dcde732de5e3346866b53963524a4277a0a56220570
2026-03-12 10:23:00 +00:00
merge-script
e19df67332
Merge bitcoin/bitcoin#33144: build: Set AUTHOR_WARNING on warnings
fa6497ba71e9573d341c1c051af09b3ec2fc8d74 build: Set AUTHOR_WARNING on warnings (MarcoFalke)

Pull request description:

  Now that the cmake setting `-Werror=dev` is set since commit 6a13a6106e3c1ebe95ba6430184d6260a7b942bd for the CI, guix and the dev cmake preset, it could make sense to notify developers about any warnings.

  So do that with a single `AUTHOR_WARNING`.

  This can be tested by introducing a bug, like:

  ```diff
  diff --git a/CMakeLists.txt b/CMakeLists.txt
  index 6017775fa7..5610e03c66 100644
  --- a/CMakeLists.txt
  +++ b/CMakeLists.txt
  @@ -589,7 +589,7 @@ set(Python3_FIND_FRAMEWORK LAST CACHE STRING "")
   # improves compatibility with Python version managers that use shims.
   set(Python3_FIND_UNVERSIONED_NAMES FIRST CACHE STRING "")
   mark_as_advanced(Python3_FIND_FRAMEWORK Python3_FIND_UNVERSIONED_NAMES)
  -find_package(Python3 3.10 COMPONENTS Interpreter)
  +find_package(Python3 3.210 COMPONENTS Interpreter)
   if(NOT TARGET Python3::Interpreter)
     list(APPEND configure_warnings
       "Minimum required Python not found."
  ```

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

ACKs for top commit:
  l0rinc:
    ACK fa6497ba71e9573d341c1c051af09b3ec2fc8d74
  purpleKarrot:
    ACK fa6497ba71e9573d341c1c051af09b3ec2fc8d74
  stickies-v:
    ACK fa6497ba71e9573d341c1c051af09b3ec2fc8d74
  hebasto:
    ACK fa6497ba71e9573d341c1c051af09b3ec2fc8d74, this effectively allows us to use `-Werror=dev` to automatically catch any warning.
  sedited:
    ACK fa6497ba71e9573d341c1c051af09b3ec2fc8d74

Tree-SHA512: df3b7fa88451527d6a950bd6ebe46e96d1d2f6447c2b53cbe26c6ece0b63a41663a0accfc0ee20c03bc40328363d46f0e7ad88aab1be9b383ad7ff2621363a30
2026-03-12 10:17:21 +00:00
merge-script
ab64277375
Merge bitcoin/bitcoin#34708: validation: refactor: remove ConnectTrace
2f8f2e900118c98699db91075bd1b72e6460c6b1 validation: remove ConnectTrace wrapper class (stickies-v)
b83de7f28e71f0b10a999327395198fbcb02f44b validation: remove sentinel block from ConnectTrace (stickies-v)

Pull request description:

  The sentinel pattern in `ConnectTrace` has been unnecessary since conflicted transaction tracking was removed in 5613f9842b4000fed088b8cf7b99674c328d15e1. Without that tracking `ConnectTrace` is a trivial wrapper around `std::vector`, so it seems better to just replace it with the vector directly.

  Also modernize/update naming along the way, renaming `PerBlockConnectTrace` to `ConnectedBlock`

  Refactor, no behaviour change.

ACKs for top commit:
  HowHsu:
    ACK 2f8f2e900118c98699db91075bd1b72e6460c6b1
  sedited:
    ACK 2f8f2e900118c98699db91075bd1b72e6460c6b1
  w0xlt:
    reACK 2f8f2e9001

Tree-SHA512: 0045fcdc1178a160e31ef9d44dcd5fddd21c30c53ed06e84beacddb0b73e7b8120fee874256d1b9ceae45da65164a2e5531992bd374f8d57b6a8455a5354fe57
2026-03-12 10:08:53 +00:00
merge-script
44ddc9c93f
Merge bitcoin/bitcoin#31560: rpc: allow writing UTXO set to a named pipe
b19caeea098f92a7f72aaeee49573358f4b153a3 doc: add release note for #31560 (named pipe support for `dumptxoutset` RPC) (Sebastian Falbesoner)
61a5460d0d6cd174d395c51333def798fe7442fe test: add test for utxo-to-sqlite conversion using named pipe (Sebastian Falbesoner)
2e8072edbeb20a8c05c0dbd06ca105bc4dd07b96 rpc: support writing UTXO set dump (`dumptxoutset`) to a named pipe (Sebastian Falbesoner)

Pull request description:

  This PR slightly modifies the `dumptxoutset` RPC to allow writing the UTXO set dump into a [named pipe](https://askubuntu.com/a/449192), so that the output data can be consumed by another process, see #31373. Taking use of this with the utxo-to-sqlite.py tool (introduced in #27432), creating an UTXO set in SQLite3 format is possible on the fly. E.g. for signet:
  ```
  $ mkfifo /tmp/utxo_fifo && ./build/bin/bitcoin-cli -signet dumptxoutset /tmp/utxo_fifo latest &
  $ ./contrib/utxo-tools/utxo_to_sqlite.py /tmp/utxo_fifo ./utxo.sqlite
  UTXO Snapshot for Signet at block hash 000000012711f0a4e741be4a22792982..., contains 61848352 coins
  1048576 coins converted [1.70%], 2.800s passed since start
  ....
  ....
  60817408 coins converted [98.33%], 159.598s passed since start
  {
    "coins_written": 61848352,
    "base_hash": "000000012711f0a4e741be4a22792982370f51326db20fca955c7d45da97f768",
    "base_height": 294305,
    "path": "/tmp/utxo_fifo",
    "txoutset_hash": "34ae7fe7af33f58d4b83e00ecfc3b9605d927f154e7a94401226922f8e3f534e",
    "nchaintx": 28760852
  }
  TOTAL: 61848352 coins written to ./utxo.sqlite, snapshot height is 294305.
  ```
  Note that the `dumptxoutset` RPC calculates an UTXO set hash as a first step before any data is emitted, so especially on mainnet it takes quite a while until the conversion starts and something is happening visibly.

ACKs for top commit:
  ajtowns:
    utACK b19caeea098f92a7f72aaeee49573358f4b153a3
  sedited:
    Re-ACK b19caeea098f92a7f72aaeee49573358f4b153a3

Tree-SHA512: 7101563d0dba15439cdef8c8fb535f8593d5a779ff04208e2d72382a3f99072db8eac3651d1b3fe72c5e1f03e164efb281c3030d45d0723b943ebbbcf2a841d6
2026-03-12 09:55:07 +00:00
merge-script
1a2f4e9750
Merge bitcoin/bitcoin#34814: lint: Temporarily revert to vulture==2.14
faae981d354e13de96442159d604a831b6c3a71e lint: Temporarily revert to vulture==2.14 (MarcoFalke)

Pull request description:

  To work around https://github.com/bitcoin/bitcoin/issues/34810

ACKs for top commit:
  fanquake:
    ACK faae981d354e13de96442159d604a831b6c3a71e

Tree-SHA512: 80b8250379e672e62090e7853d342b93befcb33c9f6e86fb39776e34029f0952ad4fb6d22747c387a3503b2b9cb3f894ef6e5f7606058647a46037918e1b35b0
2026-03-12 09:41:34 +00:00
merge-script
51a4dc5515
Merge bitcoin/bitcoin#34796: rpc, net: remove startingheight field of getpeerinfo RPC and from node state
745ad941dedaa0f4e2a5fdda58a3bf683d672196 p2p: remove m_starting_height field from node state (only show once in debug log) (Sebastian Falbesoner)
b267efcdaf854b6b50424d6a6af7cac8ba458390 rpc, net: completely remove `startingheight` field of `getpeerinfo` RPC (Sebastian Falbesoner)

Pull request description:

  This PR completely removes the `startingheight` field in the `getpeerinfo` RPC, previously deprecated in v31.0 (see #34197). The second commit goes one step further: the only remaining usage for a `Peer`s `m_starting_height` field is for printing P2P debug messages. Considering that the information is untrusted and not deemed useful (see discussion #33990), remove the field and only print the starting height information once at reception of the `VERSION` message (suggested by ajtowns in https://github.com/bitcoin/bitcoin/pull/33990#issuecomment-3621363780), without saving it.

ACKs for top commit:
  stickies-v:
    re-ACK 745ad941dedaa0f4e2a5fdda58a3bf683d672196, no changes except for addressing minor merge conflict
  w0xlt:
    ACK 745ad941dedaa0f4e2a5fdda58a3bf683d672196
  sedited:
    Re-ACK 745ad941dedaa0f4e2a5fdda58a3bf683d672196

Tree-SHA512: 09d30f34ea564e884e5d5c0e56cd66f99d6127ba8cc779f1e7ab29ea4fe8603835d306e343ee3a0038b1c07245f429012375034518135c915f543ba175d6dc45
2026-03-12 09:52:10 +01:00
merge-script
2efb8c44bb
Merge bitcoin/bitcoin#34807: kernel: doc: explain return value for btck_WriteBytes callback
ec4ec91d59b25badf212bf0aee0ad5c1eead7ff1 kernel: doc: explain return value for `btck_WriteBytes` callback (Sebastian Falbesoner)

Pull request description:

  Note that this is the only callback type with a non-void return type. Probably it would make sense to document the parameters of callbacks as well on the long-term (Doxygen style?), but this IMHO the most critical missing documentation, where likely other bitcoinkernel users working with the C API could trip over too.

  Background: I've been working on btck bindings for [Zig](https://ziglang.org/) for a while [1]. Overall I found the C API header `bitcoinkernel.h` very well-documented and to a large degree self-explanatory, but for implementing a `btck_WriteBytes` callback (needed for various `btck_..._to_bytes` serialization functions) I had to look into the [kernel implementation](e98d36715e/src/kernel/bitcoinkernel.cpp (L86)) to figure out what return value is expected.

  [1] still not public and put on hold for the last few months due to lib(std)c++ build system / linking issues (needing ugly workarounds, hopefully improved with Zig's upcoming 0.16 release); now continued, hopefully ready to be published in a first presentable version soon(tm)

ACKs for top commit:
  sedited:
    ACK ec4ec91d59b25badf212bf0aee0ad5c1eead7ff1
  alexanderwiederin:
    ACK ec4ec91d59
  stickies-v:
    ACK ec4ec91d59b25badf212bf0aee0ad5c1eead7ff1

Tree-SHA512: aeea68474a04e0bc4d2421a0539a0bd717b0526f58c7379848a8bb8cb75a0fdf5c94bfcc226f28dd09b89c5fc368921d1d875893b86680e7c51d7b98f4ab749d
2026-03-12 08:40:52 +00:00
MarcoFalke
faae981d35
lint: Temporarily revert to vulture==2.14
To work around https://github.com/bitcoin/bitcoin/issues/34810
2026-03-12 08:15:06 +01:00
Sebastian Falbesoner
ec4ec91d59 kernel: doc: explain return value for btck_WriteBytes callback
This is the only non-void callback type, so it makes sense to document what
implementers should return.
2026-03-11 18:06:19 +01:00
Sebastian Falbesoner
b19caeea09 doc: add release note for #31560 (named pipe support for dumptxoutset RPC) 2026-03-11 16:51:45 +01:00
merge-script
e98d36715e
Merge bitcoin/bitcoin#34802: ci: Bump GHA actions versions
fadaa7db335d1b1bd2674c51d89d6c0820ddb887 ci: Bump GHA actions versions (MarcoFalke)

Pull request description:

  Looks like this was forgotten in  the prior pull https://github.com/bitcoin/bitcoin/pull/34344#issuecomment-3769438233

ACKs for top commit:
  fanquake:
    ACK fadaa7db335d1b1bd2674c51d89d6c0820ddb887

Tree-SHA512: bc3bc5b7ba275d7c48bd34fa0eaaac05942212369fc87be338b31c024ca736550a5ff64766c78912f9705e9f95ffedeae1eddfe2f95828350c7672ab2069713c
2026-03-11 15:36:45 +00:00
Sebastian Falbesoner
61a5460d0d test: add test for utxo-to-sqlite conversion using named pipe 2026-03-11 16:25:02 +01:00
Sebastian Falbesoner
2e8072edbe rpc: support writing UTXO set dump (dumptxoutset) to a named pipe
This allows external tooling (e.g. converters) to consume the output
directly, rather than having to write the dump to disk first and then
read it from there again.

Co-authored-by: Luke Dashjr <luke-jr+git@utopios.org>
2026-03-11 16:22:30 +01:00
Sebastian Falbesoner
745ad941de p2p: remove m_starting_height field from node state (only show once in debug log) 2026-03-11 16:11:45 +01:00
Sebastian Falbesoner
b267efcdaf rpc, net: completely remove startingheight field of getpeerinfo RPC 2026-03-11 15:51:09 +01:00
MarcoFalke
fadaa7db33
ci: Bump GHA actions versions 2026-03-11 15:10:27 +01:00
merge-script
ce6f182091
Merge bitcoin/bitcoin#33902: doc: Document compiler configuration for native depends packages
4c07cf87e2288d4a8b0174ad64e52f455de9029e doc: document depends compiler configuration (will)

Pull request description:

  Fixes: #33859

  Previously one had to read the Makefile (and various *.mk configuration
  files) to see how to correctly override CC and CXX when building native
  depends packages.

  Detail this in README.md to make it clearer.

ACKs for top commit:
  maflcko:
    review ACK 4c07cf87e2288d4a8b0174ad64e52f455de9029e 🛶
  hebasto:
    ACK 4c07cf87e2288d4a8b0174ad64e52f455de9029e.
  sedited:
    ACK 4c07cf87e2288d4a8b0174ad64e52f455de9029e
  fanquake:
    ACK 4c07cf87e2288d4a8b0174ad64e52f455de9029e

Tree-SHA512: ca61087b7c232c74782602a28d914e7bb35d1469472bb7862941c0fdec2277bf1d0e6604d4058c319c6a7b2cd04a70b7f0d0afbbb847e5c3812c6afb0cf1cfb3
2026-03-11 13:39:22 +00:00
merge-script
e96d9e6492
Merge bitcoin/bitcoin#34389: net/log: standardize peer+addr log formatting via LogPeer
22335474d768f99067856173ff2764b6db753f67 net: format peer+addr logs with `LogPeer` (Lőrinc)
e55ea534f74b2dd2a81e8f9972554303f7cf9c20 test: add pre-`LogPeer` net log assertion (Lőrinc)
736b17c0f0f23dca78e7266be6c98b24b0eda210 log: fix minor formatting in debug logs (Lőrinc)
9cf82bed3205d8405f56838d0e2ca0c72023a081 log: show placeholders for missing peer fields (Lőrinc)

Pull request description:

  This is an alternative to #34293, but aims to address the remaining logging inconsistencies more broadly.
  It extends the example fixed there to every instance, restores the original separator behavior, applies it consistently via a single helper, and adds tests for `logips` (covering both current and new behavior).

  ### Problem
  After #28521 centralized peer address logging into `CNode::LogIP()`, the original comma separator before `peeraddr=` was lost, resulting in inconsistent formatting across net (and recent private broadcast) logs.
  Some lines also had double spaces, empty fields, or mismatched format specifiers.

  ### Fix
  Introduces `CNode::LogPeer(bool)` which always emits `peer=<id>` and, when `-logips=1`, appends `, peeraddr=<addr>`. This eliminates hand-rolled separators and makes peer identification predictable.
  Minor issues (double spaces, empty placeholders, format specifiers) are fixed along the way in separate commits.

  ### Reproducer
  Run with `-debug=net -logips=1` and observe peer log lines now show `peer=<id>, peeraddr=<addr>` (comma-separated). The new assertion in `feature_logging.py` automates this check.

ACKs for top commit:
  naiyoma:
    ACK 22335474d768f99067856173ff2764b6db753f67
  vasild:
    ACK 22335474d768f99067856173ff2764b6db753f67
  sedited:
    ACK 22335474d768f99067856173ff2764b6db753f67

Tree-SHA512: 562262a58c3042f139099ff4c41e3fc6a97505fe9603c2bf700a97fd0aa052954b47c14da0e50c1fc311db1ae6c04e6a92156c9b85e25c777a637b7766c1dafe
2026-03-11 14:34:42 +01:00
merge-script
281c0cce73
Merge bitcoin/bitcoin#34301: wallet: remove outdated RewriteDB calls from SPKM & DBErrors::NEED_REWRITE enum value
c6a6435cedac01a6800cac9285e2c599290e2e0d wallet: remove `DBErrors::NEED_REWRITE` enum value (rkrux)
61039d72a5da443a254b3229748fc64eee613757 wallet: remove unimplemented `RewriteDB` calls from SPKM (rkrux)

Pull request description:

  ISTM that there is no implementation left of the `RewriteDB` method in any of the SPKMs, and thus, its call sites can be removed safely.

  Also remove `DBErrors::NEED_REWRITE` enum value as its usage is outdated now.

  <!--
  *** Please remove the following help text before submitting: ***

  Pull requests without a rationale and clear improvement may be closed
  immediately.

  GUI-related pull requests should be opened against
  https://github.com/bitcoin-core/gui
  first. See CONTRIBUTING.md
  -->

  <!--
  Please provide clear motivation for your patch and explain how it improves
  Bitcoin Core user experience or Bitcoin Core developer experience
  significantly:

  * Any test improvements or new tests that improve coverage are always welcome.
  * All other changes should have accompanying unit tests (see `src/test/`) or
    functional tests (see `test/`). Contributors should note which tests cover
    modified code. If no tests exist for a region of modified code, new tests
    should accompany the change.
  * Bug fixes are most welcome when they come with steps to reproduce or an
    explanation of the potential issue as well as reasoning for the way the bug
    was fixed.
  * Features are welcome, but might be rejected due to design or scope issues.
    If a feature is based on a lot of dependencies, contributors should first
    consider building the system outside of Bitcoin Core, if possible.
  * Refactoring changes are only accepted if they are required for a feature or
    bug fix or otherwise improve developer experience significantly. For example,
    most "code style" refactoring changes require a thorough explanation why they
    are useful, what downsides they have and why they *significantly* improve
    developer experience or avoid serious programming bugs. Note that code style
    is often a subjective matter. Unless they are explicitly mentioned to be
    preferred in the [developer notes](/doc/developer-notes.md), stylistic code
    changes are usually rejected.
  -->

  <!--
  Bitcoin Core has a thorough review process and even the most trivial change
  needs to pass a lot of eyes and requires non-zero or even substantial time
  effort to review. There is a huge lack of active reviewers on the project, so
  patches often sit for a long time.
  -->

ACKs for top commit:
  achow101:
    ACK c6a6435cedac01a6800cac9285e2c599290e2e0d
  furszy:
    ACK c6a6435cedac01a6800cac9285e2c599290e2e0d
  sedited:
    ACK c6a6435cedac01a6800cac9285e2c599290e2e0d

Tree-SHA512: 050d3115ad436eb7728716c897c8d23c6dd0c6cd7a018dc023896d301b126bae5ba89b684811226a0ca4045b393b612296aeab3b3b5dfb7ed0bf443fc1eaef41
2026-03-11 13:57:33 +01:00
merge-script
524aa1e533
Merge bitcoin/bitcoin#34576: threadpool: add ranged Submit overload
79571b918130e66436b2d43489835c38bb3ae3e3 threadpool: add ranged Submit overload (Andrew Toth)

Pull request description:

  The current `ThreadPool::Submit` is not very efficient when we have a use case where we need to submit multiple tasks immediately. The `Submit` method must take the lock for each task, and notifies only a single worker thread. This will cause lock contention with the awakened worker thread trying to take the lock and the caller trying to submit the next task.

  Introduce a `Submit` overload, which takes the lock once and submits a range of tasks, then notifies all worker threads after the lock is released.

  This is needed for #31132 to be able to use `ThreadPool`.

ACKs for top commit:
  l0rinc:
    ACK 79571b918130e66436b2d43489835c38bb3ae3e3
  rkrux:
    ACK 79571b9
  sedited:
    Re-ACK 79571b918130e66436b2d43489835c38bb3ae3e3
  willcl-ark:
    ACK 79571b918130e66436b2d43489835c38bb3ae3e3

Tree-SHA512: 1fbe0c150f01b9ea5be3459cd10b817045af52eaf6f14a1a298a68853890da4033c1b21bdc6f995bb55029fb4ab536e9dbf58d98e2e1e12b25298fa3470b4ba6
2026-03-11 13:08:53 +01:00
will
4c07cf87e2
doc: document depends compiler configuration
CC/CXX only override compilers for target (host) packages. Native
build tool packages (native_capnp, native_qt, etc.) use separate
build_CC/build_CXX variables, which default to gcc/g++ on Linux.

On systems without gcc (e.g. Nix, Chimera Linux), native package
builds fail unless build_CC/build_CXX are also set explicitly.
Document how to override both sets of compilers.
2026-03-11 12:02:24 +00:00
merge-script
f25843d8ad
Merge bitcoin/bitcoin#34441: ci: Allow running iwyu CI in worktree
fafdb8f635bc157f55e23890264d12170ecd41ae ci: Allow running iwyu ci in worktree (MarcoFalke)
fab73e213dee1057e9e759133767b17ec5b1f6ab ci: Reject unsafe execution of shell scripts (MarcoFalke)

Pull request description:

  Currently, the iwyu CI fails to run in a git-worktree, or git-archive. This is due to the use of `git diff`.

  Fix this by force-initializing a dummy git repo with a single dummy commit.

  It may be possible to detect when `git diff` is not available in the directory, and only apply the fallback when needed, but the git history is not needed and it is easier to unconditionally apply the git init.

ACKs for top commit:
  willcl-ark:
    reACK fafdb8f635bc157f55e23890264d12170ecd41ae
  hebasto:
    ACK fafdb8f635bc157f55e23890264d12170ecd41ae, I have reviewed the code and it looks OK. Tested on Fedora 43.
  sedited:
    ACK fafdb8f635bc157f55e23890264d12170ecd41ae

Tree-SHA512: 572f1e2b9e215c2804095382498abb5b8636e3a49d5ba2a736b975e06afa2881d815b854a8a593d0f187c7c6b55034688e11f46d6814edfe7c29505197e80b18
2026-03-11 13:01:24 +01:00
merge-script
b8c84ec5a6
Merge bitcoin/bitcoin#34788: fuzz: register PeerManager in process_message(s)
b50376881929ff23b1148028ac6ca42617af04d8 fuzz: register PeerManager in process_message(s) (Eugene Siegel)

Pull request description:

  This lets CValidationInterface callbacks be hit (just `BlockChecked` using the corpus from qa-assets). Also remove no-op SyncWithValidationInterfaceQueue since there are no validation interfaces registered in ResetChainman.

ACKs for top commit:
  marcofleon:
    code review ACK b50376881929ff23b1148028ac6ca42617af04d8
  dergoegge:
    utACK b50376881929ff23b1148028ac6ca42617af04d8

Tree-SHA512: 51c0c9a3396ee898b1dce2c65c2fc7b61ea6d04342d181b1b60be1677bc0c2828b9d970673f67501e3579ae002392cd5f0e3268aae1b216ff332e2654fd1fe14
2026-03-11 11:09:32 +00:00
merge-script
b62abc7eec
Merge bitcoin/bitcoin#34436: refactor: add overflow-safe CeilDiv helper and use it in unsigned callsites
02d047fd5b93d96f159db2b8e95fc39450505159 refactor: add overflow-safe `CeilDiv` helper (Lőrinc)

Pull request description:

  ### Problem
  The codebase has many open-coded ceiling-division expressions (for example `(x+y-1)/y`) scattered across files.
  These are less readable, duplicate logic, and can be overflow-prone in edge cases.

  ### Fix
  Introduce a small overflow-safe integer helper, `CeilDiv()`, and use it in existing **unsigned** callsites where the conversion is straightforward and noise-free.

  ### What this PR does
  * Adds `CeilDiv()` to `src/util/overflow.h` for unsigned integral inputs.
  * Keeps the precondition check `assert(divisor > 0)`.
  * Replaces selected unsigned ceiling-division expressions with `CeilDiv(...)`.
  * Adds focused unit tests in `src/test/util_tests.cpp` for the migrated patterns.

  ---

  This is a pure refactor with no intended behavioral change.
  Signed arithmetic callsites are intentionally left unchanged in this PR.
  This PR changed a few more things originally but based on feedback reverted to the simplest cases only.

ACKs for top commit:
  rustaceanrob:
    ACK 02d047fd5b93d96f159db2b8e95fc39450505159
  hodlinator:
    ACK 02d047fd5b93d96f159db2b8e95fc39450505159
  sedited:
    ACK 02d047fd5b93d96f159db2b8e95fc39450505159

Tree-SHA512: b09336031f487e6ce289822e0ffeb8cfc8cfe8a2f4f3f49470748dfbd0a6cbab97498674cb8686dd2bd4ab6dd0b79cfdf2da00041fee12d109892e1bc5dde0ff
2026-03-11 11:30:42 +01:00
merge-script
7c21413616
Merge bitcoin/bitcoin#34755: depends: cleanup meta files
0ebc6891e2168c3ff1c9ad2250e765446610e75e depends: delete Boost extra files (fanquake)
168997e9b5720e3c58e2fc1a073d0be3cd39d971 depends: disable Qt sbom generation (fanquake)

Pull request description:

  1 followup to #34650, to disable sbom generation.
  1 commit to Boost, to cleanup `.natvis` files that end up in share.

ACKs for top commit:
  hebasto:
    ACK 0ebc6891e2168c3ff1c9ad2250e765446610e75e, tested on Ubuntu 25.10.

Tree-SHA512: 728b51d798a30c54df915564446a7a8648eb4fc27adb8c18b8202df506e2ff61e74516cfe4d6af1af72279255fc75fe14cb43403632a978637781d59eb11fc0f
2026-03-11 09:46:23 +00:00
merge-script
63f27721c2
Merge bitcoin/bitcoin#32985: wallet: Always rewrite tx records during migration
af041c405756d3b8bb04cb2ebd8c32cf237ac2a9 wallet: Always rewrite tx records during migration (Ava Chow)

Pull request description:

  Since loading a wallet may change some parts of tx records (e.g. adding nOrderPos), we should rewrite the records instead of copying them so that the automatic upgrade does not need to be performed again when the wallet is loaded.

  This is useful for future PRs I'm working on where we need to be sure about what data exists in a tx record in descriptor wallets.

ACKs for top commit:
  rkrux:
    lgtm ACK af041c405756d3b8bb04cb2ebd8c32cf237ac2a9
  Eunovo:
    ACK af041c4057
  furszy:
    ACK af041c405756d3b8bb04cb2ebd8c32cf237ac2a9

Tree-SHA512: 96984e46fe110a7749495965587b88a94d1297794e5d8b632b89dcdb2ebc1cd3070cd4458cf8e1b4ec0c76c4e56994f21867c44fa74f25739cbd9c0c911732a6
2026-03-11 10:23:40 +01:00
merge-script
9df4f9d100
Merge bitcoin/bitcoin#34472: bench: add script verification benchmark for P2TR key path spends
d339884f1dfac3749c6214ae896b4354cf9ee28e bench: add script verification benchmark for P2TR key path spends (Sebastian Falbesoner)
dd93362a1d874eb761ed7026956a490b5ed0472b bench: simplify script verification benchmark, generalize signing (Sebastian Falbesoner)

Pull request description:

  We currently benchmark Schnorr signature verification only in the context of block validation ([`ConectBlock*`](8bb77f348e/src/bench/connectblock.cpp (L107)) benchmarks), but not individually for single inputs [1]. This PR adds a script verification benchmark for P2TR key path spends accordingly, by generalizing the already existing one for P2WPKH spends.

  This should make it easier to quantify potential performance improvements like e.g. https://github.com/bitcoin-core/secp256k1/pull/1777, which allows to plug in our HW-optimized SHA256 functions to be used in libsecp256k1 (see the linked example commit f68bef06d9). IIRC from last CoreDev, the main speedup from this is expected for ECDSA signing though (as this involves quite a lot of hashing), but it still makes sense to have verification benchmarks available for both signature types as well.

  (An alternative way could be to add benchmarks for the signing/verifying member functions `CKey::Sign{,Schnorr}`, `CPubKey::Verify` and `XOnlyPubKey::VerifySchnorr` directly, if we prefer that.)

  [1] this claim can be practically verified by putting an `assert(false);` into `XOnlyPubKey::VerifySchnorr`: the three benchmarks crashing are `ConnectBlockAllSchnorr`, `ConnectBlockMixedEcdsaSchnorr` and `SignTransactionSchnorr` (as signing includes verification)

ACKs for top commit:
  furszy:
    ACK d339884f1dfac3749c6214ae896b4354cf9ee28e
  sedited:
    Re-ACK d339884f1dfac3749c6214ae896b4354cf9ee28e
  w0xlt:
    ACK d339884f1dfac3749c6214ae896b4354cf9ee28e

Tree-SHA512: efd20444984bdf1dab4d3d876fdbe2a3a838d7cebc0e31e26683009b81afe4dab8611e2c28c87e46fe8b7e305895c93e461b7934a5aaf293f72b19488b9cec60
2026-03-11 10:11:02 +01:00
merge-script
3201abe3ea
Merge bitcoin/bitcoin#34359: test: add test for rebroadcast of transaction received via p2p
73e385311055eb6c0e3ddb2221f927a3872af1fb test: add test for rebroadcast of transaction received via p2p (Martin Zumsande)

Pull request description:

  The wallet doesn't only rebroadcast transactions it created, but also relevant transactions received via p2p.
  Since this is not self-evident, add test coverage for it.

ACKs for top commit:
  maflcko:
    re-ACK 73e385311055eb6c0e3ddb2221f927a3872af1fb 🦌
  vasild:
    ACK 73e385311055eb6c0e3ddb2221f927a3872af1fb
  furszy:
    ACK 73e385311055eb6c0e3ddb2221f927a3872af1fb
  danielabrozzoni:
    tACK 73e385311055eb6c0e3ddb2221f927a3872af1fb

Tree-SHA512: b5249bb5eb6a124a98030816319aa4364d7aee9c28ee28750ebba5fc8d6bfc9d7960a97ed638611f4560e051760ec4a7a75d302a4cb106dbfadfe11adc604f22
2026-03-11 09:50:47 +01:00
merge-script
410f2a0d20
Merge bitcoin/bitcoin#33772: prevector: simplify operator==
2678abe902c69ab5af5450d6fdf40ead834b1e26 prevector: simplify `operator==` (Daniel Pfeifer)

Pull request description:

  The reduced amount of code reduces maintenance.

ACKs for top commit:
  maflcko:
    lgtm ACK 2678abe902c69ab5af5450d6fdf40ead834b1e26
  l0rinc:
    Tested ACK 2678abe902c69ab5af5450d6fdf40ead834b1e26
  sedited:
    ACK 2678abe902c69ab5af5450d6fdf40ead834b1e26
  stickies-v:
    ACK 2678abe902c69ab5af5450d6fdf40ead834b1e26

Tree-SHA512: 0646b055314944e1457cc434b90a533b6a9f0b48801410b77e031c1f05451a6cd3269350e6e2cead86de9add0ba86339df36f69e9630d686505218717112737b
2026-03-11 09:39:05 +01:00
merge-script
3dcba2eff0
Merge bitcoin/bitcoin#26988: cli: rework -addrinfo cli to use addresses which aren’t filtered for quality/recency
b3046cca7182f3399a221757318d24e203092301 doc: add release notes for #26988 (stratospher)
675be930245e5c1ac2f7940bcf308430adeb18ee cli: modify -addrinfo to use getaddrmaninfo RPC endpoint (stratospher)

Pull request description:

  Rework of `-addrinfo` CLI is done using `getaddrmaninfo` RPC proposed in https://github.com/bitcoin/bitcoin/pull/27511. This would be useful for users who want to know the total number of addresses the node knows about and can make connections to.

  Currently, `-addrinfo` returns total number of addresses the node knows about after filtering them for quality + recency using [`isTerrible`](4b51290f71/src/addrman.cpp (L808)). However `isTerrible`addresses [don't matter](https://github.com/bitcoin/bitcoin/pull/26988#discussion_r1147725684) when selecting outbound peers to connect to. Total number of addresses the node knows about could be higher than what `-addrinfo` currently displays. See https://github.com/bitcoin/bitcoin/pull/24370.

ACKs for top commit:
  ajtowns:
    ACK b3046cca7182f3399a221757318d24e203092301
  pablomartin4btc:
    re-ACK b3046cca7182f3399a221757318d24e203092301
  vasild:
    ACK b3046cca7182f3399a221757318d24e203092301
  sr-gi:
    tACK b3046cca7182f3399a221757318d24e203092301

Tree-SHA512: 764b74f9e0e28a65f8644a31228ca70f6e2cd4c6a93d8f29093ed7a241cd20a81e24b4babace170d945fb28078793d52ec1f4bce898a6d478950fb29ce54af91
2026-03-11 09:12:13 +01:00
Ava Chow
b97abdcdf1
Merge bitcoin/bitcoin#34766: Pre-31.x branching updates
48b952cbb67e4a59e1f036375240bbb23ae21648 build: bump to 31.99 (Ava Chow)
1b3d58f128a5b917b9b33d255e2cd77a3f6188cf docs Remove 31.0 release notes fragments (Ava Chow)
b7cf2f87d0c550f33397b5d9460eb85953871914 docs: Update bips.md (Ava Chow)

Pull request description:

  Completes the final steps immediately prior to branching:

  * Bump version to 31.99
  * Update bips.md
  * Remove release note fragments

ACKs for top commit:
  davidgumberg:
    ACK 48b952cbb6
  ryanofsky:
    Code review ACK 48b952cbb67e4a59e1f036375240bbb23ae21648

Tree-SHA512: b812d93ffc37cbc4ac37467d20459b453530a8d5bf712c8d931031a16f71884cc011faefab741d8939ad283907ed70b51e1def1f922d7c002379dd7e0f36d676
2026-03-10 18:55:44 -07:00
Ava Chow
eed3161893
Merge bitcoin/bitcoin#34792: clusterlin: update SFL comments for deterministic order
d67c8ed78894a8f5e3d6c5ab949c484e64241266 clusterlin: update SFL comments for deterministic order (Pieter Wuille)

Pull request description:

  This was missed in #34257.

ACKs for top commit:
  marcofleon:
    ACK d67c8ed78894a8f5e3d6c5ab949c484e64241266
  achow101:
    ACK d67c8ed78894a8f5e3d6c5ab949c484e64241266

Tree-SHA512: e381da09eb686e69c0fb32cc16dff7ae108f13ecb07bc1466f504a7b4c773d4557599c659f6d2e9ba0037ed89179c2e187f383a917e0242c4c795cf6e1c9cec6
2026-03-10 18:28:32 -07:00
Ava Chow
730308386a
Merge bitcoin/bitcoin#34696: Update embedded asmap to 1772726400 for v31
0690a5d0f27b52435782815b9d7520684486a9ad Update embedded asmap to 1772726400 (Fabian Jahr)

Pull request description:

  This updates the currently embedded data ahead of the v31 release.

  It currently uses the map from the 1772726400 run
  - Pull request: https://github.com/bitcoin-core/asmap-data/pull/45
  - Issue: https://github.com/bitcoin-core/asmap-data/issues/44

  The attestation process to accompany these runs is still rather new but sigs are collected here: https://github.com/asmap/asmap.sigs/tree/main/1772726400

ACKs for top commit:
  achow101:
    ACK 0690a5d0f27b52435782815b9d7520684486a9ad
  sedited:
    ACK 0690a5d0f27b52435782815b9d7520684486a9ad
  hodlinator:
    ACK 0690a5d0f27b52435782815b9d7520684486a9ad FWIW

Tree-SHA512: 61c43ea1bd44425aa07056316220a0e9f3c4ec59cd9447277e114b2004fd7f9e525fb56ac0b3f590447d1a454fa3c636c7ac8c034a673a76126ce51e005cce49
2026-03-10 15:55:36 -07:00
merge-script
951863d022
Merge bitcoin/bitcoin#34769: doc: update http worker thread names
46189fd5264580d0320976faf81aa2f45e1a7760 doc: update http worker thread names (rkrux)

Pull request description:

  After using `Threadpool` for HTTP server in PR 33689, the previously
  documented HTTP worker thread names are outdated. This commit makes
  the corresponding changes to document new names for the HTTP worker
  threads. Below is the output from the `thead list` command after
  attaching `lldb` to `bitcoind`.

  ```zsh
  thread #3: tid = 0xfe551, 0x00007ff80e3536f6 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'b-http_pool_0'
  thread #4: tid = 0xfe552, 0x00007ff80e3536f6 libsystem_kernel.dylib`__psynch_cvwait + 10, name = 'b-http_pool_1'
  ```

  <!--
  *** Please remove the following help text before submitting: ***

  Pull requests without a rationale and clear improvement may be closed
  immediately.

  GUI-related pull requests should be opened against
  https://github.com/bitcoin-core/gui
  first. See CONTRIBUTING.md
  -->

  <!--
  Please provide clear motivation for your patch and explain how it improves
  Bitcoin Core user experience or Bitcoin Core developer experience
  significantly:

  * Any test improvements or new tests that improve coverage are always welcome.
  * All other changes should have accompanying unit tests (see `src/test/`) or
    functional tests (see `test/`). Contributors should note which tests cover
    modified code. If no tests exist for a region of modified code, new tests
    should accompany the change.
  * Bug fixes are most welcome when they come with steps to reproduce or an
    explanation of the potential issue as well as reasoning for the way the bug
    was fixed.
  * Features are welcome, but might be rejected due to design or scope issues.
    If a feature is based on a lot of dependencies, contributors should first
    consider building the system outside of Bitcoin Core, if possible.
  * Refactoring changes are only accepted if they are required for a feature or
    bug fix or otherwise improve developer experience significantly. For example,
    most "code style" refactoring changes require a thorough explanation why they
    are useful, what downsides they have and why they *significantly* improve
    developer experience or avoid serious programming bugs. Note that code style
    is often a subjective matter. Unless they are explicitly mentioned to be
    preferred in the [developer notes](/doc/developer-notes.md), stylistic code
    changes are usually rejected.
  -->

  <!--
  Bitcoin Core has a thorough review process and even the most trivial change
  needs to pass a lot of eyes and requires non-zero or even substantial time
  effort to review. There is a huge lack of active reviewers on the project, so
  patches often sit for a long time.
  -->

ACKs for top commit:
  l0rinc:
    ACK 46189fd5264580d0320976faf81aa2f45e1a7760
  hebasto:
    ACK 46189fd5264580d0320976faf81aa2f45e1a7760.
  theStack:
    ACK 46189fd5264580d0320976faf81aa2f45e1a7760
  furszy:
    ACK 46189fd5264580d0320976faf81aa2f45e1a7760
  sedited:
    ACK 46189fd5264580d0320976faf81aa2f45e1a7760

Tree-SHA512: dc17dcd942a562da0e5ec9b6185db12d7e8ab8539fd6a78e944e95a723040c03c069f6806b8fc2f070839cb7012709d434b9e3e3bce08744dd818abbfe72e3ff
2026-03-10 21:29:25 +01:00
Andrew Toth
79571b9181
threadpool: add ranged Submit overload
Co-authored-by: l0rinc <pap.lorinc@gmail.com>
2026-03-10 16:22:58 -04:00
Pieter Wuille
d67c8ed788 clusterlin: update SFL comments for deterministic order 2026-03-10 14:09:27 -04:00
Fabian Jahr
0690a5d0f2
Update embedded asmap to 1772726400
The file was produced in this collaborative run: https://github.com/bitcoin-core/asmap-data/issues/44
2026-03-10 18:54:41 +01:00
merge-script
f82d076771
Merge bitcoin/bitcoin#34784: ci: use latest versions of lint deps
9f3752c43778b7803f4c6810aa570542847f3261 ci: use latest versions of lint deps (fanquake)

Pull request description:

  Use the latest available versions, except for LIEF, which is changed with Guix.

ACKs for top commit:
  hebasto:
    ACK 9f3752c43778b7803f4c6810aa570542847f3261, I've verified the releases against https://pypi.org and https://github.com/becheran/mlc.

Tree-SHA512: e6ed79bb7dc8601ed0708eb7b53cbf4cf843b69829c073c41e9d97be690b4b2bf9ea5ecf250e05cbacba4ad35df06aa3e2cb2ff319145a34e1a7831cf182ec21
2026-03-10 15:52:10 +00:00
Hennadii Stepanov
a9baf19172
Merge bitcoin/bitcoin#34789: doc: update build guides pre v31
6b20ad84e0a66c48976a599a7cc5b9b19cd49fab doc: update build guides pre v31 (fanquake)

Pull request description:

  We are testing on FreeBSD 15 (nightly) and macOS 26 (CI).

ACKs for top commit:
  maflcko:
    lgtm ACK 6b20ad84e0a66c48976a599a7cc5b9b19cd49fab
  hebasto:
    ACK 6b20ad84e0a66c48976a599a7cc5b9b19cd49fab.

Tree-SHA512: c97528d8db762f44d6ada064162264eedf67b154de0f357b915b14d4260b6802b099d19156ab5747120e4c632b21a8c8de92e2a903bbfcfcf4376549694eef1f
2026-03-10 15:10:13 +00:00
merge-script
48f26e2040
Merge bitcoin/bitcoin#34751: doc: Update asmap-data repository rule for file inclusion
8bc62ce173dd492ca862a692a88d526d406e0eb3 doc: Update asmap-data repository rule for file inclusion (Fabian Jahr)

Pull request description:

  This updates the decision rule for file inclusion in the asmap-data repository after a collaborative run following discussion in the latest run: https://github.com/bitcoin-core/asmap-data/issues/44

  The change is small but does a few things:
  - No minimum number of participants recommended anymore
  - Minimum number of matches set to 5 (which was previously the number of recommended min participants)
  - The result that is taken does not need to see a match between the majority of participants, it only needs to have the most matches
  - Participants that saw a match should sign for it

  I also thought about adding an explicit tie-breaker if there are two results with the same number of matches but since both results are equally valid I think it won't be needed (?)

ACKs for top commit:
  hodlinator:
    ACK 8bc62ce173dd492ca862a692a88d526d406e0eb3
  luisschwab:
    ACK 8bc62ce173dd492ca862a692a88d526d406e0eb3
  janb84:
    Concept ACK 8bc62ce173dd492ca862a692a88d526d406e0eb3

Tree-SHA512: 439ba1275662122e226aa472dd96fa8ed0e1af3e91d695c711e082d7ba182883e1174f954d2531cdf7e05bdbeab5ef088f8bcbd39c7124afe82baf2026ed391b
2026-03-10 14:32:34 +00:00
fanquake
6b20ad84e0
doc: update build guides pre v31
We are testing on FreeBSD 15 (nightly) and macOS 26 (CI).
2026-03-10 14:13:44 +00:00
Eugene Siegel
b503768819 fuzz: register PeerManager in process_message(s)
This lets CValidationInterface callbacks be hit. Also remove
no-op SyncWithValidationInterfaceQueue since there are no validation
interfaces registered in ResetChainman.
2026-03-10 09:24:41 -04:00
Hennadii Stepanov
195306c359
Merge bitcoin/bitcoin#34785: ci: remove TODOs from retry
c08f0c3c29b58223822c3fbf0ced69a886bfbf0d ci: remove TODOs from retry (fanquake)

Pull request description:

  TODOs are good targets for LLMs to generate PRs. Remove these TODOs, which aren't needed, to prevent that.

ACKs for top commit:
  maflcko:
    lgtm ACK c08f0c3c29b58223822c3fbf0ced69a886bfbf0d
  hebasto:
    ACK c08f0c3c29b58223822c3fbf0ced69a886bfbf0d.

Tree-SHA512: 4561cd3221b06bc877c4dadd79c9be02839c8ce7dee924d118897bb0a96d223ce60e3f1c2dfb8b6eecf9abe96c188dc875134395ed15cac669b5ae1435fc1e5f
2026-03-10 13:02:02 +00:00
fanquake
c08f0c3c29
ci: remove TODOs from retry
TODOs are good targets for LLMs to generate PRs. Remove these TODOs,
which aren't needed, to prevent that.
2026-03-10 11:50:32 +00:00
fanquake
9f3752c437
ci: use latest versions of lint deps
Use the latest available versions, except for LIEF, which is
changed with Guix.
2026-03-10 11:20:59 +00:00
merge-script
544c15ff4e
Merge bitcoin/bitcoin#34759: walletdb: hash pubkey/privkey in one shot to avoid leaking secret data
501a3dd4ad4a545a05663a78cec61575966045c7 walletdb: hash pubkey/privkey in one shot to avoid leaking secret data (Sebastian Falbesoner)

Pull request description:

  In several places in the wallet DB module, byte strings containing serialized public keys and secret keys are created in order to be hashed. To avoid sensitive data lingering in memory (and potentially leaking), don't store the preimage, but hash both public key and secret key in one shot, using the overloaded `Hash` function:
  d198635fa2/src/hash.h (L82-L88)

  See e.g. #31166 and #31774 for similarly themed PRs (Note that in #31166 we used the explicit `memory_cleanse` approach though, as changing the allocator was not possible.)

ACKs for top commit:
  davidgumberg:
    crACK 501a3dd4ad
  furszy:
    ACK 501a3dd4ad4a545a05663a78cec61575966045c7
  rkrux:
    ACK 501a3dd
  theuni:
    ACK 501a3dd4ad4a545a05663a78cec61575966045c7

Tree-SHA512: 8a71685b26bf89fca181aed6512a8db843b6d1dc740a468bb33fb2a629a23167a9676c228d1077ad8db2df9db80f47e32ec013737e93df8ee6f4ba505d3d50c9
2026-03-10 11:19:40 +00:00
Hennadii Stepanov
9aea2905fe
Merge bitcoin/bitcoin#34783: depends: link to upstream qt issue
3a83715c2adb99c98867144690452074b3788b54 depends: link to upstream qt issue (fanquake)

Pull request description:

  Follows up to:
  https://github.com/bitcoin/bitcoin/pull/34650#discussion_r2837726376.

  https://qt-project.atlassian.net/browse/QTBUG-144864

ACKs for top commit:
  sedited:
    ACK 3a83715c2adb99c98867144690452074b3788b54
  hebasto:
    ACK 3a83715c2adb99c98867144690452074b3788b54.

Tree-SHA512: a0ad902bb8d19cd065410dc3a9f15c83d4ff3807219b5fd6084f09a12c4003ef89fc28b4237311baa39c534d2ae1194b70b2d9dd036d4cf6f8a8385362f411b7
2026-03-10 11:16:44 +00:00
fanquake
3a83715c2a
depends: link to upstream qt issue
Follows up to:
https://github.com/bitcoin/bitcoin/pull/34650#discussion_r2837726376.

https://qt-project.atlassian.net/browse/QTBUG-144864
2026-03-10 11:01:11 +00:00
merge-script
8dcd79949f
Merge bitcoin/bitcoin#34718: Release: 31.0 translations update
d21afb297cdd8ef5b7b02316badc4b913a8caab4 qt: 31.0 translations update (Hennadii Stepanov)

Pull request description:

  This PR follows our [Release Process](24699fec84/doc/release-process.md) and concludes the translation-specific efforts for this release cycle. It follows two previous translation-related PRs, https://github.com/bitcoin/bitcoin/pull/34525 and https://github.com/bitcoin-core/gui/pull/931.

  It is one of the steps required _before_ branch-off, as scheduled in https://github.com/bitcoin/bitcoin/issues/33607.

  A previous similar PR: https://github.com/bitcoin/bitcoin/pull/33275.

  **A Note for reviewers:**
  The actual translations on Transifex is a moving target. As a result, your diff after running [`bitcoin-maintainer-tools/update-translations.py`](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/update-translations.py) may differ.

ACKs for top commit:
  fanquake:
    ACK d21afb297cdd8ef5b7b02316badc4b913a8caab4

Tree-SHA512: 1b95fb53b7285cbe2031c18b773519fe8db05417f5eeed70a5d9d97ffe3b8f0c1e8d21e469b9a6a723a3ade5241354fa150f4431895c806183a0492e55905ea5
2026-03-10 10:59:09 +00:00
merge-script
5f9068bdcd
Merge bitcoin/bitcoin#34781: test: Remove fixed TODO in address_to_scriptpubkey
fa0587a306430b35d2852ee32f7eee2adb8c1e64 test: Remove fixed TODO in address_to_scriptpubkey (MarcoFalke)

Pull request description:

  After commit d178082996dc3000f42816f89afcf3fa4d31e159 added the bech32 format, the TODO about adding other formats can be removed.

ACKs for top commit:
  sedited:
    ACK fa0587a306430b35d2852ee32f7eee2adb8c1e64
  rkrux:
    crACK fa0587a306
  musaHaruna:
    ACK [fa0587a](fa0587a306)

Tree-SHA512: 49a8a514bed11e945bd8f9b13b84ae14b4dbc8a7ebb7224b1746776d9dbf68abc3b53d67f1b7fff83bc4360b15324fb96611550f4aca808b16beb03bcbfd0a55
2026-03-10 10:38:38 +00:00