Repository navigation
v0.7.17: DEX-scoped RawInstruction and typed identifiers
v0.7.17 — DEX-scoped raw instructions and typed DEX identifiers
Released 2026-10-19.
RawInstruction callbacks now match the subscribed DEX using only the outer instruction's program and referenced accounts. Unrelated instructions in the same transaction no longer inherit a DEX association. Streamer protocol restrictions apply even when RawInstruction is explicitly selected; legacy sol-shred-sdk PumpFun callbacks only forward PumpFun-associated wrappers.
The dexes array preserves all detected DEX associations for multi-DEX wrappers. Each entry contains dex_type, program_id and a nullable pool. RawInstructionDexType is a public enum in Rust, TypeScript and Python, and a named string type with constants in Go. JSON identifiers remain pumpfun, raydium_cpmm, etc. Unknown router layouts leave pool null and do not imply CPI execution, trade direction, amounts or buy-method versions. Unresolved ALT references cannot match a DEX subscription.
Compatibility
- Broad trade/swap filters now include associated raw instructions. Excluding RawInstruction takes precedence; direction/method-specific subscriptions do not infer unknown router behavior.
- Without protocol restrictions, explicit RawInstruction still selects all outer instructions.
- Rust callers constructing RawInstructionEvent must populate dexes; RawInstructionDex.dex_type is now an enum. Historical JSON without dexes remains readable with an empty list.
- No third-party router payload decoding or guessed pool-account positions were added.
Validation
Regression coverage includes instruction-local DEX scope, multi-DEX references, duplicate accounts, unresolved ALT addresses, raw exclusions, streamer protocol gates, enum exports and JSON round trips. Signed replay examples compare PumpFun, Raydium CPMM and all-raw subscriptions across language implementations.