]> Untitled Git - bdk-cli/log
bdk-cli
7 hours agoMerge bitcoindevkit/bdk-cli#242: Payjoin persistence master github/master
merge-script [Thu, 2 Jul 2026 11:45:01 +0000 (12:45 +0100)]
Merge bitcoindevkit/bdk-cli#242: Payjoin persistence

2f14a368158dbeacfc9420587a85fb7b29e2ab07 Retry Payjoin requests with other relays (Mshehu5)
6fb0ecd00e089a8cd2d8eecf46e8f6ac48dc4033 Restrict payjoin inputs to confirmed UTXOs (Mshehu5)
262ce86573a98bfe33cb92d52d2da0acece32538 Add payjoin persistence test (Mshehu5)
e85a92cd655b7d44a401f01ca86dad782e04e54b Prune stale payjoin sessions on DB open (Mshehu5)
181d1325ae5fae60c47c47df7c079abebc84c595 chore(deps): Bump payjoin and enable reqwest rustls (Mshehu5)
b9ca88ff6fbd8846d9f6122a7695cc129b71ad8a Document payjoin recovery commands and SQLite setup (Mshehu5)
559ba76255adaa2ab129c5df63d796ae53f5ac67 Add commands to resume and view payjoin history (Mshehu5)
4f71144a49047c9debd481cbb2a75cd86d462906 Integrate payjoin session persistence into workflow (Mshehu5)
c2bdb3d53f503d9ce58cb2c43771320a89aefdf4 Add SQLite backing store for payjoin sessions (Mshehu5)

Pull request description:

  ### Description
  https://github.com/bitcoindevkit/bdk-cli/pull/230 needed to be merged for this to go through
  Address https://github.com/bitcoindevkit/bdk-cli/issues/149 also follow up to #200
  This PR adds persistance to existing async payjoin integration
  This introduces neccessary database model and tables also  add commad for resume to allow interrupted sessions to be continued also a particular session either send or receive.
  A history commad to view payjoin history and status has been added

  ### Notes to the reviewers

  Step to review this include making a payjoin transaction

  Run a receiver to get a BIP21 URI then pass it to the sender as seen in docs https://github.com/bitcoindevkit/bdk-cli/blob/b9cf2acc5f10db46fa30777ff0910b8610a5fc33/README.md?plain=1#L121-L141

  To test resumption, interrupt either side with Ctrl+C mid-session then run resume on that side to continue. A few scenarios worth covering: receiver resuming after interrupt and sender resuming after interrupt. Use history after each scenario to confirm the session state was persisted correctly.

  docs for this can be seen in 7e4ffd1d3ad1165a7d9187bcacb0bdab3303dbb3

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:
  * [x] I've added docs for the new feature

Top commit has no ACKs.

Tree-SHA512: 1e8be24fbf7d894687389192381242cebafcaffd8601418e197cfb7942917cbcd5ae308ed5e9fcc644c1dacb78abed9aa23c49c5ff08151b4657956e89d14217

8 hours agoRetry Payjoin requests with other relays
Mshehu5 [Sun, 28 Jun 2026 16:01:25 +0000 (17:01 +0100)]
Retry Payjoin requests with other relays

Payjoin currently keeps using the relay selected during OHTTP key
bootstrapping. If that relay goes offline, the session fails even when
other relay URLs were supplied.

Select from the available relays for each OHTTP request and remember
failures for the rest of the command. Build a fresh request for every
attempt so failover does not reuse linkable OHTTP ciphertext.

8 hours agoRestrict payjoin inputs to confirmed UTXOs
Mshehu5 [Sat, 6 Jun 2026 11:24:36 +0000 (12:24 +0100)]
Restrict payjoin inputs to confirmed UTXOs

Prevent wallet failures caused by selecting unconfirmed coins for
payjoin inputs.

Without this filter, the wallet can fail with an "unconfirmed
coins" error during payjoin processing.

8 hours agoAdd payjoin persistence test
Mshehu5 [Fri, 29 May 2026 10:53:44 +0000 (11:53 +0100)]
Add payjoin persistence test

Cover the new payjoin persistence paths with focused unit tests.

Exercise replay protection, sender and receiver event persistence,
session pruning and history rendering.

These cases were chosen because the PR's new behavior is
concentrated in the persistence layer and session history path

8 hours agoPrune stale payjoin sessions on DB open
Mshehu5 [Tue, 14 Apr 2026 14:54:06 +0000 (15:54 +0100)]
Prune stale payjoin sessions on DB open

Delete payjoin sessions older than 30 days when the payjoin database is accessed. Remove related event rows in the same cleanup pass.

8 hours agochore(deps): Bump payjoin and enable reqwest rustls
Mshehu5 [Mon, 13 Apr 2026 11:26:28 +0000 (12:26 +0100)]
chore(deps): Bump payjoin and enable reqwest rustls

Move to payjoin 0.25.0 to stay closer to the latest release.

Enable rustls for the direct reqwest client because Payjoin
polling uses bdk-cli's own HTTPS client and without a TLS
backend the first relay poll fails.

Refine the skipped monitoring status message for the receiver
flow.

8 hours agoDocument payjoin recovery commands and SQLite setup
Mshehu5 [Mon, 16 Feb 2026 13:51:18 +0000 (14:51 +0100)]
Document payjoin recovery commands and SQLite setup

Update the README to cover the new `resume` and `history` commands
so users can recover interrupted payjoin sessions and inspect saved
session state. Also add the SQLite dependency needed for the
payjoin persistence workflow.

This keeps the user-facing setup and command documentation aligned
with the new persistence and recovery behavior.

8 hours agoAdd commands to resume and view payjoin history
Mshehu5 [Mon, 16 Feb 2026 13:50:06 +0000 (14:50 +0100)]
Add commands to resume and view payjoin history

Expose persisted payjoin session state through CLI commands so users
can recover interrupted sessions and review prior session progress.
Add `resume` to continue pending sender and receiver sessions,
`history` to list saved sessions, status text helpers for clearer
output, and session ID filtering to target a specific session.

This improves recovery and troubleshooting for long-running async
payjoin flows by making persisted session state available from the
CLI.

8 hours agoIntegrate payjoin session persistence into workflow
Mshehu5 [Mon, 16 Feb 2026 13:48:33 +0000 (14:48 +0100)]
Integrate payjoin session persistence into workflow

Wire the payjoin persistence layer into the existing send and receive
flows so session state is saved during normal operation and can be
replayed later. Initialize the database from the handlers, replace
the noop persisters with SQLite-backed persisters, resume existing
sessions, and record seen inputs in the receiver flow for replay
protection.

This moves persistence from a standalone storage layer into the
runtime payjoin workflow so interrupted sessions can continue from
saved state instead of starting over. It also simplifies error
handling by relying on `?` once the storage errors map cleanly into
the CLI error type.

8 hours agoAdd SQLite backing store for payjoin sessions
Mshehu5 [Mon, 16 Feb 2026 13:31:08 +0000 (14:31 +0100)]
Add SQLite backing store for payjoin sessions

Persist payjoin sender and receiver state in SQLite so interrupted
payjoin sessions can be resumed after the CLI exits. Add dedicated
tables for send and receive sessions, append-only event logs for
state replay, receiver pubkey lookup for sender sessions, and
seen-input tracking for replay protection.

This follows the intended async payjoin design by persisting session
state across interruptions. SQLite keeps the initial persistence
backend simple and builds on existing rusqlite support, at the cost
of a small payjoin-specific schema and serialization layer.

2 days agoMerge bitcoindevkit/bdk-cli#248: Update Wallet to 2.4.0 and other deps
merge-script [Tue, 30 Jun 2026 19:38:29 +0000 (20:38 +0100)]
Merge bitcoindevkit/bdk-cli#248: Update Wallet to 2.4.0 and other deps

