fix: avoid msat truncation when paying invoices with built-in amounts#512
Open
ben-kaufman wants to merge 7 commits intomasterfrom
Open
fix: avoid msat truncation when paying invoices with built-in amounts#512ben-kaufman wants to merge 7 commits intomasterfrom
ben-kaufman wants to merge 7 commits intomasterfrom
Conversation
Bump bitkit-core to v0.1.56 which rounds up sub-satoshi invoice amounts. Additionally, stop overriding the amount for invoices that already have one. Pass sats: nil so LDK uses the invoice's native msat precision instead of our truncated sats value converted back to msat. Only pass sats for zero-amount invoices where the user specifies the amount. Closes #511
This comment has been minimized.
This comment has been minimized.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
3 tasks
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
LNURL protocol uses millisatoshis, but the app was normalizing msat values to sats in-place on the data structs. When those sats were later converted back to msats for callbacks, the fractional part was lost (e.g. 500500 msat -> 501 sats -> 501000 msat, rejected by server). - Stop normalizing LNURL data structs in-place; keep original msat values - Change fetchLnurlInvoice to accept amountMsats directly - Convert to sats only for display (floor) and validation (ceil for min) - For fixed-amount LNURL-pay, pass original msat value to callback - For fixed-amount LNURL-withdraw, use floor(msats/1000) for invoice amount Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
For LNURL-withdraw with sub-sat precision (e.g. 222538 msat), neither floor (222 sats) nor ceiling (223 sats) matches the server's exact amount range. Add receiveMsats/createInvoiceMsats to create invoices with native msat precision, used for fixed-amount LNURL withdrawals. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Collaborator
|
Not sure, what's up with CI here, but I cannot build it locally: |
Use ceiling division for LNURL display amounts to match BOLT11 behavior. Previously LNURL-pay showed 222 sats on review but 223 after sending, and LNURL-withdraw showed 222 while BOLT11 showed 223 for the same 222222 msat amount. Also revert the LDK Node revision to the master-pinned version (c5698d00) which was inadvertently changed during package resolution. This fixes the BitkitNotification linker failure. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Contributor
Author
|
@piotr-iohk The build failure should be fixed — the LDK Node revision was inadvertently changed from the master-pinned version during SPM package resolution. Reverted it back to If the issue persists, try cleaning derived data ( |
Collaborator
|
Ok, note there is a conflict on the branch on changelog file, perhaps that is why CI does not start properly 🤔 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
sats: nilso LDK uses the invoice's native msat precision instead of our truncated sats value converted back to msatsatsfor zero-amount invoices where the user specifies the amountTest plan
lnd.addInvoice({ valueMsat })using amounts222538,222222,500500msatDepends on synonymdev/bitkit-core#85
Closes #511
🤖 Generated with Claude Code