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