ProtocolCore release 0.1.0

Private Send

In v0.1.0, Private Send is an SDK-level use of Unshield to an arbitrary public recipient.

In the current release, Private Send is not a separate on-chain instruction. It is a product-level use of the existing Unshield primitive with an arbitrary public recipient.

Alice's private note
        ↓ proof of spend authorization
Unshield instruction
        ↓ public SPL transfer
Bob's public token account

Alice's spend secret and note witness are not included as plaintext in the transaction. Bob's recipient address, asset, amount, payer, transaction time, pool and nullifier are public. The transfer exits shielded custody into Bob's public balance.

SDK call

The current SDK method delegates directly to Unshield:

const signature = await shielded.privateSend({
  pool,
  mint,
  amount: note.amount,
  recipient: bobPublicKey,
});

Unshield consumes the complete note, so amount must equal the selected note's value. The SDK does not implement a separate hidden recipient note or a private-send instruction. See SDK Unshield & Private Send.

PreviousUnshieldNext Shielded Note model
Source baseline: frozen Core v0.1.0 / SDK v0.1.1.