Sol-Link is a privacy-first application that enables users to send SOL anonymously via secure, shareable links. Powered by Privacy Cash's zero-knowledge proofs and Helius RPCs, Sol-Link ensures that the sender and receiver addresses remain unlinkable on-chain.
🚀 Built for the Solana Privacy Hackathon 2026
On public blockchains like Solana, every transaction is visible.
- Sender & Receiver are public: Anyone can trace a payment back to you.
- Transaction History is open: Your financial fingerprint is exposed.
- No private gifting: You can't send money to a friend without them knowing your wallet address.
Sol-Link solves this by breaking the on-chain link between the depositor and the recipient using cryptographic "Notes" and Zero-Knowledge principles.
The sender connects their wallet and deposits SOL into the Sol-Link protocol.
- The app generates a random Secret Key locally.
- A Note (UTXO) is created representing the deposit amount.
- The SOL is sent to a shared Vault Program.
- The app embeds the Secret Key into a unique, shareable URL.
- Crucial: This key is never sent to the server. It lives only in the link as a URL Fragment (
#) and the user's clipboard. This prevents server-side logging of keys.
- The sender shares the link with the recipient via any secure channel (Signal, WhatsApp, Telegram, Email).
- The recipient opens the link.
- The app extracts the Secret Key from the URL fragments.
- It derives the proofs needed to authorize the withdrawal.
- The funds are "swept" from the Vault directly to the recipient's wallet (or a fresh wallet for max privacy).
sequenceDiagram
participant Sender
participant SolLink as Sol-Link App
participant Helius as Helius RPC
participant Vault as Vault/Smart Contract
participant Recipient
note over Sender, SolLink: 1. Shielding Phase (Powered by Privacy Cash)
Sender->>SolLink: Connect Wallet & Enter Amount
SolLink->>SolLink: [Privacy Cash] Generate Secret & UTXO Note
SolLink->>Helius: Check Account Balance
SolLink->>Vault: Deposit SOL (Public Tx via Helius)
Vault-->>SolLink: Confirm Deposit
note over Sender, Recipient: 2. Sharing Phase
SolLink-->>Sender: Generate Magic Link (contains Secret)
Sender->>Recipient: Share Link (Off-chain)
note over Recipient, Vault: 3. Sweeping Phase
Recipient->>SolLink: Click Link
SolLink->>Helius: Query Chain State
SolLink->>SolLink: [Privacy Cash] Reconstruct Keypair
SolLink->>SolLink: [Privacy Cash] Generate ZK Proof
SolLink->>Vault: Submit Proof & Withdraw Request
Vault->>Vault: Verify Proof
Vault-->>Recipient: Transfer SOL (Public Tx)
Sol-Link relies heavily on the core cryptographic primitives provided by the Privacy Cash SDK. We have integrated key components directly into our application logic to ensure robust privacy.
-
🔑
keypair.ts(Shielded Keys):- We use the SDK's keypair generation to create ephemeral shielded addresses specifically for each deposit note.
- This ensures that the keys controlling the funds are distinct from the user's main wallet.
-
🧾
utxo.ts(Note Management):- Implements the UTXO (Unspent Transaction Output) model from Privacy Cash.
- Every deposit is treated as a discrete "Note" object containing the amount, blinding factor, and owner credentials.
-
🌳
merkle_tree.ts(Commitments):- Uses Merkle Trees to store commitments of deposited notes.
- This allows us to prove membership (that a deposit exists) without revealing which deposit is being spent.
-
🕵️
prover.ts(ZK Proofs):- Leverages
snarkjsandcircomlibto generate Zero-Knowledge Proofs client-side. - These proofs verify that the user possesses the valid secret key for a note in the Merkle tree without revealing the key itself.
- Leverages
Sol-Link requires extremely stable and fast connection to the Solana blockchain to ensure the user experience of "Magic Links" feels instant. We use Helius RPCs exclusively for:
- 🏎️ Instant State Queries: Fetching the latest Merkle Tree state and inclusion paths via
getAccountInfowith zero latency. - ✅ Reliable Confirmations: We heavily leverage Helius's optimized transaction propagation to ensure the "Sweep" transaction (which contains the ZK proof) is confirmed in seconds, preventing users from seeing "Transaction Expired" errors.
- 🛡️ Rate Limit Protection: Privacy operations often require multiple sequential RPC calls; Helius ensures we don't hit public node limits.
- Frontend: Next.js 14, React 19, TailwindCSS, Framer Motion
- Blockchain Interaction:
@solana/web3.js,@solana/wallet-adapter - Privacy & Cryptography:
circomlib,snarkjs,ffjavascript - Infrastructure: Helius RPC for high-speed transaction confirmations and state queries.
- Styling: Custom design system using Syne & Bricolage Grotesque fonts.
-
Clone the repository
git clone https://github.com/NikhilRaikwar/SolLink.git cd sol-link -
Install Dependencies
pnpm install # or npm install -
Configure Environment Create a
.env.localfile and add your Helius RPC URL:NEXT_PUBLIC_HELIUS_RPC_URL=https://devnet.helius-rpc.com/?api-key=YOUR_KEY
-
Run Development Server
pnpm dev
-
Open in Browser Visit
http://localhost:3000to start shielding SOL!
We are targeting the following tracks in the Solana Privacy Hack 2026:
- Track 01: Private Payments: Enabling private, unlinkable value transfer.
- Privacy Cash: For "Best Integration" by porting and utilizing the core UTXO/Prover SDK logic (
src/lib/privacy-cash). - Helius: For "Best Privacy Project" leveraging Helius RPCs for performant, lag-free user experiences during claim sweeps.
Built with ❤️ by the Sol-Link Team
