Skip to content

Getting Started

Terminal window
pnpm add @mistcash/sdk @mistcash/config

For React applications, also install the React package:

Terminal window
pnpm add @mistcash/react

The SDK uses a Go-compiled WASM module for cryptographic operations. You must initialize it before calling any hash or proof functions.

import { initCore } from "@mistcash/sdk";
// Initialize WASM + Garaga modules
await initCore();

You can also initialize modules independently:

import { initWasm, initGaraga } from "@mistcash/sdk";
// Initialize only what you need
await initWasm(); // Required for hashing and proof generation
await initGaraga(); // Required for proof calldata formatting
  1. Initialize the SDK

    import { initCore, hash2, generateClaimingKey } from "@mistcash/sdk";
    await initCore();
  2. Generate a claiming key

    const claimingKey = generateClaimingKey();
    console.log("Claiming key:", claimingKey);
  3. Hash the key with a recipient address

    const recipientAddress = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7";
    const commitment = await hash2(claimingKey, recipientAddress);
    console.log("Commitment:", commitment);
import { useMist } from "@mistcash/react";
function PrivacyWallet({ provider, sendTransaction }) {
const mist = useMist(provider, sendTransaction);
return (
<div>
<p>Chamber: {mist.chamberAddress}</p>
<p>Status: {mist.loadingMessage}</p>
<input
placeholder="Claiming Key"
value={mist.valKey}
onChange={(e) => mist.setKey(e.target.value)}
/>
<input
placeholder="Recipient Address"
value={mist.valTo}
onChange={(e) => mist.setTo(e.target.value)}
/>
<button onClick={() => mist.fetchAsset()}>
Find Transaction
</button>
{mist.asset && (
<button onClick={() => mist.handleWithdraw(mist.asset!)}>
Withdraw
</button>
)}
</div>
);
}

The SDK supports the following tokens on Starknet mainnet:

TokenSymbolAddress
EtherETH0x049d36...04dc7
StarkSTRK0x04718f...0ecb4
USD CoinUSDC0x053c91...0b2c2
TetherUSDT0x068f5c...36d11
SurvivorSURVIVOR0x5dc92...51f86

See tokensData in @mistcash/config for full addresses and metadata.