Solana development patterns used in the Pump SDK — Anchor IDL-based program interaction, SPL Token and Token-2022 management, transaction construction with instruction composition, RPC batching, and cross-program coordination.
Scanned 9/11/2026
Install to Claude Code
npx -y skills add x402agent/SolanaOS --skill pump-solana-dev --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Pump Solana Dev?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/x402agent-pump-solana-dev)More formats (shields.io, HTML) on the badges page.
---
name: pump-solana-dev
description: "Solana development patterns used in the Pump SDK — Anchor IDL-based program interaction, SPL Token and Token-2022 management, transaction construction with instruction composition, RPC batching, and cross-program coordination."
metadata:
openclaw:
homepage: https://github.com/nirholas/pump-fun-sdk
requires:
env:
- SOLANA_RPC_URL
---
# Solana Development — Web3.js, Anchor, SPL Tokens & On-Chain Patterns
Apply Solana development patterns used throughout the Pump SDK: Anchor IDL-based program interaction, SPL Token and Token-2022 account management, transaction construction with instruction composition, RPC batching, and cross-program account coordination.
## Anchor Program Initialization
```typescript
import { Program, AnchorProvider } from '@coral-xyz/anchor';
function getPumpProgram(connection: Connection): Program<Pump> {
const provider = new AnchorProvider(
connection,
{ publicKey: PublicKey.default, signTransaction: async (tx) => tx, signAllTransactions: async (txs) => txs },
{ commitment: 'confirmed' }
);
return new Program(pumpIdl as Pump, PUMP_PROGRAM_ID, provider);
}
```
**Offline pattern:** Uses a dummy provider (no wallet) for building instructions. Actual signing happens in the caller's code.
## Instruction Building with `accountsStrict`
```typescript
const ix = await program.methods
.buy(amount, maxSolCost, flags)
.accountsStrict({
global: GLOBAL_PDA,
bondingCurve: bondingCurvePda(mint),
user: userPublicKey,
// ... all required accounts
})
.remainingAccounts(additionalAccounts)
.instruction();
```
## PDA Derivation
```typescript
const [pda, bump] = PublicKey.findProgramAddressSync(
[Buffer.from("bonding-curve"), mint.toBuffer()],
PUMP_PROGRAM_ID
);
```
## RPC Batching
```typescript
const accounts = await connection.getMultipleAccountsInfo([
bondingCurvePda(mint),
GLOBAL_PDA,
FEE_CONFIG_PDA,
]);
```
## Token-2022 Support
The SDK supports both SPL Token and Token-2022:
- `createV2Instruction` creates Token-2022 mints
- `tokenProgram` parameter selects the appropriate program
- Associated Token Accounts (ATAs) are created idempotently
## Account Decoding
```typescript
const bondingCurve = program.coder.accounts.decode('bondingCurve', accountInfo.data);
```
Nullable variants handle missing accounts:
```typescript
const bc = decodeBondingCurveNullable(accountInfo); // returns null instead of throwing
```
## Transaction Simulation
```typescript
const result = await connection.simulateTransaction(tx, [signer]);
// Parse return data from simulation logs
```
## BN.js Arithmetic
All amounts use `BN` for arbitrary-precision integer arithmetic:
```typescript
const fee = amount.mul(new BN(feeBps)).div(new BN(10000));
const ceilFee = amount.mul(new BN(feeBps)).add(new BN(9999)).div(new BN(10000));
```
## Patterns to Follow
- Always use `accountsStrict` — not `accounts` — for type-safe account specification
- Use `getMultipleAccountsInfo` to batch account fetches
- Build instruction arrays, not transactions — let callers compose
- Handle both Token and Token-2022 programs via parameter
- Use nullable decoders for optional accounts
## Common Pitfalls
- `AnchorProvider` with dummy wallet is for instruction building only — never sign with it
- `getMultipleAccountsInfo` returns nulls for missing accounts — always check
- Transaction size limit is 1232 bytes — large instruction sets may need multiple transactions
- `remainingAccounts` order matters — the on-chain program reads them positionally
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!