feat: add Paykit private payments#549
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3dee822d5e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
dbdb9ef to
600cdf9
Compare
Observations from initial testing round:1. encountered "Duplicate payment" on private ln send. (After few sends between private contacts) Screen.Recording.2026-05-14.at.14.40.31.mov2. seems that sometimes the payment falls back to public(?) ("Received from..." is not appearing on the Recepient's activity list) Paykit Sender: bitkit_logs_2026-05-14_12-02-47.zip Screen.Recording.2026-05-14.at.13.58.13.mov3. As shown in the recording above, the payment button sometimes appears after a short delay. A similar delay can also be observed when tapping the contact’s pay icon. This is just an observation for now. 4. Private Paykit fallback / stale link observation I could not reproduce this reliably yet, but I hit it once on an older wallet that already had funds. Rough flow was:
Bob: bitkit_logs_2026-05-14_11-11-10.zip |
9fcd6cc to
8f54b6c
Compare
|
@piotr-iohk about 2 and 4, I've made some fixes to improve reliability of the connection, but note that in case of failure the silent fallback to public payments is expected. Issues 1 and 3 should be fixed now too. |
|
Testing on latest revision.
Alice (iOS): bitkit_logs_2026-05-15_13-15-54.zip Screen.Recording.2026-05-15.at.15.14.12.mov |
|
Testing on latest revision. 1. It seems that most of the payments I make are public - randomly I'm able to send private payment but then it falls back to public again. Didn't observe the previous issue with not being able to send though. Alice: bitkit_logs_2026-05-15_15-29-40.zip Side note: the current UX may undersell private Paykit if the only visible difference is “Received from”; we may want a clearer “Private payment” indicator or fallback label so users understand when a payment used a private contact endpoint versus public Paykit. 🤷 2. Profiles created after both had onchain and spending balance ready. Alice: bitkit_logs_2026-05-15_16-33-12.zip 3. Screen.Recording.2026-05-15.at.16.53.58.mov |
|
About the onchain only point after LN payment, so the way it works is if the invoice was already used but no new one was published by the peer yet it discards it so only onchain shows as available. I'll check why it didn't refresh fast enough to a new private invoice though. |
|
I'm not yet 100% sure but I think this pubky/pubky-noise#17 should solve the private payments unreliability issue, once merged I'll make a new Paykit release and update the PRs. From local testing I didn't get the issue, but it wasn't happening reliably also before the fix so hard to be completely sure. Other UI point should be resolved. |
Description
This PR adds private Paykit payments for saved contacts.
It:
Linked Issues/Tasks
N/A
QA Notes
Manual Tests
regression:contact with no private-ready link → Send: public Paykit remains the fallback path when available.Automated Checks
git diff --check && git diff --cached --checkswiftformat --linton touched private Paykit/contact filesnode scripts/validate-translations.jsPrivatePaykitServiceTestspassed, 12 tests, 0 failuresScreenshot / Video
N/A