# pump.fun Meme Token Workshop: Instructor Lab Guide

**Workshop**: Create Your Own Meme Token  
**Duration**: 45 minutes (in-class) + 30-45 min pre-class homework  
**Platform**: pump.fun + Phantom Wallet on Solana Mainnet  
**Date**: 2026-06-05 (VERIFY before delivery)

---

## Timing

| Segment | Slides | Time | Cumulative |
|---------|--------|------|------------|
| Intro + what is pump.fun | 1-2 | 5 min | 5 min |
| Bonding curve + fees | 3-4 | 5 min | 10 min |
| Phantom install and connect | 5 | 5 min | 15 min |
| Token name check | 6 | 2 min | 17 min |
| UI walkthrough | 7 | 3 min | 20 min |
| Live deployment (circulate) | 8 | 10 min | 30 min |
| Solscan verification | 9 | 3 min | 33 min |
| Share addresses + cryptoeco Q | 10 | 2 min | 35 min |
| Fail-state recovery + Q&A | 11 | 5 min | 40 min |
| Key takeaways | 12 | 3 min | 43 min |
| Close + quiz intro | 13-15 | 2 min | 45 min |

**Total: 45 minutes.** If students deploy quickly, spend extra time on slide 10 discussion.

---

## Instructor Pre-Class Checklist

Complete all items at least 24 hours before delivery (2026-06-04):

- [ ] Run full dry-run on your own Phantom wallet (see Instructor Dry-Run Protocol below)
- [ ] Verify SOL/USD rate on CoinGecko; update `pumpfun_facts.json` and `charts/02_fees/chart.py`; rerun `python chart.py` in `charts/02_fees/`
- [ ] Confirm pump.fun creation fee by creating a test token (note actual lamport cost)
- [ ] Verify pump.fun UI has not changed (graduation threshold, field names, ToS)
- [ ] Confirm pump.fun ToS still permits educational/student use
- [ ] Pre-fund 12 student Phantom wallets with 0.5 SOL each (confirm balance shows)
- [ ] Collect and approve all student token names/symbols via Slack/email
- [ ] Prepare shared class document (Google Doc or similar) for students to paste mint addresses
- [ ] Confirm shared class document URL is accessible on classroom PCs
- [ ] Test Phantom installation on a classroom machine (verify not blocked by IT policy)
- [ ] Fill `[FILL DURING DRY-RUN]` placeholders on slide 11 with your dry-run mint address and Solscan URL
- [ ] Archive `pumpfun_facts.json` with actual verified figures (rename with date suffix)

---

## Fail-State Recovery

**Student cannot install Phantom (IT policy or managed device):**
- Student uses observe-only seat; watches neighbor's screen
- Instructor completes a token creation live on the shared instructor wallet
- Student copies the instructor's mint address from the shared class document
- Participation criterion: attendance + copied mint address counts as completing the workshop

**Student wallet shows 0 SOL:**
- Check that the student's Phantom is connected to Mainnet (not Devnet)
- Verify the student is looking at the correct wallet address (not a new wallet)
- If genuinely unfunded: instructor transfers 0.05 SOL from emergency float (enough for 2 creation attempts)
- If transfer fails due to network congestion: student observes; use instructor wallet fallback

**Transaction fails on pump.fun:**
- Retry once after 30 seconds (most failures are transient network issues)
- If second attempt fails: check Solana network status at `status.solana.com`
- If network is degraded: student observes instructor demo; no grade impact
- If pump.fun is down: instructor creates token via Solana CLI on pre-prepared machine (show result on screen)

**Student mints token but Solscan does not show it:**
- Solscan indexing lag is typically under 60 seconds; wait and refresh
- If not found after 2 minutes: check Solana Explorer (`explorer.solana.com`) as backup
- If mint address is incorrect: student checks Phantom activity tab for the exact transaction

**Student runs out of SOL mid-workshop:**
- Maximum cost per creation attempt: ~0.025 SOL
- 0.5 SOL budget allows ~20 attempts; running out is extremely unlikely
- If it happens: instructor emergency float covers one top-up

**Instructor reference token (fill during dry-run):**
- Mint address: `[FILL DURING DRY-RUN]`
- pump.fun URL: `[FILL DURING DRY-RUN]`
- Solscan URL: `[FILL DURING DRY-RUN]`

---

## Instructor Dry-Run Protocol

Run the full creation flow yourself on 2026-06-04 (24 hours before delivery).

1. Open Phantom; confirm connected to Solana Mainnet
2. Note your wallet balance before (SOL)
3. Go to `pump.fun`; click "Create a Coin"
4. Enter test name (e.g., "InstructorTest2026") and symbol (e.g., "IT26")
5. Upload a placeholder image (any 500x500 PNG)
6. Click "Create Coin"; approve in Phantom
7. Record the exact SOL deducted (lamports shown in Phantom activity)
8. Copy the mint address from the pump.fun success screen
9. Open Solscan; paste mint address; confirm fields: Name, Symbol, Supply, Decimals, Mint Authority
10. Note the pump.fun token URL
11. Fill slide 11 placeholders with your mint address and Solscan URL
12. Update `source_snapshot.json` in `charts/02_fees/` with actual figures

---

## Dry-Run Log

Fill in on 2026-06-04 before class.

| Field | Value |
|-------|-------|
| Date and time | FILL |
| SOL/USD rate (CoinGecko) | FILL |
| Actual creation fee (SOL) | FILL |
| Actual creation fee (USD) | FILL |
| Instructor mint address | FILL |
| pump.fun token URL | FILL |
| Solscan URL | FILL |
| pump.fun UI version notes | FILL (any UI changes vs slides) |
| ToS verification | FILL (confirm ToS still valid for educational use) |

