Design and derive Program Derived Addresses (PDAs) and account layouts across the Pump ecosystem's four Solana programs — global singletons, per-token accounts, per-user accumulators, and cross-program coordination patterns.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add x402agent/SolanaOS --skill pump-solana-architecture --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pump Solana Architecture?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/x402agent-pump-solana-architecture)More formats (shields.io, HTML) on the badges page.
---
name: pump-solana-architecture
description: "Design and derive Program Derived Addresses (PDAs) and account layouts across the Pump ecosystem's four Solana programs — global singletons, per-token accounts, per-user accumulators, and cross-program coordination patterns."
metadata:
openclaw:
homepage: https://github.com/nirholas/pump-fun-sdk
---
# Solana Program Architecture — PDAs, Accounts & Multi-Program Coordination
Design, derive, and manage Program Derived Addresses (PDAs) and account layouts across the Pump ecosystem's four Solana programs with cross-program invocation patterns.
## On-Chain Programs
| Program | ID | Purpose |
|---------|-----|---------|
| Pump | `6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P` | Bonding curve operations |
| PumpAMM | `pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA` | Graduated AMM pools |
| PumpFees | `pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ` | Fee sharing |
| Mayhem | `MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e` | Mayhem-mode tokens |
## PDA Categories
### Global Singletons
- `GLOBAL_PDA` — `["global"]` on Pump — protocol-wide config
- `FEE_CONFIG_PDA` — `["fee-config"]` on Pump — tiered fee settings
- `GLOBAL_VOLUME_ACCUMULATOR_PDA` — `["global_volume_accumulator"]` — protocol-wide volume
### Per-Token PDAs
- `bondingCurvePda(mint)` — `["bonding-curve", mint]` — token bonding curve state
- `bondingCurveTokenAccountPda(mint)` — `["bonding-curve-token-account", mint]`
- `feeSharingConfigPda(mint)` — `["sharing-config", mint]` on PumpFees
- `canonicalPumpPoolPda(mint)` — AMM pool for graduated token
### Per-User PDAs
- `creatorVaultPda(creator)` — `["creator-vault", creator]` on Pump
- `ammCreatorVaultPda(creator)` — `["creator_vault", creator]` on PumpAMM
- `userVolumeAccumulatorPda(user)` — `["user_volume_accumulator", user]`
### Mayhem PDAs
- `mayhemMetadataPda(mint)` — `["mayhem_metadata", mint]` on Mayhem
- `mayhemWsolPda()` — `["mayhem_wsol"]` on Mayhem
## BothPrograms Pattern
Many operations span both Pump and PumpAMM — the SDK provides aggregation:
| Method | Description |
|--------|-------------|
| `getCreatorVaultBalanceBothPrograms` | Sum balance from both vaults |
| `collectCoinCreatorFeeInstructions` | Collect from both programs |
| `fetchUserVolumeAccumulatorTotalStats` | Aggregate volume across programs |
| `claimTokenIncentivesBothPrograms` | Claim rewards from both |
## Token Lifecycle Cross-Program Flow
```
Pump Program PumpAMM Program
┌─────────────┐ ┌──────────────────┐
│ create │ │ │
│ buy / sell │ ── migrate ──► │ AMM trading │
│ graduate │ │ fee collection │
└─────────────┘ └──────────────────┘
│ │
└──── PumpFees Program ──────────┘
(fee sharing)
```
## Account Extension
Bonding curve accounts may need extension to `BONDING_CURVE_NEW_SIZE` (151 bytes) before certain operations:
```typescript
const extendIx = await PUMP_SDK.extendAccountInstruction({
bondingCurvePda: bondingCurvePda(mint),
bondingCurveAccountInfo
});
```
## Patterns to Follow
- Use `findProgramAddressSync` for all PDA derivation — never manually compute bump seeds
- Group related account fetches into a single `getMultipleAccountsInfo` call
- Always check account existence before decoding — use nullable decoders
- Extend accounts before migration or setCreator operations
## Common Pitfalls
- Creator vault PDA seeds differ: `"creator-vault"` (Pump, hyphen) vs `"creator_vault"` (AMM, underscore)
- `canonicalPumpPoolPda` uses the external pump-swap-sdk, not the Pump program
- Mayhem PDAs are on a separate program (`MAyhSm...`)
- PDA derivation failures indicate an invalid bump — the address is off the Ed25519 curve
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!