DOCS V0.2.3BETA

Ashborn

The Shadow Monarch. Ashborn shadows your intent, enveloping assets and executing private transfers. The underlying world never sees your identity.

Live Demo

Experience instant private transfers on devnet.

Quick Start

Initialize the SDK and shield your first asset to enter the privacy pool.

01

Initialize Client

Create an Ashborn instance with your connection and wallet adapter.

client.ts
1import { Ashborn } from '@alleyboss/ashborn-sdk';
2
3const ashborn = new Ashborn(connection, wallet, {
4 network: 'devnet'
5});
02

Shield Assets

Deposit SOL or SPL tokens into the shielded pool.

shield.ts
1const tx = await ashborn.shield({
2 amount: 1_000_000_000n, // 1 SOL
3 mint: SOL_MINT
4});
5
6console.log("Shielded:", tx.signature);

Installation

Add the SDK to your existing Solana project.

user — -zsh
~/projectnpm install @alleyboss/ashborn-sdk
Devnet OnlyThe current release (v0.2.3) is deployed to Solana Devnet. Mainnet deployment is scheduled for Q3 2026.
⚠️ PrivacyCash Shield/Unshield Simulated on Devnet

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

BzBUgtEFiJjUXR2xjsvhvVx2oZEhD2K6qenpg727z5Qe

Core Ashborn for privacy operations, ZK proofs, and stealth address management.

View on Explorer →

PrivacyCash Program

ATZj4jZ4FFzkvAcvk27DW9GRkgSbFnHo49fKKPQXU7VS

Third-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.

WITHOUT ALT (Standard)1240 / 1232 bytes (OVERFLOW) ❌
ZK Proof
State
20 Full Addresses (640B)
WITH ALT (Compressed)620 / 1232 bytes (OPTIMIZED) ✅
ZK Proof
State
ALT
Remaining Space (Safe)

How to Fix:

1. Run the setup script to generate your specific ALT:

user — -zsh
~/projectnpx tsx scripts/setup-alt.ts

2. Add the result to .env.local:

.env.local
1NEXT_PUBLIC_ALT_ADDRESS=FA8AfRJYQPuEtVmVpi3vBb1A7ziRCaBYkkEiRnqP7cDd

Architecture

How Ashborn achieves privacy on a public ledger.

The Shadow Monarch Stack

User Intent
👤
User / AI Agent
Initiates Transfer / Payment
Ashborn SDK
Identity & Privacy
Shadow Wire
Ashborn Program
ECDH Key Exchange
Stealth Addr Gen
LIGHT_PROTOCOL
PrivacyCash Program
Poseidon Hash
Merkle Tree Insert
Settlement
SOL
L1 Chain
State
Compressed
ALT
Active
Proof
Verified

Detailed Flow by Use Case

A. Ashborn Direct (Single Layer)

Ashborn Only Mode

01
Relay Deposit
Wallet → Relay
Decouples sender from tx
02
Stealth Gen
ECDH Derivation
Unique address calculation
03
ZK Proof
Groth16 Range
Proves solvency privately
04
Direct Transfer
Relay → Recipient
Funds sent to stealth addr

B. Dual Privacy (Full Demo)

Ashborn + PrivacyCash

01
Ashborn Layer
Stealth + ZK
Executes Layer 1 privacy
02
Shielding
Relay → Pool
Funds enter mixing pool
03
Mixing
Poseidon Hash
Cryptographic disconnect
04
Unshield
Pool → Recipient
Clean funds delivered

C. AI Agent Commerce

x402 Negotiation

01
Negotiation
LLM Arbitrage
Agents agree on price
02
Payment Lock
x402 Gateway
Content gated by payment
03
Execution
Run Flow A or B
Privacy layer executes
04
Delivery
Insight Unlocked
Agent receives data

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:

unified-sdk.ts
1// Single SDK call handles both programs
2import { Ashborn } from '@alleyboss/ashborn-sdk';
3
4const ashborn = new Ashborn(connection, wallet);
5
6// Internally:
7// 1. Calls PrivacyCash (ATZj4jZ4...) for shielding
8// 2. Calls Ashborn (BzBUgtEFiJj...) for stealth addressing
9// 3. Returns unified result
10const result = await ashborn.shield({ amount: 1_000_000n });
11
12// You never need to interact with programs directly
13// SDK handles all cross-program communication

