{"id":44636930,"url":"https://github.com/rustjesty/solana-trading-sdk-rust","last_synced_at":"2026-02-14T17:33:38.709Z","repository":{"id":311944421,"uuid":"970037810","full_name":"rustjesty/solana-trading-sdk-rust","owner":"rustjesty","description":"Solana Dex Trading SDK(Rust)","archived":false,"fork":false,"pushed_at":"2025-08-27T16:08:28.000Z","size":106,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-28T00:53:09.536Z","etag":null,"topics":["0slot","astralane","bloxroute","buy","create","instruction","jito","meteora","nextblock","pumpfun","rust","sdk","sell","solana","swap","trading"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustjesty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-21T11:06:05.000Z","updated_at":"2025-08-27T16:08:33.000Z","dependencies_parsed_at":"2025-08-28T00:53:13.305Z","dependency_job_id":"a7949238-8f8b-4dbb-a832-4e06f68e5c4f","html_url":"https://github.com/rustjesty/solana-trading-sdk-rust","commit_stats":null,"previous_names":["rustjesty/solana-trading-sdk-rust"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/rustjesty/solana-trading-sdk-rust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustjesty%2Fsolana-trading-sdk-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustjesty%2Fsolana-trading-sdk-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustjesty%2Fsolana-trading-sdk-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustjesty%2Fsolana-trading-sdk-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustjesty","download_url":"https://codeload.github.com/rustjesty/solana-trading-sdk-rust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustjesty%2Fsolana-trading-sdk-rust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29450899,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["0slot","astralane","bloxroute","buy","create","instruction","jito","meteora","nextblock","pumpfun","rust","sdk","sell","solana","swap","trading"],"created_at":"2026-02-14T17:33:38.550Z","updated_at":"2026-02-14T17:33:38.701Z","avatar_url":"https://github.com/rustjesty.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Solana Trading SDK\n\nA comprehensive Rust SDK for trading on the Solana blockchain, with support for multiple DEXs and advanced transaction submission strategies.\n\n## Features\n\n- **Multi-DEX Support**: Trade on Pump.fun, PumpSwap, and other Solana DEXs\n- **Smart Transaction Routing**: Multiple SWQoS (Solana Web Quality of Service) providers for optimal transaction submission\n- **Token Creation**: Create and deploy new tokens with metadata on IPFS\n- **Priority Fees \u0026 MEV Protection**: Built-in support for priority fees and MEV protection through Jito bundles\n- **Comprehensive Trading**: Buy, sell, and create tokens with customizable slippage and fees\n\n## Supported DEXs\n\n- **Pumpfun**\n- **PumpSwap**\n- **RaydiumLaunchpad**\n- **Boopfun**\n- **Moonshot**: Comming soon\n- **Believe**: Comming soon\n\n## Supported SWQoS Providers\n\n- **Default RPC**: Standard Solana RPC endpoints\n- **Jito**: MEV protection and bundle submission\n- **NextBlock**: High-performance transaction processing\n- **Blox**: Advanced routing and execution\n- **ZeroSlot**: Fast transaction confirmation\n- **Temporal**: Time-based transaction optimization\n\n## Installation\n\n```sh\ncargo add solana-trading-sdk\n```\n\n## Quick Start\n\n### Basic Setup\n\n```rust\nuse solana_trading_sdk::{\n    common::{TradingClient, TradingConfig},\n    swqos::SWQoSType,\n};\n\n#[tokio::main]\nasync fn main() -\u003e anyhow::Result\u003c()\u003e {\n    let client = TradingClient::new(TradingConfig {\n        rpc_url: \"https://solana-rpc.publicnode.com\".to_string(),\n        swqos: vec![\n            SWQoSType::Default(\"https://solana-rpc.publicnode.com\".to_string(), None),\n            SWQoSType::Jito(\"https://mainnet.block-engine.jito.wtf\".to_string()),\n        ],\n    })?;\n    \n    client.initialize().await?;\n    Ok(())\n}\n```\n\n### Token Trading\n\n```rust\nuse solana_trading_sdk::{\n    dex::types::DexType,\n    instruction::builder::PriorityFee,\n};\nuse solana_sdk::{native_token::sol_to_lamports, pubkey::Pubkey, signature::Keypair};\n\nasync fn buy_token() -\u003e anyhow::Result\u003c()\u003e {\n    let client = get_trading_client().await?;\n    let payer = Keypair::from_base58_string(\"your_private_key\");\n    let mint = Pubkey::from_str(\"token_mint_address\")?;\n    \n    let sol_amount = sol_to_lamports(1.0); // 1 SOL\n    let slippage_basis_points = 3000; // 30%\n    let fee = PriorityFee {\n        unit_limit: 100000,\n        unit_price: 10000000,\n    };\n    let tip = sol_to_lamports(0.001); // 0.001 SOL tip\n    \n    // Buy on Pump.fun\n    client.dexs[\u0026DexType::Pumpfun]\n        .buy(\u0026payer, \u0026mint, sol_amount, slippage_basis_points, Some(fee), Some(tip))\n        .await?;\n    \n    Ok(())\n}\n```\n\n### Token Creation\n\n```rust\nuse solana_trading_sdk::{\n    ipfs::{metadata::create_token_metadata, types::CreateTokenMetadata},\n    dex::{pumpfun::Pumpfun, types::Create},\n};\n\nasync fn create_token() -\u003e anyhow::Result\u003c()\u003e {\n    // 1. Create metadata\n    let token_info = CreateTokenMetadata {\n        name: \"My Token\".to_string(),\n        symbol: \"MTK\".to_string(),\n        description: \"A revolutionary new token\".to_string(),\n        file: \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8/5+hHgAHggJ/PchI7wAAAABJRU5ErkJggg==\".to_string(),\n        twitter: Some(\"@mytoken\".to_string()),\n        telegram: Some(\"@mytokengroup\".to_string()),\n        website: Some(\"https://mytoken.com\".to_string()),\n        metadata_uri: None,\n    };\n    \n    let metadata = create_token_metadata(token_info, \"your_pinata_jwt_token\").await?;\n    \n    // 2. Create token on Pump.fun\n    let payer = Keypair::from_base58_string(\"your_private_key\");\n    let mint = Keypair::new();\n    \n    let create = Create {\n        name: metadata.metadata.name,\n        symbol: metadata.metadata.symbol,\n        uri: metadata.metadata_uri,\n        mint: mint.pubkey(),\n        buy_sol_amount: Some(sol_to_lamports(0.1)),\n        slippage_basis_points: Some(3000),\n    };\n    \n    let pumpfun_client = get_pumpfun_client().await?;\n    pumpfun_client.create(payer, create, Some(fee), Some(tip)).await?;\n    \n    Ok(())\n}\n```\n\n### SOL and Token Transfers\n\n```rust\nasync fn transfer_sol() -\u003e anyhow::Result\u003c()\u003e {\n    let from = Keypair::from_base58_string(\"sender_private_key\");\n    let to = Pubkey::from_str(\"recipient_address\")?;\n    let amount = sol_to_lamports(0.1); // 0.1 SOL\n    \n    let swqos_client = get_swqos_client();\n    swqos_client.transfer(\u0026from, \u0026to, amount, Some(fee)).await?;\n    Ok(())\n}\n\nasync fn transfer_token() -\u003e anyhow::Result\u003c()\u003e {\n    let from = Keypair::from_base58_string(\"sender_private_key\");\n    let to = Pubkey::from_str(\"recipient_address\")?;\n    let mint = Pubkey::from_str(\"token_mint_address\")?;\n    let amount = 1000; // Token amount in smallest units\n    \n    let swqos_client = get_swqos_client();\n    swqos_client.spl_transfer(\u0026from, \u0026to, \u0026mint, amount, Some(fee)).await?;\n    Ok(())\n}\n```\n\n## Configuration\n\n### SWQoS Providers\n\nConfigure multiple SWQoS providers for optimal transaction routing:\n\n```rust\nlet swqos = vec![\n    SWQoSType::Default(\"https://solana-rpc.publicnode.com\".to_string(), None),\n    SWQoSType::Jito(\"https://mainnet.block-engine.jito.wtf\".to_string()),\n    SWQoSType::NextBlock(\"https://fra.nextblock.io\".to_string(), \"your_api_key\".to_string()),\n    SWQoSType::Blox(\"https://fra.blox.so\".to_string(), \"your_api_key\".to_string()),\n    SWQoSType::ZeroSlot(\"https://fra.zeroslot.io\".to_string(), \"your_api_key\".to_string()),\n    SWQoSType::Temporal(\"https://fra.temporal.io\".to_string(), \"your_api_key\".to_string()),\n];\n```\n\n### Priority Fees\n\nSet custom priority fees for faster transaction confirmation:\n\n```rust\nlet fee = PriorityFee {\n    unit_limit: 100000,    // Compute unit limit\n    unit_price: 10000000,  // Micro-lamports per compute unit\n};\n```\n\n## Examples\n\nCheck the [`main.rs`](src/main.rs) file for complete working examples of:\n\n- Setting up trading clients\n- Buying and selling tokens\n- Creating new tokens\n- Transferring SOL and SPL tokens\n- Using different SWQoS providers\n\n## API Reference\n\n### Core Components\n\n- [`TradingClient`](src/common/trading_client.rs) - Main client for trading operations\n- [`TradingEndpoint`](src/common/trading_endpoint.rs) - RPC and SWQoS endpoint management\n- [`DexTrait`](src/dex/dex_traits.rs) - Common interface for all DEX implementations\n\n### DEX Implementations\n\n- [`Pumpfun`](src/dex/pumpfun.rs) - Pump.fun DEX implementation\n- [`PumpSwap`](src/dex/pumpswap.rs) - PumpSwap DEX implementation\n\n### SWQoS Providers\n\n- [`DefaultSWQoSClient`](src/swqos/default.rs) - Standard RPC client\n- [`JitoClient`](src/swqos/jito.rs) - Jito MEV protection\n- [`NextBlockClient`](src/swqos/nextblock.rs) - NextBlock routing\n- [`BloxClient`](src/swqos/blox.rs) - Blox execution\n- [`ZeroSlotClient`](src/swqos/zeroslot.rs) - ZeroSlot confirmation\n- [`TemporalClient`](src/swqos/temporal.rs) - Temporal optimization\n\n### IPFS Integration\n\n- [`create_token_metadata`](src/ipfs/metadata.rs) - Upload token metadata to IPFS\n- [`CreateTokenMetadata`](src/ipfs/types.rs) - Token metadata structure\n\n## Environment Setup\n\n1. **RPC Endpoint**: Use a reliable Solana RPC endpoint\n2. **Pinata JWT Token**: Required for IPFS metadata uploads\n3. **SWQoS API Keys**: Optional API keys for premium routing services\n\n## Error Handling\n\nThe SDK uses `anyhow::Result` for comprehensive error handling. All functions return detailed error information for debugging.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Disclaimer\n\nThis SDK is for educational and development purposes. Always test thoroughly on devnet before using on mainnet. Trading cryptocurrencies involves risk of loss.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustjesty%2Fsolana-trading-sdk-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustjesty%2Fsolana-trading-sdk-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustjesty%2Fsolana-trading-sdk-rust/lists"}