From 9ec0f2cc2ce34f47ce1f58adfb5a32a9da9d8bde Mon Sep 17 00:00:00 2001 From: 0xfnzero <0xfnzero@users.noreply.github.com> Date: Wed, 28 Oct 2026 01:13:47 +0800 Subject: [PATCH] refactor: remove trade parse status and preserve wrapper provenance --- README.md | 4 ++-- README_CN.md | 4 ++-- docs/wrapped-pumpfun.md | 3 +-- examples/sdk_bridge.rs | 2 +- src/streaming/common/event_processor.rs | 4 ---- .../event_parser/core/trade_source.rs | 22 +----------------- .../event_parser/protocols/bonk/events.rs | 3 --- .../protocols/meteora_damm_v2/events.rs | 4 ---- .../event_parser/protocols/pumpfun/events.rs | 3 --- .../event_parser/protocols/pumpswap/events.rs | 6 ----- .../protocols/raydium_amm_v4/events.rs | 3 --- .../protocols/raydium_clmm/events.rs | 4 ---- .../protocols/raydium_cpmm/events.rs | 3 --- .../protocols/sol_parser_forward/events.rs | 8 ------- .../parser_sdk_bridge/bonk_accounts.rs | 1 - src/streaming/parser_sdk_bridge/forward_pb.rs | 4 ---- src/streaming/parser_sdk_bridge/mod.rs | 23 ++----------------- .../parser_sdk_bridge/pump_pumpswap.rs | 5 ---- .../parser_sdk_bridge/raydium_and_damm.rs | 4 ---- 19 files changed, 9 insertions(+), 101 deletions(-) diff --git a/README.md b/README.md index 31c29ce..327ed38 100755 --- a/README.md +++ b/README.md @@ -305,9 +305,9 @@ account value is also available from ## Trade provenance and parsing boundaries -gRPC/RPC use supplied execution metadata and actual CPI instructions; Shred sees outer instructions and locally resolved accounts. An unknown third-party instruction referencing Pump.fun in its own accounts can produce a `PumpFunTrade` candidate with the original input in `third_program` and `Unresolved` status. This does not establish execution, direction or amounts. Buy/sell-only filters do not treat an unknown direction as a fill. +gRPC/RPC use supplied execution metadata and actual CPI instructions; Shred sees outer instructions and locally resolved accounts. An unknown third-party instruction referencing Pump.fun in its own accounts can produce a `PumpFunTrade` candidate with the original input in `third_program`. This does not establish execution, direction or amounts. Buy/sell-only filters do not treat an unknown direction as a fill. -The parsing hot path performs no RPC. Check `parse_status` before interpreting defaults as amounts. Original account order and instruction bytes remain in `third_program`; transaction position and receive time remain in event metadata. A local Shred index is not confirmed slot-wide execution order. See [wrapped transactions](docs/wrapped-pumpfun.md). +The parsing hot path performs no RPC. Missing fields retain defaults and must not be interpreted as actual zero fills. Original account order and instruction bytes remain in `third_program`; transaction position and receive time remain in event metadata. A local Shred index is not confirmed slot-wide execution order. See [wrapped transactions](docs/wrapped-pumpfun.md). Known Pump.fun create/trade instructions keep their callbacks with unresolved ALT accounts; unknown addresses stay unknown. The bridge preserves `create_v2`, V2/V3 method names, original creation accounts and official `multi_hop_swap` provenance. Run `cargo run --example rpc_transaction_replay` to compare the reported signed transactions through the static Shred and execution facades offline. Shred route budgets are not per-hop fill amounts; execution metadata supplies actual quote/token amounts. diff --git a/README_CN.md b/README_CN.md index fd1182f..7c6eb91 100644 --- a/README_CN.md +++ b/README_CN.md @@ -285,9 +285,9 @@ log-only 的 `CreatePoolEvent` payload 因为 IDL 不包含该字段,会保持 ## 交易来源与解析边界 -gRPC/RPC 使用提供的执行元数据和实际 CPI 指令;Shred 只能看到外层指令与本地已解析的账户。未知第三方指令在自身账户中引用 Pump.fun 时,可回调 `PumpFunTrade` 候选,携带 `third_program` 原始输入与 `Unresolved` 状态;这不证明交易已执行,也不确定方向或金额。买入/卖出专用过滤器不会把未知方向当作成交。 +gRPC/RPC 使用提供的执行元数据和实际 CPI 指令;Shred 只能看到外层指令与本地已解析的账户。未知第三方指令在自身账户中引用 Pump.fun 时,可回调 `PumpFunTrade` 候选,携带 `third_program` 原始输入;这不证明交易已执行,也不确定方向或金额。买入/卖出专用过滤器不会把未知方向当作成交。 -解析热路径不调用 RPC。按 `parse_status` 判断证据,缺失字段的默认值不代表实际零成交。账户顺序与原始指令数据保留在 `third_program`;交易序号和接收时间仍在事件元数据中,本地 Shred 序号不等于全 slot 执行顺序。详见 [第三方包装交易](docs/wrapped-pumpfun.md)。 +解析热路径不调用 RPC。缺失字段的默认值不代表实际零成交。账户顺序与原始指令数据保留在 `third_program`;交易序号和接收时间仍在事件元数据中,本地 Shred 序号不等于全 slot 执行顺序。详见 [第三方包装交易](docs/wrapped-pumpfun.md)。 已知 Pump.fun 创建/交易指令在 ALT 未展开时仍保留回调,未知账户保持未知。适配层保留 `create_v2`、V2/V3 方法名、创建账户和官方 `multi_hop_swap` 来源。运行 `cargo run --example rpc_transaction_replay`,可用已报告的真实签名交易离线比较纯 Shred 与执行解析;Shred 路由预算不是各跳成交金额,实际报价币/代币金额来自执行元数据。 diff --git a/docs/wrapped-pumpfun.md b/docs/wrapped-pumpfun.md index e975d37..efa3827 100644 --- a/docs/wrapped-pumpfun.md +++ b/docs/wrapped-pumpfun.md @@ -1,7 +1,6 @@ # Wrapped Pump.fun transactions -The streamer preserves `PumpFunTradeEvent.third_program`, `parse_status` and -transaction metadata from sol-parser-sdk. Subscribe to the PumpFunTrade family +The streamer preserves `PumpFunTradeEvent.third_program` and transaction metadata from sol-parser-sdk. Subscribe to the PumpFunTrade family to receive unresolved Shred candidates as well as gRPC trades. Shred candidates only establish that an unknown outer instruction references diff --git a/examples/sdk_bridge.rs b/examples/sdk_bridge.rs index 676a51d..51bc497 100644 --- a/examples/sdk_bridge.rs +++ b/examples/sdk_bridge.rs @@ -10,7 +10,7 @@ use solana_streamer_sdk::streaming::event_parser::common::{filter::EventTypeFilt fn main() { let streamer_filter = EventTypeFilter::include_only(vec![ // Include unresolved Shred candidates as well as decoded buys/sells. - // Inspect parse_status and third_program before using amounts. + // Inspect third_program; missing amounts retain defaults. EventType::PumpFunTrade, EventType::TokenAccount, ]); diff --git a/src/streaming/common/event_processor.rs b/src/streaming/common/event_processor.rs index 765e723..e2a2f51 100644 --- a/src/streaming/common/event_processor.rs +++ b/src/streaming/common/event_processor.rs @@ -482,10 +482,6 @@ mod tests { let DexEvent::PumpFunTradeEvent(candidate) = &events[0] else { panic!("missing wrapper candidate") }; - assert_eq!( - candidate.parse_status, - sol_parser_sdk::core::events::PumpFunParseStatus::Unresolved - ); let raw = candidate.third_program.as_ref().unwrap(); let ix = &tx.message.instructions()[raw.instruction_index]; assert_eq!(raw.instruction_data, ix.data); diff --git a/src/streaming/event_parser/core/trade_source.rs b/src/streaming/event_parser/core/trade_source.rs index d500cb1..158cf39 100644 --- a/src/streaming/event_parser/core/trade_source.rs +++ b/src/streaming/event_parser/core/trade_source.rs @@ -1,6 +1,6 @@ //! Consistent provenance access across streamer trade events. use super::DexEvent; -use sol_parser_sdk::core::events::{RawInstructionPayload, TradeParseStatus}; +use sol_parser_sdk::core::events::RawInstructionPayload; impl DexEvent { pub fn third_program(&self) -> Option<&RawInstructionPayload> { @@ -22,24 +22,4 @@ impl DexEvent { _ => None, } } - - pub fn trade_parse_status(&self) -> Option { - match self { - Self::PumpFunTradeEvent(t) => Some(t.parse_status), - Self::PumpSwapBuyEvent(t) => Some(t.parse_status), - Self::PumpSwapSellEvent(t) => Some(t.parse_status), - Self::RaydiumCpmmSwapEvent(t) => Some(t.parse_status), - Self::RaydiumAmmV4SwapEvent(t) => Some(t.parse_status), - Self::RaydiumClmmSwapEvent(t) => Some(t.parse_status), - Self::RaydiumClmmSwapV2Event(t) => Some(t.parse_status), - Self::BonkTradeEvent(t) => Some(t.parse_status), - Self::MeteoraDammV2SwapEvent(t) => Some(t.parse_status), - Self::MeteoraDammV2Swap2Event(t) => Some(t.parse_status), - Self::OrcaWhirlpoolSwapEvent(t) => Some(t.parse_status), - Self::MeteoraDbcSwapEvent(t) => Some(t.parse_status), - Self::MeteoraPoolsSwapEvent(t) => Some(t.parse_status), - Self::MeteoraDlmmSwapEvent(t) => Some(t.parse_status), - _ => None, - } - } } diff --git a/src/streaming/event_parser/protocols/bonk/events.rs b/src/streaming/event_parser/protocols/bonk/events.rs index 5a70a4a..740cc6c 100755 --- a/src/streaming/event_parser/protocols/bonk/events.rs +++ b/src/streaming/event_parser/protocols/bonk/events.rs @@ -16,9 +16,6 @@ pub struct BonkTradeEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, #[borsh(skip)] - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, - #[borsh(skip)] pub metadata: EventMetadata, pub pool_state: Pubkey, pub total_base_sell: u64, diff --git a/src/streaming/event_parser/protocols/meteora_damm_v2/events.rs b/src/streaming/event_parser/protocols/meteora_damm_v2/events.rs index bbaa5c3..673d509 100644 --- a/src/streaming/event_parser/protocols/meteora_damm_v2/events.rs +++ b/src/streaming/event_parser/protocols/meteora_damm_v2/events.rs @@ -39,8 +39,6 @@ pub struct PoolFeeParameters { pub struct MeteoraDammV2SwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, // 来自 CPI Log Event 的数据 @@ -100,8 +98,6 @@ pub struct MeteoraDammV2SwapEvent { pub struct MeteoraDammV2Swap2Event { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, // 来自 CPI Log Event 的数据 diff --git a/src/streaming/event_parser/protocols/pumpfun/events.rs b/src/streaming/event_parser/protocols/pumpfun/events.rs index 2f7a538..7f4f84d 100755 --- a/src/streaming/event_parser/protocols/pumpfun/events.rs +++ b/src/streaming/event_parser/protocols/pumpfun/events.rs @@ -152,9 +152,6 @@ pub struct PumpFunTradeEvent { pub third_program: Option, #[borsh(skip)] #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::PumpFunParseStatus, - #[borsh(skip)] - #[serde(default)] pub creator_fee_unclaimed: u64, #[borsh(skip)] pub metadata: EventMetadata, diff --git a/src/streaming/event_parser/protocols/pumpswap/events.rs b/src/streaming/event_parser/protocols/pumpswap/events.rs index 1a14876..f196f13 100755 --- a/src/streaming/event_parser/protocols/pumpswap/events.rs +++ b/src/streaming/event_parser/protocols/pumpswap/events.rs @@ -13,9 +13,6 @@ pub struct PumpSwapBuyEvent { pub third_program: Option, #[borsh(skip)] #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, - #[borsh(skip)] - #[serde(default)] pub creator_fee_unclaimed: u64, #[borsh(skip)] pub metadata: EventMetadata, @@ -106,9 +103,6 @@ pub struct PumpSwapSellEvent { pub third_program: Option, #[borsh(skip)] #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, - #[borsh(skip)] - #[serde(default)] pub creator_fee_unclaimed: u64, #[borsh(skip)] pub metadata: EventMetadata, diff --git a/src/streaming/event_parser/protocols/raydium_amm_v4/events.rs b/src/streaming/event_parser/protocols/raydium_amm_v4/events.rs index 7208e4d..4d3d13c 100755 --- a/src/streaming/event_parser/protocols/raydium_amm_v4/events.rs +++ b/src/streaming/event_parser/protocols/raydium_amm_v4/events.rs @@ -11,9 +11,6 @@ pub struct RaydiumAmmV4SwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, #[borsh(skip)] - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, - #[borsh(skip)] pub metadata: EventMetadata, // base in pub amount_in: u64, diff --git a/src/streaming/event_parser/protocols/raydium_clmm/events.rs b/src/streaming/event_parser/protocols/raydium_clmm/events.rs index 3efe519..d70a1ec 100755 --- a/src/streaming/event_parser/protocols/raydium_clmm/events.rs +++ b/src/streaming/event_parser/protocols/raydium_clmm/events.rs @@ -9,8 +9,6 @@ use solana_sdk::pubkey::Pubkey; pub struct RaydiumClmmSwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, pub amount: u64, pub other_amount_threshold: u64, @@ -59,8 +57,6 @@ pub struct RaydiumClmmSwapEvent { pub struct RaydiumClmmSwapV2Event { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, pub amount: u64, pub other_amount_threshold: u64, diff --git a/src/streaming/event_parser/protocols/raydium_cpmm/events.rs b/src/streaming/event_parser/protocols/raydium_cpmm/events.rs index 55ece75..b2ae0ad 100755 --- a/src/streaming/event_parser/protocols/raydium_cpmm/events.rs +++ b/src/streaming/event_parser/protocols/raydium_cpmm/events.rs @@ -12,9 +12,6 @@ pub struct RaydiumCpmmSwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, #[borsh(skip)] - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, - #[borsh(skip)] pub metadata: EventMetadata, pub amount_in: u64, pub minimum_amount_out: u64, diff --git a/src/streaming/event_parser/protocols/sol_parser_forward/events.rs b/src/streaming/event_parser/protocols/sol_parser_forward/events.rs index 253e2fa..d657b7a 100644 --- a/src/streaming/event_parser/protocols/sol_parser_forward/events.rs +++ b/src/streaming/event_parser/protocols/sol_parser_forward/events.rs @@ -15,8 +15,6 @@ pub struct ParserSdkErrorEvent { pub struct OrcaWhirlpoolSwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, pub whirlpool: Pubkey, pub input_amount: u64, @@ -255,8 +253,6 @@ pub struct OrcaWhirlpoolsConfigAccount { pub struct MeteoraDbcSwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, pub pool: Pubkey, pub config: Pubkey, @@ -319,8 +315,6 @@ pub struct MeteoraDbcCurveCompleteEvent { pub struct MeteoraPoolsSwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, pub in_amount: u64, pub out_amount: u64, @@ -380,8 +374,6 @@ pub struct MeteoraPoolsSetPoolFeesEvent { pub struct MeteoraDlmmSwapEvent { #[serde(default, skip_serializing_if = "Option::is_none")] pub third_program: Option, - #[serde(default)] - pub parse_status: sol_parser_sdk::core::events::TradeParseStatus, pub metadata: EventMetadata, #[serde(default)] pub token_x_mint: Pubkey, diff --git a/src/streaming/parser_sdk_bridge/bonk_accounts.rs b/src/streaming/parser_sdk_bridge/bonk_accounts.rs index 97841f1..aae4a72 100644 --- a/src/streaming/parser_sdk_bridge/bonk_accounts.rs +++ b/src/streaming/parser_sdk_bridge/bonk_accounts.rs @@ -45,7 +45,6 @@ pub(crate) fn bonk_trade_from_parser( ) -> BonkTradeEvent { BonkTradeEvent { third_program: b.third_program, - parse_status: b.parse_status, metadata: meta, pool_state: b.pool_state, total_base_sell: b.total_base_sell, diff --git a/src/streaming/parser_sdk_bridge/forward_pb.rs b/src/streaming/parser_sdk_bridge/forward_pb.rs index 28c47f5..affd814 100644 --- a/src/streaming/parser_sdk_bridge/forward_pb.rs +++ b/src/streaming/parser_sdk_bridge/forward_pb.rs @@ -21,7 +21,6 @@ pub(crate) fn orca_swap_from_pb( ) -> OrcaWhirlpoolSwapEvent { OrcaWhirlpoolSwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, whirlpool: e.whirlpool, input_amount: e.input_amount, @@ -251,7 +250,6 @@ pub(crate) fn meteora_dbc_swap_from_pb( ) -> MeteoraDbcSwapEvent { MeteoraDbcSwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, event_version: e.event_version, swap_mode: e.swap_mode, @@ -314,7 +312,6 @@ pub(crate) fn meteora_pools_swap_from_pb( ) -> MeteoraPoolsSwapEvent { MeteoraPoolsSwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, in_amount: e.in_amount, out_amount: e.out_amount, @@ -395,7 +392,6 @@ pub(crate) fn meteora_dlmm_swap_from_pb( ) -> MeteoraDlmmSwapEvent { MeteoraDlmmSwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, event_version: e.event_version, amount_left: e.amount_left, diff --git a/src/streaming/parser_sdk_bridge/mod.rs b/src/streaming/parser_sdk_bridge/mod.rs index be08010..b1de8bd 100644 --- a/src/streaming/parser_sdk_bridge/mod.rs +++ b/src/streaming/parser_sdk_bridge/mod.rs @@ -27,13 +27,11 @@ mod raydium_and_damm; #[cfg(test)] mod provenance_tests { use super::convert_parser_event; - use sol_parser_sdk::core::events::{ - DexEvent as ParserEvent, RawInstructionPayload, TradeParseStatus, - }; + use sol_parser_sdk::core::events::{DexEvent as ParserEvent, RawInstructionPayload}; use solana_sdk::pubkey::Pubkey; #[test] - fn every_supported_trade_bridge_preserves_source_and_status() { + fn every_supported_trade_bridge_preserves_source() { let source = RawInstructionPayload { program_id: Pubkey::new_unique(), instruction_index: 4, @@ -44,90 +42,73 @@ mod provenance_tests { for event in [ ParserEvent::PumpFunTrade(sol_parser_sdk::core::events::PumpFunTradeEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::PumpFunBuy(sol_parser_sdk::core::events::PumpFunTradeEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::PumpFunSell(sol_parser_sdk::core::events::PumpFunTradeEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::PumpFunBuyExactSolIn(sol_parser_sdk::core::events::PumpFunTradeEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::PumpSwapTrade(sol_parser_sdk::core::events::PumpSwapTradeEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::PumpSwapBuy(sol_parser_sdk::core::events::PumpSwapBuyEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::PumpSwapSell(sol_parser_sdk::core::events::PumpSwapSellEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::RaydiumLaunchlabTrade( sol_parser_sdk::core::events::RaydiumLaunchlabTradeEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }, ), ParserEvent::RaydiumCpmmSwap(sol_parser_sdk::core::events::RaydiumCpmmSwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::RaydiumClmmSwap(sol_parser_sdk::core::events::RaydiumClmmSwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::RaydiumAmmV4Swap(sol_parser_sdk::core::events::RaydiumAmmV4SwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::OrcaWhirlpoolSwap(sol_parser_sdk::core::events::OrcaWhirlpoolSwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::MeteoraPoolsSwap(sol_parser_sdk::core::events::MeteoraPoolsSwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::MeteoraDammV2Swap(sol_parser_sdk::core::events::MeteoraDammV2SwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::MeteoraDlmmSwap(sol_parser_sdk::core::events::MeteoraDlmmSwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ParserEvent::MeteoraDbcSwap(sol_parser_sdk::core::events::MeteoraDbcSwapEvent { third_program: Some(source.clone()), - parse_status: TradeParseStatus::ExecutionConfirmed, ..Default::default() }), ] { let converted = convert_parser_event(event, None, 123).expect("supported trade"); assert_eq!(converted.third_program(), Some(&source)); - assert_eq!(converted.trade_parse_status(), Some(TradeParseStatus::ExecutionConfirmed)); } } } diff --git a/src/streaming/parser_sdk_bridge/pump_pumpswap.rs b/src/streaming/parser_sdk_bridge/pump_pumpswap.rs index 490ff03..59a91a8 100644 --- a/src/streaming/parser_sdk_bridge/pump_pumpswap.rs +++ b/src/streaming/parser_sdk_bridge/pump_pumpswap.rs @@ -525,7 +525,6 @@ pub(crate) fn pumpswap_buy_full_from_parser( ) -> PumpSwapBuyEvent { PumpSwapBuyEvent { third_program: b.third_program, - parse_status: b.parse_status, metadata: meta, timestamp: b.timestamp, base_amount_out: b.base_amount_out, @@ -588,7 +587,6 @@ pub(crate) fn pumpswap_sell_full_from_parser( ) -> PumpSwapSellEvent { PumpSwapSellEvent { third_program: s.third_program, - parse_status: s.parse_status, metadata: meta, timestamp: s.timestamp, base_amount_in: s.base_amount_in, @@ -734,7 +732,6 @@ pub(crate) fn pumpfun_trade_from_parser_with_event_type( let meta = adapt_pm(pm, bt, recv_wall_us, ProtocolType::PumpFun, event_type, pump_program()); let st = PumpFunTradeEvent { third_program: t.third_program, - parse_status: t.parse_status, metadata: meta, mint: t.mint, sol_amount: t.sol_amount, @@ -829,7 +826,6 @@ pub(crate) fn pumpswap_trade_from_parser( if t.is_buy { Some(DexEvent::PumpSwapBuyEvent(PumpSwapBuyEvent { third_program: t.third_program, - parse_status: t.parse_status, metadata: meta, timestamp: t.timestamp, base_amount_out: t.token_amount, @@ -870,7 +866,6 @@ pub(crate) fn pumpswap_trade_from_parser( } else { Some(DexEvent::PumpSwapSellEvent(PumpSwapSellEvent { third_program: t.third_program, - parse_status: t.parse_status, metadata: meta, timestamp: t.timestamp, base_amount_in: t.token_amount, diff --git a/src/streaming/parser_sdk_bridge/raydium_and_damm.rs b/src/streaming/parser_sdk_bridge/raydium_and_damm.rs index ad51e25..54e54a0 100644 --- a/src/streaming/parser_sdk_bridge/raydium_and_damm.rs +++ b/src/streaming/parser_sdk_bridge/raydium_and_damm.rs @@ -41,7 +41,6 @@ pub(crate) fn meteora_damm_v2_swap_from_parser( ) -> MeteoraDammV2SwapEvent { MeteoraDammV2SwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, pool: e.pool, trade_direction: e.trade_direction, @@ -121,7 +120,6 @@ pub(crate) fn raydium_cpmm_swap_from_parser( ) -> RaydiumCpmmSwapEvent { RaydiumCpmmSwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, input_vault_before: e.input_vault_before, output_vault_before: e.output_vault_before, @@ -309,7 +307,6 @@ pub(crate) fn raydium_amm_v4_swap_from_parser( ) -> RaydiumAmmV4SwapEvent { RaydiumAmmV4SwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, amount_in: e.amount_in, minimum_amount_out: e.minimum_amount_out, @@ -460,7 +457,6 @@ pub(crate) fn raydium_clmm_swap_from_parser( ) -> RaydiumClmmSwapEvent { RaydiumClmmSwapEvent { third_program: e.third_program, - parse_status: e.parse_status, metadata: meta, amount: e.amount, other_amount_threshold: e.other_amount_threshold,