Merge bitcoindevkit/bdk#1326: chore: rename bdk crate to bdk_wallet

f6781652b7a4833b220e0853cd6e290bb5fc0136 chore: rename bdk crate to bdk_wallet (Steve Myers)

Pull request description:

  ### Description

  Fixes #1305 .

  ### Notes to the reviewers

  Once this properly builds, even before all reviews is done, I will publish it to crates.io to reserve the name.

  ### Changelog notice

  Changed

  - Renamed `bdk` crate to `bdk_wallet`.

  ### Checklists

  #### All Submissions:

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

Top commit has no ACKs.

Tree-SHA512: 437c79d9d41721bc9cffd3be81e898068378803dcde6b4106d33bf34ffa756d090dce36d15d4ecd232e5b55ce09c393e6956fc0af4b8477886dabb506b679256
This commit is contained in:
Steve Myers 2024-05-13 12:17:46 -05:00
commit 7607b49283
No known key found for this signature in database
GPG Key ID: 8105A46B22C2D051
42 changed files with 273 additions and 264 deletions

View File

@ -58,8 +58,8 @@ jobs:
working-directory: ./crates/chain working-directory: ./crates/chain
# TODO "--target thumbv6m-none-eabi" should work but currently does not # TODO "--target thumbv6m-none-eabi" should work but currently does not
run: cargo check --no-default-features --features bitcoin/no-std,miniscript/no-std,hashbrown run: cargo check --no-default-features --features bitcoin/no-std,miniscript/no-std,hashbrown
- name: Check bdk - name: Check bdk wallet
working-directory: ./crates/bdk working-directory: ./crates/wallet
# TODO "--target thumbv6m-none-eabi" should work but currently does not # TODO "--target thumbv6m-none-eabi" should work but currently does not
run: cargo check --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown run: cargo check --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown
- name: Check esplora - name: Check esplora
@ -89,8 +89,8 @@ jobs:
target: "wasm32-unknown-unknown" target: "wasm32-unknown-unknown"
- name: Rust Cache - name: Rust Cache
uses: Swatinem/rust-cache@v2.2.1 uses: Swatinem/rust-cache@v2.2.1
- name: Check bdk - name: Check bdk wallet
working-directory: ./crates/bdk working-directory: ./crates/wallet
run: cargo check --target wasm32-unknown-unknown --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown,dev-getrandom-wasm run: cargo check --target wasm32-unknown-unknown --no-default-features --features bitcoin/no-std,miniscript/no-std,bdk_chain/hashbrown,dev-getrandom-wasm
- name: Check esplora - name: Check esplora
working-directory: ./crates/esplora working-directory: ./crates/esplora

View File

