Skip to content

Commit

Permalink
Merge pull request #432 from tnull/2025-01-include-onchain-transactio…
Browse files Browse the repository at this point in the history
…ns-in-store

Expose onchain transactions in store
  • Loading branch information
tnull authored Jan 30, 2025
2 parents 83159d0 + 0710434 commit aaf74cc
Show file tree
Hide file tree
Showing 9 changed files with 489 additions and 94 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -296,8 +296,8 @@ class LibraryTest {
assert(paymentReceivedEvent is Event.PaymentReceived)
node2.eventHandled()

assert(node1.listPayments().size == 1)
assert(node2.listPayments().size == 1)
assert(node1.listPayments().size == 3)
assert(node2.listPayments().size == 2)

node2.closeChannel(userChannelId, nodeId1)

Expand Down
8 changes: 7 additions & 1 deletion bindings/ldk_node.udl
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ interface ClosureReason {

[Enum]
interface PaymentKind {
Onchain();
Onchain(Txid txid, ConfirmationStatus status);
Bolt11(PaymentHash hash, PaymentPreimage? preimage, PaymentSecret? secret);
Bolt11Jit(PaymentHash hash, PaymentPreimage? preimage, PaymentSecret? secret, LSPFeeLimits lsp_fee_limits);
Bolt12Offer(PaymentHash? hash, PaymentPreimage? preimage, PaymentSecret? secret, OfferId offer_id, UntrustedString? payer_note, u64? quantity);
Expand Down Expand Up @@ -389,6 +389,12 @@ dictionary LSPFeeLimits {
u64? max_proportional_opening_fee_ppm_msat;
};

[Enum]
interface ConfirmationStatus {
Confirmed (BlockHash block_hash, u32 height, u64 timestamp);
Unconfirmed ();
};

dictionary PaymentDetails {
PaymentId id;
PaymentKind kind;
Expand Down
21 changes: 11 additions & 10 deletions src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -855,11 +855,22 @@ fn build_with_store_internal(

let tx_broadcaster = Arc::new(TransactionBroadcaster::new(Arc::clone(&logger)));
let fee_estimator = Arc::new(OnchainFeeEstimator::new());

let payment_store = match io::utils::read_payments(Arc::clone(&kv_store), Arc::clone(&logger)) {
Ok(payments) => {
Arc::new(PaymentStore::new(payments, Arc::clone(&kv_store), Arc::clone(&logger)))
},
Err(_) => {
return Err(BuildError::ReadFailed);
},
};

let wallet = Arc::new(Wallet::new(
bdk_wallet,
wallet_persister,
Arc::clone(&tx_broadcaster),
Arc::clone(&fee_estimator),
Arc::clone(&payment_store),
Arc::clone(&logger),
));

Expand Down Expand Up @@ -1249,16 +1260,6 @@ fn build_with_store_internal(
},
}

// Init payment info storage
let payment_store = match io::utils::read_payments(Arc::clone(&kv_store), Arc::clone(&logger)) {
Ok(payments) => {
Arc::new(PaymentStore::new(payments, Arc::clone(&kv_store), Arc::clone(&logger)))
},
Err(_) => {
return Err(BuildError::ReadFailed);
},
};

let event_queue = match io::utils::read_event_queue(Arc::clone(&kv_store), Arc::clone(&logger))
{
Ok(event_queue) => Arc::new(event_queue),
Expand Down
4 changes: 3 additions & 1 deletion src/payment/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ pub use bolt11::Bolt11Payment;
pub use bolt12::Bolt12Payment;
pub use onchain::OnchainPayment;
pub use spontaneous::SpontaneousPayment;
pub use store::{LSPFeeLimits, PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus};
pub use store::{
ConfirmationStatus, LSPFeeLimits, PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus,
};
pub use unified_qr::{QrPaymentResult, UnifiedQrPayment};

/// Represents information used to send a payment.
Expand Down
Loading

0 comments on commit aaf74cc

Please sign in to comment.