mirror of
https://github.com/0xfnzero/solana-streamer.git
synced 2026-11-02 07:16:31 +00:00
feat: update parser SDK to 0.6.6
This commit is contained in:
+1
-1
@@ -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.6.4", default-features = false }
|
||||
sol-parser-sdk = { version = "0.6.6", default-features = false }
|
||||
solana-sdk = "3.0.0"
|
||||
solana-client = "3.1.12"
|
||||
solana-transaction-status = "3.1.12"
|
||||
|
||||
@@ -153,6 +153,10 @@ If both `sdk-parse-borsh` and `sdk-parse-zero-copy` are enabled, `sol-parser-sdk
|
||||
|
||||
## 🔄 Migration Guide
|
||||
|
||||
### Unreleased
|
||||
|
||||
The source tree now uses `sol-parser-sdk 0.6.6`. PumpFun trade events preserve the parser SDK's optional pre/post token balances in raw mint units and pre/post SOL balances in lamports, populated from transaction metadata without additional RPC calls.
|
||||
|
||||
### Upgrading to v2.0.1
|
||||
|
||||
Version 2.0.1 uses `sol-parser-sdk 0.6.1` from crates.io. PumpSwap Buy/Sell events now preserve the complete current cashback, buyback, signed virtual quote reserve, boost, and base-supply tail through dispatcher and SDK bridge paths. Truncated current layouts are rejected consistently by the default and zero-copy parser backends while historical layouts remain supported.
|
||||
|
||||
@@ -152,6 +152,10 @@ solana-streamer-sdk = { version = "2.0.1", default-features = false, features =
|
||||
|
||||
## 🔄 迁移指南
|
||||
|
||||
### 未发布
|
||||
|
||||
当前源码已升级到 `sol-parser-sdk 0.6.6`。PumpFun 交易事件会保留 parser SDK 提供的可选交易前后 token 余额(mint 原始精度)和 SOL 余额(lamports),这些字段直接来自交易 metadata,无需额外 RPC 请求。
|
||||
|
||||
### 升级到 v2.0.1
|
||||
|
||||
v2.0.1 使用 crates.io 上的 `sol-parser-sdk 0.6.1`。PumpSwap Buy/Sell 事件现在会在 dispatcher 和 SDK bridge 路径中完整保留 cashback、buyback、带符号 virtual quote reserve、boost 和 base supply 尾部字段。默认和 zero-copy 解析后端会一致拒绝截断的当前布局,同时继续兼容历史布局。
|
||||
|
||||
@@ -237,6 +237,16 @@ pub struct PumpFunTradeEvent {
|
||||
pub spendable_quote_in: u64,
|
||||
#[borsh(skip)]
|
||||
pub min_tokens_out: u64,
|
||||
/// User token balance before/after the transaction, in raw mint units.
|
||||
#[borsh(skip)]
|
||||
pub pre_token_balance: Option<u64>,
|
||||
#[borsh(skip)]
|
||||
pub post_token_balance: Option<u64>,
|
||||
/// User SOL balance before/after the transaction, in lamports.
|
||||
#[borsh(skip)]
|
||||
pub pre_sol_balance: Option<u64>,
|
||||
#[borsh(skip)]
|
||||
pub post_sol_balance: Option<u64>,
|
||||
#[borsh(skip)]
|
||||
pub quote_token_program: Pubkey,
|
||||
#[borsh(skip)]
|
||||
|
||||
@@ -319,6 +319,8 @@ pub struct MeteoraDlmmSwapEvent {
|
||||
pub start_bin_id: i32,
|
||||
pub end_bin_id: i32,
|
||||
pub amount_in: u64,
|
||||
#[serde(default)]
|
||||
pub min_amount_out: u64,
|
||||
pub amount_out: u64,
|
||||
pub swap_for_y: bool,
|
||||
pub fee: u64,
|
||||
|
||||
@@ -367,6 +367,7 @@ pub(crate) fn meteora_dlmm_swap_from_pb(
|
||||
start_bin_id: e.start_bin_id,
|
||||
end_bin_id: e.end_bin_id,
|
||||
amount_in: e.amount_in,
|
||||
min_amount_out: e.min_amount_out,
|
||||
amount_out: e.amount_out,
|
||||
swap_for_y: e.swap_for_y,
|
||||
fee: e.fee,
|
||||
|
||||
@@ -457,6 +457,7 @@ mod tests {
|
||||
start_bin_id: -5,
|
||||
end_bin_id: 12,
|
||||
amount_in: 300,
|
||||
min_amount_out: 298,
|
||||
amount_out: 299,
|
||||
swap_for_y: true,
|
||||
fee: 1,
|
||||
@@ -474,6 +475,7 @@ mod tests {
|
||||
assert_eq!(e.start_bin_id, -5);
|
||||
assert_eq!(e.end_bin_id, 12);
|
||||
assert_eq!(e.amount_in, 300);
|
||||
assert_eq!(e.min_amount_out, 298);
|
||||
assert_eq!(e.amount_out, 299);
|
||||
assert!(e.swap_for_y);
|
||||
assert_eq!(e.fee_bps, 25);
|
||||
|
||||
@@ -753,6 +753,10 @@ pub(crate) fn pumpfun_trade_from_parser_with_event_type(
|
||||
spendable_sol_in: t.spendable_sol_in,
|
||||
spendable_quote_in: t.spendable_quote_in,
|
||||
min_tokens_out: t.min_tokens_out,
|
||||
pre_token_balance: t.pre_token_balance,
|
||||
post_token_balance: t.post_token_balance,
|
||||
pre_sol_balance: t.pre_sol_balance,
|
||||
post_sol_balance: t.post_sol_balance,
|
||||
..Default::default()
|
||||
};
|
||||
DexEvent::PumpFunTradeEvent(st)
|
||||
@@ -888,4 +892,30 @@ mod tests {
|
||||
_ => panic!("expected PumpFunTradeEvent"),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn pumpfun_balance_snapshots_are_preserved() {
|
||||
let ev = pumpfun_trade_from_parser_with_event_type(
|
||||
sol_parser_sdk::core::events::PumpFunTradeEvent {
|
||||
pre_token_balance: Some(10),
|
||||
post_token_balance: Some(25),
|
||||
pre_sol_balance: Some(1_000),
|
||||
post_sol_balance: Some(900),
|
||||
..Default::default()
|
||||
},
|
||||
None,
|
||||
0,
|
||||
EventType::PumpFunBuy,
|
||||
);
|
||||
|
||||
match ev {
|
||||
DexEvent::PumpFunTradeEvent(t) => {
|
||||
assert_eq!(t.pre_token_balance, Some(10));
|
||||
assert_eq!(t.post_token_balance, Some(25));
|
||||
assert_eq!(t.pre_sol_balance, Some(1_000));
|
||||
assert_eq!(t.post_sol_balance, Some(900));
|
||||
}
|
||||
_ => panic!("expected PumpFunTradeEvent"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user