Skip to content

v0.7.17: DEX-scoped RawInstruction and typed identifiers

Choose a tag to compare

@0xfnzero 0xfnzero released this 18 Oct 20:17
· 18 commits to main since this release

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.