feat(solana/charge): support for confidential transfers - #305
Merged
brendanjryan merged 5 commits intoAug 7, 2026
Merged
Conversation
…ditor The confidential profile previously mandated a mint auditor and had the server decrypt the auditor handle to verify the paid amount. That couples the payment provider to the stablecoin issuer (the auditor key belongs to the issuer, one per mint). Correct it: the server is the payment recipient, so it confirms the amount by decrypting what its own confidential account received, using its own ElGamal key. The auditor is demoted to an optional issuer-side compliance facility that plays no role in charge verification. `auditorElgamalPubkey` becomes OPTIONAL/informational. Updates the overview, terminology, methodDetails, verification, settlement, security, examples, and the client-side checklist accordingly.
…mo privacy Align the confidential profile with the gateway-paid reality (paying clients hold no SOL): - The server, not the client, funds proof/record-account rent and is their authority + rent-reclaim destination; the client only signs the transfer authority and ephemeral account keypairs. - The server absorbs the SOL fee (no splits recovery; transfer is single-recipient) and prices it in. - Drain protection is the per-tx instruction allow-list before co-signing plus a periodic orphan sweep the server can run because it owns the accounts (two-pass guard vs the settlement window). - Memo privacy: no on-chain order memo by default; reconcile by the final tx signature. Any memo present MUST match the issued challenge. - Note clients SHOULD pre-flight (mint ext, recipient allows credits, balance).
brendanjryan
approved these changes
Aug 7, 2026
| transactions. If settlement aborts after some transactions have | ||
| landed, on-chain state may include created proof/record accounts | ||
| without a completed transfer. The server MUST NOT return a | ||
| success receipt in this case. Because the server funded the rent |
Collaborator
|
@lgalabru -- some CI issues but otherwise looks good! |
Contributor
Author
|
CI fixed, thanks @brendanjryan! |
Spec Preview
|
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.
No description provided.