IM
Hackathon Project

Obsidian

Privacy-preserving token launchpad on Solana with encrypted bidding and fair allocation.

RustSolanaAnchorArcium TEETypeScriptNext.js

Overview

The Problem

Token launches on public blockchains have a critical flaw: transparency enables manipulation. Front-running bots can see pending bids and outbid legitimate participants. Large players collude to extract value. The result is unfair distribution and eroded trust.

The Trust Model

Obsidian introduces a trustless blind auction protocol. Bids are encrypted client-side using x25519 ECDH + RescueCipher before leaving the browser. The encrypted ciphertext is stored on-chain as opaque data. Arcium's decentralized MPC cluster jointly decrypts and computes the auction result without any single node ever seeing a plaintext bid.

Architecture

┌─────────────────────────────────────────────────────────────────┐
│                         FRONTEND                                │
│       Next.js → x25519 ECDH + RescueCipher.encrypt()            │
└─────────────────────────────────────────────────────────────────┘
                               │ (Encrypted Bid + Nonce)
                               ▼
┌─────────────────────────────────────────────────────────────────┐
│                     SOLANA BLOCKCHAIN                           │
│  ┌─────────────────┐    ┌─────────────────┐    ┌──────────────┐ │
│  │ Anchor Program  │ →  │ queue_comp()    │ →  │ Arcium       │ │
│  │ (Rust)          │    │ (CPI)           │    │ Mempool      │ │
│  └─────────────────┘    └─────────────────┘    └──────────────┘ │
└──────────────────────────────▲──────────────────────────────────┘
                               │
            (SignedOutputs)    │    (Pickup Encrypted Computation)
                               │                  │
┌──────────────────────────────┴──────────────────▼───────────────┐
│                      ARCIUM MPC CLUSTER                         │
│  ┌─────────────────┐    ┌─────────────────┐                     │
│  │ Joint Decrypt   │ →  │ Arcis Circuit   │ → Fair Allocation   │
│  │ (Threshold)     │    │ (verify_bid)    │                     │
│  └─────────────────┘    └─────────────────┘                     │
└─────────────────────────────────────────────────────────────────┘

Frontend Layer

Performs x25519 DH key exchange with the MXE returning a shared secret to encrypt bids using Rescue-Prime sponge cipher before submission.

Privacy Layer

Arcium MPC cluster requires threshold participation for joint decryption. Circuits defined in Arcis DSL process the bids blindly.

Settlement Layer

Solana smart contracts handle token distribution based on TEE-computed results.

Tech Stack

Every tool was chosen for a specific reason:

Rust + Anchor

Solana programs require Rust. Anchor provides type-safe macros and reduces boilerplate by 50%+. The strict type system catches bugs at compile time - critical for financial code.

Arcium MPC / Arcis

Hardware-independent Multi-Party Computation. Uses Enc<Mxe, T> data types where no single node sees plaintext. Ensures 128-bit security algebraically efficient in MPC.

Next.js + TypeScript

SSR for SEO, file-based routing for speed. TypeScript catches type errors during development - essential when handling wallet interactions and token amounts.

Solana

Sub-second finality and $0.001 transactions. For a launchpad handling many small bids, Ethereum gas costs would be prohibitive. Solana enables micro-participation.

How It Works

1. Dark Launchpad

Connect your wallet to the main interface. The "Dark Launchpad" emphasizes privacy-first design.

Obsidian Dark Launchpad

2. Confidential Bidding

Enter your bid in USDC. The amount is encrypted client-side before on-chain submission.

Obsidian bidding interface

3. Claim Tokens

After auction completion, claim your allocation. Bid amounts remain encrypted even post-auction.

Obsidian token claim

Challenges

Cross-Program Invocation Complexity

Problem: Coordinating between the main auction program, SPL token program, and TEE verification required careful account management.

Solution: Used Program Derived Addresses (PDAs) with deterministic seeds. Each state transition validates all required signers, preventing unauthorized mutations.

Client-Side Encryption

Problem: Encrypting bids in the browser while maintaining compatibility with TEE decryption.

Solution: Implemented hybrid encryption - RSA for key exchange, AES for bid payload. The TEE public key is fetched on page load and cached.

Hackathon Time Constraints

Problem: Building a full privacy system in 48 hours.

Solution: Focused on the core flow (bid → encrypt → allocate → claim). Deferred features like auction creation UI and multi-token support.

Results

What Works Today

  • • Full encrypted bidding flow on Solana Devnet
  • • Wallet connection (Phantom, Solflare)
  • • Real-time auction state updates
  • • Token claim functionality
  • • Responsive UI across devices

Planned Next

  • • Mainnet deployment with audited contracts
  • • Auction creation dashboard for project teams
  • • Multi-token and NFT launch support
  • • On-chain governance for platform parameters
  • • Mobile-optimized progressive web app

Explore Obsidian

See privacy-preserving token launches in action

Launch App