Skip to content

Commit a837cd3

Browse files
committed
Merge #1378: Update bdk README
06d7dc5 doc(bdk): Update bdk README (vmammal) Pull request description: fixes #1044 ### Notes The code snippet is a compile fail because variables `txout` and `outpoint` are not initialized. Any other suggestions are welcome. There is still some old commented code in the file that's probably not needed unless we want to provide another example snippet, say for getting new address info. * [x] Fix broken links * [x] Use a new unused tprv * [ ] Try to make persistence example make sense, or maybe just do away with it #### 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 ACKs for top commit: evanlinjin: ACK 06d7dc5 Tree-SHA512: 09a671bc6bea574d7a4b42b64718380ee71a0c5d36c6b7ca1dc19a2c567de510b27ccc91fe05e7178bf31c562db66bc64f660415de5bb2f32f369b13c44ad3d2
2 parents 0eb1ac2 + 06d7dc5 commit a837cd3

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

crates/bdk/README.md

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -26,59 +26,59 @@
2626

2727
## `bdk`
2828

29-
The `bdk` crate provides the [`Wallet`](`crate::Wallet`) type which is a simple, high-level
29+
The `bdk` crate provides the [`Wallet`] type which is a simple, high-level
3030
interface built from the low-level components of [`bdk_chain`]. `Wallet` is a good starting point
3131
for many simple applications as well as a good demonstration of how to use the other mechanisms to
3232
construct a wallet. It has two keychains (external and internal) which are defined by
3333
[miniscript descriptors][`rust-miniscript`] and uses them to generate addresses. When you give it
3434
chain data it also uses the descriptors to find transaction outputs owned by them. From there, you
3535
can create and sign transactions.
3636

37-
For more information, see the [`Wallet`'s documentation](https://docs.rs/bdk/latest/bdk/wallet/struct.Wallet.html).
37+
For details about the API of `Wallet` see the [module-level documentation][`Wallet`].
3838

3939
### Blockchain data
4040

41-
In order to get blockchain data for `Wallet` to consume, you have to put it into particular form.
42-
Right now this is [`KeychainScan`] which is defined in [`bdk_chain`].
43-
44-
This can be created manually or from blockchain-scanning crates.
41+
In order to get blockchain data for `Wallet` to consume, you should configure a client from
42+
an available chain source. Typically you make a request to the chain source and get a response
43+
that the `Wallet` can use to update its view of the chain.
4544

4645
**Blockchain Data Sources**
4746

4847
* [`bdk_esplora`]: Grabs blockchain data from Esplora for updating BDK structures.
4948
* [`bdk_electrum`]: Grabs blockchain data from Electrum for updating BDK structures.
49+
* [`bdk_bitcoind_rpc`]: Grabs blockchain data from Bitcoin Core for updating BDK structures.
5050

5151
**Examples**
5252

53-
* [`example-crates/wallet_esplora`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_esplora)
53+
* [`example-crates/wallet_esplora_async`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_esplora_async)
54+
* [`example-crates/wallet_esplora_blocking`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_esplora_blocking)
5455
* [`example-crates/wallet_electrum`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_electrum)
56+
* [`example-crates/wallet_rpc`](https://github.com/bitcoindevkit/bdk/tree/master/example-crates/wallet_rpc)
5557

5658
### Persistence
5759

58-
To persist the `Wallet` on disk, `Wallet` needs to be constructed with a
59-
[`Persist`](https://docs.rs/bdk_chain/latest/bdk_chain/keychain/struct.KeychainPersist.html) implementation.
60+
To persist the `Wallet` on disk, it must be constructed with a [`PersistBackend`] implementation.
6061

6162
**Implementations**
6263

63-
* [`bdk_file_store`]: a simple flat-file implementation of `Persist`.
64+
* [`bdk_file_store`]: A simple flat-file implementation of [`PersistBackend`].
6465

6566
**Example**
6667

67-
```rust
68-
use bdk::{bitcoin::Network, wallet::{AddressIndex, Wallet}};
68+
<!-- compile_fail because outpoint and txout are fake variables -->
69+
```rust,compile_fail
70+
use bdk::{bitcoin::Network, wallet::{ChangeSet, Wallet}};
6971
7072
fn main() {
71-
// a type that implements `Persist`
72-
let db = ();
73+
// Create a new file `Store`.
74+
let db = bdk_file_store::Store::<ChangeSet>::open_or_create_new(b"magic_bytes", "path/to/my_wallet.db").expect("create store");
7375
74-
let descriptor = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/0'/0'/0/*)";
75-
let mut wallet = Wallet::new(descriptor, None, db, Network::Testnet).expect("should create");
76+
let descriptor = "wpkh(tprv8ZgxMBicQKsPdcAqYBpzAFwU5yxBUo88ggoBqu1qPcHUfSbKK1sKMLmC7EAk438btHQrSdu3jGGQa6PA71nvH5nkDexhLteJqkM4dQmWF9g/84'/1'/0'/0/*)";
77+
let mut wallet = Wallet::new_or_load(descriptor, None, db, Network::Testnet).expect("create or load wallet");
7678
77-
// get a new address (this increments revealed derivation index)
78-
println!("revealed address: {}", wallet.get_address(AddressIndex::New));
79-
println!("staged changes: {:?}", wallet.staged());
80-
// persist changes
81-
wallet.commit().expect("must save");
79+
// Insert a single `TxOut` at `OutPoint` into the wallet.
80+
let _ = wallet.insert_txout(outpoint, txout);
81+
wallet.commit().expect("must write to database");
8282
}
8383
```
8484

@@ -218,9 +218,11 @@ submitted for inclusion in the work by you, as defined in the Apache-2.0
218218
license, shall be dual licensed as above, without any additional terms or
219219
conditions.
220220

221+
[`Wallet`]: https://docs.rs/bdk/1.0.0-alpha.7/bdk/wallet/struct.Wallet.html
222+
[`PersistBackend`]: https://docs.rs/bdk_chain/latest/bdk_chain/trait.PersistBackend.html
221223
[`bdk_chain`]: https://docs.rs/bdk_chain/latest
222224
[`bdk_file_store`]: https://docs.rs/bdk_file_store/latest
223225
[`bdk_electrum`]: https://docs.rs/bdk_electrum/latest
224226
[`bdk_esplora`]: https://docs.rs/bdk_esplora/latest
225-
[`KeychainScan`]: https://docs.rs/bdk_chain/latest/bdk_chain/keychain/struct.KeychainScan.html
227+
[`bdk_bitcoind_rpc`]: https://docs.rs/bdk_bitcoind_rpc/latest
226228
[`rust-miniscript`]: https://docs.rs/miniscript/latest/miniscript/index.html

0 commit comments

Comments
 (0)