@ -1,7 +1,7 @@
[workspace] [workspace]
resolver = "2" resolver = "2"
members = [ members = [
"crates/bdk", "crates/wallet",
"crates/chain", "crates/chain",
"crates/file_store", "crates/file_store",
"crates/electrum", "crates/electrum",

View File

@ -10,11 +10,11 @@
</p> </p>
<p> <p>
<a href="https://crates.io/crates/bdk"><img alt="Crate Info" src="https://img.shields.io/crates/v/bdk.svg"/></a> <a href="https://crates.io/crates/bdk_wallet"><img alt="Crate Info" src="https://img.shields.io/crates/v/bdk_wallet.svg"/></a>
<a href="https://github.com/bitcoindevkit/bdk/blob/master/LICENSE"><img alt="MIT or Apache-2.0 Licensed" src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg"/></a> <a href="https://github.com/bitcoindevkit/bdk/blob/master/LICENSE"><img alt="MIT or Apache-2.0 Licensed" src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg"/></a>
<a href="https://github.com/bitcoindevkit/bdk/actions?query=workflow%3ACI"><img alt="CI Status" src="https://github.com/bitcoindevkit/bdk/workflows/CI/badge.svg"></a> <a href="https://github.com/bitcoindevkit/bdk/actions?query=workflow%3ACI"><img alt="CI Status" src="https://github.com/bitcoindevkit/bdk/workflows/CI/badge.svg"></a>
<a href="https://coveralls.io/github/bitcoindevkit/bdk?branch=master"><img src="https://coveralls.io/repos/github/bitcoindevkit/bdk/badge.svg?branch=master"/></a> <a href="https://coveralls.io/github/bitcoindevkit/bdk?branch=master"><img src="https://coveralls.io/repos/github/bitcoindevkit/bdk/badge.svg?branch=master"/></a>
<a href="https://docs.rs/bdk"><img alt="API Docs" src="https://img.shields.io/badge/docs.rs-bdk-green"/></a> <a href="https://docs.rs/bdk_wallet"><img alt="Wallet API Docs" src="https://img.shields.io/badge/docs.rs-bdk_wallet-green"/></a>
<a href="https://blog.rust-lang.org/2022/08/11/Rust-1.63.0.html"><img alt="Rustc Version 1.63.0+" src="https://img.shields.io/badge/rustc-1.63.0%2B-lightgrey.svg"/></a> <a href="https://blog.rust-lang.org/2022/08/11/Rust-1.63.0.html"><img alt="Rustc Version 1.63.0+" src="https://img.shields.io/badge/rustc-1.63.0%2B-lightgrey.svg"/></a>
<a href="https://discord.gg/d7NkDKm"><img alt="Chat on Discord" src="https://img.shields.io/discord/753336465005608961?logo=discord"></a> <a href="https://discord.gg/d7NkDKm"><img alt="Chat on Discord" src="https://img.shields.io/discord/753336465005608961?logo=discord"></a>
</p> </p>
@ -22,7 +22,7 @@
<h4> <h4>
<a href="https://bitcoindevkit.org">Project Homepage</a> <a href="https://bitcoindevkit.org">Project Homepage</a>
<span> | </span> <span> | </span>
<a href="https://docs.rs/bdk">Documentation</a> <a href="https://docs.rs/bdk_wallet">Documentation</a>
</h4> </h4>
</div> </div>
@ -39,7 +39,7 @@ It is built upon the excellent [`rust-bitcoin`] and [`rust-miniscript`] crates.
The project is split up into several crates in the `/crates` directory: The project is split up into several crates in the `/crates` directory:
- [`bdk`](./crates/bdk): Contains the central high level `Wallet` type that is built from the low-level mechanisms provided by the other components - [`wallet`](./crates/wallet): Contains the central high level `Wallet` type that is built from the low-level mechanisms provided by the other components
- [`chain`](./crates/chain): Tools for storing and indexing chain data - [`chain`](./crates/chain): Tools for storing and indexing chain data
- [`persist`](./crates/persist): Types that define data persistence of a BDK wallet - [`persist`](./crates/persist): Types that define data persistence of a BDK wallet
- [`file_store`](./crates/file_store): A (experimental) persistence backend for storing chain data in a single file. - [`file_store`](./crates/file_store): A (experimental) persistence backend for storing chain data in a single file.
@ -47,10 +47,10 @@ The project is split up into several crates in the `/crates` directory:
- [`electrum`](./crates/electrum): Extends the [`electrum-client`] crate with methods to fetch chain data from an electrum server in the form that [`bdk_chain`] and `Wallet` can consume. - [`electrum`](./crates/electrum): Extends the [`electrum-client`] crate with methods to fetch chain data from an electrum server in the form that [`bdk_chain`] and `Wallet` can consume.
Fully working examples of how to use these components are in `/example-crates`: Fully working examples of how to use these components are in `/example-crates`:
- [`example_cli`](./example-crates/example_cli): Library used by the `example_*` crates. Provides utilities for syncing, showing the balance, generating addresses and creating transactions without using the bdk `Wallet`. - [`example_cli`](./example-crates/example_cli): Library used by the `example_*` crates. Provides utilities for syncing, showing the balance, generating addresses and creating transactions without using the bdk_wallet `Wallet`.
- [`example_electrum`](./example-crates/example_electrum): A command line Bitcoin wallet application built on top of `example_cli` and the `electrum` crate. It shows the power of the bdk tools (`chain` + `file_store` + `electrum`), without depending on the main `bdk` library. - [`example_electrum`](./example-crates/example_electrum): A command line Bitcoin wallet application built on top of `example_cli` and the `electrum` crate. It shows the power of the bdk tools (`chain` + `file_store` + `electrum`), without depending on the main `bdk_wallet` library.
- [`example_esplora`](./example-crates/example_esplora): A command line Bitcoin wallet application built on top of `example_cli` and the `esplora` crate. It shows the power of the bdk tools (`chain` + `file_store` + `esplora`), without depending on the main `bdk` library. - [`example_esplora`](./example-crates/example_esplora): A command line Bitcoin wallet application built on top of `example_cli` and the `esplora` crate. It shows the power of the bdk tools (`chain` + `file_store` + `esplora`), without depending on the main `bdk_wallet` library.
- [`example_bitcoind_rpc_polling`](./example-crates/example_bitcoind_rpc_polling): A command line Bitcoin wallet application built on top of `example_cli` and the `bitcoind_rpc` crate. It shows the power of the bdk tools (`chain` + `file_store` + `bitcoind_rpc`), without depending on the main `bdk` library. - [`example_bitcoind_rpc_polling`](./example-crates/example_bitcoind_rpc_polling): A command line Bitcoin wallet application built on top of `example_cli` and the `bitcoind_rpc` crate. It shows the power of the bdk tools (`chain` + `file_store` + `bitcoind_rpc`), without depending on the main `bdk_wallet` library.
- [`wallet_esplora_blocking`](./example-crates/wallet_esplora_blocking): Uses the `Wallet` to sync and spend using the Esplora blocking interface. - [`wallet_esplora_blocking`](./example-crates/wallet_esplora_blocking): Uses the `Wallet` to sync and spend using the Esplora blocking interface.
- [`wallet_esplora_async`](./example-crates/wallet_esplora_async): Uses the `Wallet` to sync and spend using the Esplora asynchronous interface. - [`wallet_esplora_async`](./example-crates/wallet_esplora_async): Uses the `Wallet` to sync and spend using the Esplora asynchronous interface.
- [`wallet_electrum`](./example-crates/wallet_electrum): Uses the `Wallet` to sync and spend using Electrum. - [`wallet_electrum`](./example-crates/wallet_electrum): Uses the `Wallet` to sync and spend using Electrum.

View File

@ -9,5 +9,5 @@ license = "MIT OR Apache-2.0"
readme = "README.md" readme = "README.md"
[dependencies] [dependencies]
bdk = { path = "../bdk" } bdk_wallet = { path = "../wallet" }
hwi = { version = "0.8.0", features = [ "miniscript"] } hwi = { version = "0.8.0", features = [ "miniscript"] }

View File

@ -3,10 +3,10 @@
//! This crate contains HWISigner, an implementation of a [`TransactionSigner`] to be //! This crate contains HWISigner, an implementation of a [`TransactionSigner`] to be
//! used with hardware wallets. //! used with hardware wallets.
//! ```no_run //! ```no_run
//! # use bdk::bitcoin::Network; //! # use bdk_wallet::bitcoin::Network;
//! # use bdk::signer::SignerOrdering; //! # use bdk_wallet::signer::SignerOrdering;
//! # use bdk_hwi::HWISigner; //! # use bdk_hwi::HWISigner;
//! # use bdk::{KeychainKind, SignOptions, Wallet}; //! # use bdk_wallet::{KeychainKind, SignOptions, Wallet};
//! # use hwi::HWIClient; //! # use hwi::HWIClient;
//! # use std::sync::Arc; //! # use std::sync::Arc;
//! # //! #
@ -35,7 +35,7 @@
//! # } //! # }
//! ``` //! ```
//! //!
//! [`TransactionSigner`]: bdk::wallet::signer::TransactionSigner //! [`TransactionSigner`]: bdk_wallet::wallet::signer::TransactionSigner
mod signer; mod signer;
pub use signer::*; pub use signer::*;

View File

@ -1,12 +1,12 @@
use bdk::bitcoin::bip32::Fingerprint; use bdk_wallet::bitcoin::bip32::Fingerprint;
use bdk::bitcoin::secp256k1::{All, Secp256k1}; use bdk_wallet::bitcoin::secp256k1::{All, Secp256k1};
use bdk::bitcoin::Psbt; use bdk_wallet::bitcoin::Psbt;
use hwi::error::Error; use hwi::error::Error;
use hwi::types::{HWIChain, HWIDevice}; use hwi::types::{HWIChain, HWIDevice};
use hwi::HWIClient; use hwi::HWIClient;
use bdk::signer::{SignerCommon, SignerError, SignerId, TransactionSigner}; use bdk_wallet::signer::{SignerCommon, SignerError, SignerId, TransactionSigner};
#[derive(Debug)] #[derive(Debug)]
/// Custom signer for Hardware Wallets /// Custom signer for Hardware Wallets
@ -38,7 +38,7 @@ impl TransactionSigner for HWISigner {
fn sign_transaction( fn sign_transaction(
&self, &self,
psbt: &mut Psbt, psbt: &mut Psbt,
_sign_options: &bdk::SignOptions, _sign_options: &bdk_wallet::SignOptions,
_secp: &Secp256k1<All>, _secp: &Secp256k1<All>,
) -> Result<(), SignerError> { ) -> Result<(), SignerError> {
psbt.combine( psbt.combine(
@ -61,9 +61,9 @@ impl TransactionSigner for HWISigner {
// fn test_hardware_signer() { // fn test_hardware_signer() {
// use std::sync::Arc; // use std::sync::Arc;
// //
// use bdk::tests::get_funded_wallet; // use bdk_wallet::tests::get_funded_wallet;
// use bdk::signer::SignerOrdering; // use bdk_wallet::signer::SignerOrdering;
// use bdk::bitcoin::Network; // use bdk_wallet::bitcoin::Network;
// use crate::HWISigner; // use crate::HWISigner;
// use hwi::HWIClient; // use hwi::HWIClient;
// //
@ -78,12 +78,12 @@ impl TransactionSigner for HWISigner {
// //
// let (mut wallet, _) = get_funded_wallet(&descriptors.internal[0]); // let (mut wallet, _) = get_funded_wallet(&descriptors.internal[0]);
// wallet.add_signer( // wallet.add_signer(
// bdk::KeychainKind::External, // bdk_wallet::KeychainKind::External,
// SignerOrdering(200), // SignerOrdering(200),
// Arc::new(custom_signer), // Arc::new(custom_signer),
// ); // );
// //
// let addr = wallet.get_address(bdk::wallet::AddressIndex::LastUnused); // let addr = wallet.get_address(bdk_wallet::wallet::AddressIndex::LastUnused);
// let mut builder = wallet.build_tx(); // let mut builder = wallet.build_tx();
// builder.drain_to(addr.script_pubkey()).drain_wallet(); // builder.drain_to(addr.script_pubkey()).drain_wallet();
// let (mut psbt, _) = builder.finish().unwrap(); // let (mut psbt, _) = builder.finish().unwrap();

View File

@ -1,5 +1,5 @@
[package] [package]
name = "bdk" name = "bdk_wallet"
homepage = "https://bitcoindevkit.org" homepage = "https://bitcoindevkit.org"
version = "1.0.0-alpha.11" version = "1.0.0-alpha.11"
repository = "https://github.com/bitcoindevkit/bdk" repository = "https://github.com/bitcoindevkit/bdk"

View File

@ -8,11 +8,11 @@
</p> </p>
<p> <p>
<a href="https://crates.io/crates/bdk"><img alt="Crate Info" src="https://img.shields.io/crates/v/bdk.svg"/></a> <a href="https://crates.io/crates/bdk_wallet"><img alt="Crate Info" src="https://img.shields.io/crates/v/bdk_wallet.svg"/></a>
<a href="https://github.com/bitcoindevkit/bdk/blob/master/LICENSE"><img alt="MIT or Apache-2.0 Licensed" src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg"/></a> <a href="https://github.com/bitcoindevkit/bdk/blob/master/LICENSE"><img alt="MIT or Apache-2.0 Licensed" src="https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg"/></a>
<a href="https://github.com/bitcoindevkit/bdk/actions?query=workflow%3ACI"><img alt="CI Status" src="https://github.com/bitcoindevkit/bdk/workflows/CI/badge.svg"></a> <a href="https://github.com/bitcoindevkit/bdk/actions?query=workflow%3ACI"><img alt="CI Status" src="https://github.com/bitcoindevkit/bdk/workflows/CI/badge.svg"></a>
<a href="https://coveralls.io/github/bitcoindevkit/bdk?branch=master"><img src="https://coveralls.io/repos/github/bitcoindevkit/bdk/badge.svg?branch=master"/></a> <a href="https://coveralls.io/github/bitcoindevkit/bdk?branch=master"><img src="https://coveralls.io/repos/github/bitcoindevkit/bdk/badge.svg?branch=master"/></a>
<a href="https://docs.rs/bdk"><img alt="API Docs" src="https://img.shields.io/badge/docs.rs-bdk-green"/></a> <a href="https://docs.rs/bdk_wallet"><img alt="API Docs" src="https://img.shields.io/badge/docs.rs-bdk_wallet-green"/></a>
<a href="https://blog.rust-lang.org/2022/08/11/Rust-1.63.0.html"><img alt="Rustc Version 1.63.0+" src="https://img.shields.io/badge/rustc-1.63.0%2B-lightgrey.svg"/></a> <a href="https://blog.rust-lang.org/2022/08/11/Rust-1.63.0.html"><img alt="Rustc Version 1.63.0+" src="https://img.shields.io/badge/rustc-1.63.0%2B-lightgrey.svg"/></a>
<a href="https://discord.gg/d7NkDKm"><img alt="Chat on Discord" src="https://img.shields.io/discord/753336465005608961?logo=discord"></a> <a href="https://discord.gg/d7NkDKm"><img alt="Chat on Discord" src="https://img.shields.io/discord/753336465005608961?logo=discord"></a>
</p> </p>
@ -20,13 +20,13 @@
<h4> <h4>
<a href="https://bitcoindevkit.org">Project Homepage</a> <a href="https://bitcoindevkit.org">Project Homepage</a>
<span> | </span> <span> | </span>
<a href="https://docs.rs/bdk">Documentation</a> <a href="https://docs.rs/bdk_wallet">Documentation</a>
</h4> </h4>
</div> </div>
## `bdk` # BDK Wallet
The `bdk` crate provides the [`Wallet`] type which is a simple, high-level The `bdk_wallet` crate provides the [`Wallet`] type which is a simple, high-level
interface built from the low-level components of [`bdk_chain`]. `Wallet` is a good starting point interface built from the low-level components of [`bdk_chain`]. `Wallet` is a good starting point
for many simple applications as well as a good demonstration of how to use the other mechanisms to for many simple applications as well as a good demonstration of how to use the other mechanisms to
construct a wallet. It has two keychains (external and internal) which are defined by construct a wallet. It has two keychains (external and internal) which are defined by
@ -36,7 +36,7 @@ can create and sign transactions.
For details about the API of `Wallet` see the [module-level documentation][`Wallet`]. For details about the API of `Wallet` see the [module-level documentation][`Wallet`].
### Blockchain data ## Blockchain data
In order to get blockchain data for `Wallet` to consume, you should configure a client from In order to get blockchain data for `Wallet` to consume, you should configure a client from
an available chain source. Typically you make a request to the chain source and get a response an available chain source. Typically you make a request to the chain source and get a response
@ -55,7 +55,7 @@ that the `Wallet` can use to update its view of the chain.
* [`example-crates/wallet_electrum`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_electrum) * [`example-crates/wallet_electrum`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_electrum)
* [`example-crates/wallet_rpc`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_rpc) * [`example-crates/wallet_rpc`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_rpc)
### Persistence ## Persistence
To persist the `Wallet` on disk, it must be constructed with a [`PersistBackend`] implementation. To persist the `Wallet` on disk, it must be constructed with a [`PersistBackend`] implementation.
@ -67,7 +67,7 @@ To persist the `Wallet` on disk, it must be constructed with a [`PersistBackend`
<!-- compile_fail because outpoint and txout are fake variables --> <!-- compile_fail because outpoint and txout are fake variables -->
```rust,compile_fail ```rust,compile_fail
use bdk::{bitcoin::Network, wallet::{ChangeSet, Wallet}}; use bdk_wallet::{bitcoin::Network, wallet::{ChangeSet, Wallet}};
fn main() { fn main() {
// Create a new file `Store`. // Create a new file `Store`.
@ -85,13 +85,13 @@ fn main() {
<!-- ### Sync the balance of a descriptor --> <!-- ### Sync the balance of a descriptor -->
<!-- ```rust,no_run --> <!-- ```rust,no_run -->
<!-- use bdk::Wallet; --> <!-- use bdk_wallet::Wallet; -->
<!-- use bdk::blockchain::ElectrumBlockchain; --> <!-- use bdk_wallet::blockchain::ElectrumBlockchain; -->
<!-- use bdk::SyncOptions; --> <!-- use bdk_wallet::SyncOptions; -->
<!-- use bdk::electrum_client::Client; --> <!-- use bdk_wallet::electrum_client::Client; -->
<!-- use bdk::bitcoin::Network; --> <!-- use bdk_wallet::bitcoin::Network; -->
<!-- fn main() -> Result<(), bdk::Error> { --> <!-- fn main() -> Result<(), bdk_wallet::Error> { -->
<!-- let blockchain = ElectrumBlockchain::from(Client::new("ssl://electrum.blockstream.info:60002")?); --> <!-- let blockchain = ElectrumBlockchain::from(Client::new("ssl://electrum.blockstream.info:60002")?); -->
<!-- let wallet = Wallet::new( --> <!-- let wallet = Wallet::new( -->
<!-- "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)", --> <!-- "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)", -->
@ -109,11 +109,11 @@ fn main() {
<!-- ### Generate a few addresses --> <!-- ### Generate a few addresses -->
<!-- ```rust --> <!-- ```rust -->
<!-- use bdk::Wallet; --> <!-- use bdk_wallet::Wallet; -->
<!-- use bdk::wallet::AddressIndex::New; --> <!-- use bdk_wallet::wallet::AddressIndex::New; -->
<!-- use bdk::bitcoin::Network; --> <!-- use bdk_wallet::bitcoin::Network; -->
<!-- fn main() -> Result<(), bdk::Error> { --> <!-- fn main() -> Result<(), bdk_wallet::Error> { -->
<!-- let wallet = Wallet::new_no_persist( --> <!-- let wallet = Wallet::new_no_persist( -->
<!-- "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)", --> <!-- "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)", -->
<!-- Some("wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"), --> <!-- Some("wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/1/*)"), -->
@ -131,17 +131,17 @@ fn main() {
<!-- ### Create a transaction --> <!-- ### Create a transaction -->
<!-- ```rust,no_run --> <!-- ```rust,no_run -->
<!-- use bdk::{FeeRate, Wallet, SyncOptions}; --> <!-- use bdk_wallet::{FeeRate, Wallet, SyncOptions}; -->
<!-- use bdk::blockchain::ElectrumBlockchain; --> <!-- use bdk_wallet::blockchain::ElectrumBlockchain; -->
<!-- use bdk::electrum_client::Client; --> <!-- use bdk_wallet::electrum_client::Client; -->
<!-- use bdk::wallet::AddressIndex::New; --> <!-- use bdk_wallet::wallet::AddressIndex::New; -->
<!-- use bitcoin::base64; --> <!-- use bitcoin::base64; -->
<!-- use bdk::bitcoin::consensus::serialize; --> <!-- use bdk_wallet::bitcoin::consensus::serialize; -->
<!-- use bdk::bitcoin::Network; --> <!-- use bdk_wallet::bitcoin::Network; -->
<!-- fn main() -> Result<(), bdk::Error> { --> <!-- fn main() -> Result<(), bdk_wallet::Error> { -->
<!-- let blockchain = ElectrumBlockchain::from(Client::new("ssl://electrum.blockstream.info:60002")?); --> <!-- let blockchain = ElectrumBlockchain::from(Client::new("ssl://electrum.blockstream.info:60002")?); -->
<!-- let wallet = Wallet::new_no_persist( --> <!-- let wallet = Wallet::new_no_persist( -->
<!-- "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)", --> <!-- "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)", -->
@ -172,13 +172,13 @@ fn main() {
<!-- ### Sign a transaction --> <!-- ### Sign a transaction -->
<!-- ```rust,no_run --> <!-- ```rust,no_run -->
<!-- use bdk::{Wallet, SignOptions}; --> <!-- use bdk_wallet::{Wallet, SignOptions}; -->
<!-- use bitcoin::base64; --> <!-- use bitcoin::base64; -->
<!-- use bdk::bitcoin::consensus::deserialize; --> <!-- use bdk_wallet::bitcoin::consensus::deserialize; -->
<!-- use bdk::bitcoin::Network; --> <!-- use bdk_wallet::bitcoin::Network; -->
<!-- fn main() -> Result<(), bdk::Error> { --> <!-- fn main() -> Result<(), bdk_wallet::Error> { -->
<!-- let wallet = Wallet::new_no_persist( --> <!-- let wallet = Wallet::new_no_persist( -->
<!-- "wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/0/*)", --> <!-- "wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/0/*)", -->
<!-- Some("wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/1/*)"), --> <!-- Some("wpkh([c258d2e4/84h/1h/0h]tprv8griRPhA7342zfRyB6CqeKF8CJDXYu5pgnj1cjL1u2ngKcJha5jjTRimG82ABzJQ4MQe71CV54xfn25BbhCNfEGGJZnxvCDQCd6JkbvxW6h/1/*)"), -->
@ -202,7 +202,7 @@ fn main() {
cargo test cargo test
``` ```
## License # License
Licensed under either of Licensed under either of
@ -211,15 +211,15 @@ Licensed under either of
at your option. at your option.
### Contribution # Contribution
Unless you explicitly state otherwise, any contribution intentionally Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0 submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or license, shall be dual licensed as above, without any additional terms or
conditions. conditions.
[`Wallet`]: https://docs.rs/bdk/1.0.0-alpha.7/bdk/wallet/struct.Wallet.html [`Wallet`]: https://docs.rs/bdk_wallet/latest/bdk_wallet/wallet/struct.Wallet.html
[`PersistBackend`]: https://docs.rs/bdk_persist/latest/bdk_persist/trait.PersistBackend.html [`PersistBackend`]: https://docs.rs/bdk_chain/latest/bdk_chain/trait.PersistBackend.html
[`bdk_chain`]: https://docs.rs/bdk_chain/latest [`bdk_chain`]: https://docs.rs/bdk_chain/latest
[`bdk_file_store`]: https://docs.rs/bdk_file_store/latest [`bdk_file_store`]: https://docs.rs/bdk_file_store/latest
[`bdk_electrum`]: https://docs.rs/bdk_electrum/latest [`bdk_electrum`]: https://docs.rs/bdk_electrum/latest

View File

@ -9,7 +9,7 @@
// You may not use this file except in accordance with one or both of these // You may not use this file except in accordance with one or both of these
// licenses. // licenses.
extern crate bdk; extern crate bdk_wallet;
extern crate bitcoin; extern crate bitcoin;
extern crate miniscript; extern crate miniscript;
extern crate serde_json; extern crate serde_json;
@ -21,7 +21,7 @@ use bitcoin::Network;
use miniscript::policy::Concrete; use miniscript::policy::Concrete;
use miniscript::Descriptor; use miniscript::Descriptor;
use bdk::{KeychainKind, Wallet}; use bdk_wallet::{KeychainKind, Wallet};
/// Miniscript policy is a high level abstraction of spending conditions. Defined in the /// Miniscript policy is a high level abstraction of spending conditions. Defined in the
/// rust-miniscript library here https://docs.rs/miniscript/7.0.0/miniscript/policy/index.html /// rust-miniscript library here https://docs.rs/miniscript/7.0.0/miniscript/policy/index.html

View File

@ -7,14 +7,14 @@
// licenses. // licenses.
use anyhow::anyhow; use anyhow::anyhow;
use bdk::bitcoin::bip32::DerivationPath; use bdk_wallet::bitcoin::bip32::DerivationPath;
use bdk::bitcoin::secp256k1::Secp256k1; use bdk_wallet::bitcoin::secp256k1::Secp256k1;
use bdk::bitcoin::Network; use bdk_wallet::bitcoin::Network;
use bdk::descriptor; use bdk_wallet::descriptor;
use bdk::descriptor::IntoWalletDescriptor; use bdk_wallet::descriptor::IntoWalletDescriptor;
use bdk::keys::bip39::{Language, Mnemonic, WordCount}; use bdk_wallet::keys::bip39::{Language, Mnemonic, WordCount};
use bdk::keys::{GeneratableKey, GeneratedKey}; use bdk_wallet::keys::{GeneratableKey, GeneratedKey};
use bdk::miniscript::Tap; use bdk_wallet::miniscript::Tap;
use std::str::FromStr; use std::str::FromStr;
/// This example demonstrates how to generate a mnemonic phrase /// This example demonstrates how to generate a mnemonic phrase

View File

@ -9,14 +9,14 @@
// You may not use this file except in accordance with one or both of these // You may not use this file except in accordance with one or both of these
// licenses. // licenses.
extern crate bdk; extern crate bdk_wallet;
use std::error::Error; use std::error::Error;
use bdk::bitcoin::Network; use bdk_wallet::bitcoin::Network;
use bdk::descriptor::{policy::BuildSatisfaction, ExtractPolicy, IntoWalletDescriptor}; use bdk_wallet::descriptor::{policy::BuildSatisfaction, ExtractPolicy, IntoWalletDescriptor};
use bdk::wallet::signer::SignersContainer; use bdk_wallet::wallet::signer::SignersContainer;
/// This example describes the use of the BDK's [`bdk::descriptor::policy`] module. /// This example describes the use of the BDK's [`bdk_wallet::descriptor::policy`] module.
/// ///
/// Policy is higher abstraction representation of the wallet descriptor spending condition. /// Policy is higher abstraction representation of the wallet descriptor spending condition.
/// This is useful to express complex miniscript spending conditions into more human readable form. /// This is useful to express complex miniscript spending conditions into more human readable form.
@ -34,11 +34,11 @@ fn main() -> Result<(), Box<dyn Error>> {
let desc = "wsh(multi(2,tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/*,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/*))"; let desc = "wsh(multi(2,tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/*,tpubD6NzVbkrYhZ4XHndKkuB8FifXm8r5FQHwrN6oZuWCz13qb93rtgKvD4PQsqC4HP4yhV3tA2fqr2RbY5mNXfM7RxXUoeABoDtsFUq2zJq6YK/1/*))";
// Use the descriptor string to derive the full descriptor and a keymap. // Use the descriptor string to derive the full descriptor and a keymap.
// The wallet descriptor can be used to create a new bdk::wallet. // The wallet descriptor can be used to create a new bdk_wallet::wallet.
// While the `keymap` can be used to create a `SignerContainer`. // While the `keymap` can be used to create a `SignerContainer`.
// //
// The `SignerContainer` can sign for `PSBT`s. // The `SignerContainer` can sign for `PSBT`s.
// a bdk::wallet internally uses these to handle transaction signing. // a bdk_wallet::wallet internally uses these to handle transaction signing.
// But they can be used as independent tools also. // But they can be used as independent tools also.
let (wallet_desc, keymap) = desc.into_wallet_descriptor(&secp, Network::Testnet)?; let (wallet_desc, keymap) = desc.into_wallet_descriptor(&secp, Network::Testnet)?;

View File

@ -423,7 +423,7 @@ macro_rules! apply_modifier {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// let (my_descriptor, my_keys_map, networks) = bdk::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?; /// let (my_descriptor, my_keys_map, networks) = bdk_wallet::descriptor!(sh(wsh(and_v(v:pk("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy"),older(50)))))?;
/// # Ok::<(), Box<dyn std::error::Error>>(()) /// # Ok::<(), Box<dyn std::error::Error>>(())
/// ``` /// ```
/// ///
@ -444,7 +444,7 @@ macro_rules! apply_modifier {
/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?; /// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
/// let my_timelock = 50; /// let my_timelock = 50;
/// ///
/// let (descriptor_a, key_map_a, networks) = bdk::descriptor! { /// let (descriptor_a, key_map_a, networks) = bdk_wallet::descriptor! {
/// wsh ( /// wsh (
/// thresh(2, pk(my_key_1), s:pk(my_key_2), s:n:d:v:older(my_timelock)) /// thresh(2, pk(my_key_1), s:pk(my_key_2), s:n:d:v:older(my_timelock))
/// ) /// )
@ -452,11 +452,12 @@ macro_rules! apply_modifier {
/// ///
/// #[rustfmt::skip] /// #[rustfmt::skip]
/// let b_items = vec![ /// let b_items = vec![
/// bdk::fragment!(pk(my_key_1))?, /// bdk_wallet::fragment!(pk(my_key_1))?,
/// bdk::fragment!(s:pk(my_key_2))?, /// bdk_wallet::fragment!(s:pk(my_key_2))?,
/// bdk::fragment!(s:n:d:v:older(my_timelock))?, /// bdk_wallet::fragment!(s:n:d:v:older(my_timelock))?,
/// ]; /// ];
/// let (descriptor_b, mut key_map_b, networks) = bdk::descriptor!(wsh(thresh_vec(2, b_items)))?; /// let (descriptor_b, mut key_map_b, networks) =
/// bdk_wallet::descriptor!(wsh(thresh_vec(2, b_items)))?;
/// ///
/// assert_eq!(descriptor_a, descriptor_b); /// assert_eq!(descriptor_a, descriptor_b);
/// assert_eq!(key_map_a.len(), key_map_b.len()); /// assert_eq!(key_map_a.len(), key_map_b.len());
@ -475,7 +476,7 @@ macro_rules! apply_modifier {
/// let my_key_2 = /// let my_key_2 =
/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?; /// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
/// ///
/// let (descriptor, key_map, networks) = bdk::descriptor! { /// let (descriptor, key_map, networks) = bdk_wallet::descriptor! {
/// wsh ( /// wsh (
/// multi(2, my_key_1, my_key_2) /// multi(2, my_key_1, my_key_2)
/// ) /// )
@ -491,7 +492,7 @@ macro_rules! apply_modifier {
/// let my_key = /// let my_key =
/// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?; /// bitcoin::PrivateKey::from_wif("cVt4o7BGAig1UXywgGSmARhxMdzP5qvQsxKkSsc1XEkw3tDTQFpy")?;
/// ///
/// let (descriptor, key_map, networks) = bdk::descriptor!(wpkh(my_key))?; /// let (descriptor, key_map, networks) = bdk_wallet::descriptor!(wpkh(my_key))?;
/// # Ok::<(), Box<dyn std::error::Error>>(()) /// # Ok::<(), Box<dyn std::error::Error>>(())
/// ``` /// ```
/// ///

View File

@ -20,10 +20,10 @@
//! //!
//! ``` //! ```
//! # use std::sync::Arc; //! # use std::sync::Arc;
//! # use bdk::descriptor::*; //! # use bdk_wallet::descriptor::*;
//! # use bdk::wallet::signer::*; //! # use bdk_wallet::wallet::signer::*;
//! # use bdk::bitcoin::secp256k1::Secp256k1; //! # use bdk_wallet::bitcoin::secp256k1::Secp256k1;
//! use bdk::descriptor::policy::BuildSatisfaction; //! use bdk_wallet::descriptor::policy::BuildSatisfaction;
//! let secp = Secp256k1::new(); //! let secp = Secp256k1::new();
//! let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))"; //! let desc = "wsh(and_v(v:pk(cV3oCth6zxZ1UVsHLnGothsWNsaoxRhC6aeNi5VbSdFpwUkgkEci),or_d(pk(cVMTy7uebJgvFaSBwcgvwk8qn8xSLc97dKow4MBetjrrahZoimm2),older(12960))))";
//! //!

View File

@ -36,17 +36,17 @@ pub type DescriptorTemplateOut = (ExtendedDescriptor, KeyMap, ValidNetworks);
/// ## Example /// ## Example
/// ///
/// ``` /// ```
/// use bdk::descriptor::error::Error as DescriptorError; /// use bdk_wallet::descriptor::error::Error as DescriptorError;
/// use bdk::keys::{IntoDescriptorKey, KeyError}; /// use bdk_wallet::keys::{IntoDescriptorKey, KeyError};
/// use bdk::miniscript::Legacy; /// use bdk_wallet::miniscript::Legacy;
/// use bdk::template::{DescriptorTemplate, DescriptorTemplateOut}; /// use bdk_wallet::template::{DescriptorTemplate, DescriptorTemplateOut};
/// use bitcoin::Network; /// use bitcoin::Network;
/// ///
/// struct MyP2PKH<K: IntoDescriptorKey<Legacy>>(K); /// struct MyP2PKH<K: IntoDescriptorKey<Legacy>>(K);
/// ///
/// impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for MyP2PKH<K> { /// impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for MyP2PKH<K> {
/// fn build(self, network: Network) -> Result<DescriptorTemplateOut, DescriptorError> { /// fn build(self, network: Network) -> Result<DescriptorTemplateOut, DescriptorError> {
/// Ok(bdk::descriptor!(pkh(self.0))?) /// Ok(bdk_wallet::descriptor!(pkh(self.0))?)
/// } /// }
/// } /// }
/// ``` /// ```
@ -72,10 +72,10 @@ impl<T: DescriptorTemplate> IntoWalletDescriptor for T {
/// ## Example /// ## Example
/// ///
/// ``` /// ```
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # use bdk::KeychainKind; /// # use bdk_wallet::KeychainKind;
/// use bdk::template::P2Pkh; /// use bdk_wallet::template::P2Pkh;
/// ///
/// let key = /// let key =
/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?; /// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
@ -102,10 +102,10 @@ impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for P2Pkh<K> {
/// ## Example /// ## Example
/// ///
/// ``` /// ```
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # use bdk::KeychainKind; /// # use bdk_wallet::KeychainKind;
/// use bdk::template::P2Wpkh_P2Sh; /// use bdk_wallet::template::P2Wpkh_P2Sh;
/// ///
/// let key = /// let key =
/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?; /// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
@ -133,10 +133,10 @@ impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh_P2Sh<K> {
/// ## Example /// ## Example
/// ///
/// ``` /// ```
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet}; /// # use bdk_wallet::{Wallet};
/// # use bdk::KeychainKind; /// # use bdk_wallet::KeychainKind;
/// use bdk::template::P2Wpkh; /// use bdk_wallet::template::P2Wpkh;
/// ///
/// let key = /// let key =
/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?; /// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
@ -163,10 +163,10 @@ impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2Wpkh<K> {
/// ## Example /// ## Example
/// ///
/// ``` /// ```
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # use bdk::KeychainKind; /// # use bdk_wallet::KeychainKind;
/// use bdk::template::P2TR; /// use bdk_wallet::template::P2TR;
/// ///
/// let key = /// let key =
/// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?; /// bitcoin::PrivateKey::from_wif("cTc4vURSzdx6QE6KVynWGomDbLaA75dNALMNyfjh3p8DRRar84Um")?;
@ -198,9 +198,9 @@ impl<K: IntoDescriptorKey<Tap>> DescriptorTemplate for P2TR<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip44; /// use bdk_wallet::template::Bip44;
/// ///
/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
/// let mut wallet = Wallet::new_no_persist( /// let mut wallet = Wallet::new_no_persist(
@ -234,9 +234,9 @@ impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip44Public; /// use bdk_wallet::template::Bip44Public;
/// ///
/// let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?; /// let key = bitcoin::bip32::Xpub::from_str("tpubDDDzQ31JkZB7VxUr9bjvBivDdqoFLrDPyLWtLapArAi51ftfmCb2DPxwLQzX65iNcXz1DGaVvyvo6JQ6rTU73r2gqdEo8uov9QKRb7nKCSU")?;
/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
@ -271,9 +271,9 @@ impl<K: DerivableKey<Legacy>> DescriptorTemplate for Bip44Public<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip49; /// use bdk_wallet::template::Bip49;
/// ///
/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
/// let mut wallet = Wallet::new_no_persist( /// let mut wallet = Wallet::new_no_persist(
@ -307,9 +307,9 @@ impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip49Public; /// use bdk_wallet::template::Bip49Public;
/// ///
/// let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?; /// let key = bitcoin::bip32::Xpub::from_str("tpubDC49r947KGK52X5rBWS4BLs5m9SRY3pYHnvRrm7HcybZ3BfdEsGFyzCMzayi1u58eT82ZeyFZwH7DD6Q83E3fM9CpfMtmnTygnLfP59jL9L")?;
/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
@ -344,9 +344,9 @@ impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip49Public<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip84; /// use bdk_wallet::template::Bip84;
/// ///
/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
/// let mut wallet = Wallet::new_no_persist( /// let mut wallet = Wallet::new_no_persist(
@ -380,9 +380,9 @@ impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip84Public; /// use bdk_wallet::template::Bip84Public;
/// ///
/// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?; /// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;
@ -417,9 +417,9 @@ impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for Bip84Public<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip86; /// use bdk_wallet::template::Bip86;
/// ///
/// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?; /// let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPeZRHk4rTG6orPS2CRNFX3njhUXx5vj9qGog5ZMH4uGReDWN5kCkY3jmWEtWause41CDvBRXD1shKknAMKxT99o9qUTRVC6m")?;
/// let mut wallet = Wallet::new_no_persist( /// let mut wallet = Wallet::new_no_persist(
@ -453,9 +453,9 @@ impl<K: DerivableKey<Tap>> DescriptorTemplate for Bip86<K> {
/// ///
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bdk::bitcoin::{PrivateKey, Network}; /// # use bdk_wallet::bitcoin::{PrivateKey, Network};
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// use bdk::template::Bip86Public; /// use bdk_wallet::template::Bip86Public;
/// ///
/// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?; /// let key = bitcoin::bip32::Xpub::from_str("tpubDC2Qwo2TFsaNC4ju8nrUJ9mqVT3eSgdmy1yPqhgkjwmke3PRXutNGRYAUo6RCHTcVQaDR3ohNU9we59brGHuEKPvH1ags2nevW5opEE9Z5Q")?;
/// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?; /// let fingerprint = bitcoin::bip32::Fingerprint::from_str("c55b303f")?;

View File

@ -97,7 +97,7 @@ impl<Ctx: ScriptContext> DescriptorKey<Ctx> {
} }
} }
// This method is used internally by `bdk::fragment!` and `bdk::descriptor!`. It has to be // This method is used internally by `bdk_wallet::fragment!` and `bdk_wallet::descriptor!`. It has to be
// public because it is effectively called by external crates once the macros are expanded, // public because it is effectively called by external crates once the macros are expanded,
// but since it is not meant to be part of the public api we hide it from the docs. // but since it is not meant to be part of the public api we hide it from the docs.
#[doc(hidden)] #[doc(hidden)]
@ -206,9 +206,9 @@ impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
/// Key type valid in any context: /// Key type valid in any context:
/// ///
/// ``` /// ```
/// use bdk::bitcoin::PublicKey; /// use bdk_wallet::bitcoin::PublicKey;
/// ///
/// use bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError, ScriptContext}; /// use bdk_wallet::keys::{DescriptorKey, IntoDescriptorKey, KeyError, ScriptContext};
/// ///
/// pub struct MyKeyType { /// pub struct MyKeyType {
/// pubkey: PublicKey, /// pubkey: PublicKey,
@ -224,9 +224,9 @@ impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
/// Key type that is only valid on mainnet: /// Key type that is only valid on mainnet:
/// ///
/// ``` /// ```
/// use bdk::bitcoin::PublicKey; /// use bdk_wallet::bitcoin::PublicKey;
/// ///
/// use bdk::keys::{ /// use bdk_wallet::keys::{
/// mainnet_network, DescriptorKey, DescriptorPublicKey, IntoDescriptorKey, KeyError, /// mainnet_network, DescriptorKey, DescriptorPublicKey, IntoDescriptorKey, KeyError,
/// ScriptContext, SinglePub, SinglePubKey, /// ScriptContext, SinglePub, SinglePubKey,
/// }; /// };
@ -251,9 +251,11 @@ impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
/// Key type that internally encodes in which context it's valid. The context is checked at runtime: /// Key type that internally encodes in which context it's valid. The context is checked at runtime:
/// ///
/// ``` /// ```
/// use bdk::bitcoin::PublicKey; /// use bdk_wallet::bitcoin::PublicKey;
/// ///
/// use bdk::keys::{DescriptorKey, ExtScriptContext, IntoDescriptorKey, KeyError, ScriptContext}; /// use bdk_wallet::keys::{
/// DescriptorKey, ExtScriptContext, IntoDescriptorKey, KeyError, ScriptContext,
/// };
/// ///
/// pub struct MyKeyType { /// pub struct MyKeyType {
/// is_legacy: bool, /// is_legacy: bool,
@ -279,17 +281,17 @@ impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
/// makes the compiler (correctly) fail. /// makes the compiler (correctly) fail.
/// ///
/// ```compile_fail /// ```compile_fail
/// use bdk::bitcoin::PublicKey; /// use bdk_wallet::bitcoin::PublicKey;
/// use core::str::FromStr; /// use core::str::FromStr;
/// ///
/// use bdk::keys::{DescriptorKey, IntoDescriptorKey, KeyError}; /// use bdk_wallet::keys::{DescriptorKey, IntoDescriptorKey, KeyError};
/// ///
/// pub struct MySegwitOnlyKeyType { /// pub struct MySegwitOnlyKeyType {
/// pubkey: PublicKey, /// pubkey: PublicKey,
/// } /// }
/// ///
/// impl IntoDescriptorKey<bdk::miniscript::Segwitv0> for MySegwitOnlyKeyType { /// impl IntoDescriptorKey<bdk_wallet::miniscript::Segwitv0> for MySegwitOnlyKeyType {
/// fn into_descriptor_key(self) -> Result<DescriptorKey<bdk::miniscript::Segwitv0>, KeyError> { /// fn into_descriptor_key(self) -> Result<DescriptorKey<bdk_wallet::miniscript::Segwitv0>, KeyError> {
/// self.pubkey.into_descriptor_key() /// self.pubkey.into_descriptor_key()
/// } /// }
/// } /// }
@ -297,7 +299,7 @@ impl<Ctx: ScriptContext + 'static> ExtScriptContext for Ctx {
/// let key = MySegwitOnlyKeyType { /// let key = MySegwitOnlyKeyType {
/// pubkey: PublicKey::from_str("...")?, /// pubkey: PublicKey::from_str("...")?,
/// }; /// };
/// let (descriptor, _, _) = bdk::descriptor!(pkh(key))?; /// let (descriptor, _, _) = bdk_wallet::descriptor!(pkh(key))?;
/// // ^^^^^ changing this to `wpkh` would make it compile /// // ^^^^^ changing this to `wpkh` would make it compile
/// ///
/// # Ok::<_, Box<dyn std::error::Error>>(()) /// # Ok::<_, Box<dyn std::error::Error>>(())
@ -387,9 +389,9 @@ impl<Ctx: ScriptContext> From<bip32::Xpriv> for ExtendedKey<Ctx> {
/// an [`Xpub`] can implement only the required `into_extended_key()` method. /// an [`Xpub`] can implement only the required `into_extended_key()` method.
/// ///
/// ``` /// ```
/// use bdk::bitcoin; /// use bdk_wallet::bitcoin;
/// use bdk::bitcoin::bip32; /// use bdk_wallet::bitcoin::bip32;
/// use bdk::keys::{DerivableKey, ExtendedKey, KeyError, ScriptContext}; /// use bdk_wallet::keys::{DerivableKey, ExtendedKey, KeyError, ScriptContext};
/// ///
/// struct MyCustomKeyType { /// struct MyCustomKeyType {
/// key_data: bitcoin::PrivateKey, /// key_data: bitcoin::PrivateKey,
@ -418,9 +420,9 @@ impl<Ctx: ScriptContext> From<bip32::Xpriv> for ExtendedKey<Ctx> {
/// [`Xpriv`] or [`Xpub`] will be considered valid. /// [`Xpriv`] or [`Xpub`] will be considered valid.
/// ///
/// ``` /// ```
/// use bdk::bitcoin; /// use bdk_wallet::bitcoin;
/// use bdk::bitcoin::bip32; /// use bdk_wallet::bitcoin::bip32;
/// use bdk::keys::{ /// use bdk_wallet::keys::{
/// any_network, DerivableKey, DescriptorKey, ExtendedKey, KeyError, ScriptContext, /// any_network, DerivableKey, DescriptorKey, ExtendedKey, KeyError, ScriptContext,
/// }; /// };
/// ///
@ -469,9 +471,9 @@ pub trait DerivableKey<Ctx: ScriptContext = miniscript::Legacy>: Sized {
This can be used to get direct access to `xprv`s and `xpub`s for types that implement this trait, This can be used to get direct access to `xprv`s and `xpub`s for types that implement this trait,
like [`Mnemonic`](bip39::Mnemonic) when the `keys-bip39` feature is enabled. like [`Mnemonic`](bip39::Mnemonic) when the `keys-bip39` feature is enabled.
```rust ```rust
use bdk::bitcoin::Network; use bdk_wallet::bitcoin::Network;
use bdk::keys::{DerivableKey, ExtendedKey}; use bdk_wallet::keys::{DerivableKey, ExtendedKey};
use bdk::keys::bip39::{Mnemonic, Language}; use bdk_wallet::keys::bip39::{Mnemonic, Language};
# fn main() -> Result<(), Box<dyn std::error::Error>> { # fn main() -> Result<(), Box<dyn std::error::Error>> {
let xkey: ExtendedKey = let xkey: ExtendedKey =
@ -764,7 +766,7 @@ fn expand_multi_keys<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
Ok((pks, key_map, valid_networks)) Ok((pks, key_map, valid_networks))
} }
// Used internally by `bdk::fragment!` to build `pk_k()` fragments // Used internally by `bdk_wallet::fragment!` to build `pk_k()` fragments
#[doc(hidden)] #[doc(hidden)]
pub fn make_pk<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>( pub fn make_pk<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
descriptor_key: Pk, descriptor_key: Pk,
@ -778,7 +780,7 @@ pub fn make_pk<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
Ok((minisc, key_map, valid_networks)) Ok((minisc, key_map, valid_networks))
} }
// Used internally by `bdk::fragment!` to build `pk_h()` fragments // Used internally by `bdk_wallet::fragment!` to build `pk_h()` fragments
#[doc(hidden)] #[doc(hidden)]
pub fn make_pkh<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>( pub fn make_pkh<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
descriptor_key: Pk, descriptor_key: Pk,
@ -792,7 +794,7 @@ pub fn make_pkh<Pk: IntoDescriptorKey<Ctx>, Ctx: ScriptContext>(
Ok((minisc, key_map, valid_networks)) Ok((minisc, key_map, valid_networks))
} }
// Used internally by `bdk::fragment!` to build `multi()` fragments // Used internally by `bdk_wallet::fragment!` to build `multi()` fragments
#[doc(hidden)] #[doc(hidden)]
pub fn make_multi< pub fn make_multi<
Pk: IntoDescriptorKey<Ctx>, Pk: IntoDescriptorKey<Ctx>,
@ -812,7 +814,7 @@ pub fn make_multi<
Ok((minisc, key_map, valid_networks)) Ok((minisc, key_map, valid_networks))
} }
// Used internally by `bdk::descriptor!` to build `sortedmulti()` fragments // Used internally by `bdk_wallet::descriptor!` to build `sortedmulti()` fragments
#[doc(hidden)] #[doc(hidden)]
pub fn make_sortedmulti<Pk, Ctx, F>( pub fn make_sortedmulti<Pk, Ctx, F>(
thresh: usize, thresh: usize,
@ -834,7 +836,7 @@ where
Ok((descriptor, key_map, valid_networks)) Ok((descriptor, key_map, valid_networks))
} }
/// The "identity" conversion is used internally by some `bdk::fragment`s /// The "identity" conversion is used internally by some `bdk_wallet::fragment`s
impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorKey<Ctx> { impl<Ctx: ScriptContext> IntoDescriptorKey<Ctx> for DescriptorKey<Ctx> {
fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> { fn into_descriptor_key(self) -> Result<DescriptorKey<Ctx>, KeyError> {
Ok(self) Ok(self)

View File

@ -26,11 +26,11 @@
//! ``` //! ```
//! # use std::str::FromStr; //! # use std::str::FromStr;
//! # use bitcoin::*; //! # use bitcoin::*;
//! # use bdk::wallet::{self, ChangeSet, coin_selection::*, coin_selection}; //! # use bdk_wallet::wallet::{self, ChangeSet, coin_selection::*, coin_selection};
//! # use bdk::wallet::error::CreateTxError; //! # use bdk_wallet::wallet::error::CreateTxError;
//! # use bdk_persist::PersistBackend; //! # use bdk_persist::PersistBackend;
//! # use bdk::*; //! # use bdk_wallet::*;
//! # use bdk::wallet::coin_selection::decide_change; //! # use bdk_wallet::wallet::coin_selection::decide_change;
//! # use anyhow::Error; //! # use anyhow::Error;
//! #[derive(Debug)] //! #[derive(Debug)]
//! struct AlwaysSpendEverything; //! struct AlwaysSpendEverything;

View File

@ -20,8 +20,8 @@
//! ``` //! ```
//! # use std::str::FromStr; //! # use std::str::FromStr;
//! # use bitcoin::*; //! # use bitcoin::*;
//! # use bdk::wallet::export::*; //! # use bdk_wallet::wallet::export::*;
//! # use bdk::*; //! # use bdk_wallet::*;
//! let import = r#"{ //! let import = r#"{
//! "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)", //! "descriptor": "wpkh([c258d2e4\/84h\/1h\/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe\/0\/*)",
//! "blockheight":1782088, //! "blockheight":1782088,
@ -40,8 +40,8 @@
//! ### Export a `Wallet` //! ### Export a `Wallet`
//! ``` //! ```
//! # use bitcoin::*; //! # use bitcoin::*;
//! # use bdk::wallet::export::*; //! # use bdk_wallet::wallet::export::*;
//! # use bdk::*; //! # use bdk_wallet::*;
//! let wallet = Wallet::new_no_persist( //! let wallet = Wallet::new_no_persist(
//! "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)", //! "wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/0/*)",
//! Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"), //! Some("wpkh([c258d2e4/84h/1h/0h]tpubDD3ynpHgJQW8VvWRzQ5WFDCrs4jqVFGHB3vLC3r49XHJSqP8bHKdK4AriuUKLccK68zfzowx7YhmDN8SiSkgCDENUFx9qVw65YyqM78vyVe/1/*)"),

View File

@ -14,11 +14,11 @@
//! This module contains HWISigner, an implementation of a [TransactionSigner] to be //! This module contains HWISigner, an implementation of a [TransactionSigner] to be
//! used with hardware wallets. //! used with hardware wallets.
//! ```no_run //! ```no_run
//! # use bdk::bitcoin::Network; //! # use bdk_wallet::bitcoin::Network;
//! # use bdk::signer::SignerOrdering; //! # use bdk_wallet::signer::SignerOrdering;
//! # use bdk::wallet::hardwaresigner::HWISigner; //! # use bdk_wallet::wallet::hardwaresigner::HWISigner;
//! # use bdk::wallet::AddressIndex::New; //! # use bdk_wallet::wallet::AddressIndex::New;
//! # use bdk::{KeychainKind, SignOptions, Wallet}; //! # use bdk_wallet::{KeychainKind, SignOptions, Wallet};
//! # use hwi::HWIClient; //! # use hwi::HWIClient;
//! # use std::sync::Arc; //! # use std::sync::Arc;
//! # //! #

View File

@ -526,17 +526,17 @@ impl Wallet {
/// manually to the [`Wallet`]: /// manually to the [`Wallet`]:
/// ///
/// ```rust,no_run /// ```rust,no_run
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # use bdk::signer::{SignersContainer, SignerOrdering}; /// # use bdk_wallet::signer::{SignersContainer, SignerOrdering};
/// # use bdk::descriptor::Descriptor; /// # use bdk_wallet::descriptor::Descriptor;
/// # use bitcoin::key::Secp256k1; /// # use bitcoin::key::Secp256k1;
/// # use bdk::KeychainKind; /// # use bdk_wallet::KeychainKind;
/// # use bdk_file_store::Store; /// # use bdk_file_store::Store;
/// # /// #
/// # fn main() -> Result<(), anyhow::Error> { /// # fn main() -> Result<(), anyhow::Error> {
/// # let temp_dir = tempfile::tempdir().expect("must create tempdir"); /// # let temp_dir = tempfile::tempdir().expect("must create tempdir");
/// # let file_path = temp_dir.path().join("store.db"); /// # let file_path = temp_dir.path().join("store.db");
/// # let db: Store<bdk::wallet::ChangeSet> = Store::create_new(&[], &file_path).expect("must create db"); /// # let db: Store<bdk_wallet::wallet::ChangeSet> = Store::create_new(&[], &file_path).expect("must create db");
/// let secp = Secp256k1::new(); /// let secp = Secp256k1::new();
/// ///
/// let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap(); /// let (external_descriptor, external_keymap) = Descriptor::parse_descriptor(&secp, "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)").unwrap();
@ -1052,7 +1052,7 @@ impl Wallet {
/// ///
/// ```rust, no_run /// ```rust, no_run
/// # use bitcoin::Txid; /// # use bitcoin::Txid;
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # let mut wallet: Wallet = todo!(); /// # let mut wallet: Wallet = todo!();
/// # let txid:Txid = todo!(); /// # let txid:Txid = todo!();
/// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx; /// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
@ -1061,7 +1061,7 @@ impl Wallet {
/// ///
/// ```rust, no_run /// ```rust, no_run
/// # use bitcoin::Psbt; /// # use bitcoin::Psbt;
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # let mut wallet: Wallet = todo!(); /// # let mut wallet: Wallet = todo!();
/// # let mut psbt: Psbt = todo!(); /// # let mut psbt: Psbt = todo!();
/// let tx = &psbt.clone().extract_tx().expect("tx"); /// let tx = &psbt.clone().extract_tx().expect("tx");
@ -1083,7 +1083,7 @@ impl Wallet {
/// ///
/// ```rust, no_run /// ```rust, no_run
/// # use bitcoin::Txid; /// # use bitcoin::Txid;
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # let mut wallet: Wallet = todo!(); /// # let mut wallet: Wallet = todo!();
/// # let txid:Txid = todo!(); /// # let txid:Txid = todo!();
/// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx; /// let tx = wallet.get_tx(txid).expect("transaction").tx_node.tx;
@ -1092,7 +1092,7 @@ impl Wallet {
/// ///
/// ```rust, no_run /// ```rust, no_run
/// # use bitcoin::Psbt; /// # use bitcoin::Psbt;
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # let mut wallet: Wallet = todo!(); /// # let mut wallet: Wallet = todo!();
/// # let mut psbt: Psbt = todo!(); /// # let mut psbt: Psbt = todo!();
/// let tx = &psbt.clone().extract_tx().expect("tx"); /// let tx = &psbt.clone().extract_tx().expect("tx");
@ -1114,7 +1114,7 @@ impl Wallet {
/// ///
/// ```rust, no_run /// ```rust, no_run
/// # use bitcoin::Txid; /// # use bitcoin::Txid;
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # let mut wallet: Wallet = todo!(); /// # let mut wallet: Wallet = todo!();
/// # let txid:Txid = todo!(); /// # let txid:Txid = todo!();
/// let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx; /// let tx = wallet.get_tx(txid).expect("tx exists").tx_node.tx;
@ -1123,7 +1123,7 @@ impl Wallet {
/// ///
/// ```rust, no_run /// ```rust, no_run
/// # use bitcoin::Psbt; /// # use bitcoin::Psbt;
/// # use bdk::Wallet; /// # use bdk_wallet::Wallet;
/// # let mut wallet: Wallet = todo!(); /// # let mut wallet: Wallet = todo!();
/// # let mut psbt: Psbt = todo!(); /// # let mut psbt: Psbt = todo!();
/// let tx = &psbt.clone().extract_tx().expect("tx"); /// let tx = &psbt.clone().extract_tx().expect("tx");
@ -1144,8 +1144,8 @@ impl Wallet {
/// the transaction was last seen in the mempool is provided. /// the transaction was last seen in the mempool is provided.
/// ///
/// ```rust, no_run /// ```rust, no_run
/// use bdk::{chain::ChainPosition, Wallet};
/// use bdk_chain::Anchor; /// use bdk_chain::Anchor;
/// use bdk_wallet::{chain::ChainPosition, Wallet};
/// # let wallet: Wallet = todo!(); /// # let wallet: Wallet = todo!();
/// # let my_txid: bitcoin::Txid = todo!(); /// # let my_txid: bitcoin::Txid = todo!();
/// ///
@ -1311,8 +1311,8 @@ impl Wallet {
/// ## Example /// ## Example
/// ///
/// ``` /// ```
/// # use bdk::{Wallet, KeychainKind}; /// # use bdk_wallet::{Wallet, KeychainKind};
/// # use bdk::bitcoin::Network; /// # use bdk_wallet::bitcoin::Network;
/// let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?; /// let wallet = Wallet::new_no_persist("wpkh(tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*)", None, Network::Testnet)?;
/// for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) { /// for secret_key in wallet.get_signers(KeychainKind::External).signers().iter().filter_map(|s| s.descriptor_secret_key()) {
/// // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/* /// // secret_key: tprv8ZgxMBicQKsPe73PBRSmNbTfbcsZnwWhz5eVmhHpi31HW29Z7mc9B4cWGRQzopNUzZUT391DeDJxL2PefNunWyLgqCKRMDkU1s2s8bAfoSk/84'/0'/0'/0/*
@ -1337,9 +1337,9 @@ impl Wallet {
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bitcoin::*; /// # use bitcoin::*;
/// # use bdk::*; /// # use bdk_wallet::*;
/// # use bdk::wallet::ChangeSet; /// # use bdk_wallet::wallet::ChangeSet;
/// # use bdk::wallet::error::CreateTxError; /// # use bdk_wallet::wallet::error::CreateTxError;
/// # use bdk_persist::PersistBackend; /// # use bdk_persist::PersistBackend;
/// # use anyhow::Error; /// # use anyhow::Error;
/// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)"; /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
@ -1714,9 +1714,9 @@ impl Wallet {
/// # // TODO: remove norun -- bumping fee seems to need the tx in the wallet database first. /// # // TODO: remove norun -- bumping fee seems to need the tx in the wallet database first.
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bitcoin::*; /// # use bitcoin::*;
/// # use bdk::*; /// # use bdk_wallet::*;
/// # use bdk::wallet::ChangeSet; /// # use bdk_wallet::wallet::ChangeSet;
/// # use bdk::wallet::error::CreateTxError; /// # use bdk_wallet::wallet::error::CreateTxError;
/// # use bdk_persist::PersistBackend; /// # use bdk_persist::PersistBackend;
/// # use anyhow::Error; /// # use anyhow::Error;
/// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)"; /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
@ -1889,9 +1889,9 @@ impl Wallet {
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bitcoin::*; /// # use bitcoin::*;
/// # use bdk::*; /// # use bdk_wallet::*;
/// # use bdk::wallet::ChangeSet; /// # use bdk_wallet::wallet::ChangeSet;
/// # use bdk::wallet::error::CreateTxError; /// # use bdk_wallet::wallet::error::CreateTxError;
/// # use bdk_persist::PersistBackend; /// # use bdk_persist::PersistBackend;
/// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)"; /// # let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/*)";
/// # let mut wallet = doctest_wallet!(); /// # let mut wallet = doctest_wallet!();

View File

@ -19,8 +19,8 @@
//! # use core::str::FromStr; //! # use core::str::FromStr;
//! # use bitcoin::secp256k1::{Secp256k1, All}; //! # use bitcoin::secp256k1::{Secp256k1, All};
//! # use bitcoin::*; //! # use bitcoin::*;
//! # use bdk::signer::*; //! # use bdk_wallet::signer::*;
//! # use bdk::*; //! # use bdk_wallet::*;
//! # #[derive(Debug)] //! # #[derive(Debug)]
//! # struct CustomHSM; //! # struct CustomHSM;
//! # impl CustomHSM { //! # impl CustomHSM {

View File

@ -16,10 +16,10 @@
//! ``` //! ```
//! # use std::str::FromStr; //! # use std::str::FromStr;
//! # use bitcoin::*; //! # use bitcoin::*;
//! # use bdk::*; //! # use bdk_wallet::*;
//! # use bdk::wallet::ChangeSet; //! # use bdk_wallet::wallet::ChangeSet;
//! # use bdk::wallet::error::CreateTxError; //! # use bdk_wallet::wallet::error::CreateTxError;
//! # use bdk::wallet::tx_builder::CreateTx; //! # use bdk_wallet::wallet::tx_builder::CreateTx;
//! # use bdk_persist::PersistBackend; //! # use bdk_persist::PersistBackend;
//! # use anyhow::Error; //! # use anyhow::Error;
//! # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked(); //! # let to_address = Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt").unwrap().assume_checked();
@ -78,12 +78,12 @@ impl TxBuilderContext for BumpFee {}
/// as in the following example: /// as in the following example:
/// ///
/// ``` /// ```
/// # use bdk::*; /// # use bdk_wallet::*;
/// # use bdk::wallet::tx_builder::*; /// # use bdk_wallet::wallet::tx_builder::*;
/// # use bitcoin::*; /// # use bitcoin::*;
/// # use core::str::FromStr; /// # use core::str::FromStr;
/// # use bdk::wallet::ChangeSet; /// # use bdk_wallet::wallet::ChangeSet;
/// # use bdk::wallet::error::CreateTxError; /// # use bdk_wallet::wallet::error::CreateTxError;
/// # use bdk_persist::PersistBackend; /// # use bdk_persist::PersistBackend;
/// # use anyhow::Error; /// # use anyhow::Error;
/// # let mut wallet = doctest_wallet!(); /// # let mut wallet = doctest_wallet!();
@ -263,7 +263,7 @@ impl<'a, Cs, Ctx> TxBuilder<'a, Cs, Ctx> {
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use std::collections::BTreeMap; /// # use std::collections::BTreeMap;
/// # use bitcoin::*; /// # use bitcoin::*;
/// # use bdk::*; /// # use bdk_wallet::*;
/// # let to_address = /// # let to_address =
/// Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt") /// Address::from_str("2N4eQYCbKUHCCTUjBJeHcJp9ok6J2GZsTDt")
/// .unwrap() /// .unwrap()
@ -759,10 +759,10 @@ impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs, CreateTx> {
/// ``` /// ```
/// # use std::str::FromStr; /// # use std::str::FromStr;
/// # use bitcoin::*; /// # use bitcoin::*;
/// # use bdk::*; /// # use bdk_wallet::*;
/// # use bdk::wallet::ChangeSet; /// # use bdk_wallet::wallet::ChangeSet;
/// # use bdk::wallet::error::CreateTxError; /// # use bdk_wallet::wallet::error::CreateTxError;
/// # use bdk::wallet::tx_builder::CreateTx; /// # use bdk_wallet::wallet::tx_builder::CreateTx;
/// # use bdk_persist::PersistBackend; /// # use bdk_persist::PersistBackend;
/// # use anyhow::Error; /// # use anyhow::Error;
/// # let to_address = /// # let to_address =

View File

@ -1,8 +1,8 @@
#![allow(unused)] #![allow(unused)]
use bdk::{KeychainKind, LocalOutput, Wallet};
use bdk_chain::indexed_tx_graph::Indexer; use bdk_chain::indexed_tx_graph::Indexer;
use bdk_chain::{BlockId, ConfirmationTime}; use bdk_chain::{BlockId, ConfirmationTime};
use bdk_wallet::{KeychainKind, LocalOutput, Wallet};
use bitcoin::hashes::Hash; use bitcoin::hashes::Hash;
use bitcoin::{ use bitcoin::{
transaction, Address, Amount, BlockHash, FeeRate, Network, OutPoint, Transaction, TxIn, TxOut, transaction, Address, Amount, BlockHash, FeeRate, Network, OutPoint, Transaction, TxIn, TxOut,

View File

@ -1,5 +1,5 @@
use bdk::bitcoin::{Amount, FeeRate, Psbt, TxIn}; use bdk_wallet::bitcoin::{Amount, FeeRate, Psbt, TxIn};
use bdk::{psbt, KeychainKind, SignOptions}; use bdk_wallet::{psbt, KeychainKind, SignOptions};
use core::str::FromStr; use core::str::FromStr;
mod common; mod common;
use common::*; use common::*;
@ -156,8 +156,8 @@ fn test_psbt_fee_rate_with_missing_txout() {
#[test] #[test]
fn test_psbt_multiple_internalkey_signers() { fn test_psbt_multiple_internalkey_signers() {
use bdk::signer::{SignerContext, SignerOrdering, SignerWrapper}; use bdk_wallet::signer::{SignerContext, SignerOrdering, SignerWrapper};
use bdk::KeychainKind; use bdk_wallet::KeychainKind;
use bitcoin::key::TapTweak; use bitcoin::key::TapTweak;
use bitcoin::secp256k1::{schnorr, Keypair, Message, Secp256k1, XOnlyPublicKey}; use bitcoin::secp256k1::{schnorr, Keypair, Message, Secp256k1, XOnlyPublicKey};
use bitcoin::sighash::{Prevouts, SighashCache, TapSighashType}; use bitcoin::sighash::{Prevouts, SighashCache, TapSighashType};

View File

@ -1,18 +1,18 @@
use std::str::FromStr; use std::str::FromStr;
use assert_matches::assert_matches; use assert_matches::assert_matches;
use bdk::descriptor::{calc_checksum, IntoWalletDescriptor};
use bdk::psbt::PsbtUtils;
use bdk::signer::{SignOptions, SignerError};
use bdk::wallet::coin_selection::{self, LargestFirstCoinSelection};
use bdk::wallet::error::CreateTxError;
use bdk::wallet::tx_builder::AddForeignUtxoError;
use bdk::wallet::NewError;
use bdk::wallet::{AddressInfo, Balance, Wallet};
use bdk::KeychainKind;
use bdk_chain::collections::BTreeMap; use bdk_chain::collections::BTreeMap;
use bdk_chain::COINBASE_MATURITY; use bdk_chain::COINBASE_MATURITY;
use bdk_chain::{BlockId, ConfirmationTime}; use bdk_chain::{BlockId, ConfirmationTime};
use bdk_wallet::descriptor::{calc_checksum, IntoWalletDescriptor};
use bdk_wallet::psbt::PsbtUtils;
use bdk_wallet::signer::{SignOptions, SignerError};
use bdk_wallet::wallet::coin_selection::{self, LargestFirstCoinSelection};
use bdk_wallet::wallet::error::CreateTxError;
use bdk_wallet::wallet::tx_builder::AddForeignUtxoError;
use bdk_wallet::wallet::NewError;
use bdk_wallet::wallet::{AddressInfo, Balance, Wallet};
use bdk_wallet::KeychainKind;
use bitcoin::hashes::Hash; use bitcoin::hashes::Hash;
use bitcoin::key::Secp256k1; use bitcoin::key::Secp256k1;
use bitcoin::psbt; use bitcoin::psbt;
@ -137,7 +137,7 @@ fn new_or_load() {
assert!( assert!(
matches!( matches!(
err, err,
bdk::wallet::NewOrLoadError::LoadedNetworkDoesNotMatch { bdk_wallet::wallet::NewOrLoadError::LoadedNetworkDoesNotMatch {
got: Some(Network::Testnet), got: Some(Network::Testnet),
expected: Network::Bitcoin expected: Network::Bitcoin
} }
@ -166,7 +166,7 @@ fn new_or_load() {
assert!( assert!(
matches!( matches!(
err, err,
bdk::wallet::NewOrLoadError::LoadedGenesisDoesNotMatch { got, expected } bdk_wallet::wallet::NewOrLoadError::LoadedGenesisDoesNotMatch { got, expected }
if got == Some(got_blockhash) && expected == exp_blockhash if got == Some(got_blockhash) && expected == exp_blockhash
), ),
"err: {}", "err: {}",
@ -189,7 +189,7 @@ fn new_or_load() {
assert!( assert!(
matches!( matches!(
err, err,
bdk::wallet::NewOrLoadError::LoadedDescriptorDoesNotMatch { ref got, keychain } bdk_wallet::wallet::NewOrLoadError::LoadedDescriptorDoesNotMatch { ref got, keychain }
if got == &Some(got_descriptor) && keychain == KeychainKind::External if got == &Some(got_descriptor) && keychain == KeychainKind::External
), ),
"err: {}", "err: {}",
@ -209,7 +209,7 @@ fn new_or_load() {
assert!( assert!(
matches!( matches!(
err, err,
bdk::wallet::NewOrLoadError::LoadedDescriptorDoesNotMatch { ref got, keychain } bdk_wallet::wallet::NewOrLoadError::LoadedDescriptorDoesNotMatch { ref got, keychain }
if got == &got_descriptor && keychain == KeychainKind::Internal if got == &got_descriptor && keychain == KeychainKind::Internal
), ),
"err: {}", "err: {}",
@ -791,7 +791,7 @@ fn test_create_tx_absolute_high_fee() {
#[test] #[test]
fn test_create_tx_add_change() { fn test_create_tx_add_change() {
use bdk::wallet::tx_builder::TxOrdering; use bdk_wallet::wallet::tx_builder::TxOrdering;
let (mut wallet, _) = get_funded_wallet(get_test_wpkh()); let (mut wallet, _) = get_funded_wallet(get_test_wpkh());
let addr = wallet.next_unused_address(KeychainKind::External).unwrap(); let addr = wallet.next_unused_address(KeychainKind::External).unwrap();
@ -846,7 +846,7 @@ fn test_create_tx_ordering_respected() {
builder builder
.add_recipient(addr.script_pubkey(), Amount::from_sat(30_000)) .add_recipient(addr.script_pubkey(), Amount::from_sat(30_000))
.add_recipient(addr.script_pubkey(), Amount::from_sat(10_000)) .add_recipient(addr.script_pubkey(), Amount::from_sat(10_000))
.ordering(bdk::wallet::tx_builder::TxOrdering::Bip69Lexicographic); .ordering(bdk_wallet::wallet::tx_builder::TxOrdering::Bip69Lexicographic);
let psbt = builder.finish().unwrap(); let psbt = builder.finish().unwrap();
let fee = check_fee!(wallet, psbt); let fee = check_fee!(wallet, psbt);
@ -2951,7 +2951,7 @@ fn test_sending_to_bip350_bech32m_address() {
#[test] #[test]
fn test_get_address() { fn test_get_address() {
use bdk::descriptor::template::Bip84; use bdk_wallet::descriptor::template::Bip84;
let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap(); let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
let wallet = Wallet::new_no_persist( let wallet = Wallet::new_no_persist(
Bip84(key, KeychainKind::External), Bip84(key, KeychainKind::External),
@ -3022,7 +3022,7 @@ fn test_reveal_addresses() {
#[test] #[test]
fn test_get_address_no_reuse_single_descriptor() { fn test_get_address_no_reuse_single_descriptor() {
use bdk::descriptor::template::Bip84; use bdk_wallet::descriptor::template::Bip84;
use std::collections::HashSet; use std::collections::HashSet;
let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap(); let key = bitcoin::bip32::Xpriv::from_str("tprv8ZgxMBicQKsPcx5nBGsR63Pe8KnRUqmbJNENAfGftF3yuXoMMoVJJcYeUw5eVkm9WBPjWYt6HMWYJNesB5HaNVBaFc1M6dRjWSYnmewUMYy").unwrap();
@ -3384,7 +3384,7 @@ fn test_taproot_script_spend() {
#[test] #[test]
fn test_taproot_script_spend_sign_all_leaves() { fn test_taproot_script_spend_sign_all_leaves() {
use bdk::signer::TapLeavesOptions; use bdk_wallet::signer::TapLeavesOptions;
let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv()); let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
let addr = wallet.next_unused_address(KeychainKind::External).unwrap(); let addr = wallet.next_unused_address(KeychainKind::External).unwrap();
@ -3413,7 +3413,7 @@ fn test_taproot_script_spend_sign_all_leaves() {
#[test] #[test]
fn test_taproot_script_spend_sign_include_some_leaves() { fn test_taproot_script_spend_sign_include_some_leaves() {
use bdk::signer::TapLeavesOptions; use bdk_wallet::signer::TapLeavesOptions;
use bitcoin::taproot::TapLeafHash; use bitcoin::taproot::TapLeafHash;
let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv()); let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
@ -3453,7 +3453,7 @@ fn test_taproot_script_spend_sign_include_some_leaves() {
#[test] #[test]
fn test_taproot_script_spend_sign_exclude_some_leaves() { fn test_taproot_script_spend_sign_exclude_some_leaves() {
use bdk::signer::TapLeavesOptions; use bdk_wallet::signer::TapLeavesOptions;
use bitcoin::taproot::TapLeafHash; use bitcoin::taproot::TapLeafHash;
let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv()); let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
@ -3493,7 +3493,7 @@ fn test_taproot_script_spend_sign_exclude_some_leaves() {
#[test] #[test]
fn test_taproot_script_spend_sign_no_leaves() { fn test_taproot_script_spend_sign_no_leaves() {
use bdk::signer::TapLeavesOptions; use bdk_wallet::signer::TapLeavesOptions;
let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv()); let (mut wallet, _) = get_funded_wallet(get_test_tr_with_taptree_both_priv());
let addr = wallet.next_unused_address(KeychainKind::External).unwrap(); let addr = wallet.next_unused_address(KeychainKind::External).unwrap();

View File

@ -4,7 +4,7 @@ version = "0.2.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
bdk = { path = "../../crates/bdk" } bdk_wallet = { path = "../../crates/wallet" }
bdk_electrum = { path = "../../crates/electrum" } bdk_electrum = { path = "../../crates/electrum" }
bdk_file_store = { path = "../../crates/file_store" } bdk_file_store = { path = "../../crates/file_store" }
anyhow = "1" anyhow = "1"

View File

@ -6,19 +6,20 @@ const BATCH_SIZE: usize = 5;
use std::io::Write; use std::io::Write;
use std::str::FromStr; use std::str::FromStr;
use bdk::bitcoin::{Address, Amount};
use bdk::chain::collections::HashSet;
use bdk::{bitcoin::Network, Wallet};
use bdk::{KeychainKind, SignOptions};
use bdk_electrum::{ use bdk_electrum::{
electrum_client::{self, ElectrumApi}, electrum_client::{self, ElectrumApi},
ElectrumExt, ElectrumExt,
}; };
use bdk_file_store::Store; use bdk_file_store::Store;
use bdk_wallet::bitcoin::{Address, Amount};
use bdk_wallet::chain::collections::HashSet;
use bdk_wallet::{bitcoin::Network, Wallet};
use bdk_wallet::{KeychainKind, SignOptions};
fn main() -> Result<(), anyhow::Error> { fn main() -> Result<(), anyhow::Error> {
let db_path = std::env::temp_dir().join("bdk-electrum-example"); let db_path = std::env::temp_dir().join("bdk-electrum-example");
let db = Store::<bdk::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?; let db =
Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)"; let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)"; let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";

View File

@ -6,7 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
bdk = { path = "../../crates/bdk" } bdk_wallet = { path = "../../crates/wallet" }
bdk_esplora = { path = "../../crates/esplora", features = ["async-https"] } bdk_esplora = { path = "../../crates/esplora", features = ["async-https"] }
bdk_file_store = { path = "../../crates/file_store" } bdk_file_store = { path = "../../crates/file_store" }
tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"] } tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros"] }

View File

@ -1,11 +1,11 @@
use std::{collections::BTreeSet, io::Write, str::FromStr}; use std::{collections::BTreeSet, io::Write, str::FromStr};
use bdk::{ use bdk_esplora::{esplora_client, EsploraAsyncExt};
use bdk_file_store::Store;
use bdk_wallet::{
bitcoin::{Address, Amount, Network, Script}, bitcoin::{Address, Amount, Network, Script},
KeychainKind, SignOptions, Wallet, KeychainKind, SignOptions, Wallet,
}; };
use bdk_esplora::{esplora_client, EsploraAsyncExt};
use bdk_file_store::Store;
const DB_MAGIC: &str = "bdk_wallet_esplora_async_example"; const DB_MAGIC: &str = "bdk_wallet_esplora_async_example";
const SEND_AMOUNT: Amount = Amount::from_sat(5000); const SEND_AMOUNT: Amount = Amount::from_sat(5000);
@ -15,7 +15,8 @@ const PARALLEL_REQUESTS: usize = 5;
#[tokio::main] #[tokio::main]
async fn main() -> Result<(), anyhow::Error> { async fn main() -> Result<(), anyhow::Error> {
let db_path = std::env::temp_dir().join("bdk-esplora-async-example"); let db_path = std::env::temp_dir().join("bdk-esplora-async-example");
let db = Store::<bdk::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?; let db =
Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)"; let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)"; let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";

View File

@ -7,7 +7,7 @@ publish = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
bdk = { path = "../../crates/bdk" } bdk_wallet = { path = "../../crates/wallet" }
bdk_esplora = { path = "../../crates/esplora", features = ["blocking"] } bdk_esplora = { path = "../../crates/esplora", features = ["blocking"] }
bdk_file_store = { path = "../../crates/file_store" } bdk_file_store = { path = "../../crates/file_store" }
anyhow = "1" anyhow = "1"

View File

@ -5,16 +5,17 @@ const PARALLEL_REQUESTS: usize = 1;
use std::{collections::BTreeSet, io::Write, str::FromStr}; use std::{collections::BTreeSet, io::Write, str::FromStr};
use bdk::{ use bdk_esplora::{esplora_client, EsploraExt};
use bdk_file_store::Store;
use bdk_wallet::{
bitcoin::{Address, Amount, Network}, bitcoin::{Address, Amount, Network},
KeychainKind, SignOptions, Wallet, KeychainKind, SignOptions, Wallet,
}; };
use bdk_esplora::{esplora_client, EsploraExt};
use bdk_file_store::Store;
fn main() -> Result<(), anyhow::Error> { fn main() -> Result<(), anyhow::Error> {
let db_path = std::env::temp_dir().join("bdk-esplora-example"); let db_path = std::env::temp_dir().join("bdk-esplora-example");
let db = Store::<bdk::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?; let db =
Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), db_path)?;
let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)"; let external_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)"; let internal_descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/1/*)";

View File

@ -6,7 +6,7 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
bdk = { path = "../../crates/bdk" } bdk_wallet = { path = "../../crates/wallet" }
bdk_file_store = { path = "../../crates/file_store" } bdk_file_store = { path = "../../crates/file_store" }
bdk_bitcoind_rpc = { path = "../../crates/bitcoind_rpc" } bdk_bitcoind_rpc = { path = "../../crates/bitcoind_rpc" }

View File

@ -4,7 +4,7 @@
$ cargo run --bin wallet_rpc -- --help $ cargo run --bin wallet_rpc -- --help
wallet_rpc 0.1.0 wallet_rpc 0.1.0
Bitcoind RPC example using `bdk::Wallet` Bitcoind RPC example using `bdk_wallet::Wallet`
USAGE: USAGE:
wallet_rpc [OPTIONS] <DESCRIPTOR> [CHANGE_DESCRIPTOR] wallet_rpc [OPTIONS] <DESCRIPTOR> [CHANGE_DESCRIPTOR]

View File

@ -1,18 +1,18 @@
use bdk::{
bitcoin::{Block, Network, Transaction},
wallet::Wallet,
};
use bdk_bitcoind_rpc::{ use bdk_bitcoind_rpc::{
bitcoincore_rpc::{Auth, Client, RpcApi}, bitcoincore_rpc::{Auth, Client, RpcApi},
Emitter, Emitter,
}; };
use bdk_file_store::Store; use bdk_file_store::Store;
use bdk_wallet::{
bitcoin::{Block, Network, Transaction},
wallet::Wallet,
};
use clap::{self, Parser}; use clap::{self, Parser};
use std::{path::PathBuf, sync::mpsc::sync_channel, thread::spawn, time::Instant}; use std::{path::PathBuf, sync::mpsc::sync_channel, thread::spawn, time::Instant};
const DB_MAGIC: &str = "bdk-rpc-wallet-example"; const DB_MAGIC: &str = "bdk-rpc-wallet-example";
/// Bitcoind RPC example using `bdk::Wallet`. /// Bitcoind RPC example using `bdk_wallet::Wallet`.
/// ///
/// This syncs the chain block-by-block and prints the current balance, transaction count and UTXO /// This syncs the chain block-by-block and prints the current balance, transaction count and UTXO
/// count. /// count.
@ -89,7 +89,10 @@ fn main() -> anyhow::Result<()> {
let mut wallet = Wallet::new_or_load( let mut wallet = Wallet::new_or_load(
&args.descriptor, &args.descriptor,
args.change_descriptor.as_ref(), args.change_descriptor.as_ref(),
Store::<bdk::wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), args.db_path)?, Store::<bdk_wallet::wallet::ChangeSet>::open_or_create_new(
DB_MAGIC.as_bytes(),
args.db_path,
)?,
args.network, args.network,
)?; )?;
println!( println!(