### Get Inflight Bundle Statuses Response Example Source: https://docs.jito.wtf/lowlatencytxnsend This is an example of a successful JSON response from the Jito Block Engine API when querying for in-flight bundle statuses. It includes details like bundle ID, status, and landed slot. ```json { "jsonrpc": "2.0", "result": { "context": { "slot": 280999028 }, "value": [ { "bundle_id": "b31e5fae4923f345218403ac1ab242b46a72d4f2a38d131f474255ae88f1ec9a", "status": "Invalid", "landed_slot": null }, { "bundle_id": "e3c4d7933cf3210489b17307a14afbab2e4ae3c67c9e7157156f191f047aa6e8", "status": "Invalid", "landed_slot": null }, { "bundle_id": "a7abecabd9a165bc73fd92c809da4dc25474e1227e61339f02b35ce91c9965e2", "status": "Invalid", "landed_slot": null }, { "bundle_id": "e3934d2f81edbc161c2b8bb352523cc5f74d49e8d4db81b222c553de60a66514", "status": "Invalid", "landed_slot": null }, { "bundle_id": "2cd515429ae99487dfac24b170248f6929e4fd849aa7957cccc1daf75f666b54", "status": "Invalid", "landed_slot": null } ] }, "id": 1 } ``` -------------------------------- ### Example Bundle Patterns with 'jitodontfront' Source: https://docs.jito.wtf/lowlatencytxnsend Illustrates allowed and disallowed bundle patterns when using the 'jitodontfront' account to control transaction ordering. Transactions with 'jitodontfront' must appear first in a bundle. ```text * [tx_with_dont_front, tip] * [tx_with_dont_front, arbitrage, tip] * [tx_with_dont_front_signer_1, tx_with_dont_front_singer_1_and_signer_2, tip] * [txA_with_dont_front, txB_with_dont_front, txC_with_dont_front, arbitrage, tip]) * [txA_with_dont_front_signer1_signer2, txB_with_dont_front_signer1_signer_3, txB_with_dont_front_signer2_signer_4] * [tip, tx_with_dont_front] * [txA_with_dont_front_signer1, txB_with_dont_front_signer2] * [txA_with_dont_front_signer1, txB_with_dont_front_signer2, tip] * [trade, tx_with_dont_front, arbitrage, tip] ``` -------------------------------- ### Transaction Response Example Source: https://docs.jito.wtf/lowlatencytxnsend This is an example of a successful response when submitting a transaction. ```json { "jsonrpc": "2.0", "result": "2id3YC2jK9G5Wo2phDx4gJVAew8DcY5NAojnVuao8rkxwPYPe8cSwE5GzhEgJA2y8fVjDEo6iR6ykBvDxrTQrtpb", "id": 1 } ``` -------------------------------- ### Bundle Response Example Source: https://docs.jito.wtf/lowlatencytxnsend This is an example of a successful response when sending a bundle. The 'result' field contains the bundle ID, which is the SHA-256 hash of the bundle's transaction signatures. ```json { "jsonrpc": "2.0", "result": "2id3YC2jK9G5Wo2phDx4gJVAew8DcY5NAojnVuao8rkxwPYPe8cSwE5GzhEgJA2y8fVjDEo6iR6ykBvDxrTQrtpb", "id": 1 } ``` -------------------------------- ### Send Bundle Request (Base64) Source: https://docs.jito.wtf/lowlatencytxnsend Use this example to send a bundle of transactions encoded in base64. Ensure your Jito API endpoint and authentication are correctly configured. ```bash curl https://mainnet.block-engine.jito.wtf:443/api/v1/bundles -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "id": 1, "method": "sendBundle", "params": [ [ "AT2AqtlokikUWgGNnSX5xrmdvBjSaiIPxvFz6zc5Abn5Z0CPFW5GO+Y3rXceLnqLgQFnGw0yTk3NtJdFNsbrwwQBAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAwOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AS6fOZuGDsmyYdd+RC0fiFUgNe1BYTOYT+1hkRXHAeroC8R60h3g34EPF5Ys8sGzVBMP9MDSTVgy1/SSTqpCtA4BAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAxOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AZBed/TbhHt8WTUbfdT9Ibi8vr9ZpPCPtav8HIUrlDaqqKOLuJldEPpb899WvnfrCm4Qtq7i/MNLDTde1sHVYwEBAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAyOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AbS0zOISjAjVgUqs+bBh8x93oNOBzVcBnwicjyXhKLJ6E0/EPi+HbLcBN1u/87Kf4nNS+PoK3lLmhHtLjTyyDw0BAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAzOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AVfm3snz2ZU2xJlj4tBYLNKfuNUC57NgV+ci/2eL4vUJt+NfstiUY+m1kriNMtDXhiBf28wR6WKVuoLkuiegNQABAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSA0OiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==" ], { "encoding": "base64" } ] }' ``` -------------------------------- ### JSON-RPC Authentication with UUID Source: https://docs.jito.wtf/lowlatencytxnsend Examples of how to include your API key for authentication using a UUID, either as a header field or a query parameter. ```text Header Field: Include the API key in the x-jito-auth header. Example: x-jito-auth: Query Parameter: Include the API key as a query parameter. Example: api/v1/transactions?uuid= ``` -------------------------------- ### Example REST API Response for Tip Amounts Source: https://docs.jito.wtf/lowlatencytxnsend Sample JSON response from the tip_floor API endpoint, showing landed tip percentiles over time. Note the scientific notation for small values. ```json [ { "time": "2024-09-01T12:58:00Z", "landed_tips_25th_percentile": 6.001000000000001e-06, "landed_tips_50th_percentile": 1e-05, "landed_tips_75th_percentile": 3.6196500000000005e-05, "landed_tips_95th_percentile": 0.0014479055000000002, "landed_tips_99th_percentile": 0.010007999, "ema_landed_tips_50th_percentile": 9.836078125000002e-06 } ] ``` -------------------------------- ### Send Bundle Request (Base58 - Deprecated) Source: https://docs.jito.wtf/lowlatencytxnsend This example demonstrates sending a bundle using base58 encoding. Note that base58 encoding is deprecated and may be removed in future versions. ```bash curl https://mainnet.block-engine.jito.wtf:443/api/v1/bundles -X POST -H "Content-Type: application/json" -d '{ "id": 1, "jsonrpc": "2.0", "method": "sendBundle", "params": [ [ "cJYHEz2xsUFC9VmqzCRwyxkrDCC5Nqhvah9JsE8DgMCgv6ni962uUZXUtTXFFztZn84VL6fjzNgUi7TKVurCnRqsSUguapRZx1sA31s1WeZi6P5mPmXfWjcfsuznP7RgGvR9XZupBFiDkXsGDYzXPQAa2eFp3jeDKsoPv1xaoytYc4RbvGYBT5QL51hnEzMATM5p8iyPRoMdCQ3cevp3fJCMEjgCx2S8FqJK7kPYTnNQdcDtws1DUNbtopAqizWCEHsz3PjEPu2RpdjZ7YC54notbnYtKJPopxxxrVBQLWY5qvH2aC7RX7GFoA8VXLBphiNGvd1MajN4ZmEiqeAJ4qtuBgSF57E5U1jRzWFwXBCdEh3yexLby", "aeaPo2r9aVrAQkPNeirT8q4FztexTVdUmHFahkKVfHhskk2KktPQ8WSX11qHQY33RNNRf1bjLX8BinduWGwRLwYtiLyUmNKREhmnvaoWa9L4EAZTBJYX2kLAW2MUfzLKMY37XNGPTLep9MAQd6nhDYcCzWgjVdkNqsnWDTHwMJ6wwMAvKAk9PtqFFNzNgyYZfH1uXpmjhn2QdH6XLXkEjyQJRrzXczAqKt1ExCL1vbreoV4AbBnZ2A7iuLD1W885SzU4X1QbSj3jkFpufx4LooNPaiCbMYB2KgAkrvAMefGU3DjbiXPQoQ3ndaU4aZsg5nGGjn4fQEyhpcqxpDRjqpXJ4bgBHpjrdWR24rfxMU1AFLy6v6mPV", "mWwGZR3dp1HEXpaJV5JbGXtfG7nXVEvRNxWiEgMd87TM39WCG5EECUS8ziZSbUMQ1xj3sgA2En4eQybkNm5cvU2cW3uoZQis4CdgbiAsCCVsY9CVmJMbUZXR1xqLCYzxfbWVUDzdThAA2FuNTYc9w77HMb5hDJJe5oFvJhZUc6o9FCWEn8eeWqLePkXu8oQ6L1K2D5meSAwWQPebTBQ7MSugreyZ2aHzzdj89JDc9BgnEMRFkkAGc9cEphUTPnJ72HtHnrqEUpL9KF45ucKb5VpC6vSnKSzjtJS3dMP9jH7737zv5bu3eZuT9hBRfxrnamuChFrC52guv3dMZzi2mUd5jG86DZYzNcdWu8Kziv1zdgfUkb3So", "qZGgsJFUiVj8mdLBw9NPqsKvzmxGbZ4EP4dLx63hdL8bCWZ7sWQgtLKCYqzBsz4YUos2cxFVvMP2ApzgNzu5vHnJnovpoP4iv8CoehP7teJyfrZ9nfNALyx2aQwoSA7dwLtdSviAsTWhHpEd1gHw7XHPVAuRAdtZjNuJn1C2Ep3Fe5X6DWaa1wEwd83xFjJAkJZYFDZpeqv7k2c6Un3uxzbrBD4bJRyeU1J5Hja5DovpNR1bq8gcK7YEgP7Sub1mU8yfDuC7wYVS1zt9T3Z1uTHLt3zhMuobJ4Z1YMWfwGHwJPRvAUksMxpTYKq62JpRkyLB6ZmCRXToTuXTAPAQ5FHgEfMB9E7ZFFhCdU6Rm6tmdFZ7nAdE7", "fEnXrjSsBwCFkGZQbiZXMpY5pCKkdJocEU7iYtF6tkoHxi8Eeq9wi1qLxj6KiYPwR7HW8Wymx26i7Fz96M7Ss32T5HtuK4JqEzdCXsSrmWDUMaCmyKEdCVV5AvuixZpsAYARQp6ok2sGkdhKPPaLUQnvhsuCM3cbXsCACxy79V9eF3KzT6dPanjanr9N2K6z8AeAAC7q3jMRMqAr8z9spkcoqAhGYAKNBqTWQXPMGnmae5Jvc3KN6Wrdjw68bNzfhKAV5wR7SMGScdn8d4XQf9rWMXPA2W5dcQNCXgkk7jCDYdrjGMgx7f82fAifkfnWT3AtSmVf6KCP9CWCtMPvY2BRadctWBJ8rJV9qyMsUkxKQRZaRJBkK" ], { "encoding": "base58" } ] }' ``` -------------------------------- ### Get Tip Accounts Source: https://docs.jito.wtf/lowlatencytxnsend Retrieve the list of tip accounts used for bundle payments. These accounts are static and can be used for sending tips to validators. ```curl curl https://mainnet.block-engine.jito.wtf/api/v1/getTipAccounts -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "id": 1, "method": "getTipAccounts", "params": [] } ' ``` ```json { "jsonrpc": "2.0", "result": [ "96gYZGLnJYVFmbjzopPSU6QiEV5fGqZNyN9nmNhvrZU5", "HFqU5x63VTqvQss8hp11i4wVV8bD44PvwucfZ2bU7gRe", "Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY", "ADaUMid9yfUytqMBgopwjb2DTLSokTSzL1zt6iGPaS49", "DfXygSm4jCyNCybVYYK6DwvWqjKee8pbDmJGcLWNDXjh", "ADuUkR4vqLUMWXxW9gh6D6L8pMSawimctcNZ5pGwDcEt", "DttWaMuVvTiduZRnguLF7jNxTgiMBZ1hyAumKUiL2KRL", "3AVi9Tg9Uo68tJfuvoKvqKNWKkC5wPdSSdeBnizKZ6jT" ], "id": 1 } ``` -------------------------------- ### Get Inflight Bundle Statuses Request Source: https://docs.jito.wtf/lowlatencytxnsend Use this cURL command to send a POST request to the Jito Block Engine API to retrieve the status of multiple in-flight bundles. Ensure the Content-Type header is set to application/json. ```bash curl https://mainnet.block-engine.jito.wtf/api/v1/getInflightBundleStatuses -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "id": 1, "method": "getInflightBundleStatuses", "params": [ [ "b31e5fae4923f345218403ac1ab242b46a72d4f2a38d131f474255ae88f1ec9a", "e3c4d7933cf3210489b17307a14afbab2e4ae3c67c9e7157156f191f047aa6e8", "a7abecabd9a165bc73fd92c809da4dc25474e1227e61339f02b35ce91c9965e2", "e3934d2f81edbc161c2b8bb352523cc5f74d49e8d4db81b222c553de60a66514", "2cd515429ae99487dfac24b170248f6929e4fd849aa7957cccc1daf75f666b54" ] ] }' ``` -------------------------------- ### Get Inflight Bundle Statuses Source: https://docs.jito.wtf/lowlatencytxnsend Check the status of bundles submitted within the last five minutes. This endpoint accepts up to five bundle IDs per request and provides statuses like Failed, Pending, Landed, or Invalid. ```json { "jsonrpc": "2.0", "id": 1, "method": "getInflightBundleStatuses", "params": [ [ "892b79ed49138bfb3aa5441f0df6e06ef34f9ee8f3976c15b323605bae0cf51d" ] ] } ``` -------------------------------- ### Run Jito Shredstream Proxy Natively Source: https://docs.jito.wtf/lowlatencytxnfeed Clone the repository and run the shredstream proxy using Cargo. Ensure you have a keypair file and specify desired regions and destination IP:ports. ```bash git clone https://github.com/jito-labs/shredstream-proxy.git --recurse-submodules RUST_LOG=info cargo run --release --bin jito-shredstream-proxy -- shredstream \ --block-engine-url https://mainnet.block-engine.jito.wtf \ --auth-keypair my_keypair.json \ --desired-regions amsterdam,ny \ --dest-ip-ports 127.0.0.1:8001,10.0.0.1:8001 ``` -------------------------------- ### Run Jito Shredstream Proxy via Docker (Host Networking) Source: https://docs.jito.wtf/lowlatencytxnfeed Run the proxy using Docker with host networking for direct port access. Set environment variables for configuration and mount your keypair file. ```bash docker run -d \ --name jito-shredstream-proxy \ --rm \ --env RUST_LOG=info \ --env BLOCK_ENGINE_URL=https://mainnet.block-engine.jito.wtf \ --env AUTH_KEYPAIR=my_keypair.json \ --env DESIRED_REGIONS=amsterdam,ny \ --env DEST_IP_PORTS=127.0.0.1:8001,10.0.0.1:8001 \ --network host \ -v $(pwd)/my_keypair.json:/app/my_keypair.json \ jitolabs/jito-shredstream-proxy shredstream ``` -------------------------------- ### POST /api/v1/transactions Source: https://docs.jito.wtf/lowlatencytxnsend This method acts as a direct proxy to the Solana sendTransaction RPC method, but forwards your transaction directly to the validator. By default, it submits the transaction with providing MEV protection. Jito enforces a minimum tip of 1000 lamports for bundles. For cost efficiency, you can enable revert protection by setting the query parameter bundleOnly=true. This method always sets skip_preflight=true. ```APIDOC ## POST /api/v1/transactions ### Description This method acts as a direct proxy to the Solana sendTransaction RPC method, but forwards your transaction directly to the validator. By default, it submits the transaction with providing MEV protection. Jito enforces a minimum tip of 1000 lamports for bundles. For cost efficiency, you can enable revert protection by setting the query parameter bundleOnly=true. This method always sets skip_preflight=true. ### Method POST ### Endpoint `/api/v1/transactions` ### Parameters #### Query Parameters - **bundleOnly** (boolean) - Optional - If true, the transaction is sent exclusively as a single transaction bundle, enabling revert protection. #### Request Body - **id** (number) - REQUIRED - JSON-RPC request ID. - **jsonrpc** (string) - REQUIRED - JSON-RPC protocol version, should be "2.0". - **method** (string) - REQUIRED - The method name, should be "sendTransaction". - **params** (array) - REQUIRED - An array containing the transaction data and options. - **params[0]** (string) - REQUIRED - The transaction signature, as base64 (recommended) or base58 (slow, DEPRECATED) encoded string. - **params[1]** (object) - OPTIONAL - An object containing additional options. - **encoding** (string) - OPTIONAL - Encoding used for the transaction data. Values: `base64` (recommended) or `base58` (slow, DEPRECATED). Default: `base58` ### Request Example ```json { "id": 1, "jsonrpc": "2.0", "method": "sendTransaction", "params": [ "AVXo5X7UNzpuOmYzkZ+fqHDGiRLTSMlWlUCcZKzEV5CIKlrdvZa3/2GrJJfPrXgZqJbYDaGiOnP99tI/sRJfiwwBAAEDRQ/n5E5CLbMbHanUG3+iVvBAWZu0WFM6NoB5xfybQ7kNwwgfIhv6odn2qTUu/gOisDtaeCW1qlwW/gx3ccr/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvsInicc+E3IZzLqeA+iM5cn9kSaeFzOuClz1Z2kZQy0BAgIAAQwCAAAAAPIFKgEAAAA=", { "encoding": "base64" } ] } ``` ### Response #### Success Response (200) - **id** (number) - The ID of the request. - **jsonrpc** (string) - The JSON-RPC protocol version. - **result** (string) - The transaction signature if successful. #### Response Example ```json { "id": 1, "jsonrpc": "2.0", "result": "TxSignatureHere" } ``` ``` -------------------------------- ### Get Bundle Statuses Source: https://docs.jito.wtf/lowlatencytxnsend Retrieve the status of one or more submitted bundles. If a bundle ID is not found or has not landed, null is returned. Otherwise, context information and transaction details are provided. This method is similar to Solana's `getSignatureStatuses` and searches recent history. ```curl curl https://mainnet.block-engine.jito.wtf/api/v1/getBundleStatuses -X POST -H "Content-Type: application/json" -d ' { "jsonrpc": "2.0", "id": 1, "method": "getBundleStatuses", "params": [ [ "892b79ed49138bfb3aa5441f0df6e06ef34f9ee8f3976c15b323605bae0cf51d" ] ] }' ``` ```json { "jsonrpc": "2.0", "result": { "context": { "slot": 242806119 }, "value": [ { "bundle_id": "892b79ed49138bfb3aa5441f0df6e06ef34f9ee8f3976c15b323605bae0cf51d", "transactions": [ "3bC2M9fiACSjkTXZDgeNAuQ4ScTsdKGwR42ytFdhUvikqTmBheUxfsR1fDVsM5ADCMMspuwGkdm1uKbU246x5aE3", "8t9hKYEYNbLvNqiSzP96S13XF1C2f1ro271Kdf7bkZ6EpjPLuDff1ywRy4gfaGSTubsM2FeYGDoT64ZwPm1cQUt" ], "slot": 242804011, "confirmation_status": "finalized", "err": { "Ok": null } } ] }, "id": 1 } ``` -------------------------------- ### POST /api/v1/bundles (Base64 Encoding) Source: https://docs.jito.wtf/lowlatencytxnsend Submits a bundle of transactions to the Jito network using base64 encoding for the transactions. This is the recommended method. ```APIDOC ## POST /api/v1/bundles ### Description Submits a bundle of transactions to the Jito network. Transactions within the bundle should be encoded in base64. ### Method POST ### Endpoint https://mainnet.block-engine.jito.wtf:443/api/v1/bundles ### Parameters #### Request Body - **jsonrpc** (string) - Required - JSON-RPC protocol version. - **id** (integer) - Required - Request ID. - **method** (string) - Required - The method to call, should be `sendBundle`. - **params** (array) - Required - An array containing the bundle transactions and encoding options. - **params[0]** (array of strings) - Required - An array of base64 encoded transactions. - **params[1]** (object) - Required - An object specifying the encoding type. - **encoding** (string) - Required - Must be `"base64"`. ### Request Example ```json { "jsonrpc": "2.0", "id": 1, "method": "sendBundle", "params": [ [ "AT2AqtlokikUWgGNnSX5xrmdvBjSaiIPxvFz6zc5Abn5Z0CPFW5GO+Y3rXceLnqLgQFnGw0yTk3NtJdFNsbrwwQBAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAwOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AS6fOZuGDsmyYdd+RC0fiFUgNe1BYTOYT+1hkRXHAeroC8R60h3g34EPF5Ys8sGzVBMP9MDSTVgy1/SSTqpCtA4BAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAxOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AZBed/TbhHt8WTUbfdT9Ibi8vr9ZpPCPtav8HIUrlDaqqKOLuJldEPpb899WvnfrCm4Qtq7i/MNLDTde1sHVYwEBAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAyOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AbS0zOISjAjVgUqs+bBh8x93oNOBzVcBnwicjyXhKLJ6E0/EPi+HbLcBN1u/87Kf4nNS+PoK3lLmhHtLjTyyDw0BAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSAzOiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==", "AVfm3snz2ZU2xJlj4tBYLNKfuNUC57NgV+ci/2eL4vUJt+NfstiUY+m1kriNMtDXhiBf28wR6WKVuoLkuiegNQABAAIEsXPDJ9cMVbpFQYClVM7PGLh8JOfCD6E2vz5VNmBCF+p4Uhyxec67hYm1VqLV7JTSSYaC/fm7KvWtZOSRzEFT2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUpTWpkpIQZNJOhxYNo4fHw1td28kruB5B+oQEEFRI1i3Wzl2VfewCI8oYXParnP78725sKFzYheTEn8v865YQIDABhqaXRvIGJ1bmRsZSA0OiBqaXRvIHRlc3QCAgABDAIAAACghgEAAAAAAA==" ], { "encoding": "base64" } ] } ``` ### Response #### Success Response (200) - **result** (string) - A bundle ID, which is the SHA-256 hash of the bundleโ€™s transaction signatures. #### Response Example ```json { "jsonrpc": "2.0", "result": "2id3YC2jK9G5Wo2phDx4gJVAew8DcY5NAojnVuao8rkxwPYPe8cSwE5GzhEgJA2y8fVjDEo6iR6ykBvDxrTQrtpb", "id": 1 } ``` ``` -------------------------------- ### Find Solana RPC TVU Port Source: https://docs.jito.wtf/lowlatencytxnfeed Run this script to find the TVU port on a machine with a Solana RPC. Ensure the LEDGER_DIR environment variable is set. ```bash export LEDGER_DIR=MY_LEDGER_DIR; bash -c "$(curl -fsSL https://raw.githubusercontent.com/jito-labs/shredstream-proxy/master/scripts/get_tvu_port.sh)" ``` -------------------------------- ### Jito Tip Calculation for sendBundle Source: https://docs.jito.wtf/lowlatencytxnsend When using sendBundle, only the Jito tip is considered for transaction prioritization. Ensure the tip amount is sufficient. ```text When using sendBundle, only the Jito tip matters. ``` -------------------------------- ### Run Jito Shredstream Proxy via Docker (Bridge Networking) Source: https://docs.jito.wtf/lowlatencytxnfeed Use Docker bridge networking when host networking is unavailable. Manually expose the SRC_BIND_PORT and ensure correct Docker bridge IP is used for local endpoints. ```bash docker run -d \ --name jito-shredstream-proxy \ --rm \ --env RUST_LOG=info \ --env BLOCK_ENGINE_URL=https://mainnet.block-engine.jito.wtf \ --env AUTH_KEYPAIR=my_keypair.json \ --env DESIRED_REGIONS=amsterdam,ny \ --env SRC_BIND_PORT=20000 \ --env DEST_IP_PORTS=172.17.0.1:8001,10.0.0.1:8001 \ --network bridge \ -p 20000:20000/udp \ -v $(pwd)/my_keypair.json:/app/my_keypair.json \ jitolabs/jito-shredstream-proxy shredstream ``` -------------------------------- ### Bundles API (/api/v1) Source: https://docs.jito.wtf/lowlatencytxnsend Manages atomic and sequential execution of up to 5 transactions within a single slot. ```APIDOC ## Bundles API (`/api/v1`) ### Description Bundles allow for the atomic and sequential execution of up to 5 transactions within the same slot. If any transaction in the bundle fails, the entire bundle is rejected. This ensures an all-or-nothing outcome for the group of transactions. ### sendBundle #### Description Submits a bundled list of signed transactions to the cluster for processing. The transactions are atomically processed in order. If the bundle is accepted, a `bundle_id` is returned in the `x-bundle-id` HTTP header. This does not guarantee on-chain execution; use `getBundleStatuses` to check the status. A tip is required for the bundle to be considered. The tip must transfer SOL to one of the 8 tip accounts. Clients should ensure sufficient balance and state assertions for the tip transaction. #### Method POST #### Endpoint `/api/v1/sendBundle` (or similar, depending on the specific Jito RPC implementation) #### Parameters ##### Request Body - **params** (array[string]) - REQUIRED: An array of fully-signed transactions. Maximum of 5 transactions. Transactions should be encoded in `base64` (recommended) or `base58` (deprecated). - **encoding** (string) - OPTIONAL: The encoding used for the transaction data. Values: `base64` (recommended) or `base58` (deprecated). Defaults to `base58`. #### Request Example ```json { "jsonrpc": "2.0", "id": 1, "method": "sendBundle", "params": [ [ "TRANSACTION_1_BASE64_OR_BASE58", "TRANSACTION_2_BASE64_OR_BASE58" ], { "encoding": "base64" } ] } ``` #### Response ##### Success Response (200) - **result** (string) - The result of the bundle submission. Typically includes a `bundle_id`. - **x-bundle-id** (string) - HTTP Header: The ID of the submitted bundle. ##### Response Example ```json { "jsonrpc": "2.0", "result": { "bundle_id": "some_bundle_id" }, "id": 1 } ``` ### Authentication #### Header Field Include the API key in the `x-jito-auth` header. Example: `x-jito-auth: ` #### Query Parameter Include the API key as a query parameter. Example: `api/v1/transactions?uuid=` ``` -------------------------------- ### Allow Jito-Solana IP Addresses in Firewall Source: https://docs.jito.wtf/lowlatencytxnfeed If you are using a firewall, you must allow access to the specified IP addresses for various Jito-Solana data centers. This is crucial for maintaining connectivity and data flow. ```text Location | IP Addresses ---|--- ๐Ÿ‡ณ๐Ÿ‡ฑ Amsterdam | `74.118.140.240`, `202.8.8.174`, `64.130.42.228`, `64.130.43.92`, `64.130.55.26`, `64.130.42.227`, `64.130.43.19`, `64.130.55.28`, `63.254.166.12`, `198.13.134.208`, `198.13.134.231` ๐Ÿ‡ฎ๐Ÿ‡ช Dublin | `64.130.61.138`, `64.130.61.139`, `64.130.61.140` ๐Ÿ‡ฉ๐Ÿ‡ช Frankfurt | `64.130.50.14`, `198.13.137.137`, `64.130.40.25`, `64.130.47.93`, `64.130.57.171`, `64.130.40.23`, `64.130.40.22`, `64.130.40.21`, `64.130.40.26`, `64.130.40.24` ๐Ÿ‡ฌ๐Ÿ‡ง London | `64.130.46.153`, `64.130.46.71`, `64.130.63.195`, `64.130.46.72`, `64.130.63.196`, `64.130.46.73` ๐Ÿ‡บ๐Ÿ‡ธ New York | `141.98.216.96`, `64.130.51.60`, `64.130.34.186`, `64.130.34.143`, `64.130.34.142`, `64.130.34.189`, `64.130.34.190`, `64.130.34.141` ๐Ÿ‡บ๐Ÿ‡ธ Salt Lake City | `64.130.53.8`, `64.130.53.57`, `64.130.53.81`, `64.130.53.90`, `64.130.53.82`, `64.130.33.181`, `64.130.33.88` ๐Ÿ‡ธ๐Ÿ‡ฌ Singapore | `202.8.11.224`, `202.8.11.173`, `202.8.11.102`, `202.8.11.103`, `202.8.11.104` ๐Ÿ‡ฏ๐Ÿ‡ต Tokyo | `202.8.9.160`, `202.8.9.187`, `63.254.162.35`, `64.130.49.109`, `208.91.109.102`, `198.13.133.123` ``` -------------------------------- ### Jito Tip Calculation for sendTransaction Source: https://docs.jito.wtf/lowlatencytxnsend Recommended fee allocation for sendTransaction, suggesting a 70/30 split between priority fee and Jito tip. This ensures optimal transaction inclusion. ```text Priority Fee (70%): 0.7 SOL + Jito Tip (30%): 0.3 SOL =========================== Total Fee: 1.0 SOL ``` -------------------------------- ### WebSocket Endpoint for Tip Amount Stream Source: https://docs.jito.wtf/lowlatencytxnsend Connect to this WebSocket endpoint to receive real-time updates on tip amounts. This is useful for dynamic fee adjustments. ```bash wscat -c wss://bundles.jito.wtf/api/v1/bundles/tip_stream ``` -------------------------------- ### REST API Endpoint for Recent Tip Amounts Source: https://docs.jito.wtf/lowlatencytxnsend This endpoint retrieves the most recent tip amounts, providing percentile data for landed tips. Useful for understanding current tip market conditions. ```bash curl https://bundles.jito.wtf/api/v1/bundles/tip_floor ``` -------------------------------- ### Submit Transaction via sendTransaction Source: https://docs.jito.wtf/lowlatencytxnsend Use this cURL command to send a transaction directly to the validator via the Jito Block Engine. It bypasses RPC simulation and defaults to MEV protection. Ensure to set an appropriate tip for optimal inclusion. ```bash curl https://mainnet.block-engine.jito.wtf/api/v1/transactions -X POST -H "Content-Type: application/json" -d ' { "id": 1, "jsonrpc": "2.0", "method": "sendTransaction", "params": [ "AVXo5X7UNzpuOmYzkZ+fqHDGiRLTSMlWlUCcZKzEV5CIKlrdvZa3/2GrJJfPrXgZqJbYDaGiOnP99tI/sRJfiwwBAAEDRQ/n5E5CLbMbHanUG3+iVvBAWZu0WFM6NoB5xfybQ7kNwwgfIhv6odn2qTUu/gOisDtaeCW1qlwW/gx3ccr/4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvsInicc+E3IZzLqeA+iM5cn9kSaeFzOuClz1Z2kZQy0BAgIAAQwCAAAAAPIFKgEAAAA=", { "encoding": "base64" } ] }' ```