Fund anyone on Reddit through pump.fun token trading fees.
PumpGrant lets you create tokens on pump.fun where trading fees automatically flow to a Reddit user's wallet. The beneficiary verifies their Reddit account by posting a unique code on their profile, connects their wallet, and claims their accumulated SOL.
PumpGrant uses a simple, trustless verification method — no OAuth or API keys required:
- User enters their Reddit username
- PumpGrant generates a unique code (e.g.
PUMP-A7X3-GRANT) - User posts the code as a comment or post on their Reddit profile
- PumpGrant checks the user's public Reddit profile for the code
- If found → verified! User can connect wallet and claim funds
This approach requires no Reddit API credentials and works entirely through public profile data.
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ pump.fun │────▸│ Platform │────▸│ Fee Monitor │
│ Token Trades│ │ Wallet (SOL) │ │ Bot │
└─────────────┘ └──────────────┘ └────────┬────────┘
│
▼
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ Reddit User │────▸│ Claim API │────▸│ SQLite DB │
│ (Beneficiary)│ │ (Next.js) │ │ (Campaigns, │
└─────────────┘ └──────┬───────┘ │ Verifications,│
│ │ Fee Events, │
▼ │ Claims) │
┌──────────────┐ └─────────────────┘
│ SOL Transfer │
│ to Beneficiary│
└──────────────┘
| Component | Description |
|---|---|
| Next.js App | Web UI + API routes for campaigns, verification, claiming |
| Fee Monitor Bot | Standalone process that watches the platform wallet for incoming SOL |
| Platform Wallet | Server-side Solana keypair that receives fees and disburses claims |
| SQLite DB | Local database tracking campaigns, verifications, fee events, and claims |
npm installnpm run setupThis will:
- Generate a new Solana keypair (saved to
platform-wallet.json) - Print the public address
- Request a devnet airdrop (2 SOL) for testing
cp .env.example .env.localEdit .env.local with your settings. For development, the defaults work with devnet.
npm run devOpen http://localhost:3000.
In a separate terminal:
npm run botThe bot polls the platform wallet every 30 seconds for incoming SOL transfers.
Run the full end-to-end test:
npm run test:flowThis will:
- Generate a test wallet
- Airdrop SOL to it
- Send SOL to the platform wallet (simulating fees)
- Run fee detection
- Create a test campaign
- Claim fees to a test wallet
- Verify the transaction
- Clean up
| Variable | Default | Description |
|---|---|---|
SOLANA_RPC_URL |
https://api.devnet.solana.com |
Solana RPC endpoint |
SOLANA_NETWORK |
devnet |
Network name (devnet or mainnet-beta) |
PLATFORM_WALLET_PRIVATE_KEY |
— | Base58 or JSON array private key (optional if using platform-wallet.json) |
ENCRYPTION_SECRET |
— | Secret for encrypting stored wallet keys |
FEE_CHECK_INTERVAL_MS |
30000 |
Bot polling interval in milliseconds |
- POST /api/verify/generate — Generate a verification code for a Reddit username
- POST /api/verify/check — Check if the code was posted on the user's Reddit profile
- GET /api/campaigns — List campaigns (filter by
?reddit_username=) - POST /api/claim — Claim accumulated SOL (requires verified Reddit account)
The fee monitor bot runs as a standalone Node.js process:
# Development
npm run bot
# Production (with tsx)
npx tsx src/bot/index.ts
# Production (compiled)
npx tsc && node dist/bot/index.jsFor production, consider running it with a process manager:
# PM2
pm2 start "npm run bot" --name pumpgrant-bot
# systemd (Linux)
# Create a service file at /etc/systemd/system/pumpgrant-bot.servicesrc/
├── app/ # Next.js pages and API routes
│ ├── api/
│ │ ├── campaigns/ # Campaign CRUD
│ │ ├── claim/ # Fee claiming (real SOL transfer)
│ │ ├── verify/ # Reddit verification (generate + check)
│ │ ├── verify-token/ # On-chain token verification
│ │ └── ...
│ └── ...
├── bot/
│ ├── index.ts # Bot entry point
│ └── fee-monitor.ts # Fee monitoring logic
├── components/ # React components
├── lib/
│ ├── crypto.ts # Encryption utilities
│ ├── db.ts # SQLite database
│ ├── pumpfun.ts # Token-2022 verification & pump.fun helpers
│ ├── solana.ts # Solana transaction utilities
│ └── wallet.ts # Platform wallet management
└── scripts/
├── setup.ts # Initial setup script
└── test-flow.ts # Devnet end-to-end test
- Never commit
platform-wallet.json— it contains your private key - Use devnet for development and testing
- Back up your wallet before deploying to mainnet
- The platform wallet holds all unclaimed fees — secure it accordingly
- Reddit verification is public and stateless — no OAuth tokens stored
MIT