Uh oh!
There was an error while loading. Please reload this page.
feat: send paykit payment proofs - #683
Conversation
This comment has been minimized.
This comment has been minimized.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
8801387 to
c5d04c7Compare
ovitrif
left a comment
There was a problem hiding this comment.
On-chain payment proofs cannot recover after a store-load failure, so a successful send can still leave the requester without proof.
Uh oh!
There was an error while loading. Please reload this page.
ovitrif
left a comment
There was a problem hiding this comment.
QA Notes
Ran on iPhone 17 Pro simulator and Pixel_9a emulator on regtest.
- iOS created a private request for Android, Android paid, and iOS recorded the proof against that request.
- Android created a private request for iOS, iOS paid, and Android recorded the proof against that request.
Approve.
01c4164 to
bcf1d8aCompareben-kaufman
commented
Aug 31, 2026
Added the cross-platform proof-state hardening in c3f2d8c: corrupt persisted proof state is discarded instead of permanently blocking reconciliation, empty state removes the Keychain entry, and the frequent refresh path returns before calling Paykit when there is nothing to reconcile. The full payment-proof suite passes 22/22 on the restacked subscriptions head. |
c3f2d8c to
281b865Compareben-kaufman
commented
Aug 31, 2026
Follow-up after the final cleanup: the hardening commit is now |
ben-kaufman
commented
Aug 31, 2026
CI note: the remaining |
jvsena42
left a comment
There was a problem hiding this comment.
Found some points that worth a double check
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
281b865 to
e66771bCompareben-kaufman
commented
Sep 1, 2026
ben-kaufman
commented
Sep 1, 2026
Retested latest revision, iPhone 17 sim ↔ Pixel emu (same session as android #1178). Amount edit on pay (iOS only) Recording: Screen.Recording.2026-09-01.at.16.08.22.movRequest lists don’t match
Not amount-keyed overwrite in the app list — IDs are Screenshot (Payment Requests list): Logs: Proofs still queued on the successful pays (LN + on-chain both ways). Amount pad / list drift look like follow-ups, not a proofs blocker. |

This PR sends a Paykit payment proof back to the requester after Bitkit successfully pays an incoming private payment request.
Description
This PR is stacked on #676. Companion Android PR: synonymdev/bitkit-android#1178
Linked Issues/Tasks
N/A
Screenshot / Video
N/A — there are no UI changes.
QA Notes
Manual Tests
Automated Checks
PaykitPaymentProofServiceTests.swift: 8 tests cover restart retry, duplicate suppression, invalid Lightning preimage rejection, failed-payment cleanup, exact on-chain proof submission, overlapping retries, wallet-store clearing, and completed-proof persistence failure.git diff --checkpassed.