feat(jito): add API token authentication support

- Update Jito configuration to require API token
- Add authentication headers to Jito API requests
- Bump version to 0.2.13
- Update documentation and examples
This commit is contained in:
ysq
2025-08-04 21:11:06 +08:00
parent e976af6935
commit 281218b15e
6 changed files with 15 additions and 13 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[package] [package]
name = "sol-trade-sdk" name = "sol-trade-sdk"
version = "0.2.12" version = "0.2.13"
edition = "2021" edition = "2021"
authors = ["William <byteblock6@gmail.com>", "sgxiang <sgxiang@gmail.com>", "wei <1415121722@qq.com>"] authors = ["William <byteblock6@gmail.com>", "sgxiang <sgxiang@gmail.com>", "wei <1415121722@qq.com>"]
repository = "https://github.com/0xfnzero/sol-trade-sdk" repository = "https://github.com/0xfnzero/sol-trade-sdk"
+3 -3
View File
@@ -31,14 +31,14 @@ Add the dependency to your `Cargo.toml`:
```toml ```toml
# Add to your Cargo.toml # Add to your Cargo.toml
sol-trade-sdk = { path = "./sol-trade-sdk", version = "0.2.12" } sol-trade-sdk = { path = "./sol-trade-sdk", version = "0.2.13" }
``` ```
### Use crates.io ### Use crates.io
```toml ```toml
# Add to your Cargo.toml # Add to your Cargo.toml
sol-trade-sdk = "0.2.12" sol-trade-sdk = "0.2.13"
``` ```
## Usage Examples ## Usage Examples
@@ -233,7 +233,7 @@ async fn test_create_solana_trade_client() -> AnyResult<SolanaTrade> {
// Configure various SWQOS services // Configure various SWQOS services
let swqos_configs = vec![ let swqos_configs = vec![
SwqosConfig::Jito(SwqosRegion::Frankfurt), SwqosConfig::Jito("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::NextBlock("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::NextBlock("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::Bloxroute("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::Bloxroute("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::ZeroSlot("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::ZeroSlot("your api_token".to_string(), SwqosRegion::Frankfurt),
+3 -3
View File
@@ -31,14 +31,14 @@ git clone https://github.com/0xfnzero/sol-trade-sdk
```toml ```toml
# 添加到您的 Cargo.toml # 添加到您的 Cargo.toml
sol-trade-sdk = { path = "./sol-trade-sdk", version = "0.2.12" } sol-trade-sdk = { path = "./sol-trade-sdk", version = "0.2.13" }
``` ```
### 使用 crates.io ### 使用 crates.io
```toml ```toml
# 添加到您的 Cargo.toml # 添加到您的 Cargo.toml
sol-trade-sdk = "0.2.12" sol-trade-sdk = "0.2.13"
``` ```
## 使用示例 ## 使用示例
@@ -233,7 +233,7 @@ async fn test_create_solana_trade_client() -> AnyResult<SolanaTrade> {
// 配置各种 SWQOS 服务 // 配置各种 SWQOS 服务
let swqos_configs = vec![ let swqos_configs = vec![
SwqosConfig::Jito(SwqosRegion::Frankfurt), SwqosConfig::Jito("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::NextBlock("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::NextBlock("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::Bloxroute("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::Bloxroute("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::ZeroSlot("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::ZeroSlot("your api_token".to_string(), SwqosRegion::Frankfurt),
+1 -1
View File
@@ -55,7 +55,7 @@ async fn test_create_solana_trade_client() -> AnyResult<SolanaTrade> {
fn create_swqos_configs(rpc_url: &str) -> Vec<SwqosConfig> { fn create_swqos_configs(rpc_url: &str) -> Vec<SwqosConfig> {
vec![ vec![
SwqosConfig::Jito(SwqosRegion::Frankfurt), SwqosConfig::Jito("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::NextBlock("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::NextBlock("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::Bloxroute("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::Bloxroute("your api_token".to_string(), SwqosRegion::Frankfurt),
SwqosConfig::ZeroSlot("your api_token".to_string(), SwqosRegion::Frankfurt), SwqosConfig::ZeroSlot("your api_token".to_string(), SwqosRegion::Frankfurt),
+4 -2
View File
@@ -78,10 +78,11 @@ impl JitoClient {
] ]
}))?; }))?;
let endpoint = format!("{}/api/v1/transactions", self.endpoint); let endpoint = format!("{}/api/v1/transactions?uuid={}", self.endpoint, self.auth_token);
let response_text = self.http_client.post(&endpoint) let response_text = self.http_client.post(&endpoint)
.body(request_body) .body(request_body)
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
.header("x-jito-auth", &self.auth_token)
.send() .send()
.await? .await?
.text() .text()
@@ -119,10 +120,11 @@ impl JitoClient {
"id": 1, "id": 1,
}); });
let endpoint = format!("{}/api/v1/bundles", self.endpoint); let endpoint = format!("{}/api/v1/bundles?uuid={}", self.endpoint, self.auth_token);
let response_text = self.http_client.post(&endpoint) let response_text = self.http_client.post(&endpoint)
.body(body.to_string()) .body(body.to_string())
.header("Content-Type", "application/json") .header("Content-Type", "application/json")
.header("x-jito-auth", &self.auth_token)
.send() .send()
.await? .await?
.text() .text()
+3 -3
View File
@@ -74,7 +74,7 @@ pub enum SwqosRegion {
#[derive(Debug, Clone, PartialEq, Eq, Hash)] #[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub enum SwqosConfig { pub enum SwqosConfig {
Default(String), Default(String),
Jito(SwqosRegion), Jito(String, SwqosRegion),
NextBlock(String, SwqosRegion), NextBlock(String, SwqosRegion),
Bloxroute(String, SwqosRegion), Bloxroute(String, SwqosRegion),
Temporal(String, SwqosRegion), Temporal(String, SwqosRegion),
@@ -95,12 +95,12 @@ impl SwqosConfig {
pub fn get_swqos_client(rpc_url: String, commitment: CommitmentConfig, swqos_config: SwqosConfig) -> Arc<SwqosClient> { pub fn get_swqos_client(rpc_url: String, commitment: CommitmentConfig, swqos_config: SwqosConfig) -> Arc<SwqosClient> {
match swqos_config { match swqos_config {
SwqosConfig::Jito(region) => { SwqosConfig::Jito(auth_token, region) => {
let endpoint = SwqosConfig::get_endpoint(SwqosType::Jito, region); let endpoint = SwqosConfig::get_endpoint(SwqosType::Jito, region);
let jito_client = JitoClient::new( let jito_client = JitoClient::new(
rpc_url.clone(), rpc_url.clone(),
endpoint, endpoint,
"".to_string() auth_token
); );
Arc::new(jito_client) Arc::new(jito_client)
} }