eea5ba9a44cf82a10eca47f77a66c2e0822e1d3f chore: update bdk_electrum and bdk_esplora (Vihiga Tyonum)
4b6094a4b7b379c589e00bd7cad4756a874c83c0 feat(WalletEvent): Add WalletEvent to rpc and cbf (Vihiga Tyonum)
3aa50416de33cb795210b71087da0c9682f90997 chore(update-deps): Fix clippy warnings (Vihiga Tyonum)
a3c6d6eb83e10324723c820b40e6adbe55e652c2 chore: Update project dependencies (Vihiga Tyonum)
06b049d7aba5919446a7851f0dc9efdd9a654052 chore: Update bdk_wallet to v2.3 (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description
  This PR updates the Wallet API to v2.4.0 and other dependencies. It also adds WalletEvent to both sync and full_scan for all backends.

  Fixes #243

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  ## Changelog notice
  - Update bdk_wallet to v2.4.0
  - Add WalletEvents to all backends Esplora, Electrum, Rpc and CBF.
  - Add `print_wallet_events` function to print wallet events to the terminal during sync
  - Update bdk_bitcoind_rpc to v0.22.0
  - Update bdk_electrum to v0.24.0
  - Update bdk_kyoto to v0.15.4
  - Update bdk_esplora to v0.22.2

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

Top commit has no ACKs.

Tree-SHA512: 2c3c2beb66d1f23fd3e0e30a86622625a51ae5a4092540a9393188cf46523977a05936f893d06149459a65877527b9d52dd9eca00b08a86d59b2ed671b469a2c

2 days agochore: update bdk_electrum and bdk_esplora
Vihiga Tyonum [Sun, 28 Jun 2026 19:40:46 +0000 (20:40 +0100)]
chore: update bdk_electrum and bdk_esplora

- update bdk_electrum to v0.24.0
- update bdk_esplora to v0.22.2

2 days agofeat(WalletEvent): Add WalletEvent to rpc and cbf
Vihiga Tyonum [Sun, 28 Jun 2026 18:31:15 +0000 (19:31 +0100)]
feat(WalletEvent): Add WalletEvent to rpc and cbf

- add WalletEvent to rpc and cbf clients
- Update Wallet to v2.4.0

2 days agochore(update-deps): Fix clippy warnings
Vihiga Tyonum [Tue, 31 Mar 2026 21:13:40 +0000 (22:13 +0100)]
chore(update-deps): Fix clippy warnings

2 days agochore: Update project dependencies
Vihiga Tyonum [Fri, 13 Mar 2026 13:13:09 +0000 (14:13 +0100)]
chore: Update project dependencies

- update bdk_bitcoind_rpc to v0.22.0
- update bdk_electrum to v0.23.2
- update bdk_kyoto to v0.15.4

2 days agochore: Update bdk_wallet to v2.3
Vihiga Tyonum [Wed, 11 Feb 2026 16:34:15 +0000 (17:34 +0100)]
chore: Update bdk_wallet to v2.3

- Add wallet events to full_scan and sync
subcommands

3 days agoMerge bitcoindevkit/bdk-cli#291: fix(create_tx): enforce single recipient for send_all
merge-script [Mon, 29 Jun 2026 08:51:35 +0000 (09:51 +0100)]
Merge bitcoindevkit/bdk-cli#291: fix(create_tx): enforce single recipient for send_all

50d248cfc482bf5d7807b84182e7f19b104ab49b fix(create_tx): enforce single recipient for send_all (Artemiy)

Pull request description:

  Closes #290

  ### Description

  Previously, passing multiple `--to` arguments with `--send_all` would silently drain the wallet to only the first recipient, ignoring the rest. This was inconsistent with the silent-payments `create_tx`, which already validates the recipient count.

  Now returns an error unless exactly one recipient is provided.

  ### Notes to the reviewers

  - The fix mirrors the validation logic already present in the silent-payments `create_tx` branch of the same file, so behavior is now consistent between the two code paths.

  ## Changelog notice
  - Fixed create_tx --send_all to reject multiple recipients instead of silently using only the first one

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  * [x] I've updated `CHANGELOG.md`

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [ ] I've added tests to reproduce the issue which are now passing
  * [x] I'm linking the issue being fixed by this PR

ACKs for top commit:
  tvpeter:
    ACK 50d248cfc482bf5d7807b84182e7f19b104ab49b
  va-an:
    ACK 50d248cfc482bf5d7807b84182e7f19b104ab49b

Tree-SHA512: c462aebe4ba046e875f8a9981aef01eb85bc1f24ab122c6c9efb9f4569daf9349f7aefcbe42dad7bb2b144d06bae62da7af7419a392bde19d58980305b6ebaf9

4 days agoMerge bitcoindevkit/bdk-cli#225: feat(compile): compile taproot descriptor with rando...
merge-script [Sun, 28 Jun 2026 02:59:56 +0000 (03:59 +0100)]
Merge bitcoindevkit/bdk-cli#225: feat(compile): compile taproot descriptor with randomized unspendable internal key

03f6b98d4b0af77fc8a60104a4e1f5cdae3b0c1c test(handlers): drop redundant cfg gate on test module (Vadim Anufriev)
be6bb4b4049ced27ac6d937dd3e47dc5e0182303 docs: add pre-push recipe description to README (Vadim Anufriev)
6e113b1325e264cc4547bd6c3bad890ea6006722 docs(contributing): update CONTRIBUTING.md (Vadim Anufriev)
29ef2e2912a6503086682c33b7ffda21f4c0eed7 refactor(compile): lazy compilation and use pipe for readability (Vadim Anufriev)
a3ca537661dbb80620355b6dae296a836701f93c feat(compile): randomize unspendable internal key for taproot descriptor (Vadim Anufriev)
dd125049ca17f40aae28dead441660b2c201b495 chore(deps): make shlex a non-optional dependency (Vadim Anufriev)

Pull request description:

  ### Description

  Part of #218

  Implements randomization of the unspendable internal key for taproot descriptors. This is the first part of #218, which consists of two parts:
  1. **This PR**: Randomize unspendable internal key for taproot descriptor
  2. **Follow-up**: Add verification command to ensure internal key is derived from NUMS key

  Split into separate PRs for easier review and iteration, and to allow independent discussion of the verification command implementation, as one of the possible approaches could introduce breaking changes.

  ### Notes to the reviewers
  The `compile` command now returns an additional `r` field for taproot descriptors (`-t tr`), containing the randomly generated internal key. Each compilation will produce a different internal key instead of using a fixed NUMS key.

  Example output for taproot (first execution):
  ```
  -> % bdk-cli compile "pk(A)" -t tr
  {
    "descriptor": "tr(2dd09dd0355f4b2d5a4886de599786f3c0211652373221c87aba1cd1f7f1e593,pk(A))#anvu48aj",
    "r": "275a58827bd0ad459d6f92e083ddc3d99a03076155691680eb8f3b06380cdcfd"
  }
  ```

  Same descriptor compiled again produces different `r` and internal key:
  ```
  -> % bdk-cli compile "pk(A)" -t tr
  {
    "descriptor": "tr(801078f69dae7d95631723d4d13e6c32911633d227dcfc24c6b7e32e1e533e6c,pk(A))#f79rr82j",
    "r": "5e3ac63bb20d6a4bfff645279cc63a7472e18066da8826b13cbcb23aecb5c401"
  }
  ```

  Other descriptor types remain unchanged:
  ```
  -> % bdk-cli compile "pk(A)" -t sh
  {
    "descriptor": "sh(pk(A))#k80zhe7s"
  }
  ```

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added tests for the new feature
  * [ ] I've added docs for the new feature
  * [ ] I've updated `CHANGELOG.md`

Top commit has no ACKs.

Tree-SHA512: 333a7e82007dfe2344f14fb8e1fb7b3f5c19d99677251a97f7909a285607c399aeacfbbca089117677a859da6dfc55a4853b36f1773ed3e70292433e27bfcfd0

6 days agofix(create_tx): enforce single recipient for send_all
Artemiy [Sun, 21 Jun 2026 07:11:17 +0000 (10:11 +0300)]
fix(create_tx): enforce single recipient for send_all

Previously, passing multiple --to arguments with --send_all would
silently drain the wallet to only the first recipient, ignoring the
rest. This was inconsistent with the silent-payments create_tx, which
already validates the recipient count.

Now returns an error unless exactly one recipient is provided

5 weeks agotest(handlers): drop redundant cfg gate on test module
Vadim Anufriev [Thu, 7 May 2026 20:53:32 +0000 (00:53 +0400)]
test(handlers): drop redundant cfg gate on test module

5 weeks agodocs: add pre-push recipe description to README
Vadim Anufriev [Thu, 2 Apr 2026 20:53:27 +0000 (00:53 +0400)]
docs: add pre-push recipe description to README

5 weeks agodocs(contributing): update CONTRIBUTING.md
Vadim Anufriev [Sun, 29 Mar 2026 14:52:52 +0000 (18:52 +0400)]
docs(contributing): update CONTRIBUTING.md

- Remove MSRV mention as the project no longer enforces it
- Add Conventional Commits and GPG signing links to align with other repos

5 weeks agorefactor(compile): lazy compilation and use pipe for readability
Vadim Anufriev [Tue, 24 Mar 2026 20:12:30 +0000 (00:12 +0400)]
refactor(compile): lazy compilation and use pipe for readability

Move miniscript compilation inside match arms to avoid compiling
for all script contexts when only one is needed. Use `tap::Pipe`
for concise method chaining in sh/wsh/sh-wsh branches.

5 weeks agofeat(compile): randomize unspendable internal key for taproot descriptor
Vadim Anufriev [Tue, 24 Mar 2026 17:59:39 +0000 (21:59 +0400)]
feat(compile): randomize unspendable internal key for taproot descriptor

Instead of using a fixed NUMS key as the internal key for taproot
descriptors, generate a randomized unspendable key (H + rG) for each
compilation. This improves privacy by preventing observers from
determining whether key path spending is disabled.

The randomness factor `r` is included in the output so the user can
verify that the internal key is derived from the NUMS point.

Also applies `shorten()` globally in pretty mode and uses `?` operator
via dedicated error variants instead of `map_err`.

Tests verify descriptor structure and `r` field uniqueness across
randomized compilations.

5 weeks agochore(deps): make shlex a non-optional dependency
Vadim Anufriev [Tue, 24 Mar 2026 17:43:08 +0000 (21:43 +0400)]
chore(deps): make shlex a non-optional dependency

Although not directly related to this PR's changes, during review
we agreed to make shlex non-optional since it's used by the default
`repl` feature and the package is under 20 KiB.

See: https://github.com/bitcoindevkit/bdk-cli/pull/225#discussion_r2671741961

6 weeks agoMerge bitcoindevkit/bdk-cli#220: Add experimental silent payment transaction creation...
merge-script [Tue, 19 May 2026 18:15:42 +0000 (19:15 +0100)]
Merge bitcoindevkit/bdk-cli#220: Add experimental silent payment transaction creation support

c57985475172fc610b3ce996338a43baef1c52d6 feat(silentpayments): add experimental silent-payments sending support (nymius)

Pull request description:

  **Description**

  This PR adds experimental support for creating silent payment transactions through a new `CreateSpTx` command. The implementation integrates the `bdk_sp` crate to enable sending Bitcoin to silent payment addresses.

  Key changes:
  - Adds `bdk_sp` dependency as an optional feature
  - Implements `CreateSpTx` command with support for silent payment recipients
  - Includes parser for silent payment `address:amount` pairs
  - Returns signed transactions ready for broadcast (not PSBTs due to silent payment derivation constraints)

  **Notes to the reviewers**

  - This feature is marked as **EXPERIMENTAL** and includes warnings against mainnet use
  - The command returns signed transactions directly rather than PSBTs because silent payment script pubkey derivation cannot be performed securely in a trustless manner with standard PSBT workflows
  - RBF is disabled for silent payment transactions (sequence set to MAX)
  - The implementation handles both single key and extended key signers
  - Error handling uses temporary `.expect()` calls that should be addressed in future iterations

  **Changelog notice**

  **Added**: Experimental silent payment transaction creation via `CreateSpTx` command (feature-gated behind `sp` flag)

  **Checklists**

  **All Submissions**

  * [x] I've signed all my commits
  * [x] I followed the [conventional commit guidelines](https://www.conventionalcommits.org/en/v1.0.0/)
  * [x] I ran cargo fmt, clippy and test before committing

  **New Features**

  ~~* [ ] I've added tests for the new feature~~
  * [x] I've added docs for the new feature

ACKs for top commit:
  tvpeter:
    tACK c57985475172fc610b3ce996338a43baef1c52d6

Tree-SHA512: 0d5e2064b2eacab4fa2c0161bb1d9fd73c17401900c80a665a8ba3feb2025ddd6896efd0c30f7ceab361a88c397010965442bc9689df85383aaa9a0ec95fec0c

7 weeks agofeat(silentpayments): add experimental silent-payments sending support
nymius [Wed, 20 Aug 2025 16:42:12 +0000 (13:42 -0300)]
feat(silentpayments): add experimental silent-payments sending support

- Adds CreateSpTx command to create transactions with silent payment
  outputs: this command creates signed transactions directly rather than
  PSBTs due to current limitations in secure shared derivation.

  It supports mixed recipients: regular addresses + silent payments.
  It DOES NOT support RBF for the created transactions.
  It generates signed transactions ready for broadcasting.

- Adds SilentPaymentCode command to create silent payment codes from
  public keys and network: the silent payment code generated is
  independent from any of the other stateful features of bdk-cli.

  This command is mainly intended for experimental use, do not lock any
  funds to the generated code if you don't know what you are doing and
  don't have the keys matching the public keys used.

- Adds bdk_sp dependency with "silent-payments" feature flag.
- Adds silent payment recipient parsing utility.
- Add README section for new silent payment commands.

Note: This is experimental functionality for testing only, not
recommended for mainnet use.

Signed-off-by: nymius <155548262+nymius@users.noreply.github.com>
2 months agoMerge bitcoindevkit/bdk-cli#179: Feature/bip322 integration
merge-script [Fri, 24 Apr 2026 18:48:53 +0000 (19:48 +0100)]
Merge bitcoindevkit/bdk-cli#179: Feature/bip322 integration

7c33b33a2bfd9065cbe0768bcb00ce0ec1653686 chore(deps): switch bdk_bip322 from git to crates.io release (Abiodun Awoyemi)
e03f123c480d50517be98cae9b34c4dfa0ff5f92 fix: rename BIP322 commands, validate address ownership before signing and add Bip322Error variant (Abiodun)
2eab75c167d5609e1e96374ffb08cdf22a12a09a bip322: update proof handling for new bdk-bip322 API (aagbotemi)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description
  This PR added [BIP322](https://bips.xyz/322) feature into BDK CLI.
  It also has a usage file for testing purposes

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [x] I've added docs for the new feature
  * [x] I've updated `CHANGELOG.md`

ACKs for top commit:
  notmandatory:
    ACK 7c33b33a2bfd9065cbe0768bcb00ce0ec1653686

Tree-SHA512: a3e16b86c2259eb74f243721f9b54589322066d293ca0ba3ba74de13de264289426e5019ba16514797aa34a3f17a6bed574d0b5cc66d2ff51b68830152616696

2 months agochore(deps): switch bdk_bip322 from git to crates.io release
Abiodun Awoyemi [Thu, 23 Apr 2026 06:25:01 +0000 (07:25 +0100)]
chore(deps): switch bdk_bip322 from git to crates.io release

2 months agoMerge bitcoindevkit/bdk-cli#270: fix: fix RUSTSEC-2026-0097 for rand 0.9
merge-script [Tue, 21 Apr 2026 13:05:09 +0000 (14:05 +0100)]
Merge bitcoindevkit/bdk-cli#270: fix: fix RUSTSEC-2026-0097 for rand 0.9

77dc466ca54eb8466e8670428c384fc34c6a81ac chore: update rand 0.9.2 -> 0.9.3 (Vadim Anufriev)

Pull request description:

  Fixes #269

  Update transitive dependency `rand` from 0.9.2 to 0.9.3 via `cargo update -p rand@0.9.2` to resolve RUSTSEC-2026-0097.

  Note: #268 (`rand 0.8.5` via `secp256k1` and others) remains unaffected by this change and needs to be fixed upstream.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

Top commit has no ACKs.

Tree-SHA512: b1acee0469b25b8c3e334af0c045df426652995ce8e0da9cff99d391768ef0fb75f99e50f8dfef36a840b2d6f5e7fb0b125e8bfed46952236595b7c81d0f52b1

2 months agofix: rename BIP322 commands, validate address ownership before signing and add Bip322...
Abiodun [Thu, 19 Feb 2026 08:12:42 +0000 (09:12 +0100)]
fix: rename BIP322 commands, validate address ownership before signing and add Bip322Error variant

2 months agobip322: update proof handling for new bdk-bip322 API
aagbotemi [Sat, 26 Apr 2025 12:07:37 +0000 (13:07 +0100)]
bip322: update proof handling for new bdk-bip322 API

2 months agochore: update rand 0.9.2 -> 0.9.3
Vadim Anufriev [Sun, 12 Apr 2026 19:51:27 +0000 (23:51 +0400)]
chore: update rand 0.9.2 -> 0.9.3

3 months agoMerge bitcoindevkit/bdk-cli#265: Bump version to 3.0.0 v3.0.0
merge-script [Thu, 26 Mar 2026 15:23:12 +0000 (16:23 +0100)]
Merge bitcoindevkit/bdk-cli#265: Bump version to 3.0.0

07fd32f8a70bc24463e58c8ffd63fbcaae9930f2 Bump version to 3.0.0 (Vihiga Tyonum)
83499d70ea137c69aea47389de6da20cfc3cddd4 docs: Update changelog for v3.0.0 release (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  This PR bumps the crate version to 3.0.0

  Closes #257

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  va-an:
    ACK 07fd32f8a70bc24463e58c8ffd63fbcaae9930f2

Tree-SHA512: 60c753c7637749971fd695cfce08a9a0abac5b2ea3ed470a6d42cfb8f4861f35fee510af174956d213fb3cde8cc4a907a9fc309d23bf42befd909deadfd1aa22

3 months agoBump version to 3.0.0
Vihiga Tyonum [Thu, 26 Mar 2026 10:25:38 +0000 (11:25 +0100)]
Bump version to 3.0.0

3 months agodocs: Update changelog for v3.0.0 release
Vihiga Tyonum [Thu, 26 Mar 2026 10:08:56 +0000 (11:08 +0100)]
docs: Update changelog for v3.0.0 release

3 months agoMerge bitcoindevkit/bdk-cli#251: Deps: Update transitive dependencies `quinn-proto...
merge-script [Wed, 25 Mar 2026 22:21:20 +0000 (23:21 +0100)]
Merge bitcoindevkit/bdk-cli#251: Deps: Update transitive dependencies `quinn-proto` and `aws-lc-sys`

fb9fe29cee11a414f747c0c6f480ddccbb78a6d2 chore: update project deps (Vihiga Tyonum)
5c63453f5d310b6e55cfcae6fa0cf344c21c5c32 deps: Update rustls-webpki to 0.103.10 (Vihiga Tyonum)
88cdceea26903c6023fe1fd0426fd04c533ea5b2 deps: Update aws-lc-sys to v0.39.0 & parent crate (Vihiga Tyonum)
5980919a637842c7615566737d90d7390f395524 deps: Update quinn-proto to v0.11.14 (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  This PR updates transitive dependencies `quinn-proto` and `aws-lc-sys` to fix identified vulnerabilities.
  Other `aws-lc-sys` linked vulnerabilities fixed by this update include:
  - AWS-LC has Timing Side-Channel in AES-CCM Tag Verification
  - AWS-LC has PKCS7_verify Signature Validation Bypass
  - CRLs not considered authorative by Distribution Point due to faulty matching logic in `rustls-webpki` v0.103.8

  This PR also update:
  - clap to v4.6
  - clap_complete to v4.6
  - env_logger to v0.11.10
  - thiserror to v2.0.18
  - tracing to v0.1.44
  - toml to v1.1.0
  - bdk_electrum to v0.23.2
  - bdk_kyoto to v0.15.4
  - bdk_redb to v0.1.1
  - reqwest to v0.13.2
  - url to v2.5.8

   Fixes #249, #250, #258, #259, #260, #261, #262 and #264

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  notmandatory:
    tACK fb9fe29cee11a414f747c0c6f480ddccbb78a6d2

Tree-SHA512: d637dbea336c518f8511b83f3b343cb3b8e01ed4c3a2b946b3f607ef6f848d15dab6289232b0d2cf0acc8dcd99075b0d418ad8c4386c33ecc7636ea5eeb5a933

3 months agochore: update project deps
Vihiga Tyonum [Wed, 25 Mar 2026 05:34:44 +0000 (06:34 +0100)]
chore: update project deps

This PR also update:
- clap to v4.6
- clap_complete to v4.6
- env_logger to v0.11.10
- thiserror to v2.0.18
- tracing to v0.1.44
- toml to v1.1.0
- bdk_electrum to v0.23.2
- bdk_kyoto to v0.15.4
- bdk_redb to v0.1.1
- reqwest to v0.13.2
- url to v2.5.8

3 months agodeps: Update rustls-webpki to 0.103.10
Vihiga Tyonum [Tue, 24 Mar 2026 15:58:14 +0000 (16:58 +0100)]
deps: Update rustls-webpki to 0.103.10

Because we have different versions of rustls-webpki
in the project dependency, this updated version
is a dependency of `rustls``

3 months agodeps: Update aws-lc-sys to v0.39.0 & parent crate
Vihiga Tyonum [Mon, 16 Mar 2026 11:26:49 +0000 (12:26 +0100)]
deps: Update aws-lc-sys to v0.39.0 & parent crate

3 months agodeps: Update quinn-proto to v0.11.14
Vihiga Tyonum [Mon, 16 Mar 2026 10:49:16 +0000 (11:49 +0100)]
deps: Update quinn-proto to v0.11.14

3 months agoMerge bitcoindevkit/bdk-cli#237: feat: add completions subcommand
merge-script [Fri, 20 Mar 2026 07:58:20 +0000 (08:58 +0100)]
Merge bitcoindevkit/bdk-cli#237: feat: add completions subcommand

f32fc684d55fdb9b030c873f72fe10c4de1be99b docs(readme): add note about updating completions (va-an)
e173b476b59d286ae96a079292504dc4f3a42212 docs(completions): edit help output (Vadim Anufriev)
ba0bef15335808172f87b11e5f0707f9f1ace098 docs(readme): add completions block to readme (Vadim Anufriev)
c447159ef23bae5d0c54f7188d579d75379632be chore(clippy): fix clippy warnings again (Vadim Anufriev)
7c1303ad9544a578887c12809b18f1c7d0ecc068 chore(clippy): resolve clippy warngins (Vadim Anufriev)
82e662890f70170513ec3ce3ee825038e5f339f4 feat: add command for completions (Vadim Anufriev)

Pull request description:

  ### Description

  Resolves #234.

  Added `completions` subcommand to generate shell completions.

  ### How to test

  Install bdk-cli:
  ```bash
  cargo install --path . --all-features
  ```

  See how to install completions for your shell:
  ```bash
  bdk-cli completions --help
  ```

  For example, to install completions for zsh:
  ```bash
  bdk-cli completions zsh > ~/.zfunc/_bdk-cli
  ```

  After restarting the shell, completions should work with Tab.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [x] I've added docs for the new feature
  * [x] I've updated `CHANGELOG.md`

ACKs for top commit:
  notmandatory:
    utACK f32fc684d55fdb9b030c873f72fe10c4de1be99b

Tree-SHA512: f033cb9624a9613356de8ef8f51576257f7f5ddd661d54853f3005294cd449d64810592317f3f62085adaccbc963f69792943bb2450b282cc13881b382855b1a

3 months agoMerge bitcoindevkit/bdk-cli#256: fix(test): Enable using any client in config test
merge-script [Thu, 19 Mar 2026 21:49:04 +0000 (22:49 +0100)]
Merge bitcoindevkit/bdk-cli#256: fix(test): Enable using any client in config test

af0d98e16f8fc6d8e9bdf431d0d39e23b5d51d6a fix(test): Enable any client type in config test (Vihiga Tyonum)

Pull request description:

  ### Description

  As pointed out in issue #255, whenever Esplora was configured out, the config test will fail because Esplora was used as the client.

  This fix addresses the above issue by adding other client types in the test.

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  Fixes #255

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [x] I've added tests to reproduce the issue which are now passing
  * [x] I'm linking the issue being fixed by this PR

ACKs for top commit:
  notmandatory:
    cACK af0d98e16f8fc6d8e9bdf431d0d39e23b5d51d6a

Tree-SHA512: f1eecabd0d1dc9fc6e005655ffd158d5ed1e1021156ae2ce96195f78fcab35a13380269dd019157da34a8cd28308525d3ef4e1b08a0b6dec2e217a5782052f02

3 months agoMerge bitcoindevkit/bdk-cli#241: chore: remove remainig MSRV mentions
merge-script [Thu, 19 Mar 2026 21:27:56 +0000 (22:27 +0100)]
Merge bitcoindevkit/bdk-cli#241: chore: remove remainig MSRV mentions

4347ea24341a18c978747771c9c09f27a6fcc1aa chore: clippy fixes (Vadim Anufriev)
09b5b3b99b7bab8c228af458f7978fb996507478 chore: remove remainig msrv mentions (Vadim Anufriev)

Pull request description:

  Relates #211.

  ### Description

  I noticed that we still have mentions of MSRV, despite the fact that MSRV was removed in #211.
  In this PR I'm removing the found mentions.

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  tvpeter:
    ACK 4347ea24341a18c978747771c9c09f27a6fcc1aa
  notmandatory:
    ACK 4347ea24341a18c978747771c9c09f27a6fcc1aa

Tree-SHA512: 6a3d8efcf7e70ebf5b5dce2e49eba5af41ef6cb22052db78dd3b00e77052b746285d55cd8b571a914f7d3e0b926382be220fe8a0a1d225366c6075a38cf752fa

3 months agoMerge bitcoindevkit/bdk-cli#252: Enforce use of `1.0.0-rc.1` payjoin version
merge-script [Thu, 19 Mar 2026 21:03:10 +0000 (22:03 +0100)]
Merge bitcoindevkit/bdk-cli#252: Enforce use of `1.0.0-rc.1` payjoin version

6a2e398686655d5b5538ad17fd82bd8df37690ca fix(dependencies): change payjoin version specifier `1.0.0-rc.1` to `=1.0.0-rc.1` (nymius)

Pull request description:

  **Description**

  Cargo's version resolution always updates to the latest patch version. If that patch introduces breaking changes, it breaks your application.

  This happened after Payjoin released version 1.0.0-rc.2. Because the version specified for bdk-cli was 1.0.0-rc.1, a fresh install automatically updated to the newer patch.

  To resolve this without migrating to the latest Payjoin API, and to prevent future breakages from subsequent 1.0.0-rc.x releases, this commit pins the Payjoin version strictly to =1.0.0-rc.1.

  This happened before in another project: rust-bitcoin/rust-bitcoin#5358

  **Changelog notice**

  ```text
  fix: enforce `1.0.0-rc.1` payjoin version and avoid automatic patch updates
  ```

ACKs for top commit:
  tvpeter:
    ACK 6a2e398686655d5b5538ad17fd82bd8df37690ca

Tree-SHA512: b225cd052ab832a6ae2baa137679ba6a39412b94af33719306fd587be35cb73490b7467bf8b054aa046e046bce4888e8bd30614342c9bcd29b7044889dc9a265

3 months agodocs(readme): add note about updating completions
va-an [Thu, 19 Mar 2026 08:48:16 +0000 (12:48 +0400)]
docs(readme): add note about updating completions

3 months agofix(test): Enable any client type in config test
Vihiga Tyonum [Wed, 18 Mar 2026 12:22:52 +0000 (13:22 +0100)]
fix(test): Enable any client type in config test

As pointed out in the issue #255, whenever
Esplora was compiled out, the config test will
fail because Esplora was used as the client.

This fix addresses the above issue by adding other
client types in the test.

3 months agoMerge bitcoindevkit/bdk-cli#253: Add additional slash to show ReceivePayjoin cli...
merge-script [Wed, 18 Mar 2026 16:45:27 +0000 (17:45 +0100)]
Merge bitcoindevkit/bdk-cli#253: Add additional slash to show ReceivePayjoin cli docs

a6d22b9af19fdbe212ac8bd7fb1cebd7dc0d0ef5 doc(payjoin): add additional slash to show ReceivePayjoin cli docs (nymius)

Pull request description:

  ### Description

  A missing slash was preventing the `receive_payjoin` command from displaying its documentation string:

  ```bash
  Wallet operations.

  ...
    sync               Syncs with the chosen blockchain server
    broadcast          Broadcasts a transaction to the network. Takes either a raw transaction or a PSBT to extract
    receive_payjoin
    send_payjoin       Sends an original PSBT to a BIP 21 URI and broadcasts the returned Payjoin PSBT
    new_address        Get a new external address
  ...
  ```

  This change adds the additional slash to make a proper doc string, so clap displays it.

ACKs for top commit:
  tvpeter:
    ACK a6d22b9af19fdbe212ac8bd7fb1cebd7dc0d0ef5

Tree-SHA512: 90383ef85fbd0ccbf42b06a5f38a02ec3ed94e817d7cdc1197bc0fe03f2ba3ce77357f65a6fd0b7a787e361db4bc7e38fcb408cafa61e237e098f7fb943afe7b

3 months agodoc(payjoin): add additional slash to show ReceivePayjoin cli docs
nymius [Tue, 17 Mar 2026 19:07:35 +0000 (16:07 -0300)]
doc(payjoin): add additional slash to show ReceivePayjoin cli docs

3 months agofix(dependencies): change payjoin version specifier `1.0.0-rc.1` to `=1.0.0-rc.1`
nymius [Tue, 17 Mar 2026 14:15:48 +0000 (11:15 -0300)]
fix(dependencies): change payjoin version specifier `1.0.0-rc.1` to `=1.0.0-rc.1`

Cargo's version resolution always updates to the latest patch version.
If that patch introduces breaking changes, it breaks your application.

This happened after Payjoin released version 1.0.0-rc.2. Because the
version specified for bdk-cli was 1.0.0-rc.1, a fresh install
automatically updated to the newer patch.

To resolve this without migrating to the latest Payjoin API, and to
prevent future breakages from subsequent 1.0.0-rc.x releases, this
commit pins the Payjoin version strictly to =1.0.0-rc.1.

3 months agoMerge bitcoindevkit/bdk-cli#247: CI: Replace Coveralls with Codecov for coverage...
merge-script [Tue, 10 Mar 2026 09:11:22 +0000 (10:11 +0100)]
Merge bitcoindevkit/bdk-cli#247: CI: Replace Coveralls with Codecov for coverage reporting

a675935153a95adc0c07da5614a57cf5a1c3f628 CI: Update code coverage to use Codecov action (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  This PR updates the code_coverage workflow by replacing the Coveralls code coverage reports with codecov. It also updates the checkout, rust-lang toolchain setup actions.
  Fixes #245

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  notmandatory:
    ACK a675935153a95adc0c07da5614a57cf5a1c3f628

Tree-SHA512: 021e17bfec6b4c022b8908f2dc4588c3f9f809893d2c6599a073fa943d7caf96a46a47fc9bc54af701b003b95d0b4e1474e9c30fdb533570b3a1d8791f430ba7

3 months agoMerge bitcoindevkit/bdk-cli#246: doc: add installation prerequisite to Readme
merge-script [Tue, 10 Mar 2026 04:09:36 +0000 (05:09 +0100)]
Merge bitcoindevkit/bdk-cli#246: doc: add installation prerequisite to Readme

072572456073c174c728a7fa57c601ed69340856 docs: Update stated bdk_wallet version (Vihiga Tyonum)
d787fa03a748ff28048cf7143fad585fe89e48aa doc: added prerequisites to readme (oscar)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  This is a continuation of #221

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->
  - Update the stated `bdk_wallet` to 2.x.x
  - Addressed review comments on #221

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  notmandatory:
    ACK 072572456073c174c728a7fa57c601ed69340856

Tree-SHA512: a0446a915c8c2553ea4612d9e2382e8d3212c73929be9944c9cb965f0fbf2620df339d3284796cf7315bdb65ca5a364a299ba8bfacb3edd3694c2bd796b0fae0

3 months agoCI: Update code coverage to use Codecov action
Vihiga Tyonum [Mon, 9 Mar 2026 22:02:07 +0000 (23:02 +0100)]
CI: Update code coverage to use Codecov action

- update checkout to v6
- update rust toolchain to use official action
- replace coveralls with codecov

3 months agodocs: Update stated bdk_wallet version
Vihiga Tyonum [Mon, 9 Mar 2026 09:41:11 +0000 (10:41 +0100)]
docs: Update stated bdk_wallet version

- update the stated used bdk_wallet version in
README
- fix the review comments for installation
prerequisite

3 months agodoc: added prerequisites to readme
oscar [Tue, 30 Sep 2025 15:59:22 +0000 (17:59 +0200)]
doc: added prerequisites to readme

4 months agochore: clippy fixes
Vadim Anufriev [Tue, 24 Feb 2026 11:07:47 +0000 (15:07 +0400)]
chore: clippy fixes

4 months agoMerge branch 'master' into chore/remove-msrv
Vadim Anufriev [Tue, 24 Feb 2026 10:15:41 +0000 (14:15 +0400)]
Merge branch 'master' into chore/remove-msrv

4 months agoMerge branch 'master' into feat/add-completions-cmd
Vadim Anufriev [Tue, 24 Feb 2026 09:42:57 +0000 (13:42 +0400)]
Merge branch 'master' into feat/add-completions-cmd

4 months agoMerge bitcoindevkit/bdk-cli#235: CI: Update `continous_integration` and `audit` workflows
merge-script [Tue, 24 Feb 2026 06:18:23 +0000 (07:18 +0100)]
Merge bitcoindevkit/bdk-cli#235: CI: Update `continous_integration` and `audit` workflows

aba4b950aa95f52d277035a7016116828ee29c4e CI: Fix clippy issues (Vihiga Tyonum)
cc3c8a280cf9c38d2f0fafd1af916a650ca89cf6 ci: Update audit workflow and `bytes` dependency (Vihiga Tyonum)
e39e59c339903b213696f97004e93a951ecfb4de ci: add prepush checks that mirrors ci workflow (Vihiga Tyonum)
e849f8e315a24267b2cd9c4c6a5d37a3d9c323d0 chore: fix clippy warnings (Vihiga Tyonum)
8d20cf270d7e9fee71857135cb94b0d22a4b6565 ci: update cont_integration workflow (Vihiga Tyonum)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  This PR updates the continuous integration workflow and fixes some Clippy issues.

  Also fixes #239

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->
  - update `actions/checkout` to v6
  - add a separate job for Clippy
  - automate manual caching in the `build-test` job
  - replace `actions-r/toolchain` with `actions-rust-
  lang/setup-rust-toolchain` for toolchain setup
  -fix clippy warnings
  - add prepush command to Justfile
  - Add `tool-version` parameter in audit workflow that forces the `actions-rust-lang/audit` to use a version that supports CVSS 4.0
  - update transitive dependency `bytes` to v1.11.1

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

Top commit has no ACKs.

Tree-SHA512: 24ac0771d7e14ea54137fa355b84328bbc0a36c3ab3602f9e07062fca348642e44c2cfca10103a78edf3564618db4111700ac89e0967464dd9a084966373a474

4 months agoCI: Fix clippy issues
Vihiga Tyonum [Sun, 8 Feb 2026 05:26:42 +0000 (06:26 +0100)]
CI: Fix clippy issues

4 months agoci: Update audit workflow and `bytes` dependency
Vihiga Tyonum [Sun, 8 Feb 2026 04:45:21 +0000 (05:45 +0100)]
ci: Update audit workflow and `bytes` dependency

- Add `tool-version` parameter in audit workflow
that forces the `actions-rust-lang/audit` to
download and use a version that supports CVSS 4.0.
- update a transitive dependency `bytes` to v1.11.
1 that fixes `RUSTSEC-2026-0007` security
vulnerability

Fixes #239

4 months agoci: add prepush checks that mirrors ci workflow
Vihiga Tyonum [Tue, 6 Jan 2026 11:51:32 +0000 (12:51 +0100)]
ci: add prepush checks that mirrors ci workflow

4 months agochore: fix clippy warnings
Vihiga Tyonum [Tue, 6 Jan 2026 11:50:38 +0000 (12:50 +0100)]
chore: fix clippy warnings

4 months agoci: update cont_integration workflow
Vihiga Tyonum [Tue, 6 Jan 2026 10:10:25 +0000 (11:10 +0100)]
ci: update cont_integration workflow

- update actions/checkout to v6
- add separate job for clippy
- automate manual caching in the build-test job
- replace actions-r/toolchain with actions-rust-
lang/setup-rust-toolchain for toolchain setup
- update wasm job and replace build with check

4 months agoMerge bitcoindevkit/bdk-cli#230: Refactor sync_kyoto_client
merge-script [Tue, 24 Feb 2026 01:21:13 +0000 (02:21 +0100)]
Merge bitcoindevkit/bdk-cli#230: Refactor sync_kyoto_client

974c8d56602085a31c1252c8a7c2ae4f6e413599 refactor(payjoin): add payjoin error variants to BDKCliError (Mshehu5)
35d831329a9c52ad561ae7ee1a5a085c282adddb refactor(payjoin): implement polling-based monitoring with timeout (Mshehu5)
b88426adcdafa7c327465be6dfd9d8a6d03d89be refactor: use BlockchainClient as references (Mshehu5)
99b71fdaede31dd89aa10f153294bfb3e90d5e6f refactor: use handle pattern for Kyoto client (Mshehu5)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->
  This PR addresses issues encountered while implementing persistence for Payjoin specifically around the BlockchainClient only being an owned variable rather than being able to be borrowed/referenced as &Blockchainclient.
  While working on persistence I ran into problems while working on resume command which needs a blockchain client to resume states such as monitor_payjoin_proposal (receiver) and process_payjoin_proposal (sender)
  Because BlockchainClient can only be owned the current design will require a function signature of passing two separate clients to resume sender and receiver states. I initially considered splitting the command into resume_send and resume_receive but this does not fully solve the issue. In particular the sender’s process_payjoin_proposal may call broadcast_transaction and potentially broadcast multiple transactions for persisted send entries stored in the database which still requires reusable access to the client.

  This Ownership issue was previously mentioned in #200 and is also noted in a comment at the top of monitor_payjoin_proposal. It prevents the function from being able to resync multiple times and reliably detect when a transaction appears in the mempool. The root cause is that the Kyoto client Box<LightClient> is destructured and spawned into other tasks when passed through sync_kyoto_client making it unusable afterward.

  What this PR changes
  This PR fixes the issue by refactoring sync_kyoto_client

  - The logic responsible for running the Kyoto node and logger is moved into new_blockchain_client. This makes it that node is started at start of command and not during every sync

  - Instead of returning a Box<lightClient> the function now returns a KyotoClientHandle. Previously the boxed client takes ownership when destructured inside sync_kyoto_client, preventing reuse/reference.
  With the new design sync_kyoto_client takes &KyotoClientHandle, allowing the client to be Refrenced which can be used  for syncing and broadcasting transactions without being owned

  - Additionally monitor_payjoin_proposal is refactored to support resyncing demonstrating that the Kyoto client refactor successfully resolves the original limitations

  ### Notes to the reviewers

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->
  After refactor I tested the kyoto client on regtest (Cause I do not have access to a signet) I had to set a trusted peer in the code to connect with a cbf count of 1 this worked and I also made transaction using the steps below:
  N.B Payjoin was also tested for the monitor_payjoin_proposal refactor using steps in project readme
  ```
  bitcoin.conf

  regtest=1
  server=1
  rpcuser=user
  rpcpassword=password
  rpcallowip=127.0.0.1
  blockfilterindex=1
  listen=1
  fallbackfee=0.001

  [regtest]
  bind=127.0.0.1
  port=18444
  peerblockfilters=1
  ```

  Step 1: Create transaction
  ```
  PSBT=$(cargo run --features cbf,sqlite -- \
    --network $NETWORK \
    wallet \
    --wallet sender_wallet \
    --ext-descriptor "$SENDER_EXT_DESC" \
    --int-descriptor "$SENDER_INT_DESC" \
    --database-type $DATABASE_TYPE \
    create_tx --to $RECEIVER_ADDR:50000 --fee_rate 1.0 | jq -r '.psbt')
  ```

  Step 2: Sign transaction
  ```
  SIGNED_PSBT=$(cargo run --features cbf,sqlite -- \
    --network $NETWORK \
    wallet \
    --wallet sender_wallet \
    --ext-descriptor "$SENDER_EXT_DESC" \
    --int-descriptor "$SENDER_INT_DESC" \
    --database-type $DATABASE_TYPE \
    sign "$PSBT" | jq -r '.psbt')
  ```

  Step 3: Broadcast transaction
  ```
  cargo run --features cbf,sqlite -- \
    --network $NETWORK \
    wallet \
    --wallet sender_wallet \
    --ext-descriptor "$SENDER_EXT_DESC" \
    --int-descriptor "$SENDER_INT_DESC" \
    --database-type $DATABASE_TYPE \
    --client-type $CLIENT_TYPE \
    --cbf-peer $CBF_PEER \
    --cbf-conn-count $CBF_CONN_COUNT \
    broadcast --psbt "$SIGNED_PSBT"
  ```
   Mine a block to confirm
  `bitcoin-cli -regtest generatetoaddress 1 $(bitcoin-cli -regtest getnewaddress)`

  Checking Transaction Status
  After broadcasting, wait a moment and sync your wallet:
  Sync wallet
  ```
  cargo run --features cbf,sqlite -- \
    --network $NETWORK \
    wallet \
    --wallet receiver_wallet \
    --ext-descriptor "$RECEIVER_EXT_DESC" \
    --int-descriptor "$RECEIVER_INT_DESC" \
    --database-type $DATABASE_TYPE \
    --client-type $CLIENT_TYPE \
    --cbf-peer $CBF_PEER \
    --cbf-conn-count $CBF_CONN_COUNT \
    sync
  ```

  Check balance
  ```
  cargo run --features cbf,sqlite -- \
    --network $NETWORK \
    wallet \
    --wallet receiver_wallet \
    --ext-descriptor "$RECEIVER_EXT_DESC" \
    --int-descriptor "$RECEIVER_INT_DESC" \
    --database-type $DATABASE_TYPE \
    balance
  ```

  List recent transactions
  ```
  cargo run --features cbf,sqlite -- \
    --network $NETWORK \
    wallet \
    --wallet sender_wallet \
    --ext-descriptor "$SENDER_EXT_DESC" \
    --int-descriptor "$SENDER_INT_DESC" \
    --database-type $DATABASE_TYPE \
    transactions
  ```

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

ACKs for top commit:
  tvpeter:
    ACK 974c8d56602085a31c1252c8a7c2ae4f6e413599
  notmandatory:
    ACK 974c8d56602085a31c1252c8a7c2ae4f6e413599

Tree-SHA512: 823eefdde1900fd03fc698466bce414bdba0aceae428d6fbb5af7ef0a0962a0e16948d58badc24b6f99ff9498727c912131d29f46468b421cd54d663e3ec0e8b

4 months agochore: remove remainig msrv mentions
Vadim Anufriev [Fri, 13 Feb 2026 18:35:55 +0000 (22:35 +0400)]
chore: remove remainig msrv mentions

4 months agodocs(completions): edit help output
Vadim Anufriev [Tue, 10 Feb 2026 09:07:28 +0000 (13:07 +0400)]
docs(completions): edit help output

4 months agodocs(readme): add completions block to readme
Vadim Anufriev [Tue, 10 Feb 2026 08:56:40 +0000 (12:56 +0400)]
docs(readme): add completions block to readme

4 months agochore(clippy): fix clippy warnings again
Vadim Anufriev [Sun, 8 Feb 2026 20:18:11 +0000 (00:18 +0400)]
chore(clippy): fix clippy warnings again

4 months agochore(clippy): resolve clippy warngins
Vadim Anufriev [Sat, 7 Feb 2026 19:10:08 +0000 (23:10 +0400)]
chore(clippy): resolve clippy warngins

4 months agofeat: add command for completions
Vadim Anufriev [Tue, 6 Jan 2026 18:10:00 +0000 (22:10 +0400)]
feat: add command for completions

4 months agorefactor(payjoin): add payjoin error variants to BDKCliError
Mshehu5 [Mon, 2 Feb 2026 08:52:19 +0000 (09:52 +0100)]
refactor(payjoin): add payjoin error variants to BDKCliError

Replace Error::Generic with specific Payjoin error variants using #[from] derives for applicable places, enabling automatic conversion and eliminating verbose .map_err() calls.

4 months agorefactor(payjoin): implement polling-based monitoring with timeout
Mshehu5 [Sun, 21 Dec 2025 10:50:12 +0000 (11:50 +0100)]
refactor(payjoin): implement polling-based monitoring with timeout

Replace single sync-and-check with periodic polling loop.
This allows multiple sync operations since sync_wallet now accepts
a reference to BlockchainClient, enabling proper long-running
monitoring instead of a one-time check.

4 months agorefactor: use BlockchainClient as references
Mshehu5 [Sat, 20 Dec 2025 22:54:46 +0000 (23:54 +0100)]
refactor: use BlockchainClient as references

Update function signatures to accept &BlockchainClient instead of taking
ownership. This refactoring to allow the client to be Referenced across
multiple operations including repeated calls to sync_kyoto_client.

- Update handle_online_wallet_subcommand signature
- Update all PayjoinManager methods to use &BlockchainClient
- Fix parameter dereferencing in full_scan calls
- Update all call sites to pass references

4 months agorefactor: use handle pattern for Kyoto client
Mshehu5 [Sat, 20 Dec 2025 22:53:14 +0000 (23:53 +0100)]
refactor: use handle pattern for Kyoto client

Refactor KyotoClient to use a KyotoClientHandle struct instead of
Box<LightClient>. Previously, the Box<LightClient> was consumed
when destructured in sync_kyoto_client, preventing the function
from being called multiple times or borrowed. With the handle
pattern, sync_kyoto_client now takes &mut KyotoClientHandle,
allowing it to be borrowed and reused.

This also allows the node to be started at creation time in
new_blockchain_client rather than during sync, making the client
ready for use immediately after creation.

- Add KyotoClientHandle struct containing requester and
  update_subscriber
- Move node startup and logger spawning to new_blockchain_client
- Update sync_kyoto_client to accept &mut KyotoClientHandle
  instead of consuming Box<LightClient>

5 months agoMerge bitcoindevkit/bdk-cli#203: Add saving wallet config with `bdk-cli wallet config`
merge-script [Mon, 19 Jan 2026 23:08:11 +0000 (00:08 +0100)]
Merge bitcoindevkit/bdk-cli#203: Add saving wallet config with `bdk-cli wallet config`

ceb93324b529207f2d46ad886df47af777d01f7f doc(wallet-init): update README.md examples (Steve Myers)
be31c14391176a9d38584f81082efbe540c0f70b feat(wallet-init): impl TryFrom for WalletOpts (Vihiga Tyonum)
7bf0982559f8810d96a93e848ef7ad8d4b6d871e feat(wallet-init): add `wallets` command (Vihiga Tyonum)
f3ee4ee4f72510b9cb9c7d3552f91c691e605a36 feat(init-wallet): rename init & add walletopts (Vihiga Tyonum)
f21729b3ecb1dd8bdc85527975fb4ed7347701a6 feat: add initializing wallet config (Vihiga Tyonum)

Pull request description:

  ### Description

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->

  This PR adds `bdk-cli wallet config` command to save wallet configuration information to `config.toml` file in the data directory.

  Fixes #192

  ### Notes to the reviewers

  - Reusing the exported `serde` crate from `bdk_wallet` did not offer the `derive` feature
  - Fix out-of-bound error for `shorten` fn

  ## Changelog notice
  - Add wallet subcommand `config` to save wallet configs
  - Add top-level `wallets` command  to show all saved  wallet configs
  <!-- Notice the release manager should include in the release tag message changelog -->

  ### Checklists

  #### Features

  * [x] command to save a wallet config, give wallet name or a default name is used, clap enforces required options; optional -f to override existing config: `wallet [-f] [-w <name>] config <wallet opts>`
  * [x] All other wallet commands require that a config exists, use wallet name or the default is used. Give error if config is missing: `wallet [-w <name>] sync | balance | new_address |` etc...
  * [x] Repl uses the same wallet configs: `repl [-w <name>]`
  * [x] command to list all saved wallet configs: `wallets`
  * [x] throw warnings if using mainnet and saving a private descriptor in a config.

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [x] I've added docs for the new feature
  * [x] I've updated `CHANGELOG.md`

ACKs for top commit:
  notmandatory:
    ACK ceb93324b529207f2d46ad886df47af777d01f7f

Tree-SHA512: f77ce3925d6cbd66a5fb24dbc7fdf1c40bb4f99b47825d165be4963bfde5eb876dcbd4266bf5b4e2fabdd66e3c7c0b42b09d899463558c18336969036f8f7f86

5 months agodoc(wallet-init): update README.md examples
Steve Myers [Mon, 19 Jan 2026 22:39:10 +0000 (16:39 -0600)]
doc(wallet-init): update README.md examples

5 months agofeat(wallet-init): impl TryFrom for WalletOpts
Vihiga Tyonum [Sun, 18 Jan 2026 23:18:21 +0000 (00:18 +0100)]
feat(wallet-init): impl TryFrom for WalletOpts

- refactor config by impl TryFrom trait for
WalletOpts
- fix top-level network duplicate in config file

5 months agofeat(wallet-init): add `wallets` command
Vihiga Tyonum [Sat, 4 Oct 2025 01:42:55 +0000 (02:42 +0100)]
feat(wallet-init): add `wallets` command

- add wallets command
- add warning for using priv descriptors
- update readme
- add loading network from config
- fix review comments

5 months agofeat(init-wallet): rename init & add walletopts
Vihiga Tyonum [Fri, 3 Oct 2025 10:56:51 +0000 (11:56 +0100)]
feat(init-wallet): rename init & add walletopts

- rename init to config and move walletopts as
config options

5 months agofeat: add initializing wallet config
Vihiga Tyonum [Wed, 18 Jun 2025 08:01:44 +0000 (09:01 +0100)]
feat: add initializing wallet config

- add config.rs to store and retrieve
values
- add toml and serde crates for desearilizing and
reading values
- update utils, commands and handlers files
to use values from config.toml
-refactor prepare_wallet_db fn
- fix clippy issues

[Issue: #192]

5 months agoMerge bitcoindevkit/bdk-cli#233: Fix duplicate wallet creation in non-persistent...
merge-script [Mon, 5 Jan 2026 11:57:57 +0000 (12:57 +0100)]
Merge bitcoindevkit/bdk-cli#233: Fix duplicate wallet creation in non-persistent path

ba5e349ed31c44cd2083ed6d41313cd9f8d00c53 Fix duplicate wallet creation in non-persistent path (Mshehu5)

Pull request description:

  ### Description

  <!-- Describe the purpose of this PR, what's being adding and/or fixed -->
  The non-persistent wallet path (when sqlite/redb features are disabled) was creating the wallet twice: first as immutable to create the blockchain_client, then again as mutable. This caused the blockchain_client to be initialized with the first wallet instance, but then used with the second wallet instance, creating a mismatch.

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:
  * [x] I'm linking the issue being fixed by this PR
  The PR addresses  https://github.com/bitcoindevkit/bdk-cli/issues/232

ACKs for top commit:
  tvpeter:
    ACK ba5e349ed31c44cd2083ed6d41313cd9f8d00c53

Tree-SHA512: 56b7b61239b7c5ceb125e9a5858eb880c23577bd22de302e73cb5ab433940f316063dacff40ca5751940fa71d053e1e59abe0d7c041376058b7ef4f317d01505

5 months agoFix duplicate wallet creation in non-persistent path
Mshehu5 [Thu, 1 Jan 2026 21:13:01 +0000 (22:13 +0100)]
Fix duplicate wallet creation in non-persistent path

The non-persistent wallet path (when sqlite/redb features are
disabled) was creating the wallet twice: first as immutable to
create the blockchain_client, then again as mutable. This caused
the blockchain_client to be initialized with the first wallet
instance, but then used with the second wallet instance, creating
a mismatch.

6 months agoMerge bitcoindevkit/bdk-cli#200: feat: add non-persisted Async Payjoin support
merge-script [Fri, 19 Dec 2025 17:31:13 +0000 (18:31 +0100)]
Merge bitcoindevkit/bdk-cli#200: feat: add non-persisted Async Payjoin support

c6bce58871e23c26d116e5c7b767ff4209a7b3c4 docs: add Payjoin capability to the README (Mehmet Efe Umit)
4cab2fa8f4d4b7fe95453bf3391019cf2dd4d7aa feat: add payjoin receive support (Mehmet Efe Umit)
0112c924adf186b8b62d77d8dc0b2837426ea4af feat: add payjoin send support (Mehmet Efe Umit)
f62287aff383555a301fd62be40064e1c54ec119 refactor: move broadcast to a helper function (Mehmet Efe Umit)
a28076af9b1016d5456de6c2b81d502beb05737d refactor: move sync to a helper function (Mehmet Efe Umit)

Pull request description:

  ### Description

  This change implements the online commands for both sending and receiving a Payjoin. Note that this PR does not implement Payjoin persistence.

  ### Notes to the reviewers

  Tested on my local regtest with rpc  using the OHTTP relays and directories in the [payjoin-cli README](https://github.com/payjoin/rust-payjoin/tree/master/payjoin-cli). Feel free to do the same, and let me know if there are comments, documentation, etc. which should be changed with this. I was not able to find any...

  Here are the sample command you can use to test on regtest:

  **Send**
  ```
  cargo run --features=rpc -- -n regtest wallet -a USERNAME:PASSWORD -w WALLET_NAME -e "DESCRIPTOR" send_payjoin --ohttp_relay "RELAY1" --ohttp_relay "RELAY2" --fee_rate 1 --uri "URI"
  ```
  **Receive**
  ```
  cargo run --features=rpc -- -n regtest wallet -a USERNAME:PASSWORD -w WALLET_NAME -e "DESCRIPTOR" receive_payjoin --max_fee_rate 1000 --directory "https://payjo.in"  --ohttp_relay "RELAY1" --ohttp_relay "RELAY2" --amount AMOUNT
  ```
  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [X] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [X] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [] I've added tests for the new feature  <--- There is no testing suite for this.
  * [X] I've added docs for the new feature
  * [N/A] I've updated `CHANGELOG.md`

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [ ] I've added tests to reproduce the issue which are now passing
  * [ ] I'm linking the issue being fixed by this PR

ACKs for top commit:
  tvpeter:
    tACK c6bce58871e23c26d116e5c7b767ff4209a7b3c4
  spacebear21:
    utACK c6bce58871e23c26d116e5c7b767ff4209a7b3c4

Tree-SHA512: 1da8295d0eedf6fd31095085e6ef0d90ab46d5eed6c2f21a7539a6c3ff6d1127d0cdbb664d519bcb4a783ea2707452bf8cd3cb961a67ba3e61d989701e205dca

6 months agodocs: add Payjoin capability to the README
Mehmet Efe Umit [Wed, 19 Nov 2025 06:48:45 +0000 (22:48 -0800)]
docs: add Payjoin capability to the README

6 months agofeat: add payjoin receive support
Mehmet Efe Umit [Wed, 19 Nov 2025 06:23:10 +0000 (22:23 -0800)]
feat: add payjoin receive support

6 months agofeat: add payjoin send support
Mehmet Efe Umit [Wed, 19 Nov 2025 06:22:44 +0000 (22:22 -0800)]
feat: add payjoin send support

temp: move the send_payjoin out of the commit

7 months agorefactor: move broadcast to a helper function
Mehmet Efe Umit [Wed, 19 Nov 2025 06:18:38 +0000 (22:18 -0800)]
refactor: move broadcast to a helper function

Prior to the Payjoin integration, we need to have the broadcast logic
outside the broadcast command so that it can be shared between the
existing online command and the Payjoin sender.

7 months agorefactor: move sync to a helper function
Mehmet Efe Umit [Wed, 19 Nov 2025 06:14:22 +0000 (22:14 -0800)]
refactor: move sync to a helper function

This is a pre-requisite for adding Payjoin support. When the receiver
sends the Payjoin proposal to the sender to be broadcasted, they need to
sync the blockchain before checking if the Payjoin has indeed been
broadcasted. To do that, the sync function will need to be shared
between the two online commands.

7 months agoMerge bitcoindevkit/bdk-cli#180: Adding descriptor generator
merge-script [Tue, 11 Nov 2025 02:46:46 +0000 (03:46 +0100)]
Merge bitcoindevkit/bdk-cli#180: Adding descriptor generator

7d3720e382410af5ebe18aa48c5c819bf21a1ec3 feat(desc): remove generate subcommand (Vihiga Tyonum)
32a2c8847f1574fa7659a568a29ecf180b175d52 feat(desc):update descriptors gen to use templates (Vihiga Tyonum)
c8f23ba5138a5c9c2e2f8df88d5913ab458a4b8f feat(descriptors): fix descriptor generation (Vihiga Tyonum)
550e81628779968bdbfedebc54debf8a6e20869e feat(descriptors): add multipath descs and pretty (Vihiga Tyonum)
1f77842ee7b415af581ca482de07cddf8cd5968c fix descriptors generation (Vihiga Tyonum)
6c9c3a1bb13eada4af00e41be1ccded2928a6ba2 feat: add descriptor generation (AmosOO7)

Pull request description:

  # Pull Request: Add `descriptor` Subcommand

  ## Description

  This PR introduces a new `descriptor` subcommand to the BDK CLI that enable users to generate and inspect **Bitcoin wallet descriptors** for internal and external paths, supporting common types (pkh, sh, wpkh, wsh, tr). It includes support for both **single-path** descriptors from extended keys (`xprv`/`xpub` or `tprv`/`tpub`).

  This resolves issue https://github.com/bitcoindevkit/bdk-cli/issues/175

  ## Features Implemented

  - Adds new `descriptor` subcommand with:
    - `generate` – generate new descriptors
    - Supports BIP44, BIP49, BIP84, and BIP86 script types
    - Generates **internal and external descriptors**
    - Reasonable defaults:
      - `--type` defaults to `wsh` and a short `t`
      - `--network` default `testnet`

  ---

  ## Usage Examples

  ### 1. Generate Descriptors from an Extended Private Key
  ```bash
  cargo run -- --network testnet descriptor generate --type wsh <XPRV>
  ```

  ### 2. Generate Descriptors from a Mnemonic (no key provided)
  ```bash
  cargo run -- --network testnet descriptor generate --type tr
  ```

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### New Features:

  * [ ] I've added tests for the new feature
  * [ ] I've added docs for the new feature
  * [ ] I've updated `CHANGELOG.md`

ACKs for top commit:
  notmandatory:
    tACK 7d3720e382410af5ebe18aa48c5c819bf21a1ec3
  tvpeter:
    ACK 7d3720e382410af5ebe18aa48c5c819bf21a1ec3

Tree-SHA512: 38182e657ffeaec89c84c601f8c41482eee9962a1847eaf6a3ad8b55d01858e0d2a056248d5bd4090734787caedf1c11232bb56337c90d5451c2664ff3571b50

7 months agofeat(desc): remove generate subcommand
Vihiga Tyonum [Wed, 5 Nov 2025 17:41:04 +0000 (18:41 +0100)]
feat(desc): remove generate subcommand

- remove generate subcommand
- add descriptor to the repl

7 months agofeat(desc):update descriptors gen to use templates
Vihiga Tyonum [Tue, 4 Nov 2025 17:58:03 +0000 (18:58 +0100)]
feat(desc):update descriptors gen to use templates

7 months agofeat(descriptors): fix descriptor generation github/adding_descriptor_generator
Vihiga Tyonum [Mon, 3 Nov 2025 21:02:56 +0000 (22:02 +0100)]
feat(descriptors): fix descriptor generation

- remove multipath descriptor generation
- fix descriptor type

7 months agofeat(descriptors): add multipath descs and pretty
Vihiga Tyonum [Fri, 26 Sep 2025 14:16:37 +0000 (15:16 +0100)]
feat(descriptors): add multipath descs and pretty

- add generating multipath descriptors
- add pretty formatting for descriptors

7 months agofix descriptors generation
Vihiga Tyonum [Wed, 24 Sep 2025 13:57:33 +0000 (14:57 +0100)]
fix descriptors generation

7 months agofeat: add descriptor generation
AmosOO7 [Wed, 30 Apr 2025 20:31:23 +0000 (21:31 +0100)]
feat: add descriptor generation

- Created Subcommnds for the descriptor command;
generate
- Created function to get descriptors from mnemonics

7 months agoMerge bitcoindevkit/bdk-cli#224: fix(pretty-format): use `--pretty` in any position
merge-script [Mon, 3 Nov 2025 08:47:27 +0000 (09:47 +0100)]
Merge bitcoindevkit/bdk-cli#224: fix(pretty-format): use `--pretty` in any position

c475363939a5c354fd18732e31d6c2b7ed01f8a7 chore(clippy): clippy fixes (Vadim Anufriev)
daebe537383ac17475ecbe6b9cdebc3a586ecb80 test(pretty): add tests for pretty option (Vadim Anufriev)
17a4dcae2b9b2cea18e27cb31c2da3d74863b93c fix(pretty): use pretty option in any position (Vadim Anufriev)

Pull request description:

  <!-- You can erase any parts of this template not applicable to your Pull Request. -->

  ### Description

  Fix `--pretty` flag to work in any position by marking it as a global argument.

  Previously the flag only worked before subcommands (`bdk-cli --pretty key generate`) but failed after
    (`bdk-cli key generate --pretty`).

  ### Notes to the reviewers
  **Before the fix:**
  Works:
  ```bash
  -> % cargo run -- --pretty key generate
  +-------------+-----------------------------------------------------------------------------------------------------------------+
  | Fingerprint | 3e68be40                                                                                                        |
  +-------------+-----------------------------------------------------------------------------------------------------------------+
  | Mnemonic    | wheat equip exhaust funny panic lend message champion slim derive alcohol differ                                |
  +-------------+-----------------------------------------------------------------------------------------------------------------+
  | Xprv        | tprv8ZgxMBicQKsPdmyStjLXkChBJnUa5DBVJY5J46C3qbe98623M9uqD9wrDtcSZe4hLCodZdKacuY8YPzrNWFUEUwSrpa12KiEBikwLTjiYWP |
  +-------------+-----------------------------------------------------------------------------------------------------------------+
  ```

  Doesn't work:
  ```bash
  -> % cargo run -- key generate --pretty
  error: unexpected argument '--pretty' found

  Usage: bdk-cli key generate [OPTIONS]

  For more information, try '--help'.
  ```

  <!-- In this section you can include notes directed to the reviewers, like explaining why some parts
  of the PR were done in a specific way -->

  ## Changelog notice

  <!-- Notice the release manager should include in the release tag message changelog -->
  <!-- See https://keepachangelog.com/en/1.0.0/ for examples -->

  ### Checklists

  #### All Submissions:

  * [x] I've signed all my commits
  * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk-cli/blob/master/CONTRIBUTING.md)
  * [x] I ran `cargo fmt` and `cargo clippy` before committing

  #### Bugfixes:

  * [ ] This pull request breaks the existing API
  * [x] I've added tests to reproduce the issue which are now passing
  * [ ] I'm linking the issue being fixed by this PR

ACKs for top commit:
  notmandatory:
    ACK c475363939a5c354fd18732e31d6c2b7ed01f8a7
  tvpeter:
    tACK c475363939a5c354fd18732e31d6c2b7ed01f8a7

Tree-SHA512: 748860bf542b0da80407b0b15b068b6bb4a519913eec85251439a32e9d40ccec0af13edfd21ef4ab42f43d26e79e1996c958c9569955bb90f8d9033717aae792

8 months agochore(clippy): clippy fixes
Vadim Anufriev [Thu, 23 Oct 2025 21:15:18 +0000 (01:15 +0400)]
chore(clippy): clippy fixes

8 months agotest(pretty): add tests for pretty option
Vadim Anufriev [Tue, 21 Oct 2025 09:37:37 +0000 (13:37 +0400)]
test(pretty): add tests for pretty option

8 months agofix(pretty): use pretty option in any position
Vadim Anufriev [Tue, 21 Oct 2025 09:36:27 +0000 (13:36 +0400)]
fix(pretty): use pretty option in any position