Solana Plays
Meme token launches, pump.fun activity, and Solana strategy research
Launcher Script
Ready
Mode
DRY RUN
Target Platform
pump.fun
Strategy
Meme Launch
🚀 Meme Token Launch Strategy
LAUNCH MECHANICS
Platformpump.fun (Solana)
Token Supply1,000,000,000 (1B)
Initial Liquidity0.1 SOL dev buy
Bonding CurveAuto via pump.fun
Graduation TargetRaydium (69 SOL threshold)
Script Status✓ Built (dry-run)
Go-LiveAwaiting manual approval
CHARACTER PIPELINE
Based Bobby● Bible Done
Bitcoin Billionaire on Base
Token 2● Pending
TBD by Mev
Token 3● Pending
TBD by Mev
🛠 Launcher Script Preview (tools/solana_launcher.py)
DRY RUN ONLY
#!/usr/bin/env python3
"""
solana_launcher.py — Solana meme token launcher for Project Alpha
Supports two modes:
1. pump.fun launch (recommended — zero creator cost, auto-graduation)
2. SPL-only creation (for Raydium CPMM or custom pools — NOT IMPLEMENTED YET)
SAFETY DEFAULTS:
--dry-run is ON by default. Pass --execute to send real transactions.
All real-money actions require explicit Mev approval.
Usage:
# Dry run with Bobby config (default)
python3 tools/solana_launcher.py --config projects/alpha/launch_configs/bobby.json
# Estimate costs only
python3 tools/solana_launcher.py --config projects/alpha/launch_configs/bobby.json --estimate
# Upload metadata to IPFS (Pinata) — no blockchain tx
python3 tools/solana_launcher.py --config projects/alpha/launch_configs/bobby.json --upload-metadata
# REAL LAUNCH (requires explicit flag + env vars set)
python3 tools/solana_launcher.py --config projects/alpha/launch_configs/bobby.json --execute
Author: Otto (Project Alpha)
Date: 2026-02-21
"""
import argparse
import json
import os
import sys
import time
import hashlib
from pathlib import Path
from typing import Optional
import httpx
# Load .env from alpha project if present
_alpha_env = Path(__file__).parent.parent / "projects" / "alpha" / "bot" / ".env"
if _alpha_env.exists():
from dotenv import load_dotenv as _load_dotenv
_load_dotenv(_alpha_env)
# ─── Config ──────────────────────────────────────────────────────────────────
HELIUS_API_KEY = os.environ.get("HELIUS_API_KEY", "")
HELIUS_RPC_URL = (
f"https://mainnet.helius-rpc.com/?api-key={HELIUS_API_KEY}"
if HELIUS_API_KEY
else "https://api.mainnet-beta.solana.com"
)
PINATA_JWT = os.environ.get("PINATA_JWT", "")
PINATA_API_URL = "https://api.pinata.cloud"
PUMPPORTAL_BASE = "https://pumpportal.fun/api"
JUPITER_QUOTE_URL = "https://quote-api.jup.ag/v6/quote"
RUGCHECK_URL = "https://api.rugcheck.xyz/v1/tokens"
# SOL price estimate for cost display (updated manually or from API)
SOL_USD_ESTIMATE = 170.0
# ─── Cost estimates (SOL) ────────────────────────────────────────────────────
COSTS = {
"spl_mint_account": 0.00144, # 82 bytes rent-exempt
"spl_metadata_account": 0.015, # Metaplex PDA ~679 bytes
"pumpfun_creation_fee": 0.02, # First buyer cost (creator free)
"jito_bundle_tip": 0.005, # Anti-bot bundle tip
"raydium_cpmm_pool": 0.20, # Pool creation (CPMM, no OpenBook needed)
"tx_fees_estimate": 0.001, # 3-5 transactions
}
# ─── Helpers ─────────────────────────────────────────────────────────────────
def sol_to_usd(sol: float) -> str:
return f"${sol * SOL_USD_ESTIMATE:.2f}"
def print_section(title: str):
print(f"\n{'─' * 60}")
print(f" {title}")
print('─' * 60)
def confirm(prompt: str) -> bool:
resp = input(f"{prompt} [yes/no]: ").strip().lower()
return resp in ("yes", "y")
# ─── Config loader ──────────────────────────────────────📋 Meme Launch Research Notes
# Solana Meme Token Launch Infrastructure
**Research Date:** 2026-02-21
**Status:** Research complete — actionable within 1 week
**Author:** Otto (task research)
---
## TL;DR
- **Easiest path:** pump.fun — zero cost to creator, live in minutes, auto-graduates to PumpSwap at ~$69k market cap
- **Best for control:** Raydium CPMM direct — ~1.5–6 SOL total, full customization
- **For Bobby specifically:** pump.fun launch + Jito bundle to protect creator allocation from bots
- **Copy trading:** Helius webhooks (already have key) + Birdeye PnL API for wallet discovery
- **Total launch cost estimate:** 0.02–2 SOL depending on platform + optional initial buy
---
## 1. Launch Platforms
### pump.fun (Recommended — Dominant Platform)
**How it works:**
- Creator deploys token at **zero cost** — the first buyer pays ~0.02 SOL ($2–3) for token creation
- 1B total supply: 800M on bonding curve for sale, 200M reserved for graduation LP
- Constant-product AMM with **virtual reserves** (30 SOL / 1.073B tokens at start)
- Initial price: ~0.0000000280 SOL/token (~$0.000004)
- Trades happen on the bonding curve until 800M tokens are sold
- **Graduation:** When bonding curve fills (~85 SOL total volume), token automatically migrates to **PumpSwap** (pump.fun's own DEX, launched March 2025)
- Creator earns **+0.5 SOL bonus** at graduation
**Fees (Project Ascend model):**
| Market Cap | Trading Fee |
|---|---|
| Under $300k | 0.95% |
| Scaling up | Sliding scale |
| Over $20M | 0.05% |
| PumpSwap post-graduation | 0.25% (0.2% LPs, 0.05% protocol) |
**Why it works for memes:**
- Zero friction, massive distribution (handles 80%+ of Solana new token launches)
- DEX Screener auto-lists immediately
- Community knows the pump.fun flow — any CT (Crypto Twitter) participant can buy instantly
- LP permanently locked at graduation — rug-proof after bonding curve fills
**Limitation:** You cannot pre-allocate tokens to yourself; pump.fun prohibits presales. All supply goes through the bonding curve. Bots will snipe the first blocks unless you use a Jito bundle.
---
### Moonshot / moon.it (DEX Screener Native)
- No-code launch built into DEX Screener's ecosystem
- **Graduation threshold: 500 SOL** — much higher than pump.fun
- Upon graduation, liquidity migrates to **Raydium** and LP tokens are burned
- Native visibility on DEX Screener platform
- Suitable if the token concept aligns with DEX Screener's community
**When to use:** When targeting traders who live on DEX Screener and want Raydium liquidity.
---
### Meteora Dynamic Bonding Curve
- Open-source bonding curve program — fully customizable
- **Anti-sniping fees:** Fee starts at 50% at launch, drops exponentially over 120 minutes to 0.25% permanently
- Creator earns fees on locked liquidity indefinitely (LP locked, fee revenue not locked)
- TVL: $1.1B+, growing rapidly
- **Alpha Vault:** Anti-sniping tool for fair distribution
**When to use:** Larger, more serious launches where you want fee customization and anti-bot protection baked in. Overkill for a first meme launch.
---
### Raydium CPMM (Direct Pool Creation)
- Create a liquidity pool directly without a launchpad
- Full control over initial price, liquidity, and supply allocation
- **Cost:** ~0.15–0.3 SOL pool creation + however much liquidity you seed
- Supports Token-2022 standard
- No OpenBook market ID required (vs older AMM V4 which needed ~1.5–2 SOL extra)
**When to use:** When you want creator allocation (buy tokens before opening pool) and full control. Requires Jito bundle to atomically seed LP + make initial buy.
---
### Jupiter LFG — NOT FOR MEMES
Jupiter LFG is a curated, DAO-voted launchpad for serious DeFi projects. Requires community forum post, discussion period, and JUP token holder vote. Not suitable for meme launches.
---
## 2. SPL Token Creation — Technical Steps
### What Gets Created On-Chain
| Account | Size | Cost (SOL) | Purpose |
|---|---|---|---|
| Mint Account | 82 bytes | ~0.00144 SOL | Stores supply, decimals, mint/freeze authority |
| Metadata Account (Metaplex PDA) | ~679 bytes | ~0.01–0.015 SOL | Name, symbol, URI pointer |
| Token Account (per holder) | 165 bytes | ~0.002 SOL | Holds token balance for each wallet |
**Total bare minimum:** ~0.015 SOL for the token to exist (no liquidity)
### Token Parameters for Meme Launches
```
decimals: 6 (pump.fun standard)
supply: 1,000,000,000,000,000 (1B * 10^6)
mint_authority: revoked after mint (builds trust)
freeze_authority: null (honeypot prevention)
update_authority: revoked for immutability (or keep to update metadata)
```
### Metadata JSON (Upload to IPFS First)
```json
{
"name": "Based Bobby",
"symbol": "BOBBY",
"description": "Bitcoin Billionaire. Base Chain educator. Bringing a billion people on-chain.",
"image": "https://ipfs.io/ipfs/QmXXX.../bobby_logo.png",
"external_url": "https://basedbobby.xyz",
"extensions": {
"twitter": "https://x.com/basedbobby",
"telegram": "https://t.me/basedbobbygroup",
"discord": "https://discord.gg/basedbobby",
"website": "https://basedbobby.xyz"
}
}
```
### Programmatic Token Creation (TypeScript + Metaplex Umi)
```bash
npm install @metaplex-foundation/umi \
@metaplex-foundation/mpl-token-metadata \
@metaplex-foundation/umi-bundle-defaults \
@solana/web3.js
```
```typescript
import { percentAmount, generateSigner, signerIdentity, createSignerFromKeypair } from '@metaplex-foundation/umi'
import { TokenStandard, createAndMint, mplTokenMetadata } from '@metaplex-foundation/mpl-token-metadata'
import { createUmi } from '@metaplex-foundation/umi-bundle-defaults'
const umi = createUmi('https://mainnet.helius-rpc.com/?api-key=YOUR_HELIUS_KEY');
const userWallet = umi.eddsa.createKeypairFromSecretKey(new Uint8Array(secretKeyArray));
const userWalletSigner = createSignerFromKeypair(umi, userWallet);
umi.use(signerIdentity(userWalletSigner));
umi.use(mplTokenMetadata());
const mint = generateSigner(umi);
await createAndMint(umi, {
mint,
authority: umi.identity,
name: "Based Bobby",
symbol: "BOBBY",
uri: "https://ipfs.io/ipfs/QmXXX.../metadata.json",
sellerFeeBasisPoints: percentAmount(0),
decimals: 6,
amount: 1_000_000_000_000_000n, // 1B tokens
tokenOwner: userWallet.publicKey,
tokenStandard: TokenStandard.Fungible,
}).sendAndConfirm(umi);
// After mint: revoke mint authority to prevent inflation
// await setAuthority(umi, { mint, authority: umi.identity, authorityType: 'MintTokens', newAuthority: null })
```
### Revoking Mint Authority (Trust Signal)
After minting total supply, revoke mint authority so no more tokens can ever be created:
```typescript
import { setAuthority, AuthorityType } from '@solana/spl-token'
// authorityType: AuthorityType.MintTokens, newAuthority: null
```
---
## 3. Pump.fun Bonding Curve — Technical Detail
### Formula
```
k = virtual_sol_reserves * virtual_token_reserves
= 30 * 1,073,000,191
= 32,190,005,730 (constant)
Initial price = 30 SOL / 1,073,000,191 tokens ≈ 0.0000000280 SOL/token
Tokens received for x SOL:
y = 1,073,000,191 - 32,190,005,730 / (30 + x)
```
### Supply Distribution
| Allocation | Amount | Notes |
|---|---|---|
| Bonding curve (for sale) | 800,000,000 | Public buys through this |
| Graduation LP | 200,000,000 | Locked in PumpSwap at graduation |
| Dev/creator allocation | 0 | Prohibited by pump.fun |
### Graduation
- Occurs when all 800M bonding curve tokens are purchased
- ~85 SOL of real SOL accumulated → ~79 SOL net after fees seeds PumpSwap pool
- Market cap at graduation: ~$69,000 (varies with SOL price)
- LP permanently locked — no rug possible post-graduation
- Creator earns **+0.5 SOL bonus** automatically
---
## 4. Cost Summary
### By Launch Method
| Method | Creator Cost | Min Initial Buy | Notes |
|---|---|---|---|
| pump.fun (fair launch) | **0 SOL** | 0 SOL (optional) | First buyer pays ~0.02 SOL |
| pump.fun + creator initial buy | ~0.02–1+ SOL | Creator's choice | Get token⚠ All Solana launches are DRY RUN only. No actual transactions will be executed until Mev explicitly approves go-live. Launcher script requires SOL wallet funding and explicit authorization before live deployment.