feat: use FeeRate type in TxBuilder
This commit is contained in:
parent
7319aea562
commit
8e9d2ddc14
@ -21,7 +21,7 @@ class LiveTxBuilderTest {
|
||||
val recipient: Address = Address("tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", Network.TESTNET)
|
||||
val psbt: PartiallySignedTransaction = TxBuilder()
|
||||
.addRecipient(recipient.scriptPubkey(), 4200uL)
|
||||
.feeRate(2.0f)
|
||||
.feeRate(FeeRate.fromSatPerVb(2.0f))
|
||||
.finish(wallet)
|
||||
|
||||
println(psbt.serialize())
|
||||
@ -49,7 +49,7 @@ class LiveTxBuilderTest {
|
||||
|
||||
val psbt: PartiallySignedTransaction = TxBuilder()
|
||||
.setRecipients(allRecipients)
|
||||
.feeRate(4.0f)
|
||||
.feeRate(FeeRate.fromSatPerVb(4.0f))
|
||||
.changePolicy(ChangeSpendPolicy.CHANGE_FORBIDDEN)
|
||||
.enableRbf()
|
||||
.finish(wallet)
|
||||
|
@ -49,7 +49,7 @@ class LiveWalletTest {
|
||||
|
||||
val psbt: PartiallySignedTransaction = TxBuilder()
|
||||
.addRecipient(recipient.scriptPubkey(), 4200uL)
|
||||
.feeRate(4.0f)
|
||||
.feeRate(FeeRate.fromSatPerVb(4.0f))
|
||||
.finish(wallet)
|
||||
|
||||
println(psbt.serialize())
|
||||
|
@ -4,7 +4,6 @@ import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import org.junit.runner.RunWith
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class OfflineDescriptorTest {
|
||||
|
@ -3,6 +3,7 @@ package org.bitcoindevkit
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue
|
||||
import kotlin.test.assertFalse
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
|
@ -68,7 +68,14 @@ dictionary TxOut {
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
interface FeeRate {
|
||||
[Name=from_sat_per_vb]
|
||||
constructor(f32 sat_per_vb);
|
||||
|
||||
[Name=from_sat_per_kwu]
|
||||
constructor(f32 sat_per_kwu);
|
||||
|
||||
f32 as_sat_per_vb();
|
||||
|
||||
f32 sat_per_kwu();
|
||||
};
|
||||
|
||||
@ -132,7 +139,7 @@ interface TxBuilder {
|
||||
|
||||
TxBuilder manually_selected_only();
|
||||
|
||||
TxBuilder fee_rate(float sat_per_vbyte);
|
||||
TxBuilder fee_rate([ByRef] FeeRate fee_rate);
|
||||
|
||||
TxBuilder fee_absolute(u64 fee);
|
||||
|
||||
|
@ -11,9 +11,18 @@ use bdk::FeeRate as BdkFeeRate;
|
||||
|
||||
use std::sync::Arc;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct FeeRate(pub BdkFeeRate);
|
||||
|
||||
impl FeeRate {
|
||||
pub fn from_sat_per_vb(sat_per_vb: f32) -> Self {
|
||||
FeeRate(BdkFeeRate::from_sat_per_vb(sat_per_vb))
|
||||
}
|
||||
|
||||
pub fn from_sat_per_kwu(sat_per_kwu: f32) -> Self {
|
||||
FeeRate(BdkFeeRate::from_sat_per_kwu(sat_per_kwu))
|
||||
}
|
||||
|
||||
pub fn as_sat_per_vb(&self) -> f32 {
|
||||
self.0.as_sat_per_vb()
|
||||
}
|
||||
|
@ -309,7 +309,7 @@ pub struct TxBuilder {
|
||||
pub(crate) unspendable: HashSet<OutPoint>,
|
||||
pub(crate) change_policy: ChangeSpendPolicy,
|
||||
pub(crate) manually_selected_only: bool,
|
||||
pub(crate) fee_rate: Option<f32>,
|
||||
pub(crate) fee_rate: Option<FeeRate>,
|
||||
pub(crate) fee_absolute: Option<u64>,
|
||||
pub(crate) drain_wallet: bool,
|
||||
pub(crate) drain_to: Option<BdkScriptBuf>,
|
||||
@ -412,9 +412,9 @@ impl TxBuilder {
|
||||
})
|
||||
}
|
||||
|
||||
pub(crate) fn fee_rate(&self, sat_per_vb: f32) -> Arc<Self> {
|
||||
pub(crate) fn fee_rate(&self, fee_rate: &FeeRate) -> Arc<Self> {
|
||||
Arc::new(TxBuilder {
|
||||
fee_rate: Some(sat_per_vb),
|
||||
fee_rate: Some(fee_rate.clone()),
|
||||
..self.clone()
|
||||
})
|
||||
}
|
||||
@ -486,8 +486,8 @@ impl TxBuilder {
|
||||
if self.manually_selected_only {
|
||||
tx_builder.manually_selected_only();
|
||||
}
|
||||
if let Some(sat_per_vb) = self.fee_rate {
|
||||
tx_builder.fee_rate(BdkFeeRate::from_sat_per_vb(sat_per_vb));
|
||||
if let Some(fee_rate) = &self.fee_rate {
|
||||
tx_builder.fee_rate(fee_rate.0);
|
||||
}
|
||||
if let Some(fee_amount) = self.fee_absolute {
|
||||
tx_builder.fee_absolute(fee_amount);
|
||||
|
@ -18,7 +18,7 @@ class LiveTxBuilderTest {
|
||||
val recipient: Address = Address("tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", Network.TESTNET)
|
||||
val psbt: PartiallySignedTransaction = TxBuilder()
|
||||
.addRecipient(recipient.scriptPubkey(), 4200uL)
|
||||
.feeRate(2.0f)
|
||||
.feeRate(FeeRate.fromSatPerVb(2.0f))
|
||||
.finish(wallet)
|
||||
|
||||
println(psbt.serialize())
|
||||
@ -47,7 +47,7 @@ class LiveTxBuilderTest {
|
||||
|
||||
val psbt: PartiallySignedTransaction = TxBuilder()
|
||||
.setRecipients(allRecipients)
|
||||
.feeRate(4.0f)
|
||||
.feeRate(FeeRate.fromSatPerVb(4.0f))
|
||||
.changePolicy(ChangeSpendPolicy.CHANGE_FORBIDDEN)
|
||||
.enableRbf()
|
||||
.finish(wallet)
|
||||
|
@ -45,7 +45,7 @@ class LiveWalletTest {
|
||||
|
||||
val psbt: PartiallySignedTransaction = TxBuilder()
|
||||
.addRecipient(recipient.scriptPubkey(), 4200uL)
|
||||
.feeRate(2.0f)
|
||||
.feeRate(FeeRate.fromSatPerVb(2.0f))
|
||||
.finish(wallet)
|
||||
|
||||
println(psbt.serialize())
|
||||
|
@ -28,7 +28,7 @@ class TestLiveTxBuilder(unittest.TestCase):
|
||||
network = bdk.Network.TESTNET
|
||||
)
|
||||
|
||||
psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(2.0).finish(wallet)
|
||||
psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
# print(psbt.serialize())
|
||||
|
||||
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
@ -70,7 +70,7 @@ class TestLiveTxBuilder(unittest.TestCase):
|
||||
bdk.ScriptAmount(recipient2.script_pubkey, 4200)
|
||||
)
|
||||
|
||||
psbt: bdk.PartiallySignedTransaction = bdk.TxBuilder().set_recipients(all_recipients).fee_rate(4.0).change_policy(bdk.ChangeSpendPolicy.CHANGE_FORBIDDEN).enable_rbf().finish(wallet)
|
||||
psbt: bdk.PartiallySignedTransaction = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
wallet.sign(psbt)
|
||||
|
||||
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
|
@ -57,7 +57,7 @@ class TestLiveWallet(unittest.TestCase):
|
||||
network = bdk.Network.TESTNET
|
||||
)
|
||||
|
||||
psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(2.0).finish(wallet)
|
||||
psbt = bdk.TxBuilder().add_recipient(script=recipient.script_pubkey(), amount=4200).fee_rate(fee_rate=bdk.FeeRate.from_sat_per_vb(2.0)).finish(wallet)
|
||||
# print(psbt.serialize())
|
||||
self.assertTrue(psbt.serialize().startswith("cHNi"), "The PSBT should start with cHNi")
|
||||
|
||||
|
@ -25,7 +25,7 @@ final class LiveTxBuilderTests: XCTestCase {
|
||||
let recipient: Address = try Address(address: "tb1qrnfslnrve9uncz9pzpvf83k3ukz22ljgees989", network: .testnet)
|
||||
let psbt: PartiallySignedTransaction = try TxBuilder()
|
||||
.addRecipient(script: recipient.scriptPubkey(), amount: 4200)
|
||||
.feeRate(satPerVbyte: 2.0)
|
||||
.feeRate(feeRate: FeeRate.fromSatPerVb(satPerVb: 2.0))
|
||||
.finish(wallet: wallet)
|
||||
|
||||
print(psbt.serialize())
|
||||
@ -65,7 +65,7 @@ final class LiveTxBuilderTests: XCTestCase {
|
||||
|
||||
let psbt: PartiallySignedTransaction = try TxBuilder()
|
||||
.setRecipients(recipients: allRecipients)
|
||||
.feeRate(satPerVbyte: 4.0)
|
||||
.feeRate(feeRate: FeeRate.fromSatPerVb(satPerVb: 4.0))
|
||||
.changePolicy(changePolicy: ChangeSpendPolicy.changeForbidden)
|
||||
.enableRbf()
|
||||
.finish(wallet: wallet)
|
||||
|
@ -58,7 +58,7 @@ final class LiveWalletTests: XCTestCase {
|
||||
let psbt: PartiallySignedTransaction = try
|
||||
TxBuilder()
|
||||
.addRecipient(script: recipient.scriptPubkey(), amount: 4200)
|
||||
.feeRate(satPerVbyte: 2.0)
|
||||
.feeRate(feeRate: FeeRate.fromSatPerVb(satPerVb: 2.0))
|
||||
.finish(wallet: wallet)
|
||||
|
||||
print(psbt.serialize())
|
||||
|
Loading…
x
Reference in New Issue
Block a user