Privacy-First Settlement Layer for Business on Solana.
Built with ShadowWire SDK, NestJS, React, and MongoDB.
Businesses need privacy, but Blockchains are public.
- Competitors can see how much you pay suppliers.
- Employees can see each other's salaries.
- Bidders can see rival offers in tenders.
ShadowLink is a comprehensive B2B platform enabling confidential transactions for public procurement, supply chain invoices, and corporate payroll using Zero-Knowledge Proofs (Bulletproofs) on Solana Mainnet.
- Blind Bidding: Companies submit encrypted bids. Competitors cannot see amounts, preventing bid sniping and collusion.
- Workflow: Create Tender → Deposit & Bid → Select Winner → Submit Work → Private Payment.
- Verification: ZK-Proofs ensure the bid is valid without revealing the value on-chain.
- Private B2B Payments: Suppliers issue invoices; buyers pay using USD1 via ShadowWire.
- Address Book: Manage verified business contacts.
- Flexible Settlement: Choose between Internal (Shielded-to-Shielded) or External (Shielded-to-Public) transfers.
- Batch Processing: Pay salaries to hundreds of employees with privacy.
- Salary Confidentiality: Employees receive funds, but the amount is hidden from on-chain observers and colleagues.
- Blockchain: Solana (Mainnet), ShadowWire SDK v1.1.5 (WASM), USD1 Token.
- Frontend: React, Vite, Tailwind CSS, Lucide Icons, React Hot Toast.
- Backend: NestJS (Node.js), Mongoose.
- Database: MongoDB (Cloud Atlas).
- Wallet: Phantom (via Solana Wallet Adapter).
- Node.js (v18+)
- MongoDB (Local or Atlas Connection String)
- Phantom Wallet (Solana Mainnet)
git clone https://github.com/denisthe12/shadowlink.git
cd shadowlinkCreate .env files in both client and server directories.
Server (server/.env):
MONGO_URI=mongodb://127.0.0.1:27017/shadowlink_db
PORT=3000Client (client/.env):
# Your Backend URL
VITE_API_URL=http://localhost:3000/api
# Solana RPC (Helius/QuickNode recommended for Mainnet)
VITE_RPC_URL={ADDRESS_RPC}RPC Provider Options: For stable Mainnet performance (especially for Deposits), we recommend using a dedicated RPC with an API Key:
- Helius:
https://mainnet.helius-rpc.com/?api-key=YOUR_API_KEY- Get free API key - Alchemy:
https://solana-mainnet.g.alchemy.com/v2/YOUR_API_KEY- Get free API key - QuickNode:
https://YOUR_ENDPOINT.solana-mainnet.quiknode.pro/YOUR_API_KEY/- Get free API key
Backend:
cd server
npm installFrontend:
cd client
npm installYou need to run both Backend and Frontend terminals.
cd server
npm run start:devServer will start on http://localhost:3000
cd client
npm run devClient will start on http://localhost:5173
- Switch Phantom to Mainnet.
- Ensure you have some SOL for gas and USD1 tokens.
- Click "Deposit" in the header.
- Enter amount (min 5 USD1).
- Approve transaction. This moves funds into the ShadowWire Shielded Pool.
- Go to Supply Chain Invoices.
- Click New Invoice.
- Select Contact (Bill To) and choose Type: External (or Internal if registered).
- Enter Amount and send.
- Switch user (or use another wallet) to Pay.
- Click Pay Now.
- Result: You will see a
tx_signatureproving the transaction was broadcasted to Solana Mainnet via the ShadowWire Relayer.
- Best USD1 Integration: Fully implemented USD1 as the primary settlement token.
- Best Use Case: Solves real-world privacy problems for B2B (Tenders, Payroll).