Skip to content

Commit 6be22da

Browse files
authored
Add add_data method for txbuilder op_return (#163)
1 parent 80ed21e commit 6be22da

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

src/bdk.udl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ interface TxBuilder {
195195

196196
TxBuilder enable_rbf_with_sequence(u32 nsequence);
197197

198+
TxBuilder add_data(sequence<u8> data);
199+
198200
[Throws=BdkError]
199201
PartiallySignedBitcoinTransaction finish([ByRef] Wallet wallet);
200202
};

src/lib.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,7 @@ struct TxBuilder {
344344
drain_wallet: bool,
345345
drain_to: Option<String>,
346346
rbf: Option<RbfValue>,
347+
data: Vec<u8>,
347348
}
348349

349350
impl TxBuilder {
@@ -354,6 +355,7 @@ impl TxBuilder {
354355
drain_wallet: false,
355356
drain_to: None,
356357
rbf: None,
358+
data: Vec::new(),
357359
}
358360
}
359361

@@ -401,6 +403,13 @@ impl TxBuilder {
401403
})
402404
}
403405

406+
fn add_data(&self, data: Vec<u8>) -> Arc<Self> {
407+
Arc::new(TxBuilder {
408+
data,
409+
..self.clone()
410+
})
411+
}
412+
404413
fn finish(&self, wallet: &Wallet) -> Result<Arc<PartiallySignedBitcoinTransaction>, Error> {
405414
let wallet = wallet.get_wallet();
406415
let mut tx_builder = wallet.build_tx();
@@ -426,6 +435,10 @@ impl TxBuilder {
426435
}
427436
}
428437
}
438+
if !&self.data.is_empty() {
439+
tx_builder.add_data(&self.data.as_slice());
440+
}
441+
429442
tx_builder
430443
.finish()
431444
.map(|(psbt, _)| PartiallySignedBitcoinTransaction {

0 commit comments

Comments
 (0)