Veil
Privacy-preserving recurring payouts on Solana
Veil enables recurring token payouts where the recipient set, per-recipient amounts, and Merkle proofs stay off-chain while settlement state remains verifiable on Solana via MagicBlock Ephemeral Rollups.
Why Veil?
On-chain transfers are transparent by default. That is useful for settlement, but many payroll and payout flows do not want to publish the full recipient mapping on-chain.
Veil solves this by:
- hiding recipient mapping - only Merkle roots and schedule totals are committed on-chain
- running private execution - claims execute in TEE via MagicBlock ER
- supporting recurring payouts - schedules with configurable cadence and reserved balances
- shipping operational tooling - SDK, coordinator, docs, and employer dashboard
Key Features
- Private recipient lists - Merkle tree-based recipient privacy
- Scheduled payments - recurring payouts with configurable intervals
- TEE execution - private execution via MagicBlock ER
- On-chain settlement - final state committed to Solana
- Employer dashboard - vault management, schedule creation, and execution history
- Bulk recipient import - CSV and Excel uploads in the dashboard
- Saved templates - reuse local schedule drafts per wallet in the dashboard
Quick Start
npm install @veil-dev/sdkimport { VeilClient } from "@veil-dev/sdk";
import { Connection, Keypair, PublicKey } from "@solana/web3.js";
import { Wallet, BN } from "@coral-xyz/anchor";
const connection = new Connection("https://api.devnet.solana.com");
const keypair = Keypair.fromSecretKey(/* your secret key */);
const wallet = new Wallet(keypair);
const tokenMint = new PublicKey("4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU");
const client = new VeilClient({ connection, wallet });
await client.initVault(tokenMint);
await client.createScheduleFromRecipients({
tokenMint,
recipients: [
{ address: recipient1, amount: 100_000n },
{ address: recipient2, amount: 200_000n },
],
intervalSecs: 86400,
reservedAmount: new BN(10_000_000),
perExecutionAmount: new BN(300_000),
});Architecture
┌─────────────────────┐
│ Solana │ ← Settlement layer
│ Base Layer │ ← Vaults, schedules, Merkle roots
└─────────────────────┘
↓
┌─────────────────────┐
│ ER Layer │ ← Private execution in TEE
│ (TEE) │
└─────────────────────┘
↓
┌─────────────────────┐
│ Coordinator │ ← Automation + off-chain proofs
│ (Server) │
└─────────────────────┘Use Cases
- Payroll - recurring employee payouts
- Vendor payments - hide supplier relationships
- Subscriptions - recurring settlements without publishing the whole recipient set
- Token distributions - private recipient batches