Private Transfers
This guide covers sending tokens privately between privacy addresses.Basic Transfer
Transfer Parameters
Transfer Result
Privacy Address Validation
Always validate privacy addresses before sending:Transfer to MPK
If you have the recipient’s MPK instead of privacy address:Paying Several Recipients at Once
sendBatch pays every recipient from one set of input notes, in a single
request. You’re charged one fee instead of one per recipient, and the whole
payout lands in one epoch slot rather than several.
send: one requestId and one placeholder txHash for the whole batch.
How many recipients fit
The server proves a fixed set of(inputs, outputs) shapes, and a transfer has
to fit inside one of them. Its output count is your recipient count plus a
change note, so a longer recipient list leaves room for fewer input notes:
So 5 inputs by 3 outputs is not provable, even though 15 inputs and 11 outputs
are each individually fine. In practice: past two recipients, the transfer has
to be coverable by at most four notes. If your notes are fragmented, run
sdk.vault.consolidateNotes(tokenAddress) first.
The SDK plans note selection against the shapes the server advertises, so a
batch that can’t be proven fails before anything is submitted:
sendBatch refuses multi-recipient requests against it with the same code.
Checking Balance Before Transfer
Transfer Privacy
Private transfers provide:- Sender Privacy: Your wallet address is not linked to the transaction
- Recipient Privacy: The recipient’s wallet address is not revealed
- Amount Privacy: The transfer amount is encrypted
- Relationship Privacy: No public link between sender and recipient