Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Batch transaction privacy

TL;DR

The sender knows the complete batch. Each recipient sees only their own transfer and does not learn the sender address, the other recipients, their amounts, or that the transfer belonged to a batch.

The status labels describe access during the transaction, not a privacy score. See How to read the tables for their definitions.

Sender point of view

Takeaway: The sender creates the batch, so they know every recipient and transfer row. Batch privacy protects recipients from one another; it does not hide them from the sender.

InformationStatusWhat this means
Sender addressAvailableThe sender connects and uses their own wallet.
Recipient addressesAvailableThe sender enters or uploads the complete recipient list.
Tokens and amountsAvailableThe sender defines every row in the batch.
Complete batch membershipAvailableThe sender knows which recipients belong to the batch.
Sender–recipient relationshipsAvailableThe sender knows every intended transfer relationship.
Transaction timing and statusAvailableThe sender sees the batch submission and each completion.
Mirage usageAvailableThe sender chose to use Mirage.

Recipient point of view

Takeaway: A recipient sees only their own ordinary incoming transfer. Nothing in it reveals the sender, the other recipients, or the existence of a batch.

InformationStatusWhat this means
Own recipient addressAvailableThe recipient sees funds arrive at their own address.
Own token and amountAvailableThe recipient sees what they received.
Own arrival timeAvailableTheir incoming transfer has a public timestamp.
Sender addressNot exposedThe incoming transfer comes from node-controlled liquidity, not the sender wallet.
Other recipient addressesNot exposedNo recipient list is included with the transfer.
Other tokens and amountsNot exposedA recipient receives no information about the other rows.
Batch membershipNot disclosedThe transfer looks like an ordinary individual transfer and does not announce that it was part of a batch.
Mirage usageNot disclosedThe transfer does not announce that Mirage was used.

Node operator point of view

Takeaway: Node software receives encrypted batch metadata and decrypts only its assigned work inside the enclave. The operator does not receive readable recipients, amounts, tokens, or relationships.

InformationStatusWhat this means
Sender addressEnclave-onlyAvailable to the trusted execution environment as required for verification, not exposed through the operator interface or logs.
Assigned recipient addressesEnclave-onlyDecrypted inside the enclave only for the routes this node executes.
Assigned tokens and amountsEnclave-onlyDecrypted inside the enclave to construct the assigned transfers.
Sender–recipient relationshipsEnclave-onlyProcessed inside the enclave; not delivered to the operator as readable transaction metadata.
Complete batch membershipEnclave-onlyThe enclave can process the assigned batch signal. Optional routing can divide work across independent nodes, but the operator receives no plaintext recipient list.
Mirage usageAvailableThe operator knows they run a Mirage node; this reveals nothing about the batch contents.

Mirage point of view

Takeaway: Mirage relays encrypted batch signals without decrypting them. Addresses used for compliance and values used for quoting are handled separately, never assembled into batch rows, and not stored as a transaction record.

InformationStatusWhat this means
Encrypted batch signalAvailableMirage can relay the ciphertext but cannot read the rows inside it.
Sender addressAvailableUsed separately for compliance and authorization, then not stored as part of a batch record.
Recipient addressesAvailableChecked separately for compliance; never received linked to the sender or assembled into a stored recipient list.
Tokens and amountsAvailableIsolated values are used for quoting; they are not stored together with addresses or batch relationships.
Sender–recipient relationshipsNot exposedMirage never receives plaintext rows joining a sender, recipient, token, and amount.
Complete batch membershipNot exposedThe encrypted signal is not decrypted into a recipient list by Mirage.
Transaction timing and statusNot exposedMirage does not retain a sender-linked batch history.

In other words, Mirage does not have a record of who was paid in the batch, who paid them, what each person received, why they were paid, or when.

Public observer point of view

Takeaway: A public observer sees aggregate sender-side activity and separate recipient-side transfers, but no authoritative map connecting them into one batch.

InformationStatusWhat this means
Sender addressAvailableSender-side wallet and aggregate escrow activity are public.
Recipient addressesAvailableEach appears separately as the destination of a normal node transfer.
Tokens, amounts, and timesAvailablePublic for each individual onchain event.
Sender–recipient relationshipsNot exposedNo public record maps the sender to the individual recipients.
Complete batch membershipNot disclosedThe chain does not label which recipient transfers belong to the same batch.
Mirage usageNot disclosedNo shared pool or stable signature affirmatively labels the activity as Mirage usage.

Why batch amounts are harder to correlate

The sender funds aggregate batch requirements, while recipients receive separate transfers. The sender-side value therefore does not correspond to one recipient amount. Different tokens, amounts, execution addresses, and route timing add further separation.

This does not make individual token transfers or timestamps invisible. It prevents the chain from providing a direct sender-to-recipient list or an authoritative statement that the recipient transfers belong together.

The boundary of this guarantee

The sender created the batch and therefore knows every recipient, token, and amount. Batch privacy isolates the recipients from the sender wallet and from one another; it does not hide recipients from the person paying them.