refactor(gas-fee): replace init_builtin_fee_strategies with set_global_strategy
- Add customizable cu_limit, cu_price, buy_tip, sell_tip parameters - Update all examples and documentation - Simplify strategy configuration API
This commit is contained in:
@@ -134,7 +134,7 @@ let client = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
|||||||
|
|
||||||
For detailed information about Gas Fee Strategy, see the [Gas Fee Strategy Reference](docs/GAS_FEE_STRATEGY.md).
|
For detailed information about Gas Fee Strategy, see the [Gas Fee Strategy Reference](docs/GAS_FEE_STRATEGY.md).
|
||||||
```rust
|
```rust
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3. Build Trading Parameters
|
#### 3. Build Trading Parameters
|
||||||
|
|||||||
+2
-2
@@ -134,8 +134,8 @@ let client = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
|||||||
|
|
||||||
有关 Gas Fee 策略的详细信息,请参阅 [Gas Fee 策略参考手册](docs/GAS_FEE_STRATEGY_CN.md)。
|
有关 Gas Fee 策略的详细信息,请参阅 [Gas Fee 策略参考手册](docs/GAS_FEE_STRATEGY_CN.md)。
|
||||||
```rust
|
```rust
|
||||||
// 使用内置策略
|
// 设置全局策略
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3. 构建交易参数
|
#### 3. 构建交易参数
|
||||||
|
|||||||
@@ -13,12 +13,17 @@ This module supports users to configure strategies for SwqosType under different
|
|||||||
|
|
||||||
Each (SwqosType, TradeType) combination can only configure one strategy. Subsequent strategy configurations will override previous ones.
|
Each (SwqosType, TradeType) combination can only configure one strategy. Subsequent strategy configurations will override previous ones.
|
||||||
|
|
||||||
### 2. Using Built-in Strategies
|
### 2. Set Global Strategy (can also be configured individually)
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use sol_trade_sdk::common::gas_fee_strategy::GasFeeStrategy;
|
use sol_trade_sdk::common::{gas_fee_strategy::GasFeeStrategy, set_global_gas_fee_strategy};
|
||||||
// Use built-in strategies (includes normal strategies for various SwqosTypes)
|
// Set global strategy (normal strategy)
|
||||||
GasFeeStrategy::init_builtin_fee_strategies();
|
set_global_gas_fee_strategy(
|
||||||
|
150000, // cu_limit
|
||||||
|
500000, // cu_price
|
||||||
|
0.001, // buy tip
|
||||||
|
0.001 // sell tip
|
||||||
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Configuring Single Strategy
|
### 3. Configuring Single Strategy
|
||||||
|
|||||||
@@ -13,12 +13,17 @@
|
|||||||
|
|
||||||
每个 (SwqosType, TradeType) 的组合仅可配置一个策略。后续配置的策略会覆盖之前的策略。
|
每个 (SwqosType, TradeType) 的组合仅可配置一个策略。后续配置的策略会覆盖之前的策略。
|
||||||
|
|
||||||
### 2. 使用内置策略
|
### 2. 设置全局策略(也可以不设置,单独去配置单个策略)
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
use sol_trade_sdk::common::gas_fee_strategy::GasFeeStrategy;
|
use sol_trade_sdk::common::{gas_fee_strategy::GasFeeStrategy, set_global_gas_fee_strategy};
|
||||||
// 使用内置策略(内置了各个 SwqosType 的 normal 策略)
|
// 设置全局策略(normal 策略)
|
||||||
GasFeeStrategy::init_builtin_fee_strategies();
|
set_global_gas_fee_strategy(
|
||||||
|
150000, // cu_limit
|
||||||
|
500000, // cu_price
|
||||||
|
0.001, // buy tip
|
||||||
|
0.001 // sell tip
|
||||||
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. 配置单个策略
|
### 3. 配置单个策略
|
||||||
@@ -62,4 +67,4 @@ GasFeeStrategy::clear();
|
|||||||
|
|
||||||
## 🔗 相关文档
|
## 🔗 相关文档
|
||||||
|
|
||||||
- [示例:Gas Fee 策略](../examples/gas_fee_strategy/)
|
- [示例:Gas Fee 策略](../examples/gas_fee_strategy/)
|
||||||
|
|||||||
@@ -124,8 +124,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,8 +116,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1304,8 +1304,8 @@ async fn initialize_real_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(payer, trade_config).await;
|
let solana_trade = SolanaTrade::new(payer, trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use sol_trade_sdk::{
|
use sol_trade_sdk::{
|
||||||
common::gas_fee_strategy::GasFeeStrategy,
|
common::{gas_fee_strategy::GasFeeStrategy, set_global_gas_fee_strategy},
|
||||||
swqos::{SwqosType, TradeType},
|
swqos::{SwqosType, TradeType},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -8,12 +8,12 @@ async fn main() {
|
|||||||
println!("🚀 Gas Fee Strategy Demo");
|
println!("🚀 Gas Fee Strategy Demo");
|
||||||
println!("========================");
|
println!("========================");
|
||||||
|
|
||||||
// Initialize builtin strategies
|
// Set global strategy
|
||||||
println!("1. Initialize builtin strategies");
|
println!("1. Set global strategy");
|
||||||
GasFeeStrategy::init_builtin_fee_strategies();
|
set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
|
|
||||||
// Print all strategies
|
// Print all strategies
|
||||||
println!("\n2. Print all builtin strategies");
|
println!("\n2. Print all strategies");
|
||||||
GasFeeStrategy::print_all_strategies();
|
GasFeeStrategy::print_all_strategies();
|
||||||
|
|
||||||
// Clear all strategies
|
// Clear all strategies
|
||||||
|
|||||||
@@ -66,8 +66,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,8 +105,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,8 +73,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -85,8 +85,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,8 +130,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,8 +104,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,8 +126,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -94,8 +94,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,8 +35,8 @@ async fn create_solana_trade_client() -> AnyResult<SolanaTrade> {
|
|||||||
];
|
];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade_client = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade_client = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("SolanaTrade client created successfully!");
|
println!("SolanaTrade client created successfully!");
|
||||||
Ok(solana_trade_client)
|
Ok(solana_trade_client)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ async fn create_solana_trade_client() -> Result<SolanaTrade, Box<dyn std::error:
|
|||||||
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
let swqos_configs: Vec<SwqosConfig> = vec![SwqosConfig::Default(rpc_url.clone())];
|
||||||
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
let trade_config = TradeConfig::new(rpc_url, swqos_configs, commitment);
|
||||||
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
let solana_trade = SolanaTrade::new(Arc::new(payer), trade_config).await;
|
||||||
// init gas fee strategy
|
// set global strategy
|
||||||
sol_trade_sdk::common::GasFeeStrategy::init_builtin_fee_strategies();
|
sol_trade_sdk::common::set_global_gas_fee_strategy(150000, 500000, 0.001, 0.001);
|
||||||
println!("✅ SolanaTrade client initialized successfully!");
|
println!("✅ SolanaTrade client initialized successfully!");
|
||||||
Ok(solana_trade)
|
Ok(solana_trade)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,3 @@
|
|||||||
use crate::constants::trade::trade::{
|
|
||||||
DEFAULT_BUY_TIP_FEE, DEFAULT_RPC_UNIT_LIMIT, DEFAULT_RPC_UNIT_PRICE, DEFAULT_SELL_TIP_FEE,
|
|
||||||
DEFAULT_TIP_UNIT_LIMIT, DEFAULT_TIP_UNIT_PRICE,
|
|
||||||
};
|
|
||||||
use crate::swqos::{SwqosType, TradeType};
|
use crate::swqos::{SwqosType, TradeType};
|
||||||
use arc_swap::ArcSwap;
|
use arc_swap::ArcSwap;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
@@ -33,46 +29,44 @@ static STRATEGIES: LazyLock<
|
|||||||
|
|
||||||
pub struct GasFeeStrategy;
|
pub struct GasFeeStrategy;
|
||||||
|
|
||||||
impl GasFeeStrategy {
|
pub fn set_global_gas_fee_strategy(cu_limit: u32, cu_price: u64, buy_tip: f64, sell_tip: f64) {
|
||||||
/// 初始化内置策略。
|
GasFeeStrategy::add_normal_fee_strategies(
|
||||||
/// Initialize built-in strategies
|
&SwqosType::values()
|
||||||
pub fn init_builtin_fee_strategies() {
|
.into_iter()
|
||||||
GasFeeStrategy::add_normal_fee_strategies(
|
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
|
||||||
&SwqosType::values()
|
.collect::<Vec<SwqosType>>(),
|
||||||
.into_iter()
|
TradeType::Buy,
|
||||||
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
|
cu_limit,
|
||||||
.collect::<Vec<SwqosType>>(),
|
cu_price,
|
||||||
TradeType::Buy,
|
buy_tip,
|
||||||
DEFAULT_TIP_UNIT_PRICE,
|
);
|
||||||
DEFAULT_BUY_TIP_FEE,
|
GasFeeStrategy::add_normal_fee_strategies(
|
||||||
DEFAULT_TIP_UNIT_LIMIT,
|
&SwqosType::values()
|
||||||
);
|
.into_iter()
|
||||||
GasFeeStrategy::add_normal_fee_strategies(
|
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
|
||||||
&SwqosType::values()
|
.collect::<Vec<SwqosType>>(),
|
||||||
.into_iter()
|
TradeType::Sell,
|
||||||
.filter(|swqos_type| !swqos_type.eq(&SwqosType::Default))
|
cu_limit,
|
||||||
.collect::<Vec<SwqosType>>(),
|
cu_price,
|
||||||
TradeType::Sell,
|
sell_tip,
|
||||||
DEFAULT_TIP_UNIT_PRICE,
|
);
|
||||||
DEFAULT_SELL_TIP_FEE,
|
GasFeeStrategy::add_normal_fee_strategy(
|
||||||
DEFAULT_TIP_UNIT_LIMIT,
|
SwqosType::Default,
|
||||||
);
|
TradeType::Buy,
|
||||||
GasFeeStrategy::add_normal_fee_strategy(
|
cu_limit,
|
||||||
SwqosType::Default,
|
cu_price,
|
||||||
TradeType::Buy,
|
0.0,
|
||||||
DEFAULT_RPC_UNIT_LIMIT,
|
);
|
||||||
DEFAULT_RPC_UNIT_PRICE,
|
GasFeeStrategy::add_normal_fee_strategy(
|
||||||
0.0,
|
SwqosType::Default,
|
||||||
);
|
TradeType::Sell,
|
||||||
GasFeeStrategy::add_normal_fee_strategy(
|
cu_limit,
|
||||||
SwqosType::Default,
|
cu_price,
|
||||||
TradeType::Sell,
|
0.0,
|
||||||
DEFAULT_RPC_UNIT_LIMIT,
|
);
|
||||||
DEFAULT_RPC_UNIT_PRICE,
|
}
|
||||||
0.0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
impl GasFeeStrategy {
|
||||||
/// 为多个服务类型添加高低费率策略,会移除(SwqosType,TradeType)的默认策略。
|
/// 为多个服务类型添加高低费率策略,会移除(SwqosType,TradeType)的默认策略。
|
||||||
/// Add high-low fee strategies for multiple service types, Will remove the default strategy of (SwqosType,TradeType)
|
/// Add high-low fee strategies for multiple service types, Will remove the default strategy of (SwqosType,TradeType)
|
||||||
pub fn add_high_low_fee_strategies(
|
pub fn add_high_low_fee_strategies(
|
||||||
@@ -140,9 +134,9 @@ impl GasFeeStrategy {
|
|||||||
pub fn add_normal_fee_strategies(
|
pub fn add_normal_fee_strategies(
|
||||||
swqos_types: &[SwqosType],
|
swqos_types: &[SwqosType],
|
||||||
trade_type: TradeType,
|
trade_type: TradeType,
|
||||||
|
cu_limit: u32,
|
||||||
cu_price: u64,
|
cu_price: u64,
|
||||||
tip: f64,
|
tip: f64,
|
||||||
cu_limit: u32,
|
|
||||||
) {
|
) {
|
||||||
for swqos_type in swqos_types {
|
for swqos_type in swqos_types {
|
||||||
GasFeeStrategy::remove_strategy(*swqos_type, trade_type);
|
GasFeeStrategy::remove_strategy(*swqos_type, trade_type);
|
||||||
|
|||||||
Reference in New Issue
Block a user