]> Untitled Git - bdk-cli/log
bdk-cli
8 days agoref(payjoin): add payjoin persistence
Vihiga Tyonum [Sun, 5 Jul 2026 02:07:10 +0000 (03:07 +0100)]
ref(payjoin): add payjoin persistence

- Adds payjoin persistence

9 days agoref(compile):compile tr desc with rand unspend key
Vihiga Tyonum [Sat, 4 Jul 2026 11:01:20 +0000 (12:01 +0100)]
ref(compile):compile tr desc with rand unspend key

- add compile taproot descriptor with randomized
unspendable internal key

9 days agofeat(WalletEvents): Add wallet events to clients
Vihiga Tyonum [Sat, 4 Jul 2026 10:38:46 +0000 (11:38 +0100)]
feat(WalletEvents): Add wallet events to clients

- Update bdk_wallet to v2.4.0 and other deps
- Add wallet events to RPC, electrum, esplora and
kyoto clients

9 days agoref(create_tx): enforce single recp for sendall
Vihiga Tyonum [Sat, 4 Jul 2026 10:13:21 +0000 (11:13 +0100)]
ref(create_tx): enforce single recp for sendall

2 weeks agorefactor(runtime): Add address and createtx to db
Vihiga Tyonum [Mon, 22 Jun 2026 15:07:28 +0000 (16:07 +0100)]
refactor(runtime): Add address and createtx to db

- Add new address, unused address and createtx
commands to list of commands that require
loading existing db
- adding persisting changes in offline and online
commands

5 weeks agorefactor(sp-payment): Rebase silent payment feat
Vihiga Tyonum [Sat, 6 Jun 2026 11:12:01 +0000 (12:12 +0100)]
refactor(sp-payment): Rebase silent payment feat

- rebase silent payment feature

5 weeks agorefactor(main): add runtime wallet module
Vihiga Tyonum [Sun, 31 May 2026 11:00:52 +0000 (12:00 +0100)]
refactor(main): add runtime wallet module

- add wallet runtime module to serve as context
manager
- fix clippy errors

5 weeks agorefactor(handlers): Apply app context
Vihiga Tyonum [Fri, 29 May 2026 03:24:41 +0000 (04:24 +0100)]
refactor(handlers): Apply app context

- apply app context with state to all the modules
- cover case for commands when db is not required

5 weeks agoRefactor(handlers): Define app context states
Vihiga Tyonum [Fri, 29 May 2026 03:17:56 +0000 (04:17 +0100)]
Refactor(handlers): Define app context states

- Define Init state for when an execution does
not need either the wallet or client for execution
- Define the Offline wallet operations state
for app context when an execution envt needs
 a wallet
- Define the online wallet operations state for
appcontext when an execution needs both the
wallet and client
- make app context generic over the state
- make the app command and async app command
generic over the execution context
- deleted shorten fn as it was applicable to the
pretty flag
- removed tests for pretty flag

5 weeks agorefactor(output): apply generics to output mod
Vihiga Tyonum [Tue, 26 May 2026 08:27:26 +0000 (09:27 +0100)]
refactor(output): apply generics to output mod

5 weeks agoref(handlers): fix offline, online and desc mod
Vihiga Tyonum [Thu, 21 May 2026 15:23:38 +0000 (16:23 +0100)]
ref(handlers): fix offline, online and desc mod

- fix execution logic for subcommands under
offline and online wallet subcommands

5 weeks agoref(handlers): refactor config, descr and key mods
Vihiga Tyonum [Thu, 21 May 2026 15:22:04 +0000 (16:22 +0100)]
ref(handlers): refactor config, descr and key mods

- move execution logic into config, desc and key
modules

5 weeks agoref(main): add run to handle routing
Vihiga Tyonum [Thu, 21 May 2026 15:20:00 +0000 (16:20 +0100)]
ref(main): add run to handle routing

- add run fn in main to handle routing

5 weeks agoref(pretty): remove `--pretty` flag
Vihiga Tyonum [Thu, 21 May 2026 15:17:39 +0000 (16:17 +0100)]
ref(pretty): remove `--pretty` flag

- remove --pretty flag
- move types to utils
- update commands

