Release solana-streamer-sdk 1.5.1

This commit is contained in:
0xfnzero
2026-05-26 07:22:21 +08:00
parent 8972d83492
commit 8b967f58d6
4 changed files with 27 additions and 18 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
[package]
name = "solana-streamer-sdk"
version = "1.5.0"
version = "1.5.1"
edition = "2021"
authors = ["William <byteblock6@gmail.com>", "sgxiang <sgxiang@gmail.com>", "wei <1415121722@qq.com>"]
repository = "https://github.com/0xfnzero/solana-streamer"
@@ -15,13 +15,13 @@ crate-type = ["cdylib", "rlib"]
[features]
default = ["sdk-parse-borsh"]
sdk-parse-borsh = ["sol-parser-sdk/parse-borsh"]
# If both parser backend features are enabled, sol-parser-sdk 0.5.0+ uses zero-copy.
# If both parser backend features are enabled, sol-parser-sdk 0.5.1+ uses zero-copy.
sdk-parse-zero-copy = ["sol-parser-sdk/parse-zero-copy"]
sdk-perf-stats = ["sol-parser-sdk/perf-stats"]
sdk-ultra-perf = ["sol-parser-sdk/ultra-perf"]
[dependencies]
sol-parser-sdk = { version = "0.5.0", default-features = false }
sol-parser-sdk = { version = "0.5.1", default-features = false }
solana-sdk = "3.0.0"
solana-client = "3.1.12"
solana-transaction-status = "3.1.12"
+10 -6
View File
@@ -70,7 +70,7 @@
- **Real-time Event Streaming**: Subscribe to live trading events from multiple Solana DEX protocols
- **SDK-backed Parser Core**: Transaction, RPC, account, and ShredStream parsing are backed by `sol-parser-sdk`
- **Yellowstone gRPC Support**: High-performance event subscription using Yellowstone gRPC
- **ShredStream Support**: Alternative event streaming using ShredStream protocol
- **ShredStream Support**: Alternative event streaming using ShredStream protocol; ALT-loaded accounts are parsed best-effort with default account placeholders
- **Unified Event Interface**: Consistent event handling across all supported protocols
### Multi-Protocol Support
@@ -123,30 +123,34 @@ Add the dependency to your `Cargo.toml`:
```toml
# Add to your Cargo.toml
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.0" }
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.1" }
```
### Use crates.io
```toml
# Add to your Cargo.toml
solana-streamer-sdk = "1.5.0"
solana-streamer-sdk = "1.5.1"
```
Parser backend features:
```toml
# Default: sol-parser-sdk parse-borsh backend
solana-streamer-sdk = "1.5.0"
solana-streamer-sdk = "1.5.1"
# Zero-copy parser backend for latency-sensitive bots
solana-streamer-sdk = { version = "1.5.0", default-features = false, features = ["sdk-parse-zero-copy"] }
solana-streamer-sdk = { version = "1.5.1", default-features = false, features = ["sdk-parse-zero-copy"] }
```
If both `sdk-parse-borsh` and `sdk-parse-zero-copy` are enabled, `sol-parser-sdk 0.5.0+` uses the zero-copy backend.
If both `sdk-parse-borsh` and `sdk-parse-zero-copy` are enabled, `sol-parser-sdk 0.5.1+` uses the zero-copy backend.
## 🔄 Migration Guide
### Upgrading to v1.5.1
Version 1.5.1 uses `sol-parser-sdk 0.5.1` from crates.io. It improves ShredStream ALT handling by parsing outer instructions best-effort with default placeholders for ALT-loaded accounts, adds dropped-event queue observability, and keeps CPI/inner-only events documented as a ShredStream limitation.
### Upgrading to v1.5.0
Version 1.5.0 uses `sol-parser-sdk 0.5.0`, wires Raydium CLMM account parsing through the SDK bridge, and reduces ordered-buffer allocation/move overhead in low-latency delivery paths. `sol-parser-sdk 0.4.19` and `solana-streamer-sdk 1.4.14` were superseded because adding public parser event variants belongs in the 0.5 line.
+10 -6
View File
@@ -69,7 +69,7 @@
- **实时事件流**: 订阅多个 Solana DEX 协议的实时交易事件
- **SDK 底层解析核心**: 交易、RPC、账户和 ShredStream 解析都优先复用 `sol-parser-sdk`
- **Yellowstone gRPC 支持**: 使用 Yellowstone gRPC 进行高性能事件订阅
- **ShredStream 支持**: 使用 ShredStream 协议进行替代事件流传输
- **ShredStream 支持**: 使用 ShredStream 协议进行替代事件流传输ALT-loaded 账户会以默认账户占位并尽量解析外层事件
- **统一事件接口**: 在所有支持的协议中保持一致的事件处理
### 多协议支持
@@ -122,30 +122,34 @@ git clone https://github.com/0xfnzero/solana-streamer
```toml
# 添加到您的 Cargo.toml
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.0" }
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.1" }
```
### 使用 crates.io
```toml
# 添加到您的 Cargo.toml
solana-streamer-sdk = "1.5.0"
solana-streamer-sdk = "1.5.1"
```
解析后端 feature
```toml
# 默认:sol-parser-sdk parse-borsh 后端
solana-streamer-sdk = "1.5.0"
solana-streamer-sdk = "1.5.1"
# 面向低延迟 Bot 的 zero-copy 解析后端
solana-streamer-sdk = { version = "1.5.0", default-features = false, features = ["sdk-parse-zero-copy"] }
solana-streamer-sdk = { version = "1.5.1", default-features = false, features = ["sdk-parse-zero-copy"] }
```
如果同时启用 `sdk-parse-borsh``sdk-parse-zero-copy``sol-parser-sdk 0.5.0+` 会优先使用 zero-copy 后端。
如果同时启用 `sdk-parse-borsh``sdk-parse-zero-copy``sol-parser-sdk 0.5.1+` 会优先使用 zero-copy 后端。
## 🔄 迁移指南
### 升级到 v1.5.1
v1.5.1 使用 crates.io 上的 `sol-parser-sdk 0.5.1`。该版本改进 ShredStream 的 ALT 处理:ALT-loaded 账户会以默认账户占位,外层指令按 data/discriminator 尽量解析;同时增加队列满时的 dropped event 可观测性,并明确 CPI/inner-only 事件仍是 ShredStream 的固有限制。
### 升级到 v1.5.0
v1.5.0 使用 `sol-parser-sdk 0.5.0`,打通 Raydium CLMM 账户解析的 SDK bridge,并降低有序缓冲低延迟投递路径中的分配和搬移开销。`sol-parser-sdk 0.4.19``solana-streamer-sdk 1.4.14` 已由 v1.5.0 取代,因为新增公开 parser event variant 应放到 0.5 版本线。
+4 -3
View File
@@ -23,8 +23,9 @@ ShredStream 路径仍为下面的原始交易解析限制,不使用上述日
### 2.1 使用 Address Lookup Tables (ALT) 的交易
- **现象**:指令中的账户索引指向「static + loaded」的完整列表,shred 只传入 static,越界索引会被填成 `Pubkey::default()`11111...)。
- **影响协议/指令**:所有依赖「按索引取账户」的指令,在交易使用 ALT 时都可能出现错误或默认账户。
- **现象**:指令中的账户索引指向「static + loaded」的完整列表,shred 只传入 static。当前 ShredStream 路径会尽量解析外层指令;若某个指令账户来自 ALT-loaded keys,会以 `Pubkey::default()`11111...占位
- **影响协议/指令**:所有依赖「按索引取账户」的指令,在交易使用 ALT 时都可能出现错误或默认账户;能靠指令 data / discriminator 识别的事件会 best-effort 产出
- **program id 也来自 ALT 时**:无法从 shred 恢复真实程序 ID,会按启用的协议/filter 进行 discriminator-only best-effort 解析。若不同协议 discriminator 碰撞,建议使用窄 filter 降低误判或多候选输出风险。
- **典型表现**
- **PumpFun**Create / CreateV2 的 token_program、global、event_authority 等为 11111...Buy/Sell 的 creator_vault、token_program 等可能错误。
- **PumpSwap / Bonk / Raydium / Meteora**:依赖高索引账户的指令同样可能得到错误或 default 账户。
@@ -58,7 +59,7 @@ ShredStream 路径仍为下面的原始交易解析限制,不使用上述日
## 3. 使用建议
- 需要**完整、正确**的账户与 log 字段(reserves、timestamp、amounts、swap_data 等)时,使用 **gRPC 订阅**
- Shredstream 更适合:对延迟更敏感、可接受「仅指令层 + 部分字段缺失/默认」的场景,或确认交易**未使用 ALT** 时的账户解析
- Shredstream 更适合:对延迟更敏感、可接受「仅指令层 + 部分字段缺失/默认」的场景;使用 ALT 的交易会 best-effort 解析,但 ALT-loaded 账户字段可能为 default
## 4. 各事件 Shred 路径字段完整性