Skip to content

tonbistudio/blindlaunch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blind Launch

Privacy-preserving token launches on Solana.

Built for the Solana Hackathon 2025.

Overview

Blind Launch enables fair token distribution where:

  • Bidders submit encrypted bids - no one sees individual amounts
  • Creators see only the aggregate total committed
  • Claims happen from fresh wallets that are unlinkable to original bidders

This eliminates front-running, whale manipulation, and information asymmetry in token launches.

How It Works

1. CREATE LAUNCH     Creator sets token supply, min bid, auction window

2. SUBMIT BIDS       Users submit encrypted bids with stealth pubkeys
         │           (amounts hidden via Inco TEE)
         │
3. CLOSE WINDOW      VRF randomness determines exact close time
         │           (MagicBlock integration)
         │
4. SET RAISE CAP     Creator sees only aggregate, chooses how much to accept
         │           (Discretionary cap model)
         │
5. CLAIM             Users claim from FRESH wallets using stealth proofs
                     (Original bidder wallet ≠ Claim wallet)

Privacy Features

Feature Description
Encrypted Bids Bid amounts hidden via Inco Lightning TEE
Aggregate-Only Visibility Creator sees total committed, not individual bids
Stealth Claims Claim from fresh wallet unlinkable to bid wallet
VRF Window Close Random close time prevents timing attacks

Sponsor Integrations

Project Structure

blindlaunch/
├── programs/
│   └── blind-launch/        # Solana/Anchor program
│       └── src/
│           ├── lib.rs       # Program entrypoint
│           ├── instructions/# All instruction handlers
│           ├── state/       # Account structures
│           ├── errors.rs    # Custom errors
│           └── events.rs    # Event definitions
├── sdk/                     # TypeScript SDK
│   └── src/
│       ├── client.ts        # Main client
│       ├── crypto/
│       │   ├── stealth.ts   # Stealth address generation
│       │   └── inco.ts      # Inco encryption
│       └── test-e2e.ts      # End-to-end test
└── target/
    └── idl/                 # Generated IDL

Quick Start

Prerequisites

  • Rust 1.70+
  • Solana CLI 1.18+
  • Anchor 0.32+
  • Node.js 18+

Build & Deploy

# Build the program
anchor build

# Deploy to devnet
anchor deploy

# Run the SDK tests
cd sdk
npm install
npm run test:e2e

Program ID (Devnet)

GniUzPXTAMA2xVnX7peYaWPtZ3iawT8RhvjWmhBtzD54

Explorer Links:

SDK Usage

import { Connection, Keypair } from '@solana/web3.js';
import { Program, AnchorProvider, Wallet } from '@coral-xyz/anchor';
import { generateStealthAddress, generateClaimProof } from '@blind-launch/sdk';

// 1. Create a launch
await program.methods
  .createLaunch(tokenSupply, minBid, windowMin, windowMax)
  .accounts({ ... })
  .rpc();

// 2. Submit bid with stealth pubkey
const { stealthPubkey } = generateStealthAddress(bidderPubkey);
await program.methods
  .submitBid(encryptedAmount, encryptedMaxPrice, commitment, stealthPubkey)
  .accounts({ ... })
  .rpc();

// 3. Claim from fresh wallet (unlinkable!)
const freshWallet = Keypair.generate();
const proof = generateClaimProof(launch, bidIndex, freshWallet.publicKey, stealthPubkey);
await program.methods
  .claimAllocation(proof)
  .accounts({ claimant: freshWallet.publicKey, ... })
  .rpc();

Architecture

                                    BLIND LAUNCH FLOW

    ┌──────────────┐                                      ┌──────────────┐
    │   Bidder 1   │──┐                                   │   Claimer 1  │
    │  (Wallet A)  │  │                                   │  (Wallet X)  │◄─┐
    └──────────────┘  │                                   └──────────────┘  │
    ┌──────────────┐  │  encrypted bids                   ┌──────────────┐  │  stealth
    │   Bidder 2   │──┼─────────────────┐                 │   Claimer 2  │◄─┤  proofs
    │  (Wallet B)  │  │                 │                 │  (Wallet Y)  │  │
    └──────────────┘  │                 │                 └──────────────┘  │
    ┌──────────────┐  │                 ▼                 ┌──────────────┐  │
    │   Bidder 3   │──┘         ┌──────────────┐         │   Claimer 3  │◄─┘
    │  (Wallet C)  │            │   Inco TEE   │         │  (Wallet Z)  │
    └──────────────┘            │              │         └──────────────┘
                                │  [encrypted] │                 ▲
                                │  bid storage │                 │
                                └──────┬───────┘                 │
                                       │                         │
                                       │ aggregate               │
                                       │ only                    │
                                       ▼                         │
                                ┌──────────────┐                 │
                                │   Creator    │                 │
                                │              │                 │
                                │ sees: $1M    │                 │
                                │ sets cap:    │                 │
                                │ $800k        │                 │
                                └──────┬───────┘                 │
                                       │                         │
                                       ▼                         │
                    ┌─────────────────────────────────┐          │
                    │      BLIND LAUNCH PROGRAM       │          │
                    │                                 │          │
                    │  • Pro-rata allocation          │──────────┘
                    │  • Stealth verification         │
                    │  • Refund distribution          │
                    │                                 │
                    └─────────────────────────────────┘

    PRIVACY GUARANTEES:
    ✓ No one sees individual bid amounts (encrypted in Inco TEE)
    ✓ Creator sees only aggregate total
    ✓ Claim wallets (X,Y,Z) are UNLINKABLE to bid wallets (A,B,C)

Discretionary Cap Model

The Blind Launch model provides fair price discovery with creator discretion:

  1. Aggregate Revelation - After window closes, creator queries Inco to see only the total amount committed (not individual bids)
  2. Discretionary Cap - Creator sets raise cap based on aggregate (e.g., "I'll accept $800k of the $1M committed")
  3. Pro-Rata Allocation - Tokens distributed proportionally, excess refunded
  4. Stealth Claims - Users claim from fresh wallets, breaking the link to original bidders

Stealth Address System

BIDDING (Wallet A):           CLAIMING (Wallet B):
┌─────────────────┐           ┌─────────────────┐
│ Generate        │           │ New wallet      │
│ stealth_pubkey  │──────────▶│ proves ownership│
│ from secret     │           │ via keccak256   │
└─────────────────┘           └─────────────────┘
        │                             │
        ▼                             ▼
   Store on-chain              Verify proof
   with bid                    Send refund to B

The claim proof is keccak256(stealth_pubkey || launch || bid_index || claimant), which proves knowledge of the stealth secret without revealing the original bidder.

Testing

The E2E test demonstrates the full flow:

cd sdk && npm run test:e2e

Output:

STEP 1: Create Launch ✓
STEP 2: Submit Encrypted Bids (3 bids) ✓
STEP 3: Close Auction Window ✓
STEP 4: Set Raise Cap (0.8 SOL of 1 SOL) ✓
STEP 5: Set Bid Allocations (pro-rata) ✓
STEP 6: Claim from Fresh Wallets ✓
  - Bidder: BX1LLZ97...
  - Claimers: CmhraCDs..., 6XSd1rh..., 44YjXjK...
  - NO ON-CHAIN LINK between them!

Roadmap

  • Full Inco Lightning integration for encrypted bid storage
  • MagicBlock VRF for production window closing
  • Token distribution (currently SOL refunds only)
  • Confidential token transfers via Anoncoin
  • Frontend UI

License

MIT License - see LICENSE

Team

Built by Tonbi Studio for the Solana Hackathon 2025.

Acknowledgments

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published