mirror of
https://github.com/0xfnzero/solana-streamer.git
synced 2026-08-07 14:17:44 +00:00
Merge commit '9d415cf9500f11d48596768e37cbb9334c298633'
This commit is contained in:
@@ -1,18 +1,14 @@
|
||||
use crate::streaming::event_parser::{
|
||||
common::{
|
||||
filter::EventTypeFilter, high_performance_clock::elapsed_micros_since,
|
||||
parse_swap_data_from_next_grpc_instructions, parse_swap_data_from_next_instructions,
|
||||
EventMetadata,
|
||||
},
|
||||
core::{
|
||||
DexEvent, Protocol, common::{
|
||||
EventMetadata, filter::EventTypeFilter, high_performance_clock::elapsed_micros_since, parse_swap_data_from_next_grpc_instructions, parse_swap_data_from_next_instructions
|
||||
}, core::{
|
||||
dispatcher::EventDispatcher,
|
||||
global_state::{
|
||||
add_bonk_dev_address, add_dev_address, is_bonk_dev_address_in_signature,
|
||||
is_dev_address_in_signature,
|
||||
},
|
||||
merger_event::merge,
|
||||
},
|
||||
DexEvent, Protocol,
|
||||
}, protocols::raydium_amm_v4::parser::RAYDIUM_AMM_V4_PROGRAM_ID
|
||||
};
|
||||
use prost_types::Timestamp;
|
||||
use solana_sdk::{
|
||||
@@ -327,11 +323,15 @@ impl EventParser {
|
||||
|
||||
let is_cu_program = EventDispatcher::is_compute_budget_program(&program_id);
|
||||
|
||||
// 检查指令数据长度(至少需要 8 字节的 discriminator)
|
||||
if !is_cu_program && instruction.data.len() < 8 {
|
||||
let disc_len = match program_id {
|
||||
RAYDIUM_AMM_V4_PROGRAM_ID => 1,
|
||||
_ => 8,
|
||||
};
|
||||
|
||||
// 检查指令数据长度(至少需要 disc_len 字节的 discriminator)
|
||||
if !is_cu_program && instruction.data.len() < disc_len {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
// 创建元数据
|
||||
let timestamp = block_time.unwrap_or(Timestamp { seconds: 0, nanos: 0 });
|
||||
let block_time_ms = timestamp.seconds * 1000 + (timestamp.nanos as i64) / 1_000_000;
|
||||
@@ -366,8 +366,8 @@ impl EventParser {
|
||||
};
|
||||
|
||||
// 提取 discriminator 和数据
|
||||
let instruction_discriminator = &instruction.data[..8];
|
||||
let instruction_data = &instruction.data[8..];
|
||||
let instruction_discriminator = &instruction.data[..disc_len];
|
||||
let instruction_data = &instruction.data[disc_len..];
|
||||
|
||||
// 构建账户公钥列表
|
||||
let account_pubkeys: Vec<Pubkey> = instruction
|
||||
@@ -497,8 +497,13 @@ impl EventParser {
|
||||
|
||||
let is_cu_program = EventDispatcher::is_compute_budget_program(&program_id);
|
||||
|
||||
let disc_len = match program_id {
|
||||
RAYDIUM_AMM_V4_PROGRAM_ID => 1,
|
||||
_ => 8,
|
||||
};
|
||||
|
||||
// 检查指令数据长度(至少需要 8 字节的 discriminator)
|
||||
if !is_cu_program && instruction.data.len() < 8 {
|
||||
if !is_cu_program && instruction.data.len() < disc_len {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
@@ -536,8 +541,8 @@ impl EventParser {
|
||||
};
|
||||
|
||||
// 提取 discriminator 和数据
|
||||
let instruction_discriminator = &instruction.data[..8];
|
||||
let instruction_data = &instruction.data[8..];
|
||||
let instruction_discriminator = &instruction.data[..disc_len];
|
||||
let instruction_data = &instruction.data[disc_len..];
|
||||
|
||||
// 构建账户公钥列表
|
||||
let account_pubkeys: Vec<Pubkey> = instruction
|
||||
|
||||
Reference in New Issue
Block a user