feat: update wallet::Balance to use bitcoin::Amount
- update all fields `immature`, ` trusted_pending`, `unstrusted_pending` and `confirmed` to use the `bitcoin::Amount` instead of `u64` - update all `impl Balance` methods to use `bitcoin::Amount` - update all tests that relies on `keychain::Balance`
This commit is contained in:
@@ -32,14 +32,14 @@ use bdk_chain::{
|
||||
IndexedTxGraph,
|
||||
};
|
||||
use bdk_persist::{Persist, PersistBackend};
|
||||
use bitcoin::constants::genesis_block;
|
||||
use bitcoin::secp256k1::{All, Secp256k1};
|
||||
use bitcoin::sighash::{EcdsaSighashType, TapSighashType};
|
||||
use bitcoin::{
|
||||
absolute, psbt, Address, Block, FeeRate, Network, OutPoint, Script, ScriptBuf, Sequence,
|
||||
Transaction, TxOut, Txid, Witness,
|
||||
};
|
||||
use bitcoin::{consensus::encode::serialize, transaction, Amount, BlockHash, Psbt};
|
||||
use bitcoin::{consensus::encode::serialize, transaction, BlockHash, Psbt};
|
||||
use bitcoin::{constants::genesis_block, Amount};
|
||||
use core::fmt;
|
||||
use core::ops::Deref;
|
||||
use descriptor::error::Error as DescriptorError;
|
||||
@@ -950,7 +950,7 @@ impl Wallet {
|
||||
/// [`insert_txout`]: Self::insert_txout
|
||||
pub fn calculate_fee_rate(&self, tx: &Transaction) -> Result<FeeRate, CalculateFeeError> {
|
||||
self.calculate_fee(tx)
|
||||
.map(|fee| bitcoin::Amount::from_sat(fee) / tx.weight())
|
||||
.map(|fee| Amount::from_sat(fee) / tx.weight())
|
||||
}
|
||||
|
||||
/// Compute the `tx`'s sent and received amounts (in satoshis).
|
||||
|
||||
@@ -718,6 +718,7 @@ impl<'a, Cs: CoinSelectionAlgorithm> TxBuilder<'a, Cs, CreateTx> {
|
||||
self
|
||||
}
|
||||
|
||||
// TODO: (@leonardo) Should this expect/use `bitcoin::Amount` instead ? Would it be a huge breaking change ?
|
||||
/// Add a recipient to the internal list
|
||||
pub fn add_recipient(&mut self, script_pubkey: ScriptBuf, amount: u64) -> &mut Self {
|
||||
self.params.recipients.push((script_pubkey, amount));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use bdk::bitcoin::{Amount, FeeRate, Psbt, TxIn};
|
||||
use bdk::bitcoin::{FeeRate, Psbt, TxIn};
|
||||
use bdk::{psbt, KeychainKind, SignOptions};
|
||||
use core::str::FromStr;
|
||||
mod common;
|
||||
@@ -201,7 +201,7 @@ fn test_psbt_multiple_internalkey_signers() {
|
||||
// the prevout we're spending
|
||||
let prevouts = &[TxOut {
|
||||
script_pubkey: send_to.script_pubkey(),
|
||||
value: Amount::from_sat(to_spend),
|
||||
value: to_spend,
|
||||
}];
|
||||
let prevouts = Prevouts::All(prevouts);
|
||||
let input_index = 0;
|
||||
|
||||
@@ -200,7 +200,7 @@ fn test_get_funded_wallet_balance() {
|
||||
// The funded wallet contains a tx with a 76_000 sats input and two outputs, one spending 25_000
|
||||
// to a foreign address and one returning 50_000 back to the wallet as change. The remaining 1000
|
||||
// sats are the transaction fee.
|
||||
assert_eq!(wallet.get_balance().confirmed, 50_000);
|
||||
assert_eq!(wallet.get_balance().confirmed.to_sat(), 50_000);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -3582,10 +3582,10 @@ fn test_spend_coinbase() {
|
||||
assert_eq!(
|
||||
balance,
|
||||
Balance {
|
||||
immature: 25_000,
|
||||
trusted_pending: 0,
|
||||
untrusted_pending: 0,
|
||||
confirmed: 0
|
||||
immature: Amount::from_sat(25_000),
|
||||
trusted_pending: Amount::ZERO,
|
||||
untrusted_pending: Amount::ZERO,
|
||||
confirmed: Amount::ZERO
|
||||
}
|
||||
);
|
||||
|
||||
@@ -3596,7 +3596,7 @@ fn test_spend_coinbase() {
|
||||
.assume_checked();
|
||||
let mut builder = wallet.build_tx();
|
||||
builder
|
||||
.add_recipient(addr.script_pubkey(), balance.immature / 2)
|
||||
.add_recipient(addr.script_pubkey(), balance.immature.to_sat() / 2)
|
||||
.current_height(confirmation_height);
|
||||
assert!(matches!(
|
||||
builder.finish(),
|
||||
@@ -3611,7 +3611,7 @@ fn test_spend_coinbase() {
|
||||
// Still unspendable...
|
||||
let mut builder = wallet.build_tx();
|
||||
builder
|
||||
.add_recipient(addr.script_pubkey(), balance.immature / 2)
|
||||
.add_recipient(addr.script_pubkey(), balance.immature.to_sat() / 2)
|
||||
.current_height(not_yet_mature_time);
|
||||
assert_matches!(
|
||||
builder.finish(),
|
||||
@@ -3633,15 +3633,15 @@ fn test_spend_coinbase() {
|
||||
assert_eq!(
|
||||
balance,
|
||||
Balance {
|
||||
immature: 0,
|
||||
trusted_pending: 0,
|
||||
untrusted_pending: 0,
|
||||
confirmed: 25_000
|
||||
immature: Amount::ZERO,
|
||||
trusted_pending: Amount::ZERO,
|
||||
untrusted_pending: Amount::ZERO,
|
||||
confirmed: Amount::from_sat(25_000)
|
||||
}
|
||||
);
|
||||
let mut builder = wallet.build_tx();
|
||||
builder
|
||||
.add_recipient(addr.script_pubkey(), balance.confirmed / 2)
|
||||
.add_recipient(addr.script_pubkey(), balance.confirmed.to_sat() / 2)
|
||||
.current_height(maturity_time);
|
||||
builder.finish().unwrap();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user