[wallet] Overhaul TxBuilder internals and externals
Fixes #251 TxBuilders are now not created directly but are created through the wallet with `build_tx` and `build_fee_bump`. The advantages of this realised in this commit are: 1. Normal tx creation and fee bumping use the code internally. The only difference between normal tx and fee bump is how the builder is created. 2. The TxBuilder now has a refernce to the wallet and can therefore lookup things as methods are called on it. `add_utxo` now uses this to look up UTXO deta when it is called (rather than having to do it and possibly error later on). To support these changes `get_utxo` and `get_descriptor_for_keychain` public methods have been added to Wallet. I could have kept them pub(crate) but they seem like fine APIs to have publicly.
This commit is contained in:
14
README.md
14
README.md
@@ -87,7 +87,7 @@ fn main() -> Result<(), bdk::Error> {
|
||||
### Create a transaction
|
||||
|
||||
```rust,no_run
|
||||
use bdk::{FeeRate, TxBuilder, Wallet};
|
||||
use bdk::{FeeRate, Wallet};
|
||||
use bdk::database::MemoryDatabase;
|
||||
use bdk::blockchain::{noop_progress, ElectrumBlockchain};
|
||||
|
||||
@@ -108,12 +108,12 @@ fn main() -> Result<(), bdk::Error> {
|
||||
wallet.sync(noop_progress(), None)?;
|
||||
|
||||
let send_to = wallet.get_new_address()?;
|
||||
let (psbt, details) = wallet.create_tx(
|
||||
TxBuilder::with_recipients(vec![(send_to.script_pubkey(), 50_000)])
|
||||
.enable_rbf()
|
||||
.do_not_spend_change()
|
||||
.fee_rate(FeeRate::from_sat_per_vb(5.0))
|
||||
)?;
|
||||
let (psbt, details) = wallet.build_tx()
|
||||
.add_recipient(send_to.script_pubkey(), 50_000)
|
||||
.enable_rbf()
|
||||
.do_not_spend_change()
|
||||
.fee_rate(FeeRate::from_sat_per_vb(5.0))
|
||||
.finish()?;
|
||||
|
||||
println!("Transaction details: {:#?}", details);
|
||||
println!("Unsigned PSBT: {}", base64::encode(&serialize(&psbt)));
|
||||
|
||||
Reference in New Issue
Block a user