Skip to main content
Cloak SDK exposes two interfaces, with UTXO as the primary runtime path:
  • Note API via CloakSDK (deposit, withdraw, send, swap)
  • UTXO API via top-level functions (transact, transfer, swapUtxo, …)
Current web and relay transaction paths use the UTXO API (/transact, /transact_swap).

Quickstart

Run a complete deposit and private withdrawal flow.

UTXO Transactions

Use the UTXO model directly.

API Reference

Current exports and signatures from @cloak.ag/sdk.

Installation

npm install @cloak.ag/sdk @solana/web3.js
For swap flows, install SPL token utilities too:
npm install @solana/spl-token

Minimal note-based example

import { CloakSDK } from "@cloak.ag/sdk";
import { Connection, Keypair, PublicKey } from "@solana/web3.js";

const connection = new Connection("https://api.devnet.solana.com", "confirmed");
const keypair = Keypair.fromSecretKey(/* Uint8Array secret key */);

const sdk = new CloakSDK({
  keypairBytes: keypair.secretKey,
  network: "devnet",
  // Set explicitly when using development/devnet deployments
  programId: new PublicKey("3EvH6XYQir7D2RyzCdP7QFmJFfSPfdeoB8VnpLdEF4Kr"),
});

const deposit = await sdk.deposit(connection, 100_000_000);
await sdk.withdraw(connection, deposit.note, new PublicKey("RECIPIENT"), {
  withdrawAll: true,
});

Network and program IDs

Current deployment constants:
  • Mainnet/default build: c1oak6tetxYnNfvXKFkpn1d98FxtK7B68vBQLYQpWKp
  • Development build: 3EvH6XYQir7D2RyzCdP7QFmJFfSPfdeoB8VnpLdEF4Kr
CloakSDK defaults to CLOAK_PROGRAM_ID (mainnet constant), so set programId explicitly for development deployments.

Core protocol fees

Shared protocol constants:
  • Fixed: 5_000_000 lamports (0.005 SOL)
  • Variable: amount * 3 / 1000 (0.3%)
  • Minimum deposit: 10_000_000 lamports (0.01 SOL)