refactor: reorganize code structure and optimize modular design

- Remove src/common/address_lookup.rs and tip_cache.rs to simplify common modules
- Move protocol-specific utility functions from trading/ to instruction/utils/
- Refactor utility functions for PumpFun, PumpSwap, Raydium AMM V4, and Raydium CPMM
- Consolidate constant definitions by inlining seeds and accounts modules into respective utility files
- Update all import paths to ensure code consistency
- Optimize trading parameter construction and executor logic
- Improve address lookup cache and nonce management mechanisms
This commit is contained in:
ysq
2025-09-07 19:00:08 +08:00
parent eddac7a679
commit 21d6714c25
41 changed files with 571 additions and 755 deletions
+13 -8
View File
@@ -25,10 +25,14 @@
//! - `get_final_market_cap_sol`: Calculates the final market cap in SOL after all tokens are sold
//! - `get_buy_out_price`: Calculates the price to buy out all remaining tokens
use serde::{Serialize, Deserialize};
use serde::{Deserialize, Serialize};
use solana_sdk::pubkey::Pubkey;
use crate::{constants::pumpfun::global_constants::{INITIAL_REAL_TOKEN_RESERVES, INITIAL_VIRTUAL_SOL_RESERVES, INITIAL_VIRTUAL_TOKEN_RESERVES, TOKEN_TOTAL_SUPPLY}, trading::pumpfun::common::{get_bonding_curve_pda, get_creator_vault_pda}};
use crate::instruction::utils::pumpfun::global_constants::{
INITIAL_REAL_TOKEN_RESERVES, INITIAL_VIRTUAL_SOL_RESERVES, INITIAL_VIRTUAL_TOKEN_RESERVES,
TOKEN_TOTAL_SUPPLY,
};
use crate::instruction::utils::pumpfun::{get_bonding_curve_pda, get_creator_vault_pda};
use crate::solana_streamer_sdk::streaming::event_parser::protocols::pumpfun::PumpFunTradeEvent;
/// Represents the global configuration account for token pricing and fees
@@ -55,7 +59,12 @@ pub struct BondingCurveAccount {
}
impl BondingCurveAccount {
pub fn from_dev_trade(mint: &Pubkey, dev_token_amount: u64, dev_sol_amount: u64, creator: Pubkey) -> Self {
pub fn from_dev_trade(
mint: &Pubkey,
dev_token_amount: u64,
dev_sol_amount: u64,
creator: Pubkey,
) -> Self {
Self {
discriminator: 0,
account: get_bonding_curve_pda(mint).unwrap(),
@@ -118,11 +127,7 @@ impl BondingCurveAccount {
// Convert back to u64 and return the minimum of calculated tokens and real reserves
let s_u64 = s as u64;
Ok(if s_u64 < self.real_token_reserves {
s_u64
} else {
self.real_token_reserves
})
Ok(if s_u64 < self.real_token_reserves { s_u64 } else { self.real_token_reserves })
}
/// Calculates the amount of SOL received for selling tokens
+8 -2
View File
@@ -23,10 +23,16 @@
//! - `creator_fee`: Fee for creators
//! - `fee_recipients`: Array of fee recipient accounts
use serde::{Deserialize, Serialize};
use solana_sdk::pubkey::Pubkey;
use serde::{Serialize, Deserialize};
use crate::constants::pumpfun::global_constants::*;
use crate::instruction::utils::pumpfun::global_constants::{
AUTHORITY, CREATOR_FEE, ENABLE_MIGRATE, FEE_BASIS_POINTS, FEE_RECIPIENT, GLOBAL_ACCOUNT,
INITIAL_REAL_TOKEN_RESERVES, INITIAL_VIRTUAL_SOL_RESERVES, INITIAL_VIRTUAL_TOKEN_RESERVES,
POOL_MIGRATION_FEE, PUMPFUN_AMM_FEE_1, PUMPFUN_AMM_FEE_2, PUMPFUN_AMM_FEE_3, PUMPFUN_AMM_FEE_4,
PUMPFUN_AMM_FEE_5, PUMPFUN_AMM_FEE_6, PUMPFUN_AMM_FEE_7, TOKEN_TOTAL_SUPPLY,
WITHDRAW_AUTHORITY,
};
/// Represents the global configuration account for token pricing and fees
#[derive(Debug, Clone, Serialize, Deserialize)]