B2B Payments
In the Shadows.
Every on-chain invoice is a public leak. GhostPay uses Cloak ZK-proofs to hide your treasury flows, payroll, and vendor costs while keeping your auditor happy.
Zero Knowledge
Amounts and addresses never hit the public ledger. Your business strategy stays your business.
Scoped Audits
Share viewing keys with auditors for selective transparency without d-oxing your entire history.
Instant Proofs
Generate Groth16 proofs in seconds directly in your browser. No server needed.
How It Works
End-to-end privacy for B2B transactions powered by Solana and ZK-SNARKs.
Invoice Creation
Draft invoices normally. Data is encrypted and stored in Supabase, keeping the metadata off-chain and fully private.
Shielding Funds
Solana SOL or USDC is converted into UTXOs within the Cloak Shielded Pool. No link to your public address.
ZK Proof Generation
Groth16 proofs are generated locally in your browser. Transaction validity is proven without revealing amounts or parties.
Selective Audit
Generate a unique Viewing Key specific to a transaction to prove compliance to an auditor without leaking all history.
Technical Architecture
Next.js & Turbopack
High performance frontend delivering instantaneous interactions with Neo-Brutalist aesthetics.
Cloak SDK Integration
Under the hood, @cloak.dev/sdk manages the UTXO set and merkle tree syncing with the Solana Devnet.
Supabase Backend
Realtime database layer powering live invoice updates with row-level security ensuring strict data access controls.
// Generating a UTXO for payment
const amountLamports = BigInt(invoice.amount * 1e9);
const owner = await generateUtxoKeypair();
const output = await createUtxo(amountLamports, owner);
// Depositing to the Shielded Pool
const deposited = await transact({
inputUtxos: [await createZeroUtxo()],
outputUtxos: [output],
externalAmount: amountLamports,
depositor: publicKey,
}, { programId: CLOAK_PROGRAM_ID });
// Private Transfer via Full Withdraw
await fullWithdraw(deposited.outputUtxos, recipient);