---

## Budget Tracking

| Item | Amount (SOL) | Amount (USD) | Notes |
|------|-------------|-------------|-------|
| Instructor dry-run (1 token) | ~0.022 | ~$3 | Creation cost only |
| Student wallets pre-fund (12 × 0.5 SOL) | 6.0 | ~$900 | Students keep wallets after class |
| Emergency float (instructor reserve) | 0.5 | ~$75 | For top-ups and fallback demo |
| **Total session budget** | **~6.52 SOL** | **~$978** | At SOL = $150 (VERIFY) |

**Note**: SOL/USD rate is volatile. Recalculate on delivery day using CoinGecko spot price.  
**GT-2 confirmed budget**: $150 USD session cap (covers dry-run + contingency, NOT student wallets).  
Student wallet funding is a separate line item approved by the department.

---

## Troubleshooting

| Symptom | Likely Cause | Fix |
|---------|-------------|-----|
| Phantom extension not visible after install | Browser restart required | Close and reopen Chrome; Phantom should appear in extensions bar |
| "Transaction simulation failed" on pump.fun | Solana network congestion | Wait 30 seconds; retry once; if persistent check `status.solana.com` |
| pump.fun shows "Please connect wallet" after connecting | Session timeout | Click "Connect Wallet" again; approve in Phantom popup |
| Solscan shows "Account not found" immediately after mint | Indexing lag (normal) | Wait 60 seconds; refresh; try `explorer.solana.com` as backup |
| Student wallet shows 0 SOL despite pre-funding | Student opened a second wallet | Check Phantom: click account icon top-right to verify correct account |
| pump.fun UI looks different from slides | UI update since 2026-06-04 | Walk through current UI live; core flow (name/symbol/image/create) is unchanged |
| Token created but image not showing on pump.fun | IPFS upload delay | Wait 2-3 minutes; image uploads are asynchronous |
| "Insufficient SOL for fees" error | Wallet below minimum rent | Instructor transfers 0.05 SOL from emergency float |
| Phantom seed phrase prompt appearing during class | Student clicked "Reset Wallet" | Do NOT proceed; help student recover; they may need instructor wallet fallback |
| pump.fun "Name already taken" error | Another token has same name | Student appends a number or year to make name unique; re-approve verbally |

---

## Deferred Checks

These items are NOT required before 2026-06-05 delivery but should be completed within 30 days:

- [ ] Verify pump.fun fee structure still matches `pumpfun_facts.json` (monthly)
- [ ] Update `pumpfun_facts.json` with post-delivery actual figures if dry-run revealed discrepancies
- [ ] Archive student mint addresses from the shared class document
- [ ] Check whether any student tokens approached the 69 SOL graduation threshold (educational interest)
- [ ] Review pump.fun ToS for any changes affecting future workshop delivery
- [ ] Update `source_snapshot.json` `verified_date` field to actual verification date

---

## Group coordination protocol

Added 2026-05-20. The workshop now runs in "group mode": the instructor pre-launches ONE pump.fun token before class and the whole class buys small amounts of THAT shared token via Phantom. The instructor projects the read-only Jupyter dashboard (`notebooks/group_buy_dashboard.ipynb`) so the class watches the bonding curve and the 69 SOL Raydium-graduation wall move in real time. The original "observer path" is retained for any student who chooses not to buy with real SOL.

### Instructor pre-launch checklist

- [ ] At least 30 minutes before class, launch ONE pump.fun token from the instructor wallet on Solana mainnet. Use a course-themed name and symbol (avoid trademarked terms).
- [ ] Record the mint address (the base58 string) somewhere students can paste it from (Slack pin, classroom whiteboard, shared doc).
- [ ] Seed the curve with a small initial buy (~1 to 2 SOL) so the bonding-curve account exists and the dashboard has a state to render before students arrive.
- [ ] Open `notebooks/group_buy_dashboard.ipynb`, paste the mint address into the Configuration cell, run cells top-to-bottom, and confirm: the bonding-curve PDA prints; the live dashboard polls without error; the SOL/USD CoinGecko fetch returns a number.
- [ ] Set up screen-sharing so the dashboard is visible to the whole room throughout the buying segment.

### Student protocol

1. Open Phantom (browser wallet) and confirm the pre-funded 0.5 SOL balance.
2. Copy the instructor's mint address.
3. In Phantom (or pump.fun via Phantom), paste the mint address and buy a small amount.
4. Recommended buy size per student: 1 to 2 SOL. The math is `~30 students x ~2 SOL = ~60 SOL`, deliberately just below the 69 SOL Raydium graduation threshold so the class experiences the coordination gap.
5. Observer path retained: any student may instead paste the instructor's mint into the shared GitHub issue and mark themselves "observed" without buying. They still get credit and still get to see the dashboard.

### Dashboard launch command

From the repo root, in a shell with `solana`, `solders`, `matplotlib`, and `requests` installed:

```
jupyter notebook lectures/meme_coin_pumpfun_project/notebooks/group_buy_dashboard.ipynb
```

Or open the file in JupyterLab / VS Code / Colab. The notebook is READ-ONLY against the chain (no transaction signing, no private keys); students may safely run it locally as well to follow along.

### Why this is the right design

The deck's central thesis is that meme-token value is a coordination problem. The original solo-token workshop demonstrated the problem in the negative (every student ended up with a near-zero token). Group mode demonstrates it in the positive (or the failed-positive): a fully briefed and aligned class of 30 has the deck's recommended budget to deploy, but is structurally 9 SOL short of graduation. Whether the class stalls at 30 SOL, pushes to 60, or graduates (via a non-class actor or one big buyer) the takeaway is the same: even with full alignment, coordination is hard.
