Uh oh!
There was an error while loading. Please reload this page.
Add Payjoin Receiver Support (BIP 77) - #746
Conversation
👋 I see @tnull was un-assigned. |
1db2b08 to
49017bdCompareDanGould
commented
Jan 23, 2026
We've merged the async persistence PR you mentioned. You might want to build your draft PR on the merged commit from there on until we cut you a release. |
Camillarhi
commented
Jan 23, 2026
Thanks for letting me know. I'll build on the merged commit. |
8f6ba65 to
6499918CompareDanGould
commented
Feb 10, 2026
Are you stuck? Did something in our library break CI @Camillarhi |
Camillarhi
commented
Feb 10, 2026
Not stuck at all. I was just closing out some other PRs. Still working on this one, I'll let you know when it's ready. |
12a41ad to
eb97832Compare120b089 to
8cc2a31Compare5fe1a5c to
0411adaCompareCamillarhi
commented
Mar 12, 2026
Marking this as ready for review. The core receiver flow is implemented, including session persistence, PSBT handling, input contribution, mempool monitoring for payjoin transactions, and node restart recovery. Two things still pending that I'll follow up with:
Happy to get early feedback on the overall approach in the meantime. |
ldk-reviews-bot
commented
Jun 13, 2026
🔔 15th Reminder Hey @tnull@DanGould@zealsham@spacebear21! This PR has been waiting for your review. |
1 similar comment
ldk-reviews-bot
commented
Jun 13, 2026
🔔 15th Reminder Hey @tnull@DanGould@zealsham@spacebear21! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 15, 2026
🔔 17th Reminder Hey @tnull@DanGould@zealsham@spacebear21! This PR has been waiting for your review. |
1 similar comment
ldk-reviews-bot
commented
Jun 15, 2026
🔔 17th Reminder Hey @tnull@DanGould@zealsham@spacebear21! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 15, 2026
🔔 16th Reminder Hey @tnull@DanGould@zealsham@spacebear21! This PR has been waiting for your review. |
1 similar comment
ldk-reviews-bot
commented
Jun 15, 2026
🔔 16th Reminder Hey @tnull@DanGould@zealsham@spacebear21! This PR has been waiting for your review. |
spacebear21
left a comment
There was a problem hiding this comment.
I gave @Camillarhi minor feedback out-of-band, overall looks good to me but seems like this is blocked by #791 for the time being. Can we turn off the noisy PR review reminder bot for this PR?
Camillarhi
commented
Jun 16, 2026
Thanks. I’m keeping an eye on spesmilo/electrum-protocol#2 which adds |
ldk-reviews-bot
commented
Jun 17, 2026
ldk-reviews-bot
commented
Jun 17, 2026
1 similar comment
ldk-reviews-bot
commented
Jun 17, 2026
ldk-reviews-bot
commented
Jun 20, 2026
ldk-reviews-bot
commented
Jun 20, 2026
1 similar comment
ldk-reviews-bot
commented
Jun 20, 2026
ldk-reviews-bot
commented
Jun 22, 2026
ldk-reviews-bot
commented
Jun 22, 2026
1 similar comment
ldk-reviews-bot
commented
Jun 22, 2026
As mentioned elsewhere, we'll defer this to the 0.9 milestone. For now removed the review requests to silence the 5-fold notifications every day. Still ofc. intend to get back to this soon though. |
Uh oh!
There was an error while loading. Please reload this page.
33e6724 to
231c5bbCompareImplements the receiver side of the BIP 77 Payjoin v2 protocol, allowing LDK Node users to receive payjoin payments via a payjoin directory and OHTTP relay. - Adds a `PayjoinPayment` handler exposing a `receive()` method that returns a BIP 21 URI the sender can use to initiate the payjoin flow. The full receiver state machine is implemented covering all `ReceiveSession` states: polling the directory, validating the sender's proposal, contributing inputs, finalizing the PSBT, and monitoring the mempool. - Session state is persisted via `KVStorePayjoinReceiverPersister` and survives node restarts through event log replay. Sender inputs are tracked by `OutPoint` across polling attempts to prevent replay attacks. The sender's fallback transaction is broadcast on cancellation or failure to ensure the receiver still gets paid. - Adds `PaymentKind::Payjoin` to the payment store, `PayjoinConfig` for configuring the payjoin directory and OHTTP relay via `Builder::set_payjoin_config`, and background tasks for session resumption every 15 seconds and cleanup of terminal sessions after 24 hours.
231c5bb to
5a9bf22Compare
This PR adds support for receiving payjoin payments in LDK Node. This is currently a work in progress and implements the receiver side of the payjoin protocol.
KVStorePayjoinReceiverPersisterto handle session persistencePayjoinas aPaymentKindto the payment storeNote on persistence: The payjoin library currently only supports synchronous persistence, but they're working on adding async support(payjoin/rust-payjoin#1235). This PR sets up the persistence structure (
KVStorePayjoinReceiverPersister), which will be updated to use async operations once the upstream PR is merged.This PR partially fixes#177 and fixes#1019