{"id":50996237,"url":"https://github.com/casatrick/solana-block-engine-client","last_synced_at":"2026-06-20T09:35:20.944Z","repository":{"id":303953599,"uuid":"1016770937","full_name":"casatrick/solana-block-engine-client","owner":"casatrick","description":"Rust client for Solana block engines - Rust library providing a consistent interface for interacting with multiple Solana block engine services. Features automatic region selection based on latency, built-in tip instruction generation, health monitoring, and performance metrics.  Supports: Jito, Nozomi, ZeroSlot, BlockRazor, Astralane, NextBlock.","archived":false,"fork":false,"pushed_at":"2025-11-14T11:16:26.000Z","size":89,"stargazers_count":2,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-06-19T07:36:49.805Z","etag":null,"topics":["astralane","block-engine","blockrazor","jito","nextblock","nozomi","rust","solana","zeroslot"],"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/casatrick.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-MIT","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-09T13:53:37.000Z","updated_at":"2026-01-05T16:17:01.000Z","dependencies_parsed_at":"2025-07-10T17:53:19.836Z","dependency_job_id":"a6e66520-19df-4bab-a4d3-2a2d506f3605","html_url":"https://github.com/casatrick/solana-block-engine-client","commit_stats":null,"previous_names":["caterpillardev/moonshot-trading-bot","roswelly/moonshot-trading-bot","casatrick/solana-block-engine-client"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/casatrick/solana-block-engine-client","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casatrick%2Fsolana-block-engine-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casatrick%2Fsolana-block-engine-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casatrick%2Fsolana-block-engine-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casatrick%2Fsolana-block-engine-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/casatrick","download_url":"https://codeload.github.com/casatrick/solana-block-engine-client/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/casatrick%2Fsolana-block-engine-client/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34565240,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["astralane","block-engine","blockrazor","jito","nextblock","nozomi","rust","solana","zeroslot"],"created_at":"2026-06-20T09:35:19.395Z","updated_at":"2026-06-20T09:35:20.935Z","avatar_url":"https://github.com/casatrick.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Block Engine JSON-RPC Client\n\nA unified Rust client library for interacting with multiple Solana block engine services. This library provides a consistent interface for submitting transactions to various block engines including Jito, Nozomi, ZeroSlot, BlockRazor, Astralane, and NextBlock.\n\n## Features\n\n- **Multi-Engine Support**: Unified interface for 6 different Solana block engines\n- **Automatic Region Selection**: Automatically selects the fastest region based on latency\n- **High Performance**: Async/await architecture with optimized HTTP clients\n- **Tip Management**: Built-in tip instruction generation for all supported services\n- **Health Monitoring**: Health check functionality for service monitoring\n- **Performance Metrics**: Built-in transaction submission timing\n\n## Supported Services\n\n| Service | API Key Required | Regions | Min Tip |\n|---------|----------------|---------|---------|\n| **Jito** | No (Optional) | 8 regions | 0.000001 SOL |\n| **Nozomi** | Yes | Multiple | 0.001 SOL |\n| **ZeroSlot** | Yes | Multiple | 0.001 SOL |\n| **BlockRazor** | Yes | Multiple | 0.001 SOL |\n| **Astralane** | Yes | Multiple | 0.0001/0.001 SOL |\n| **NextBlock** | Yes | Multiple | 0.001 SOL |\n\n## Installation\n\nAdd this to your `Cargo.toml`:\n\n```toml\n[dependencies]\nsolana-relayer-adapter-rust = \"3.1.2\"\n```\n\nOr install from git:\n\n```toml\n[dependencies]\nsolana-relayer-adapter-rust = { git = \"https://github.com/your-repo/block-engine-json-rpc-client\" }\n```\n\n## Configuration\n\nCreate a `.env` file in your project root with the required API keys:\n\n```env\nNOZOMI_API_KEY=your_nozomi_api_key\nZERO_SLOT_KEY=your_zero_slot_key\nBLOCKRAZOR_API_KEY=your_blockrazor_key\nASTRALANE_API_KEY=your_astralane_key\nNEXTBLOCK_API_KEY=your_nextblock_key\n```\n\n**Note**: Jito does not require an API key.\n\n## Usage\n\n### Basic Example\n\n```rust\nuse solana_relayer_adapter_rust::{Jito, Tips};\nuse solana_sdk::{pubkey::Pubkey, instruction::Instruction};\n\n#[tokio::main]\nasync fn main() -\u003e anyhow::Result\u003c()\u003e {\n    // Initialize Jito client (auto-selects fastest region)\n    let jito = Jito::new_auto(None).await;\n    \n    // Create tip configuration\n    let tip_config = Tips {\n        tip_sol_amount: 0.001,\n        tip_addr_idx: 0,\n        cu: Some(200_000),\n        priority_fee_micro_lamport: Some(1000),\n        payer: Pubkey::new_unique(),\n        pure_ix: vec![], // Your instructions here\n    };\n    \n    // Generate tip instructions\n    let instructions = jito.add_tip_ix(tip_config);\n    \n    // Build and sign your transaction...\n    // let transaction = Transaction::new_with_payer(\u0026instructions, \u0026Some(payer_pubkey));\n    // let encoded_tx = base64::encode(transaction.serialize()?);\n    \n    // Submit transaction\n    // let response = jito.send_transaction(\u0026encoded_tx).await?;\n    \n    Ok(())\n}\n```\n\n### Initialize All Services\n\n```rust\nuse solana_relayer_adapter_rust::{Astralane, BlockRazor, Jito, NextBlock, Nozomi, ZeroSlot};\nuse dotenvy::dotenv;\nuse std::env;\n\n#[tokio::main]\nasync fn main() -\u003e anyhow::Result\u003c()\u003e {\n    dotenv().ok();\n    \n    // Initialize Jito (no API key required)\n    let jito = Jito::new_auto(None).await;\n    \n    // Initialize other services (API key required)\n    let nozomi = Nozomi::new_auto(\n        env::var(\"NOZOMI_API_KEY\")?\n    ).await;\n    \n    let zero_slot = ZeroSlot::new_auto(\n        env::var(\"ZERO_SLOT_KEY\")?\n    ).await;\n    \n    let blockrazor = BlockRazor::new_auto(\n        env::var(\"BLOCKRAZOR_API_KEY\")?\n    ).await;\n    \n    let astralane = Astralane::new_auto(\n        env::var(\"ASTRALANE_API_KEY\")?\n    ).await;\n    \n    let nextblock = NextBlock::new_auto(\n        env::var(\"NEXTBLOCK_API_KEY\")?\n    ).await;\n    \n    Ok(())\n}\n```\n\n### Manual Region Selection\n\n```rust\nuse solana_relayer_adapter_rust::{Jito, JitoRegionsType};\n\nlet jito = Jito::new_with_region(\n    JitoRegionsType::NY,\n    None\n).await;\n```\n\n### Health Monitoring\n\n```rust\n// Start health check (runs in background)\njito.health_check(50); // Check every 50 seconds\n```\n\n## API Reference\n\n### Client Methods\n\n#### `new_auto(auth_key)`\nAutomatically selects the fastest region by pinging all available regions.\n\n- **Jito**: `new_auto(Option\u003cString\u003e)`\n- **Others**: `new_auto(String)`\n\n#### `new_with_region(region, auth_key)`\nInitialize client with a specific region.\n\n#### `add_tip_ix(tip_config: Tips) -\u003e Vec\u003cInstruction\u003e`\nGenerates Solana instructions for tipping the block engine, including:\n- Compute unit limit (if specified)\n- Priority fee (if specified)\n- Your custom instructions\n- Tip transfer instruction\n\n#### `send_transaction(encoded_tx: \u0026str) -\u003e Result\u003cValue\u003e`\nSubmits a base64-encoded transaction to the block engine via JSON-RPC.\n\n#### `health_check(interval_sec: u64)`\nStarts a background health check task that monitors the service.\n\n### Types\n\n#### `Tips`\n```rust\npub struct Tips {\n    pub tip_sol_amount: f64,\n    pub tip_addr_idx: u8,\n    pub cu: Option\u003cu64\u003e,\n    pub priority_fee_micro_lamport: Option\u003cu64\u003e,\n    pub payer: Pubkey,\n    pub pure_ix: Vec\u003cInstruction\u003e,\n}\n```\n\n## Architecture\n\nThe library is organized into service-specific modules, each following a consistent pattern:\n\n- `*_confirm.rs` - Main client implementation\n- `*_regions.rs` - Regional endpoint configuration\n- `*_tip_ix.rs` - Tip recipient addresses and minimums\n\nAll services implement:\n- Automatic region selection via latency-based ping\n- JSON-RPC 2.0 transaction submission\n- Tip instruction generation\n- Health monitoring capabilities\n\n## Dependencies\n\n- `tokio` - Async runtime\n- `reqwest` - HTTP client\n- `solana-sdk` / `solana-program` - Solana blockchain integration\n- `serde_json` - JSON serialization\n- `anyhow` - Error handling\n- `ping` - ICMP ping for latency measurement\n\n## License\n\nLicensed under the MIT License. See [LICENSE-MIT](LICENSE-MIT) for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Version\n\nCurrent version: **3.1.2**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcasatrick%2Fsolana-block-engine-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcasatrick%2Fsolana-block-engine-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcasatrick%2Fsolana-block-engine-client/lists"}