Perpetual-backed token derivatives on Solana
Website · How It Works · Architecture · Getting Started · API · Contributing
Fission is a protocol that transforms memecoin creator fees into automated perpetual positions. Creators launch tokens on Pump.fun with fees routed to the Fission engine, which autonomously opens perp positions on Jupiter Perps, executes buybacks via Jupiter, and manages risk — all without vaults or deposits.
Creator launches token Fission verifies Engine runs
on Pump.fun with 100% on-chain config autonomously
fees → Protocol wallet and registers token 24/7
| | |
v v v
+----------------+ +-------------------+ +-------------------+
| Pump.fun | | Registration | | Autonomous |
| |---fees--->| |--ok-->| Engine |
| Fee Share | | PDA Derivation | | |
| 100% -> PWA | | Admin Revoked? | | Fee Claimer |
| Admin = x | | Allocation OK? | | Position Mgr |
+----------------+ +-------------------+ | Buyback Engine |
| Risk Manager |
+-------------------+
| Step | Action | Detail |
|---|---|---|
| 01 | Launch on Pump.fun | Deploy your token with 100% creator fee share allocated to the protocol wallet. Admin must be revoked. |
| 02 | Register with Fission | Submit your mint address. On-chain verification confirms fee configuration and admin revocation. |
| 03 | Automated Engine | Fees are claimed, split into perpetual positions (60%), buybacks (20%), and revenue (10%+10%). Fully autonomous. |
+------ 60% ------> Jupiter Perp Positions
|
Creator Fees -----+------ 20% ------> Token Buyback + Burn
|
+------ 10% ------> Protocol Revenue
|
+------ 10% ------> Ecosystem Fund
fission/
├── index.html # Single-page application entry
├── vite.config.js # Vite build configuration
│
├── src/
│ ├── main.js # App initialization and module orchestration
│ │
│ ├── js/
│ │ ├── dashboard.js # Live dashboard — search, sort, modal detail view
│ │ ├── data.js # Data layer, formatting utilities, API fallback
│ │ ├── launcher.js # Multi-step token registration wizard
│ │ ├── particles.js # Canvas particle network with mouse repulsion
│ │ ├── stats.js # Animated counter system with IntersectionObserver
│ │ ├── ticker.js # Real-time price ticker via CoinGecko
│ │ ├── toast.js # Non-blocking notification system
│ │ └── typewriter.js # Cycling tagline animation
│ │
│ └── styles/
│ ├── variables.css # Design tokens — colors, spacing, typography
│ ├── reset.css # Normalize and base element styles
│ ├── components.css # Buttons, inputs, cards, modals, wizards
│ ├── layout.css # Page sections, dashboard, responsive grid
│ ├── animations.css # Keyframes, reveal transitions, micro-animations
│ └── effects.css # Glass cards, decorative rules
│
├── backend/
│ ├── server.js # Express server — CORS, rate limiting, static serving
│ ├── config.js # Environment variable management
│ │
│ ├── api/
│ │ ├── routes.js # RESTful route definitions
│ │ └── controllers.js # Request validation, response formatting
│ │
│ ├── services/
│ │ ├── jupiter-perps.js # Jupiter Perpetuals — perp order management
│ │ ├── jupiter.js # Jupiter Aggregator — token swap execution
│ │ ├── pumpfun.js # Pump.fun — fee sharing PDA verification
│ │ └── solana.js # Solana RPC connection and wallet management
│ │
│ ├── workers/
│ │ ├── scheduler.js # Worker lifecycle, health tracking, intervals
│ │ ├── fee-claimer.js # Claims accumulated creator fees on-chain
│ │ ├── position-manager.js # Opens and adjusts Jupiter perpetual positions
│ │ ├── buyback-engine.js # Executes token buybacks via Jupiter + burn
│ │ └── risk-manager.js # Monitors exposure, drawdowns, liquidation risk
│ │
│ ├── db/
│ │ └── firebase.js # Firestore persistence with in-memory mock fallback
│ │
│ └── utils/
│ ├── logger.js # Structured logging with levels and context
│ └── helpers.js # Shared utility functions
│
├── .github/
│ ├── workflows/ci.yml # CI — build + health check on Node 18/20
│ ├── ISSUE_TEMPLATE/ # Bug report and feature request templates
│ └── PULL_REQUEST_TEMPLATE.md # PR checklist
│
├── CONTRIBUTING.md # Development setup and code style guide
├── SECURITY.md # Vulnerability reporting policy
└── LICENSE # MIT
graph LR
A["Pump.fun<br/>Creator Fees"] -->|SOL| B["Fee Claimer"]
B -->|60%| C["Position Manager"]
B -->|20%| D["Buyback Engine"]
B -->|10%| E["Protocol Revenue"]
B -->|10%| F["Ecosystem Fund"]
C -->|Perp Orders| G["Jupiter Perps"]
D -->|Swap + Burn| H["Jupiter"]
I["Risk Manager"] -.->|Monitor| C
I -.->|Monitor| G
style A fill:#D4A24E,stroke:#D4A24E,color:#000
style G fill:#5B21B6,stroke:#5B21B6,color:#fff
style H fill:#19A382,stroke:#19A382,color:#fff
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Vite, Vanilla JS, CSS Custom Properties | Landing page, dashboard, launch wizard |
| Backend | Node.js, Express | REST API, worker orchestration |
| Perpetuals | Jupiter Perpetuals | Opening and managing perp positions |
| Swaps | Jupiter Aggregator | Token buybacks and burns |
| Database | Firebase Firestore | Persistent state (mock fallback for dev) |
| Blockchain | Solana | Settlement and on-chain verification |
| Prices | CoinGecko API | Real-time ticker data |
- Node.js 18+
- npm 9+
npm install
npm run dev
# → http://localhost:5173cd backend
npm install
cp .env.example .env
npm start
# → http://localhost:3001Note: The backend runs in mock mode when
FIREBASE_SERVICE_ACCOUNTis not set. All API endpoints work with an in-memory store — no external dependencies needed for development.
| Variable | Description | Default |
|---|---|---|
PORT |
Backend server port | 3001 |
SOLANA_RPC_URL |
Solana RPC endpoint | Public mainnet |
PROTOCOL_WALLET |
Protocol fee recipient | Built-in |
FIREBASE_SERVICE_ACCOUNT |
Path to Firebase credentials | Mock mode |
PROTOCOL_PRIVATE_KEY |
Base58 signing key | Required for production |
All endpoints are prefixed with /api/v1. Responses are JSON.
| Method | Endpoint | Description |
|---|---|---|
GET |
/tokens |
List all registered derivatives |
GET |
/tokens/:mint |
Get token by mint address |
POST |
/tokens/register |
Register new derivative (on-chain verification) |
| Method | Endpoint | Description |
|---|---|---|
GET |
/positions |
List all open perp positions |
GET |
/positions/:mint |
Get position for a specific token |
GET |
/buybacks |
List all executed buybacks |
GET |
/buybacks/:mint |
Get buybacks for a specific token |
| Method | Endpoint | Description |
|---|---|---|
GET |
/health |
Server health and uptime |
GET |
/stats |
Protocol-wide aggregate statistics |
GET |
/status |
Full engine status with worker health |
GET |
/runs |
List all worker execution runs |
# Register a new derivative
curl -X POST http://localhost:3001/api/v1/tokens/register \
-H "Content-Type: application/json" \
-d '{"mint": "So11111111111111111111111111111111111111112", "underlying": "SOL"}'
# Check engine status
curl http://localhost:3001/api/v1/statusThe engine runs four autonomous workers in staggered intervals. Each worker independently handles its domain and reports health to the scheduler.
| Worker | Interval | Responsibility |
|---|---|---|
| Fee Claimer | 60 min | Claims accumulated creator fees from all registered tokens |
| Position Manager | 75 min | Opens or adjusts Jupiter perpetual positions based on claimed fees |
| Buyback Engine | 90 min | Swaps allocated SOL for derivative tokens via Jupiter and burns |
| Risk Manager | 100 min | Monitors position exposure, drawdowns, and liquidation proximity |
Timeline (one cycle):
0m Fee Claimer starts
├── Iterate registered tokens
├── Claim fees from Pump.fun
└── Record to Firestore
60m Position Manager starts
├── Read unclaimed fee pool
├── Calculate position sizing
└── Submit positions on Jupiter Perps
75m Buyback Engine starts
├── Allocate buyback budget
├── Execute Jupiter swaps
└── Burn acquired tokens
90m Risk Manager starts
├── Check position health
├── Evaluate drawdown thresholds
└── Flag or close risky positions
See CONTRIBUTING.md for development setup and guidelines.
See SECURITY.md for vulnerability reporting.
MIT — see LICENSE for details.