solana-tx-decoder
v0.0.7
Published
A robust, extensible TypeScript library for parsing Solana transactions into structured, human-readable data
Maintainers
Readme
Solana Transaction Decoder
A robust, extensible TypeScript library for parsing Solana transactions into structured, human-readable data.
Features
- Adapter Pattern: Easily extensible parser registry
- Universal IDL Resolver: Auto-fetching and decoding via Anchor IDLs
- Deep Protocol Parsing: Jupiter, Raydium (AMM V4/CLMM/CP-Swap), Orca Whirlpool
- Liquidity Operations: Add/Remove Liquidity, Position Management, Fee Collection
- Structured Output: Strictly typed
ParsedResult - Inner Instructions: Handles nested CPIs
Supported Protocols
| Protocol | Operations | |----------|------------| | System Program | Transfer, CreateAccount | | SPL Token | Transfer, Mint, Burn | | Jupiter | Swap, Route | | Raydium | Swap, Add/Remove Liquidity, Initialize Pool | | Orca Whirlpool | Swap, Open/Close Position, Increase/Decrease Liquidity, Collect Fees |
Installation
pnpm add solana-tx-decoder @solana/web3.js @coral-xyz/anchor decimal.jsQuick Start
import { Connection } from '@solana/web3.js';
import { SolanaParser } from 'solana-tx-decoder';
const connection = new Connection("https://api.mainnet-beta.solana.com");
const parser = new SolanaParser(connection);
// Parse a real Raydium swap transaction
const result = await parser.parseTransaction(
"3oPfvbCztaNEpbtSib2DezyzjvSwxv7mZv8peCoAuiRijetvFM3TspWthxzETGkYYuxjVGa6HbdEKjiv9vZzd3Up"
);
if (result) {
console.log("Fee:", result.fee, "SOL");
console.log("Actions:", result.actions);
}Extending Parsers
Implement the Parser interface and register it:
import { Parser, ParserContext, ParsedAction } from 'solana-tx-decoder';
import { PublicKey } from '@solana/web3.js';
class MyProtocolParser implements Parser {
programId = new PublicKey("MyProtocol11111111111111111111111111111111");
parse(context: ParserContext): ParsedAction | null {
return {
protocol: "MyProtocol",
type: "CustomAction",
summary: "Did something cool",
details: {},
direction: "UNKNOWN"
};
}
}
parser.getRegistry().register(new MyProtocolParser());Examples
Check out the examples directory for usage scenarios, or see the Examples & Results document for parsed output samples.
Links
- Live Demo (Requires private RPC)
- Examples and Results
- Changelog
- Roadmap
E2E Testing
Run end-to-end tests with real mainnet transactions:
# Set your RPC URL
export SOLANA_RPC_URL=https://your-private-rpc-url
# Run E2E tests
pnpm test:e2eResults are exported to docs/e2e-results/RESULTS.md.
License
MIT
