Add Payjoin Receiver Support (BIP 77)#746
Conversation
|
👋 Thanks for assigning @DanGould as a reviewer! |
1db2b08 to
49017bd
Compare
|
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. |
Thanks for letting me know. I'll build on the merged commit. |
8f6ba65 to
6499918
Compare
|
Are you stuck? Did something in our library break CI @Camillarhi |
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
eb97832
Compare
120b089 to
8cc2a31
Compare
5fe1a5c to
0411ada
Compare
|
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. |
|
🔔 12th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 12th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 11th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 11th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 13th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 13th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 12th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 12th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 14th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 14th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 13th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 13th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
| fn list_input_pairs(&self) -> Result<Vec<InputPair>, Error> { | ||
| let unspent = self.wallet.list_unspent_utxos()?; |
There was a problem hiding this comment.
list_unspent_utxos() includes unconfirmed, it iterates BDK's list_unspent() and pushes each segwit UTXO with no confirmation filter (wallet/mod.rs:1449-1519), unlike the crate's other coin-selection which excludes it (exclude_unconfirmed(), is_confirmed()). So a payjoin can contribute a 0-conf input, built on RBF-able funds, and a temporal fingerprint that rules out confirmed-only wallets.
reuse list_confirmed_utxos_inner() instead?
|
🔔 15th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 15th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 14th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 14th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 16th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 16th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 15th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 15th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 17th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 17th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
|
🔔 16th Reminder Hey @tnull @DanGould @zealsham @spacebear21! This PR has been waiting for your review. |
1 similar comment
|
🔔 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?
Thanks. I’m keeping an eye on spesmilo/electrum-protocol#2 which adds |
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