PokeDAO
PokeDAO
Documentation v1.0

How PokeDAO Works

A decentralized autonomous organization for community-governed Pokemon card investments on Solana.

System Architecture

┌─────────────────────────────────────────────────────────────────────┐
│                         PokeDAO Protocol                            │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────────────┐    │
│   │   Frontend  │───▶│  Solana RPC │───▶│  Mainnet Programs   │    │
│   │  (Next.js)  │    │  (Helius)   │    │  - Memo Program     │    │
│   └─────────────┘    └─────────────┘    │  - Token Program    │    │
│         │                               │  - SPL Associated   │    │
│         │                               └─────────────────────┘    │
│         ▼                                                          │
│   ┌─────────────┐    ┌─────────────┐    ┌─────────────────────┐    │
│   │  Card Data  │◀───│ Price Feed  │◀───│  CollectorCrypt API │    │
│   │   Cache     │    │  (TCG API)  │    │  (Market Data)      │    │
│   └─────────────┘    └─────────────┘    └─────────────────────┘    │
│                                                                     │
│   ┌─────────────────────────────────────────────────────────────┐  │
│   │                    Treasury Wallet                          │  │
│   │   Address: 5dfiW1dacaFQE1D9y42EG37aEJZRNiUhSkQpxfB7FgZq     │  │
│   │   Holdings: SOL + USDC (Real-time balance tracking)         │  │
│   └─────────────────────────────────────────────────────────────┘  │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Protocol Flow

STEP 1

Token Acquisition

Users acquire a minimum of 3,000 $POKE tokens to become eligible DAO members. Token holdings are verified on-chain via SPL Token Program queries against the configured voting token mint address.

// Token verification
const balance = await getAccount(connection, associatedTokenAddress);
const isEligible = Number(balance.amount) >= 3000;
STEP 2

Proposal & Voting

Eligible members can suggest Pokemon cards to purchase using real-time market data from CollectorCrypt API. Proposals are submitted on-chain via Solana Memo transactions, creating an immutable record of all governance actions.

// On-chain vote submission
const tx = new Transaction().add(
  new TransactionInstruction({
    programId: "MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcQb",
    data: Buffer.from(`Vote YES on Proposal $${proposalId$}`)
  });
);
STEP 3

Automated Execution

Once a proposal reaches the required vote threshold and the voting period ends, the purchase is automatically executed. The system validates that the card price does not exceed the DAO treasury balance before initiating the transaction.

// Treasury balance validation
const daoBalance = (solBalance * solPrice) + usdcBalance;
if (cardPrice > daoBalance) throw "Insufficient funds";
STEP 4

Real-Time Portfolio Tracking

The DAO portfolio displays real-time valuations with live price feeds updated every 2 seconds. Each card shows purchase price, current market value, and calculated PnL percentage. When a card appreciates in value, any member can initiate a sell proposal.

// PnL calculation
const pnl = ((currentPrice - purchasePrice) / purchasePrice) * 100;
const isProfitable = currentPrice >= purchasePrice;
STEP 5

Profit Distribution

When a sell proposal passes and the card is sold at a profit, the gains are distributed proportionally to all voters who participated in the original buy proposal. Distribution is calculated based on voting power (token holdings at time of vote).

// Profit distribution formula
const profit = salePrice - purchasePrice;
const voterShare = (voterTokens / totalVoterTokens) * profit;

Technical Stack

Next.js 16

Frontend Framework

Solana Web3.js

Blockchain SDK

Helius RPC

Node Infrastructure

CollectorCrypt

Card Market Data

Tailwind CSS

Styling

TypeScript

Type Safety