Ashborn
The Shadow Monarch. Ashborn shadows your intent, enveloping assets and executing private transfers. The underlying world never sees your identity.
Quick Start
Initialize the SDK and shield your first asset to enter the privacy pool.
Initialize Client
Create an Ashborn instance with your connection and wallet adapter.
1import { Ashborn } from '@alleyboss/ashborn-sdk';23const ashborn = new Ashborn(connection, wallet, {4 network: 'devnet'5});
Shield Assets
Deposit SOL or SPL tokens into the shielded pool.
1const tx = await ashborn.shield({2 amount: 1_000_000_000n, // 1 SOL3 mint: SOL_MINT4});56console.log("Shielded:", tx.signature);
Installation
Add the SDK to your existing Solana project.
PrivacyCash uses Groth16 ZK proofs requiring >1.4M compute units. Devnet has a strict 1.4M limit.
What works:
- ✅ Deposit to Ashborn (real transaction)
- ✅ Ashborn to PrivacyCash (real transaction)
- ⚠️ Shield: PrivacyCash ZK proof (simulated)
✅ Works perfectly on mainnet with premium RPC providers (Helius, QuickNode, Triton).
Deployed Programs (Devnet)
Ashborn Program
BzBUgtEFiJjUXR2xjsvhvVx2oZEhD2K6qenpg727z5QeCore Ashborn for privacy operations, ZK proofs, and stealth address management.
View on Explorer →PrivacyCash Program
ATZj4jZ4FFzkvAcvk27DW9GRkgSbFnHo49fKKPQXU7VSThird-party privacy protocol for shielding/unshielding SOL. Integrated into Ashborn SDK for unified access.
View on Explorer →Configuration
Mandatory setup for Devnet privacy operations.
Critical: Address Lookup Table (ALT)
Solana transactions fail if they exceed 1232 bytes. Privacy proofs are heavy (~600 bytes). Without an ALT, adding just 20 account addresses (32 bytes each) breaks the limit.
How to Fix:
1. Run the setup script to generate your specific ALT:
2. Add the result to .env.local:
1NEXT_PUBLIC_ALT_ADDRESS=FA8AfRJYQPuEtVmVpi3vBb1A7ziRCaBYkkEiRnqP7cDd
Architecture
How Ashborn achieves privacy on a public ledger.
The Shadow Monarch Stack
Detailed Flow by Use Case
A. Ashborn Direct (Single Layer)
Ashborn Only Mode
B. Dual Privacy (Full Demo)
Ashborn + PrivacyCash
C. AI Agent Commerce
x402 Negotiation
Program Responsibilities
Ashborn Program
BzBUgtEFiJjUXR2xjsvhvVx2oZEhD2K6qenpg727z5Qe- •Stealth address generation (ECDH)
- •Ring signature verification
- •ZK range proofs for compliance
- •Privacy relay coordination
- •NLP intent parsing
PrivacyCash Program
ATZj4jZ4FFzkvAcvk27DW9GRkgSbFnHo49fKKPQXU7VS- •SOL/SPL token shielding
- •Poseidon hash commitments
- •Merkle tree management
- •Nullifier tracking
- •Groth16 proof verification
SDK Integration Layer
The Ashborn SDK provides a unified interface that orchestrates both programs:
1// Single SDK call handles both programs2import { Ashborn } from '@alleyboss/ashborn-sdk';34const ashborn = new Ashborn(connection, wallet);56// Internally:7// 1. Calls PrivacyCash (ATZj4jZ4...) for shielding8// 2. Calls Ashborn (BzBUgtEFiJj...) for stealth addressing9// 3. Returns unified result10const result = await ashborn.shield({ amount: 1_000_000n });1112// You never need to interact with programs directly13// SDK handles all cross-program communication
In Our Demos
Zero-Knowledge Proofs
Uses Groth16 proofs to validate transactions without revealing amounts or senders on-chain.
Stealth Addresses
Generates unique, one-time addresses for every transfer, decoupling the recipient's identity.
UTXO Model
Manages assets as Unspent Transaction Outputs, similar to Bitcoin but with encrypted values.
Privacy Relay
Relayers submit proofs on behalf of users, paying gas fees to break the link between wallet and transaction.
Privacy Features
Core privacy mechanisms that protect your identity.
K-Anonymity Amplification
By routing through the Shadow Monarch relay, your transactions are mixed with thousands of other users across multiple privacy protocols, exponentially increasing your anonymity set.
Metadata Stripping
All IP addresses, wallet signatures, and timing information are stripped before transactions reach privacy protocols, ensuring no correlation attacks.
Privacy Relay
The Shadow Monarch's core infrastructure.
1import { PrivacyRelay } from '@alleyboss/ashborn-sdk';23const relay = new PrivacyRelay({4 relayKeypair: serverKeypair,5 rpcUrl: 'https://api.devnet.solana.com'6});78// Shield via relay9await relay.shield({ amount: 0.1 });1011// Generate stealth address via relay12await relay.generateStealth({ viewPubKey, spendPubKey });
Security
Audits, best practices, and threat model.
Threat Model
Ashborn protects against network observers, protocol operators, and chain analysts. It does not protect against compromised client devices or malicious relayers with your private keys.
Best Practices
- Always use HTTPS endpoints for RPC connections
- Run your own relay for maximum privacy
- Never reuse stealth addresses
- Use Tor or VPN when interacting with public relays
PrivacyCash
Website ↗The Anonymity Pool
PrivacyCash provides the fundamental Shielded Pool technology. Ashborn integrates directly with the PrivacyCash program to handle the actual deposit and withdrawal of assets, ensuring your funds are mixed with others.
- RoleAsset custody and mixing.
- IntegrationSDK calls
privacyCash.shieldSOL()inside the Relay.
Light Protocol
Website ↗State Compression & ZK
Ashborn leverages Light Protocol's infrastructure for ZK State Compression. This allows us to store massive Merkle trees on Solana at a fraction of the cost, enabling scalable privacy for millions of users.
x402 Micropay
Website ↗Private AI Payments
The Shadow Agent protocol integrates x402 Micropay to enable AI agents to pay for resources (compute, data) privately. The payment flow is wrapped in an Ashborn shield, hiding the agent's treasury wallet.
ZK Groth16
Compliance Proofs
We use real Groth16 Zero-Knowledge Proofs (via snarkjs and circom) to prove validity. For example, proving a user is not in a blacklist or has sufficient funds, without revealing the user's identity or balance.
$ Proving system: groth16
$ Circuits: range_proof.circom
Core SDK
Primary methods for interacting with the Ashborn program.
1// Shield Assets2await ashborn.shield({ amount: 1_000_000n });34// Private Transfer5await ashborn.transfer({6 to: stealthAddress,7 amount: 1_000_000n8});910// Generate Proof11const proof = await ashborn.proveRange({ max: 1000n });
shadow agent
AI-to-AI private commerce via the Shadow Monarch.
1import { ShadowAgent } from '@alleyboss/ashborn-sdk';23const agent = new ShadowAgent({4 connection,5 wallet,6 personality: 'merchant'7});89// AI negotiates and executes private payment10const result = await agent.negotiate({11 intent: 'Buy 100 USDC worth of compute',12 maxPrice: 100_000_000n13});
Demo Modes
Understanding single-layer vs dual-layer privacy in the Shadow Agent demo.
Privacy Architecture
Ashborn can work standalone with strong privacy, or combined with PrivacyCash for maximum anonymity through dual-layer protection.
┌─────────────────────────────────────────────────────────────────┐ │ LAYER 1: ASHBORN (Always Real) │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ • Stealth Addresses (ShadowWire ECDH) │ │ │ │ • ZK Range Proofs (Groth16) │ │ │ │ • Light Protocol (Poseidon + Merkle) │ │ │ │ • Decoy Outputs │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ↓ (optional) │ │ LAYER 2: PRIVACYCASH (Simulated on Devnet) │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ • Shared Mixing Pool (like Tornado Cash) │ │ │ │ • Funds mixed with other users │ │ │ │ • Breaks transaction graph completely │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘
Mode 1: Ashborn Only (Single-Layer Privacy)
- 🔒 Stealth addresses — Each payment goes to a unique address, hiding recipient identity
- 🔒 ZK range proofs — Prove "balance > 0" without revealing exact value
- 🔒 Decoy outputs — Multiple fake outputs mask the real transaction
Mode 2: Full Demo (Dual-Layer Privacy)
- 🔒 Even if stealth layer is de-anonymized, funds are still mixed in PrivacyCash pool
- 🔒 Even if PrivacyCash pool is analyzed, your stealth address hides your identity
- 🔒 Attacker must break BOTH layers to trace you — exponentially harder!
Stealth Addresses
One-time addresses for unlinkable transfers.
1// Generate stealth meta-address (share publicly)2const meta = await ashborn.generateStealthMeta();34// Sender: Generate one-time address5const { stealthAddress, ephemeralPubkey } =6 await ashborn.generateStealthAddress(meta);78// Send to stealth address9await ashborn.transfer({10 to: stealthAddress,11 amount: 1_000_000n12});1314// Receiver: Scan for incoming transfers15const received = await ashborn.scanStealth(meta.viewKey);
Natural Language
Control Ashborn using plain English via the NLP module.
1const result = await ashborn.nlp.process("Send 5 SOL to @alice privately");23if (result.intent === 'TRANSFER') {4 await ashborn.execute(result.transaction);5}