<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
- Updates Rust Edition to 2024
- Removes MSRV for the project
- fixes clippy warnings
<!-- Describe the purpose of this PR, what's being adding and/or fixed -->
<!-- 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 -->
<!-- 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
* [ ] I've added tests to reproduce the issue which are now passing
* [x] I'm linking the issue being fixed by this PR
### 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`
Kyoto now holds on to a transaction internally until it is successfully broadcast, so we can broadcast the transaction immediately once the node starts up, and wait for a confirmation or 30 second timeout
Successful test on Signet. Note that `Testnet4` still has the difficulty adjustment bug when loading block headers from storage.
### 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
* [ ] I've added docs for the new feature
* [ ] 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
rustaceanrob [Tue, 17 Jun 2025 12:36:59 +0000 (13:36 +0100)]
fix(kyoto): remove conn requirement to send tx
Kyoto now holds on to a transaction internally until it is successfully
broadcast, so we can broadcast the transaction immediately once the node
starts up, and wait for a confirmation or 30 second timeout
Update README to show how to use `just` command runner to start, connect and fund your bdk-cli wallet with local bitcoind regtest node. Also, fixed clippy warnings.
### 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
* Updated dependencies:
* bdk_wallet to 2.0.0
* bdk_bitcoind_rpc to 0.20.0
* bdk_electrum to 0.23.0
* bdk_esplora to 0.22.0
* bdk_kyoto to 0.11.0
* Renamed `BuilderError` to `KyotoBuilderError`
* Added `KyotoUpdateError`
### Notes to the reviewers
There are still some unrelated warnings in the test code that should be fixed in a followup PR.
## Changelog notice
* Updated project to use `bdk_wallet` 2.0 and related supporting chain client versions.
### 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
This PR adds Justfile config file for the just command runner.
### Notes to the reviewers
The default values for `datadir`, `rpcuser` and `rpcpassword` set in the Justfile are those used in the project.
### 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
* [ ] I've updated `CHANGELOG.md`
Fix for https://github.com/bitcoindevkit/bdk-cli/issues/170.
I think this is the simplest way to do it.
It's also possible to change the main signature to return `Result`, which should provide similar behavior, but this option isn't compatible with the `#[maybe_async]` macro, so I decided not to complicate things.
### 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
* [ ] I've added tests to reproduce the issue which are now passing
* [x] I'm linking the issue being fixed by this PR
* [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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
- update aud.yml workflow to use the latest ubuntu
<!-- 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
update `bdk-cli` version to `1.0.0` and bumped the rust edition to 2021.
#### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
Update readme document
<!-- Describe the purpose of this PR, what's being adding and/or fixed -->
<!-- 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 -->
<!-- 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
The code coverage workflow broke and this change fixes it.
### Notes to the reviewers
This is copy/pasted from the bdk repo job of the same name.
### 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
The actual implementation comes down to listening for an info message that reports the transaction was sent to a peer. For simplicity I am ignoring any wallet updates, but if the user calls the `Sync` command they can catch them. Follows up #181
### 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
* [ ] I've added docs for the new feature
* [ ] 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
rustaceanrob [Thu, 8 May 2025 19:30:07 +0000 (20:30 +0100)]
feat(cbf): implement transaction broadcasting
For the highest reliability, we wait for the connection requirement to
be met by the node. Once met, we can broadcast and wait for
confirmation. The function will either timeout after 15 seconds or
successfully finish with gossip confirmation.
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
This PR set the data directory for the Kyoto client. See [comment](https://github.com/bitcoindevkit/bdk-cli/pull/181#issuecomment-2863853425)
<!-- 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 -->
This PR ensures that the `light_client_data` directory created by the Kyoto client is in the wallet's data directory.
## 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:
* [ ] I've added tests for the new feature
* [ ] I've added docs for the new feature
* [ ] I've updated `CHANGELOG.md`
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
This PR re-enables the Compact Block Filters (cbf) feature using `bdk_kyoto` and it is part of updating the library
to use the latest `bdk` crates.
<!-- Describe the purpose of this PR, what's being adding and/or fixed -->
### Notes to the reviewers
This is part of issue #172
<!-- 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 -->
### Checklists
* [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
Vihiga Tyonum [Sat, 3 May 2025 14:59:53 +0000 (15:59 +0100)]
feat(cbf): add cbf feature using bdk_kyoto
- enable full_scan and sync operations
[issue: #172]
feat(cbf): update broadcasting tx
- add wait time for node to connect to peers
before broadcasting tx
- add sync chain starting from 10 blocks below
the wallet tip to ensure tx is propagated
- update code_coverage workflow to cover cbf
feature
feat(cbf): update bdk-kyoto to 0.9.0
- refactor syncing into a fn
- made `skip-blocks` optional and removed default
value to use bdk-kyoto Sync scan type
### Notes to the reviewers
- replaced `list_transactions` with `transactions`
- set `enable_rbf` to be `true` by default
- update creating and serializing Psbts
- update `new_wallet` to return `PersistedWallet<Connection>`
- default fee_rate to use FeeRate::BROADCAST_MIN
- update `zeroize` to version `1.8.1` from `<1.4.0`
- update `bdk-reserves` from `0.27.1` to `0.29.0`
- replace `bdk/electrum` with `bdk_electrum` for the `electrum` feature
- add `bdk_esplora` for the `bdk/use-esplora-ureq` and `bdk/use-esplora-reqwest` features
- add `bdk_bitcoind_rpc` lib to replace `bdk/rpc` feature
- add `hwi` library to replace `bdk/hardware-signer` feature
<!-- 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
- set `enable_rbf` to be `true` by default
- update using `PartiallySignedTransaction` to `Psbt`
- default fee_rate to use FeeRate::BROADCAST_MIN
- update `zeroize` to version `1.8.1` from `<1.4.0`
- update `bdk-reserves` from `0.27.1` to `0.29.0`
- replace `bdk/electrum` with `bdk_electrum` for the `electrum` feature
- replace `bdk/use-esplora-ureq` and `bdk/use-esplora-reqwest` with `bdk_esplora` lib
- replace `bdk/rpc` with `bdk_bitcoind_rpc` lib
- replace `bdk/hardware-signer` with `hwi` lib
<!-- 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:
* [x] This pull request breaks the existing API
* [x] I'm linking the issue being fixed by this PR
Vihiga Tyonum [Fri, 21 Feb 2025 03:16:26 +0000 (04:16 +0100)]
feat: add ci test for features
- add ci test for features
- add "compiler" feature to bdk_wallet dependency
- remove duplicate fn in utils.rs
- replace "possible_values" with "value_parser"
as it is deprecated in clap 4.5
Vihiga Tyonum [Mon, 3 Feb 2025 12:01:10 +0000 (13:01 +0100)]
refactor: update imports from bdk to bdk_wallet
- replace `list_transactions` method with
`transactions`
- format `recipients` to be a vec of `ScriptBuf`
and `Amount`
- update creating and serializing `Psbt`s
- update `fee_rate` method and default to
`FeeRate::BROADCAST_MIN`
- replace `allow_shrinking` method with `drain_to`
method
- update `handle_offline_wallet_subcommands` to
use `PersistedWallet<D>` instead of `Wallet<D>`
[Ticket: X]
Vihiga Tyonum [Mon, 3 Feb 2025 11:48:06 +0000 (12:48 +0100)]
refactor:update imports from bdk to use bdk_wallet
-update imports from bdk to use bdk_wallet
- set `enable_rbf` command option to be `true` by
default
- add `parse_address` fn to parse address from
string
- replace `ExtendedPrivateKey` with `Xpriv` from
bdk_wallet
- update derving address from string to use
`assumed_check`
Adding hardware signers, so that hardware wallets can be used to sign transactions.
### Notes to the reviewers
~~It doesn't work 100% yet for me.
I am using the following wallet:
https://github.com/RCasatta/electrum2descriptors/blob/main/tests/wallets2descriptors.rs#L89
https://github.com/RCasatta/electrum2descriptors/blob/main/tests/wallets/multisig_hw_segwit
I can create and sign a transaction with this version of bdk-cli. It displays the details on the Trezor and everything looks good so far. But in the CLI output of bdk-cli it says "is_finalized= false" and when I open the supposedly signed tx in Electrum, it aslo says "Status: Unsigned".
So, something must still be missing.~~
Initially I had some dependency problems, so I deleted Cargo.lock. That solved the dependency problems, but that's the reason for the large diff on that file.
## Changelog notice
Added hardware signers through the use of HWI
### 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
* [ ] I've added docs for the new feature
* [x] I've updated `CHANGELOG.md`
Update `bdk` from 0.27 to 0.27.1 to fix bitcoindevkit/bdk#866.
### Notes to the reviewers
Once we get this verified for `bdk-cli` and `bdk-ffi` I'll publish the new bdk release and update this PR to use the new version.
## Changelog notice
Changed
- Update bdk from 0.27 to 0.27.1 to fix bitcoindevkit/bdk#866.
### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
Upgrades to bdk `v0.27.0-rc.1`. Pins dependency `zip` to `v0.6`, as latest version of `zip` moved up their MSRV to `1.59`.
### Notes to the reviewers
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 -->
- BDK version bumped to `0.27`.
### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
As BDK bumped its stable to 1.65, it is safe for us to move it up also.
### Notes to the reviewers
`1.65` cause clippy warning that `Eq` isn't derived while `PartialEq` is derived for the commands. We can't derive `Eq` for commands, as there is a `fee_rate` which is `f32` which isn't `Eq`, and this effect cascades to all structures. We also need `PartialEq` for the tests.
A few options were:
- allow the clippy warning conditionally for `1.65`, `1.57` doesn't have that lint. The way to do that is by creating custom features for different versions and making a build script that activates specific features for specific versions. Feature gate the clippy lint. or use https://github.com/dtolnay/rustversion which is an extra dep.
- Remove `PartialEq` and create a method on `CliOpts` to translate it into `Vec<String>`, and then perform the tests.
- Make `fee_rate` `u32` and derive `Eq` for all.
I went for the last option as it seemed less complex, and not too bad(?). For bdk_cli as majorly a testing tool, it might not need floating point granularity and users can still test out with `u32` fee_rates. Internally it converts it back to `f32`.
Suggestions welcome.
## Changelog notice
- Bumped rustc `stable` to 1.65.
### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
As we are already at msrv 1.57.0, so we can bump electrsd to v0.22.
Which fixes #85 and potentially #131 too..
### Notes to the reviewers
## Changelog notice
Bump `electrsd` version to `v0.22.*`.
### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
Follow the bdk main release process, expect making intermediate release candidate.
Add other issue templates.
Add Development_cycle notes.
Update PR template to include changelog section.
Update changelog to include instruction of new change log format.
### Notes to the reviewers
Please re-check the `minor_release.md` file where I updated the release process without `rc` creation.
### 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
rajarshimaitra [Wed, 11 Jan 2023 17:01:42 +0000 (22:31 +0530)]
Update the release cycle
Follow the bdk main release process, expect making intermediate release
candidate.
Add other issue templates.
Add Development_cycle notes.
Update PR template to include changelog section.
Update changelog to include instruction of new changelog format.
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
Upgrade to bdk v0.26.0
### 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 -->
### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
Fixes #97
Add a finalizer check before broadcasting psbts.
### 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
Remove mention of compact_filters from README until it can be re-enabled
### Notes to the reviewers
I didn't notice this before I merged #125.
### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
Fixes #112
Removes compact block filters temporarily.
### 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
<!-- You can erase any parts of this template not applicable to your Pull Request. -->
### Description
Fixes #113.
This is an attempt to migrate from `structopt` to `clap v0.3` which provides very similar kind of derives as `structopt`. Changes are straight forward. But this comes with few more problems.
- with clap `v3.2.22` the MSRV pushes up to `1.57.0`.. The last clap of MSRV `1.56.0` was `clap 3.2.5`.. But even that doesn't seem to be working at MSRV `1.56.0` anymore, as bunch of underlying lib has upgraded.
- `clap v3.0` doesn't seem to support custom vector parsing well, reported here https://github.com/clap-rs/clap/issues/1704. This is required for `recipient` parsing which is a `Vec<(Script, u32)>`. Workaround for that is to use vecs of strings and parse them at runtime in `create_tx` handler. Included in the PR.
### Notes to the reviewers
`structopt` is currently freezed at `clap 2.0` and doesn't seem to intend on updating and currently its has unmaintained vulnerability. And `clap v3.0` onward seems to replacing everything that `structopt` did before. So this means we should also look for ways to migrate from `strcutopt` to `clap`.. But `clap` seemed to have moved ahead than our MSRV `1.56.0`.. So we need to take up a call on that.. Opened this PR to facilitate that discussion..
This is draft until we figure what to do..
### 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
rajarshimaitra [Sun, 2 Oct 2022 13:52:45 +0000 (19:22 +0530)]
Move from structopt to clap
This commit include changes to move from structopt to clap.
This includes:
- Update Cargo.toml.
- Update commands from structopt to clap.
- Some auxiliary fixes in commands.
- Updates main.