feat: add flexible nonce parameter support

- Add nonce_account and current_nonce to trade parameters
- Remove hardcoded NonceCache dependency from nonce_manager
- Update examples and documentation for new nonce usage
- Fix nonce documentation errors and improve clarity
This commit is contained in:
ysq
2025-09-19 18:02:11 +08:00
parent a53038855e
commit 4907aafead
26 changed files with 214 additions and 71 deletions
+13 -1
View File
@@ -17,8 +17,8 @@ use crate::trading::core::params::RaydiumCpmmParams;
use crate::trading::core::traits::ProtocolParams;
use crate::trading::factory::DexType;
use crate::trading::BuyParams;
use crate::trading::SellParams;
use crate::trading::MiddlewareManager;
use crate::trading::SellParams;
use crate::trading::TradeFactory;
use common::SolanaRpcClient;
use parking_lot::Mutex;
@@ -90,6 +90,10 @@ pub struct TradeBuyParams {
pub create_mint_ata: bool,
/// Whether to enable seed-based optimization for account creation
pub open_seed_optimize: bool,
/// Nonce account for transaction validity
pub nonce_account: Option<Pubkey>,
/// Recent nonce for transaction validity
pub current_nonce: Option<Hash>,
}
/// Parameters for executing sell orders across different DEX protocols
@@ -124,6 +128,10 @@ pub struct TradeSellParams {
pub close_wsol_ata: bool,
/// Whether to enable seed-based optimization for account creation
pub open_seed_optimize: bool,
/// Nonce account for transaction validity
pub nonce_account: Option<Pubkey>,
/// Recent nonce for transaction validity
pub current_nonce: Option<Hash>,
}
impl SolanaTrade {
@@ -264,6 +272,8 @@ impl SolanaTrade {
create_mint_ata: params.create_mint_ata,
swqos_clients: self.swqos_clients.clone(),
middleware_manager: self.middleware_manager.clone(),
nonce_account: params.nonce_account,
current_nonce: params.current_nonce,
};
// Validate protocol params
@@ -334,6 +344,8 @@ impl SolanaTrade {
middleware_manager: self.middleware_manager.clone(),
create_wsol_ata: params.create_wsol_ata,
close_wsol_ata: params.close_wsol_ata,
nonce_account: params.nonce_account,
current_nonce: params.current_nonce,
};
// Validate protocol params