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:
+1
-1
@@ -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"
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user