From 643d254ab6c6218bb11d4bf53a8ebbfd2f94ea5e Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 7 Dec 2023 14:49:18 -0500 Subject: [PATCH] feat: add enable_rbf_with_sequence method on txbuilder --- bdk-ffi/src/bdk.udl | 2 ++ bdk-ffi/src/wallet.rs | 22 +++++++++++----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/bdk-ffi/src/bdk.udl b/bdk-ffi/src/bdk.udl index f7697beb..8a0e8da4 100644 --- a/bdk-ffi/src/bdk.udl +++ b/bdk-ffi/src/bdk.udl @@ -144,6 +144,8 @@ interface TxBuilder { TxBuilder enable_rbf(); + TxBuilder enable_rbf_with_sequence(u32 nsequence); + [Throws=BdkError] PartiallySignedTransaction finish([ByRef] Wallet wallet); }; diff --git a/bdk-ffi/src/wallet.rs b/bdk-ffi/src/wallet.rs index 97d364d1..6fcd89af 100644 --- a/bdk-ffi/src/wallet.rs +++ b/bdk-ffi/src/wallet.rs @@ -1,16 +1,16 @@ use crate::bitcoin::{OutPoint, PartiallySignedTransaction, Transaction}; use crate::descriptor::Descriptor; -use crate::types::{Balance, RbfValue}; use crate::types::ScriptAmount; +use crate::types::{Balance, RbfValue}; use crate::Script; use crate::{AddressIndex, AddressInfo, Network}; use bdk::bitcoin::blockdata::script::ScriptBuf as BdkScriptBuf; use bdk::bitcoin::{OutPoint as BdkOutPoint, Sequence}; +use bdk::wallet::tx_builder::ChangeSpendPolicy; use bdk::wallet::Update as BdkUpdate; use bdk::{Error as BdkError, FeeRate}; use bdk::{SignOptions, Wallet as BdkWallet}; -use bdk::wallet::tx_builder::ChangeSpendPolicy; use std::collections::HashSet; use std::sync::{Arc, Mutex, MutexGuard}; @@ -461,15 +461,15 @@ impl TxBuilder { }) } - // /// Enable signaling RBF with a specific nSequence value. This can cause conflicts if the wallet's descriptors contain an - // /// "older" (OP_CSV) operator and the given `nsequence` is lower than the CSV value. If the `nsequence` is higher than `0xFFFFFFFD` - // /// an error will be thrown, since it would not be a valid nSequence to signal RBF. - // pub(crate) fn enable_rbf_with_sequence(&self, nsequence: u32) -> Arc { - // Arc::new(TxBuilder { - // rbf: Some(RbfValue::Value(nsequence)), - // ..self.clone() - // }) - // } + /// Enable signaling RBF with a specific nSequence value. This can cause conflicts if the wallet's descriptors contain an + /// "older" (OP_CSV) operator and the given `nsequence` is lower than the CSV value. If the `nsequence` is higher than `0xFFFFFFFD` + /// an error will be thrown, since it would not be a valid nSequence to signal RBF. + pub(crate) fn enable_rbf_with_sequence(&self, nsequence: u32) -> Arc { + Arc::new(TxBuilder { + rbf: Some(RbfValue::Value(nsequence)), + ..self.clone() + }) + } /// Add data as an output using OP_RETURN. // pub(crate) fn add_data(&self, data: Vec) -> Arc {