refactor: organize code into multi-protocol architecture with PumpFun submodules

This commit is contained in:
sgxiang
2025-06-06 22:13:19 +08:00
parent bfe76fcddc
commit 63109713f4
22 changed files with 251 additions and 242 deletions
+24 -24
View File
@@ -351,14 +351,14 @@ pub async fn extend_pumpfun_address_to_lookup_table(
pub fn get_pumpfun_addresses(payer: Pubkey, include_addresses: Vec<Pubkey>) -> Vec<Pubkey> {
let mut addresses = vec![
payer,
constants::accounts::PUMPFUN,
constants::accounts::SYSTEM_PROGRAM,
constants::accounts::TOKEN_PROGRAM,
constants::accounts::RENT,
constants::accounts::EVENT_AUTHORITY,
constants::accounts::ASSOCIATED_TOKEN_PROGRAM,
constants::global_constants::GLOBAL_ACCOUNT,
constants::global_constants::FEE_RECIPIENT,
constants::pumpfun::accounts::PUMPFUN,
constants::pumpfun::accounts::SYSTEM_PROGRAM,
constants::pumpfun::accounts::TOKEN_PROGRAM,
constants::pumpfun::accounts::RENT,
constants::pumpfun::accounts::EVENT_AUTHORITY,
constants::pumpfun::accounts::ASSOCIATED_TOKEN_PROGRAM,
constants::pumpfun::global_constants::GLOBAL_ACCOUNT,
constants::pumpfun::global_constants::FEE_RECIPIENT,
];
addresses.extend(include_addresses);
@@ -369,22 +369,22 @@ pub fn get_pumpfun_addresses(payer: Pubkey, include_addresses: Vec<Pubkey>) -> V
pub fn get_pumpfun_filtered_addresses(payer: Pubkey, include_addresses: Vec<Pubkey>) -> Vec<Pubkey> {
let mut addresses = vec![
payer,
constants::accounts::PUMPFUN,
constants::accounts::SYSTEM_PROGRAM,
constants::accounts::TOKEN_PROGRAM,
constants::accounts::RENT,
constants::accounts::EVENT_AUTHORITY,
constants::accounts::ASSOCIATED_TOKEN_PROGRAM,
constants::global_constants::GLOBAL_ACCOUNT,
constants::global_constants::FEE_RECIPIENT,
constants::global_constants::PUMPFUN_AMM_FEE_1,
constants::global_constants::PUMPFUN_AMM_FEE_2,
constants::global_constants::PUMPFUN_AMM_FEE_3,
constants::global_constants::PUMPFUN_AMM_FEE_4,
constants::global_constants::PUMPFUN_AMM_FEE_5,
constants::global_constants::PUMPFUN_AMM_FEE_6,
constants::global_constants::PUMPFUN_AMM_FEE_7,
// constants::global_constants::PUMPFUN_AMM_FEE_8,
constants::pumpfun::accounts::PUMPFUN,
constants::pumpfun::accounts::SYSTEM_PROGRAM,
constants::pumpfun::accounts::TOKEN_PROGRAM,
constants::pumpfun::accounts::RENT,
constants::pumpfun::accounts::EVENT_AUTHORITY,
constants::pumpfun::accounts::ASSOCIATED_TOKEN_PROGRAM,
constants::pumpfun::global_constants::GLOBAL_ACCOUNT,
constants::pumpfun::global_constants::FEE_RECIPIENT,
constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_1,
constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_2,
constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_3,
constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_4,
constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_5,
constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_6,
constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_7,
// constants::pumpfun::global_constants::PUMPFUN_AMM_FEE_8,
];
addresses.extend(include_addresses);
+1 -5
View File
@@ -1,8 +1,4 @@
pub mod logs_data;
pub mod logs_parser;
pub mod logs_filters;
pub mod logs_subscribe;
pub mod logs_events;
pub mod pumpfun;
pub mod address_lookup;
pub mod nonce_cache;
pub mod tip_cache;
@@ -1,7 +1,7 @@
use base64::engine::general_purpose;
use base64::Engine;
use regex::Regex;
use crate::common::logs_data::{CreateTokenInfo, TradeInfo, EventTrait, TransferInfo, TipInfo};
use crate::common::pumpfun::logs_data::{CreateTokenInfo, TradeInfo, EventTrait, TransferInfo, TipInfo};
pub const PROGRAM_DATA: &str = "Program data: ";
@@ -1,5 +1,5 @@
use crate::common::logs_data::DexInstruction;
use crate::common::logs_parser::{parse_create_token_data, parse_trade_data, parse_instruction_create_token_data, parse_instruction_trade_data};
use crate::common::pumpfun::logs_data::DexInstruction;
use crate::common::pumpfun::logs_parser::{parse_create_token_data, parse_trade_data, parse_instruction_create_token_data, parse_instruction_trade_data};
use crate::error::ClientResult;
pub struct LogFilter;
use solana_sdk::pubkey::Pubkey;
@@ -3,7 +3,7 @@ use std::str::FromStr;
use base64::{Engine as _, engine::general_purpose::STANDARD as BASE64};
use crate::error::{ClientError, ClientResult};
use crate::common::{
use crate::common::pumpfun::{
logs_data::{DexInstruction, CreateTokenInfo, TradeInfo},
logs_filters::LogFilter
};
@@ -8,7 +8,7 @@ use std::sync::Arc;
use tokio::sync::mpsc;
use tokio::task::JoinHandle;
use futures::StreamExt;
use crate::{constants, common::{
use crate::{constants, common::pumpfun::{
logs_data::DexInstruction, logs_events::DexEvent, logs_filters::LogFilter
}};
@@ -41,7 +41,7 @@ pub async fn tokens_subscription<F>(
where
F: Fn(PumpfunEvent) + Send + Sync + 'static,
{
let program_address = constants::accounts::PUMPFUN.to_string();
let program_address = constants::pumpfun::accounts::PUMPFUN.to_string();
let logs_filter = RpcTransactionLogsFilter::Mentions(vec![program_address]);
let logs_config = RpcTransactionLogsConfig {
+11
View File
@@ -0,0 +1,11 @@
pub mod logs_data;
pub mod logs_parser;
pub mod logs_filters;
pub mod logs_subscribe;
pub mod logs_events;
pub use logs_data::*;
pub use logs_parser::*;
pub use logs_filters::*;
pub use logs_subscribe::*;
pub use logs_events::*;
+1 -1
View File
@@ -3,7 +3,7 @@ use std::sync::Arc;
use solana_client::rpc_client::RpcClient;
use solana_sdk::{commitment_config::CommitmentConfig, pubkey::Pubkey, signature::Keypair};
use serde::Deserialize;
use crate::{constants::trade::{DEFAULT_BUY_TIP_FEE, DEFAULT_COMPUTE_UNIT_LIMIT, DEFAULT_COMPUTE_UNIT_PRICE, DEFAULT_SELL_TIP_FEE}, swqos::FeeClient};
use crate::{constants::pumpfun::trade::{DEFAULT_BUY_TIP_FEE, DEFAULT_COMPUTE_UNIT_LIMIT, DEFAULT_COMPUTE_UNIT_PRICE, DEFAULT_SELL_TIP_FEE}, swqos::FeeClient};
#[derive(Debug, Clone, PartialEq)]
pub enum FeeType {