SDKCore release 0.1.0

Unshield & Private Send

Spend a complete note to a public recipient using the SDK's Unshield method or its Private Send alias.

The SDK's unshield method accepts { pool, mint, amount, recipient } and returns a signature. It locates a note matching that pool, mint and amount, proves ownership/membership, and transfers the full note value to the recipient's associated token account.

Unshield one complete note
const available = (await shielded.getNotes()).find(
  (note) =>
    note.pool.equals(pool) &&
    note.asset.equals(tokenBMint) &&
    note.state === "available",
);
if (!available) throw new Error("No available note for this asset");
 
const signature = await shielded.unshield({
  pool,
  mint: tokenBMint,
  amount: available.amount,
  recipient: recipientPublicKey,
});

The recipient is public and bound into the Unshield public inputs. The operation requires the authenticated prover, a persistent note store, a validated LUT and a wallet that signs v0 transactions.

Private Send

shielded.privateSend({ pool, mint, amount, recipient }) is an SDK alias that delegates to unshield with the same arguments. It is not a separate on-chain private_send instruction and does not create a shielded note for the recipient. It exits to the recipient's public SPL token account.

Unshield consumes a complete note; partial unshield is not supported by this release. A transaction payer/relayer can differ from the note owner, but recipient, amount, asset and public transaction metadata remain visible.

PreviousPrivate Swap with the SDKNext Notes & NoteStore
Source baseline: frozen Core v0.1.0 / SDK v0.1.1.