In Our Demos

Shield Demo: Uses PrivacyCash program via SDK to deposit SOL into privacy pool
Transfer Demo: Uses both programs - Ashborn for stealth + PrivacyCash for shielded transfer
Interop Demo: Full flow using both programs in sequence
Prove Demo: Uses Ashborn program for ZK range proofs

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.

relay.ts
1import { PrivacyRelay } from '@alleyboss/ashborn-sdk';
2
3const relay = new PrivacyRelay({
4 relayKeypair: serverKeypair,
5 rpcUrl: 'https://api.devnet.solana.com'
6});
7
8// Shield via relay
9await relay.shield({ amount: 0.1 });
10
11// Generate stealth address via relay
12await relay.generateStealth({ viewPubKey, spendPubKey });
Server-Side OnlyPrivacy Relay should only be used in server environments to protect the relay keypair.

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.

$ Using curve: bn128
$ Proving system: groth16
$ Circuits: range_proof.circom

Core SDK

Primary methods for interacting with the Ashborn program.

sdk-usage.ts
1// Shield Assets
2await ashborn.shield({ amount: 1_000_000n });
3
4// Private Transfer
5await ashborn.transfer({
6 to: stealthAddress,
7 amount: 1_000_000n
8});
9
10// Generate Proof
11const proof = await ashborn.proveRange({ max: 1000n });

shadow agent

AI-to-AI private commerce via the Shadow Monarch.

shadow-agent.ts
1import { ShadowAgent } from '@alleyboss/ashborn-sdk';
2
3const agent = new ShadowAgent({
4 connection,
5 wallet,
6 personality: 'merchant'
7});
8
9// AI negotiates and executes private payment
10const result = await agent.negotiate({
11 intent: 'Buy 100 USDC worth of compute',
12 maxPrice: 100_000_000n
13});
Experimentalshadow agent is in alpha. Use with caution in production.

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)

🛡️ Privacy Level: STRONG
All features are 100% real and verifiable on-chain. Works standalone!
✅ Ashborn ShadowWire
Native ECDH stealth addresses
✅ Light Protocol
light-poseidon + light-merkle-tree on-chain
✅ ZK Groth16 Proofs
groth16-solana + snarkjs real proofs
✅ SOL Transfers
Standard Solana transactions (verifiable)
What it provides:
  • 🔒 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
✅ Use this mode for hackathon evaluation — Everything verifiable on Solscan!

Mode 2: Full Demo (Dual-Layer Privacy)

🛡️🛡️ Privacy Level: MAXIMUM
Two layers of protection — like a mixer on top of stealth addresses!
✅ Layer 1: Ashborn
Stealth + ZK + Decoys (100% real)
✅ AI Agent Negotiation
Real LLM-powered interactions
⚠️ Layer 2: PrivacyCash Shield
Simulated (exceeds 1.4M compute limit)
⚠️ Layer 2: PrivacyCash Unshield
Simulated (depends on shield)
Why dual-layer is more private:
  • 🔒 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!
Why simulated on devnet? PrivacyCash uses Groth16 ZK proofs requiring ~1.85M compute units. Solana devnet has a strict 1.4M limit. Works 100% on mainnet with premium RPC (Helius, QuickNode, Triton).

Stealth Addresses

One-time addresses for unlinkable transfers.

stealth.ts
1// Generate stealth meta-address (share publicly)
2const meta = await ashborn.generateStealthMeta();
3
4// Sender: Generate one-time address
5const { stealthAddress, ephemeralPubkey } =
6 await ashborn.generateStealthAddress(meta);
7
8// Send to stealth address
9await ashborn.transfer({
10 to: stealthAddress,
11 amount: 1_000_000n
12});
13
14// Receiver: Scan for incoming transfers
15const received = await ashborn.scanStealth(meta.viewKey);

Natural Language

Control Ashborn using plain English via the NLP module.

nlp-example.ts
1const result = await ashborn.nlp.process("Send 5 SOL to @alice privately");
2
3if (result.intent === 'TRANSFER') {
4 await ashborn.execute(result.transaction);
5}