5 weeks agoref(persister): collapse wallet subdir to persister
Vihiga Tyonum [Thu, 21 May 2026 14:59:56 +0000 (15:59 +0100)]
ref(persister): collapse wallet subdir to persister

- move wallet subdir into the persister module
to simplify the structure as wallet was confusing

5 weeks agoupdate namespace and update types
Vihiga Tyonum [Thu, 14 May 2026 10:13:27 +0000 (11:13 +0100)]
update namespace and update types

5 weeks agorevert mod names for command and clients
Vihiga Tyonum [Thu, 14 May 2026 10:09:22 +0000 (11:09 +0100)]
revert mod names for command and clients

5 weeks agoref(utils): use types in desc output in utils
Vihiga Tyonum [Wed, 29 Apr 2026 15:35:19 +0000 (16:35 +0100)]
ref(utils): use types in desc output in utils

5 weeks agoref(handlers): rebase bip322 feature
Vihiga Tyonum [Wed, 29 Apr 2026 14:07:54 +0000 (15:07 +0100)]
ref(handlers): rebase bip322 feature

- rebase master for bip322 feature
- update types to use simple table helper

5 weeks agoref(types): add simple table helper
Vihiga Tyonum [Wed, 29 Apr 2026 08:11:33 +0000 (09:11 +0100)]
ref(types): add simple table helper

- add simple table helper fn for creating tables
- refactor types to use simple table helper
- add type defs for key, wallets and descriptors

5 weeks agoref(handlers): add types for desc, key & wallets
Vihiga Tyonum [Wed, 29 Apr 2026 08:09:01 +0000 (09:09 +0100)]
ref(handlers): add types for desc, key & wallets

- add types for descriptor, key and wallets mods

5 weeks agorefactor(handlers): Add types for outputting data
Vihiga Tyonum [Fri, 24 Apr 2026 18:41:23 +0000 (19:41 +0100)]
refactor(handlers): Add types for outputting data

- add trait for formatting outputs
- add types for presenting data to the output
- refactor offline mod to use types

5 weeks agoref(main): update main entry point
Vihiga Tyonum [Tue, 21 Apr 2026 10:39:06 +0000 (11:39 +0100)]
ref(main): update main entry point

5 weeks agoref(handlers): split handler fns into repl
Vihiga Tyonum [Tue, 21 Apr 2026 10:25:55 +0000 (11:25 +0100)]
ref(handlers): split handler fns into repl

- split handler fns into repl
- add entry point to the handlers subdir
- add wallet subdir entry point

5 weeks agoref(handlers):mv handler fns into offline & others
Vihiga Tyonum [Tue, 21 Apr 2026 10:19:03 +0000 (11:19 +0100)]
ref(handlers):mv handler fns into offline & others

- move handler fns into offline, online, wallets
modules

5 weeks agoref(handlers): split handlers into config, key
Vihiga Tyonum [Tue, 21 Apr 2026 10:15:43 +0000 (11:15 +0100)]
ref(handlers): split handlers into config, key

- split handlers into top level commands config,
key and descriptors

5 weeks agoref(persister): mv persister into wallet subdir
Vihiga Tyonum [Tue, 21 Apr 2026 10:08:44 +0000 (11:08 +0100)]
ref(persister): mv persister into wallet subdir

- move persister into wallet subdirectory
- update imports in payjoin module

5 weeks agoref(utils): refactor utils into utils subdir
Vihiga Tyonum [Tue, 21 Apr 2026 10:05:04 +0000 (11:05 +0100)]
ref(utils): refactor utils into utils subdir

- split util fns into `descriptors` and `common`

5 weeks agoref(config): move config into config subdir
Vihiga Tyonum [Tue, 21 Apr 2026 10:03:00 +0000 (11:03 +0100)]
ref(config): move config into config subdir

5 weeks agoref(commands): mv commands & clients into subdirs
Vihiga Tyonum [Tue, 21 Apr 2026 09:52:35 +0000 (10:52 +0100)]
ref(commands): mv commands & clients into subdirs

- move all blockchain clients code into the
backend subdirectory
- move commands.rs content into commands
subdirectory

7 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

2 months 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

3 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.

4 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

4 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

4 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

4 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

4 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

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

5 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

5 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

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

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

5 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.

5 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.

5 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

5 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]

6 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

6 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.

8 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

8 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

8 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

8 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

8 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

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