mirror of
https://github.com/0xfnzero/solana-streamer.git
synced 2026-07-28 01:47:43 +00:00
fix: expose PumpFun create quote accounts
This commit is contained in:
+2
-2
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-streamer-sdk"
|
||||
version = "1.5.13"
|
||||
version = "1.5.14"
|
||||
edition = "2021"
|
||||
authors = ["William <byteblock6@gmail.com>", "sgxiang <sgxiang@gmail.com>", "wei <1415121722@qq.com>"]
|
||||
repository = "https://github.com/0xfnzero/solana-streamer"
|
||||
@@ -21,7 +21,7 @@ sdk-perf-stats = ["sol-parser-sdk/perf-stats"]
|
||||
sdk-ultra-perf = ["sol-parser-sdk/ultra-perf"]
|
||||
|
||||
[dependencies]
|
||||
sol-parser-sdk = { version = "0.5.13", default-features = false }
|
||||
sol-parser-sdk = { version = "0.5.14", default-features = false }
|
||||
solana-sdk = "3.0.0"
|
||||
solana-client = "3.1.12"
|
||||
solana-transaction-status = "3.1.12"
|
||||
|
||||
@@ -124,30 +124,34 @@ Add the dependency to your `Cargo.toml`:
|
||||
|
||||
```toml
|
||||
# Add to your Cargo.toml
|
||||
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.13" }
|
||||
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.14" }
|
||||
```
|
||||
|
||||
### Use crates.io
|
||||
|
||||
```toml
|
||||
# Add to your Cargo.toml
|
||||
solana-streamer-sdk = "1.5.13"
|
||||
solana-streamer-sdk = "1.5.14"
|
||||
```
|
||||
|
||||
Parser backend features:
|
||||
|
||||
```toml
|
||||
# Default: sol-parser-sdk parse-borsh backend
|
||||
solana-streamer-sdk = "1.5.13"
|
||||
solana-streamer-sdk = "1.5.14"
|
||||
|
||||
# Zero-copy parser backend for latency-sensitive bots
|
||||
solana-streamer-sdk = { version = "1.5.13", default-features = false, features = ["sdk-parse-zero-copy"] }
|
||||
solana-streamer-sdk = { version = "1.5.14", 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.13+` uses the zero-copy backend.
|
||||
If both `sdk-parse-borsh` and `sdk-parse-zero-copy` are enabled, `sol-parser-sdk 0.5.14+` uses the zero-copy backend.
|
||||
|
||||
## 🔄 Migration Guide
|
||||
|
||||
### Upgrading to v1.5.14
|
||||
|
||||
Version 1.5.14 uses `sol-parser-sdk 0.5.14` from crates.io. Pump.fun canonical create events now expose `quote_mint`, `quote_vault`, and `quote_token_program` for `create_v2` quote pools, including USDC pools, across gRPC/RPC parser bridge and ShredStream-backed SDK output.
|
||||
|
||||
### Upgrading to v1.5.13
|
||||
|
||||
Version 1.5.13 uses `sol-parser-sdk 0.5.13` from crates.io. Pump.fun gRPC and ShredStream create/trade outputs now preserve real WSOL quote mints (`So11111111111111111111111111111111111111112`). The Solscan SOL sentinel (`So11111111111111111111111111111111111111111`) is used only when legacy data omits a quote mint.
|
||||
|
||||
+9
-5
@@ -123,30 +123,34 @@ git clone https://github.com/0xfnzero/solana-streamer
|
||||
|
||||
```toml
|
||||
# 添加到您的 Cargo.toml
|
||||
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.13" }
|
||||
solana-streamer-sdk = { path = "./solana-streamer", version = "1.5.14" }
|
||||
```
|
||||
|
||||
### 使用 crates.io
|
||||
|
||||
```toml
|
||||
# 添加到您的 Cargo.toml
|
||||
solana-streamer-sdk = "1.5.13"
|
||||
solana-streamer-sdk = "1.5.14"
|
||||
```
|
||||
|
||||
解析后端 feature:
|
||||
|
||||
```toml
|
||||
# 默认:sol-parser-sdk parse-borsh 后端
|
||||
solana-streamer-sdk = "1.5.13"
|
||||
solana-streamer-sdk = "1.5.14"
|
||||
|
||||
# 面向低延迟 Bot 的 zero-copy 解析后端
|
||||
solana-streamer-sdk = { version = "1.5.13", default-features = false, features = ["sdk-parse-zero-copy"] }
|
||||
solana-streamer-sdk = { version = "1.5.14", default-features = false, features = ["sdk-parse-zero-copy"] }
|
||||
```
|
||||
|
||||
如果同时启用 `sdk-parse-borsh` 和 `sdk-parse-zero-copy`,`sol-parser-sdk 0.5.13+` 会优先使用 zero-copy 后端。
|
||||
如果同时启用 `sdk-parse-borsh` 和 `sdk-parse-zero-copy`,`sol-parser-sdk 0.5.14+` 会优先使用 zero-copy 后端。
|
||||
|
||||
## 🔄 迁移指南
|
||||
|
||||
### 升级到 v1.5.14
|
||||
|
||||
v1.5.14 使用 crates.io 上的 `sol-parser-sdk 0.5.14`。Pump.fun canonical create 事件现在会为 `create_v2` quote 池暴露 `quote_mint`、`quote_vault`、`quote_token_program`,包括 USDC 池;gRPC/RPC parser bridge 和 ShredStream-backed SDK 输出都会保留这些字段。
|
||||
|
||||
### 升级到 v1.5.13
|
||||
|
||||
v1.5.13 使用 crates.io 上的 `sol-parser-sdk 0.5.13`。Pump.fun gRPC 和 ShredStream create/trade 输出现在会保留真实 WSOL quote mint(`So11111111111111111111111111111111111111112`)。只有 legacy 数据缺失 quote mint 时,才使用 Solscan SOL sentinel(`So11111111111111111111111111111111111111111`)。
|
||||
|
||||
@@ -176,6 +176,8 @@ pub fn merge(instruction_event: &mut DexEvent, cpi_log_event: DexEvent) {
|
||||
e.token_program = cpie.token_program;
|
||||
}
|
||||
fill_pumpfun_quote_mint(&mut e.quote_mint, cpie.quote_mint);
|
||||
fill_pubkey(&mut e.quote_vault, cpie.quote_vault);
|
||||
fill_pubkey(&mut e.quote_token_program, cpie.quote_token_program);
|
||||
fill_u64(&mut e.virtual_quote_reserves, cpie.virtual_quote_reserves);
|
||||
e.is_mayhem_mode |= cpie.is_mayhem_mode;
|
||||
e.is_cashback_enabled |= cpie.is_cashback_enabled;
|
||||
@@ -198,6 +200,8 @@ pub fn merge(instruction_event: &mut DexEvent, cpi_log_event: DexEvent) {
|
||||
fill_u64(&mut e.token_total_supply, cpie.token_total_supply);
|
||||
fill_pubkey(&mut e.token_program, cpie.token_program);
|
||||
fill_pumpfun_quote_mint(&mut e.quote_mint, cpie.quote_mint);
|
||||
fill_pubkey(&mut e.quote_vault, cpie.quote_vault);
|
||||
fill_pubkey(&mut e.quote_token_program, cpie.quote_token_program);
|
||||
fill_u64(&mut e.virtual_quote_reserves, cpie.virtual_quote_reserves);
|
||||
e.is_mayhem_mode |= cpie.is_mayhem_mode;
|
||||
e.is_cashback_enabled |= cpie.is_cashback_enabled;
|
||||
@@ -237,6 +241,8 @@ pub fn merge(instruction_event: &mut DexEvent, cpi_log_event: DexEvent) {
|
||||
e.token_program = cpie.token_program;
|
||||
}
|
||||
fill_pumpfun_quote_mint(&mut e.quote_mint, cpie.quote_mint);
|
||||
fill_pubkey(&mut e.quote_vault, cpie.quote_vault);
|
||||
fill_pubkey(&mut e.quote_token_program, cpie.quote_token_program);
|
||||
fill_u64(&mut e.virtual_quote_reserves, cpie.virtual_quote_reserves);
|
||||
e.is_mayhem_mode |= cpie.is_mayhem_mode;
|
||||
e.is_cashback_enabled |= cpie.is_cashback_enabled;
|
||||
|
||||
@@ -31,6 +31,10 @@ pub struct PumpFunCreateTokenEvent {
|
||||
#[borsh(skip)]
|
||||
pub quote_mint: Pubkey,
|
||||
#[borsh(skip)]
|
||||
pub quote_vault: Pubkey,
|
||||
#[borsh(skip)]
|
||||
pub quote_token_program: Pubkey,
|
||||
#[borsh(skip)]
|
||||
pub virtual_quote_reserves: u64,
|
||||
/// Original PumpFun instruction name: "create" or "create_v2".
|
||||
#[borsh(skip)]
|
||||
@@ -93,6 +97,10 @@ pub struct PumpFunCreateV2TokenEvent {
|
||||
#[borsh(skip)]
|
||||
pub quote_mint: Pubkey,
|
||||
#[borsh(skip)]
|
||||
pub quote_vault: Pubkey,
|
||||
#[borsh(skip)]
|
||||
pub quote_token_program: Pubkey,
|
||||
#[borsh(skip)]
|
||||
pub virtual_quote_reserves: u64,
|
||||
#[borsh(skip)]
|
||||
pub mint_authority: Pubkey,
|
||||
|
||||
@@ -152,6 +152,8 @@ mod tests {
|
||||
let global = Pubkey::new_unique();
|
||||
let event_authority = Pubkey::new_unique();
|
||||
let quote_mint = sol_parser_sdk::core::events::PUMPFUN_WSOL_QUOTE_MINT;
|
||||
let quote_vault = Pubkey::new_unique();
|
||||
let quote_token_program = Pubkey::new_unique();
|
||||
let c = PbPumpCreateV2 {
|
||||
metadata: EventMetadata {
|
||||
signature: Signature::default(),
|
||||
@@ -167,6 +169,8 @@ mod tests {
|
||||
global,
|
||||
event_authority,
|
||||
quote_mint,
|
||||
quote_vault,
|
||||
quote_token_program,
|
||||
is_mayhem_mode: true,
|
||||
is_cashback_enabled: true,
|
||||
..Default::default()
|
||||
@@ -180,6 +184,8 @@ mod tests {
|
||||
assert_eq!(st.global, global);
|
||||
assert_eq!(st.event_authority, event_authority);
|
||||
assert_eq!(st.quote_mint, quote_mint);
|
||||
assert_eq!(st.quote_vault, quote_vault);
|
||||
assert_eq!(st.quote_token_program, quote_token_program);
|
||||
assert_eq!(st.ix_name, "create_v2");
|
||||
assert!(st.is_mayhem_mode);
|
||||
assert!(st.is_cashback_enabled);
|
||||
|
||||
@@ -53,6 +53,8 @@ pub(crate) fn pumpfun_create_token_from_parser(
|
||||
is_mayhem_mode: c.is_mayhem_mode,
|
||||
is_cashback_enabled: c.is_cashback_enabled,
|
||||
quote_mint: normalize_pumpfun_quote_mint(c.quote_mint),
|
||||
quote_vault: c.quote_vault,
|
||||
quote_token_program: c.quote_token_program,
|
||||
virtual_quote_reserves: c.virtual_quote_reserves,
|
||||
ix_name: "create".to_string(),
|
||||
..Default::default()
|
||||
@@ -81,6 +83,8 @@ pub(crate) fn pumpfun_create_token_from_parser_v2(
|
||||
is_mayhem_mode: c.is_mayhem_mode,
|
||||
is_cashback_enabled: c.is_cashback_enabled,
|
||||
quote_mint: normalize_pumpfun_quote_mint(c.quote_mint),
|
||||
quote_vault: c.quote_vault,
|
||||
quote_token_program: c.quote_token_program,
|
||||
virtual_quote_reserves: c.virtual_quote_reserves,
|
||||
ix_name: "create_v2".to_string(),
|
||||
mint_authority: c.mint_authority,
|
||||
|
||||
Reference in New Issue
Block a user