Gone.wtf API
Privacy-preserving Solana transactions using zero-knowledge proofs
Quick Start
Get started in 60 seconds
1. Include the SDK
1<script src="https://gone.wtf/sdk/gone-mixer.js"></script>2. Create a deposit
1const mixer = new GoneMixer('https://gone.wtf');
2
3// Deposit 1.5 SOL privately
4const result = await mixer.deposit(wallet, 1.5);
5
6// Save the note - CRITICAL!
7console.log('Note:', result.note);
8mixer.saveNote(result.note, 'My private deposit');3. Check balance
1const balance = await mixer.getBalance(
2 note,
3 recipientAddress
4);
5
6console.log('Available:', balance.balance, 'SOL');API Endpoints
SDK Reference
GoneMixer class methods
Constructor
1const mixer = new GoneMixer('https://gone.wtf');
2// or use default
3const mixer = new GoneMixer();mixer.deposit(wallet, amount)
Create a private deposit and return the secret note.
1const result = await mixer.deposit(wallet, 1.5);
2
3if (result.success) {
4 console.log('✅ Deposit successful!');
5 console.log('Note:', result.note);
6 console.log('Signature:', result.signature);
7
8 // Save note securely
9 mixer.saveNote(result.note, 'My deposit');
10} else {
11 console.error('❌ Failed:', result.error);
12}mixer.getBalance(note, recipientAddress)
Check available balance for a secret note.
1const result = await mixer.getBalance(
2 'gone-0.2.0-abc123...xyz789-txhash',
3 'RecipientAddressHere...'
4);
5
6if (result.success) {
7 console.log('Balance:', result.balance, 'SOL');
8}mixer.isValidNote(note)
Validate a note format.
1if (mixer.isValidNote(note)) {
2 console.log('✅ Valid note format');
3 const balance = await mixer.getBalance(note, recipient);
4} else {
5 console.error('❌ Invalid note format');
6}mixer.saveNote(note, label)
Save a note to localStorage.
1mixer.saveNote(note, 'My deposit - 1.5 SOL');
2
3// Get all saved notes
4const notes = mixer.getSavedNotes();
5console.log('Saved notes:', notes);Zero-Knowledge
Privacy-preserving transactions using Light Protocol's ZK proofs. Break on-chain links completely.
Non-Custodial
Notes generated client-side. We never store your keys. Only you control your funds.
Simple API
Just 2 endpoints. Plug-and-play SDK. Start integrating privacy in minutes.
Complete Example
React integration example
1import { useWallet } from '@solana/wallet-adapter-react';
2import { useState } from 'react';
3import { GoneMixer } from '@gone/mixer-sdk';
4
5function PrivateTransfer() {
6 const wallet = useWallet();
7 const [note, setNote] = useState('');
8 const mixer = new GoneMixer('https://gone.wtf');
9
10 const handleDeposit = async () => {
11 const result = await mixer.deposit(wallet, 1.5);
12
13 if (result.success) {
14 setNote(result.note);
15 mixer.saveNote(result.note, 'Private deposit');
16 alert(`Deposited! Note: ${result.note}`);
17 }
18 };
19
20 const checkBalance = async () => {
21 const result = await mixer.getBalance(note, recipientAddress);
22 if (result.success) {
23 console.log('Balance:', result.balance);
24 }
25 };
26
27 return (
28 <div>
29 <button onClick={handleDeposit}>
30 Deposit 1.5 SOL Privately
31 </button>
32 <button onClick={checkBalance}>
33 Check Balance
34 </button>
35 </div>
36 );
37}Fee Structure
Rate Limits
Security & Privacy
What We Do
- ✓ Zero-knowledge proofs for privacy
- ✓ Client-side note generation
- ✓ Non-custodial architecture
- ✓ Break on-chain transaction links
- ✓ Relayer pays network fees
Security Warnings
- ⚠ Never share your secret note
- ⚠ We never store notes on servers
- ⚠ Lost notes = lost funds forever
- ⚠ Always verify recipient addresses
- ⚠ Test with small amounts first
Common Errors & Solutions
Troubleshooting guide for API integration
Cause: Amount is ≤ 0, not a number, or missing
1// ❌ Wrong
2{ amount: 0 }
3{ amount: -1.5 }
4{ amount: "1.5" }
5
6// ✅ Correct
7{ amount: 1.5 }Cause: Malformed or invalid Solana address
1// ❌ Wrong
2{ payerPublicKey: "" }
3{ payerPublicKey: "invalid" }
4
5// ✅ Correct
6{ payerPublicKey: wallet.publicKey.toString() }
7{ payerPublicKey: "9xQeWv...GqyUA5" }Cause: Note doesn't start with "gone-0.2.0-" or has incorrect structure
1// ❌ Wrong
2{ note: "my-note-123" }
3{ note: "gone-0.1.0-..." }
4
5// ✅ Correct
6{ note: "gone-0.2.0-abc123...xyz789-txhash" }Cause: Note has 0 SOL balance (deposit not confirmed or already withdrawn)
Solution: Wait for deposit transaction confirmation (~30 seconds) or verify the note hasn't been used already
Cause: Wallet adapter is not connected or initialized
1// Check wallet connection before calling API
2if (!wallet.connected || !wallet.publicKey) {
3 console.error('Please connect wallet first');
4 return;
5}
6
7const result = await mixer.deposit(wallet, 1.5);