{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"codeGuideFiles":[],"seo":{"title":"Setup Guide","description":"Learn how to work with Staking API for managing deposits, withdrawals, and stake pool information."},"dynamicMarkdocComponents":[],"metadata":{"type":"markdown"},"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"setup-guide"},"children":["Setup Guide"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["This is how you join TIN."]}," Onboarding registers your block engine on-chain so that every opted-in Rakurai validator connects to it automatically, and your orderflow starts competing for inclusion alongside the other landing services."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You handover the Rakurai team two things — a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["discovery endpoint"]}," that lists your block engine URLs, and a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["wallet pubkey you control"]}," for PSA / MCA settlement — and Rakurai performs the on-chain registration.This page covers that handover, the gRPC services your server must expose and the role each one needs."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Audience:"]}," Block engines, searchers, and partners integrating transaction landing with Rakurai."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1.-contact-rakurai-and-share-your-wallet-pubkey"},"children":["1. Contact Rakurai and share your wallet pubkey"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://discord.gg/XS7GmnmCJg"},"children":["Discord"]}," or ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://t.me/rakurai_official"},"children":["Telegram"]},", share:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["block-engine discovery / global URL"]},", and your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["P2C URL"]}," (if different)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["wallet pubkey you control"]}," (you hold the private key) — used for ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["PSA / MCA"]}," recording and settlement"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rakurai registers endpoints and creates per-validator PSA / MCA (and tip / TCA wiring as needed). Keep that key secure for epoch settlement (",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/rakurai_programs/cli/partner_reward_settlement"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rakurai-revshare"]}]},")."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2.-bundle-support-/-global-block-engine-endpoint"},"children":["2. Bundle support / global block-engine endpoint"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rakurai supports multiple block engines — transaction landing services can send bundles directly to Rakurai nodes. Share an endpoint with the Rakurai team that returns a list of block engine addresses run by your service. Rakurai validators automatically connect to the lowest-latency endpoint (just like Jito's)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example URL: ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["https://mainnet.block-engine.jito.wtf"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2.1.-endpoint-getblockengineendpoints"},"children":["2.1. Endpoint: GetBlockEngineEndpoints"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Response:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"global_endpoint {\n  block_engine_url: \"https://gateway.your-provider.com\"\n  shredstream_receiver_address: \"\"\n}\nregioned_endpoints {\n  block_engine_url: \"https://fra.gateway.your-provider.com\"\n  shredstream_receiver_address: \"\"\n}\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See your gRPC proto definition for the full request/response schema."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"2.2.-minimum-requirements"},"children":["2.2. Minimum requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you only operate one endpoint, returning just ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["global_endpoint"]}," is fine. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["global_endpoint.block_engine_url"]}," must be a valid, reachable block engine URL."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rakurai will add this URL to an on-chain PDA so that all Rakurai nodes that have opted in for this feature can connect seamlessly."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once the block engine is connected, you can send bundles directly. Each bundle must include a tip transfer instruction to one of Rakurai's tip accounts."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"success","name":"Recommended tip"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["1,000,000 lamports (0.001 SOL)"]}," per tipped transaction or bundle (in addition to normal priority fees). Tip accounts and virtual priority: ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/tips"},"children":["Tips"]},". Custom tip accounts: ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/tips#4.-can-i-use-my-own-tip-account-instead-of-rakurais-eight-accounts"},"children":["Tips — custom accounts"]},"."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3.-required-grpc-services"},"children":["3. Required gRPC services"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"The connection is outbound from the validator"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The validator ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["connects"]}," to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine_url"]},". You run a gRPC ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["server"]},"; the validator does not open a listen port for you. Bind the server so validators can reach it (public IP or resolvable hostname). ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["http://"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://"]}," are both accepted."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Protos: ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/assets/auth.8d31d24bbeb0c499e069b1a87d21a1bcffd805f719b85c9c3ab255b79e9a4868.301b32ab.proto"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.proto"]}]},", ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/assets/block_engine.c207449ce419b261b27f1499c35b8da9a509675e3f7a6cdfe290eec29623740d.301b32ab.proto"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine.proto"]}]},", ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/assets/packet.74ed8ffb9ebe58eac71a339b2d36433a122f0def26b36be76da692b9be6a7511.301b32ab.proto"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["packet.proto"]}]},"."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Path"},"children":["Path"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What you provide"},"children":["What you provide"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What the validator does"},"children":["What the validator does"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Block engine (bundles)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["global / discovery"]}," endpoint (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GetBlockEngineEndpoints"]},") that returns your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine_url"]},"(s)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Connects automatically to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["lowest-latency"]}," endpoint"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["P2C (post-pack)"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["URL"]}," your Relayer gRPC server listens on"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Connects directly to that URL for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["StartExpiringPacketStream"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Path"},"children":["Path"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Role"},"children":["Role"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Services"},"children":["Services"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bundles"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VALIDATOR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.AuthService"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine.BlockEngineValidator"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SubscribePackets"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SubscribeBundles"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["P2C"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RELAYER"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.AuthService"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine.BlockEngineRelayer"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["StartExpiringPacketStream"]},")"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bundles"]}," — your server → validator (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BlockEngineValidator"]},"):"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.AuthService"]}," with role ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VALIDATOR"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine.BlockEngineValidator"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SubscribePackets"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SubscribeBundles"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Post-pack (P2C)"]}," — validator → your server (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BlockEngineRelayer"]},"). Full Relayer setup, packets, and reply bundles: ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/post_pack/using_p2c"},"children":["Using P2C"]},"."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.AuthService"]}," with role ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RELAYER"]}]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine.BlockEngineRelayer"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["StartExpiringPacketStream"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"3.1.-same-url-for-bundles-and-p2c"},"children":["3.1. Same URL for bundles and P2C"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you register ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["one URL"]}," for both block-engine (bundles) and post-pack (P2C), that server must expose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["all three"]}," services:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Service"},"children":["Service"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What the validator uses"},"children":["What the validator uses"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["auth.AuthService"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Roles ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VALIDATOR"]}]}," (bundles) ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["and"]}," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RELAYER"]}]}," (P2C)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine.BlockEngineValidator"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SubscribePackets"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SubscribeBundles"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["block_engine.BlockEngineRelayer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["StartExpiringPacketStream"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Same URL without the Relayer role"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If only the Validator role/API is implemented, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["bundles can work and P2C will still fail"]},". Validator log: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SchedulerUpdateNotifier: connection to {url} failed"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You may use ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["separate URLs"]}," instead: the block-engine URL only needs Validator + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BlockEngineValidator"]},"; the P2C URL only needs Relayer + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BlockEngineRelayer"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4.-for-validators--block-engine-admin-rpc"},"children":["4. For validators — block-engine Admin RPC"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Validator operators can see which block engines are connected and, if they choose, block any of them through Admin RPC."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Admin IPC is request/response: keep the socket open briefly so ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["socat"]}," can read the reply before stdin closes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4.1.-getblockengineurls"},"children":["4.1. getBlockEngineUrls"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Returns the list of block engine URLs maintained by the scheduler."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"(echo '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"getBlockEngineUrls\",\"params\":[]}'; sleep 1) \\\n  | socat - UNIX-CONNECT:admin.rpc | jq\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example response:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"active_secondary_entries\": [],\n    \"admin_secondary_entries\": [],\n    \"blocklisted_uuids\": [],\n    \"onchain_secondary_entries\": [],\n    \"primary_url\": \"https://frankfurt.mainnet.block-engine.jito.wtf\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"4.2.-setblockengineurlblocklist"},"children":["4.2. setBlockEngineUrlBlocklist"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sets the blocklist to disconnect block engine URLs by UUID. Each call replaces the entire blocklist. Pass an empty array to clear it."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"<BlockEngine1>\""]}," UUID to blocklist:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"(echo '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"setBlockEngineUrlBlocklist\",\"params\":[[\"<BlockEngine1>\"]]}'; sleep 1) \\\n  | socat - UNIX-CONNECT:admin.rpc\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Clear blocklist:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"(echo '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"setBlockEngineUrlBlocklist\",\"params\":[[]]}'; sleep 1) \\\n  | socat - UNIX-CONNECT:admin.rpc\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Clearing the blocklist"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["setBlockEngineUrlBlocklist"]}," takes ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["one"]}," parameter: an array of UUIDs. To clear the blocklist you must pass an empty array ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["inside"]}," the parameter list — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["params:[[]]"]},". Writing ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["params:[]"]}," omits the parameter entirely and the blocklist is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," cleared."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Post-pack endpoint Admin RPC: ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/post_pack/using_p2c#4.-commands"},"children":["Using P2C — Commands"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related"},"children":["Related"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/tips"},"children":["Tips"]}," — tip accounts, virtual priority, TCA (not PSA/MCA)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/post_pack/readme"},"children":["Post-pack confirmations"]}," — stream access (PSA) and backrun share (MCA)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/post_pack/using_p2c"},"children":["Using P2C"]}," — Relayer gRPC, packets, reply bundles"]}]}]},"headings":[{"value":"Setup Guide","id":"setup-guide","depth":1},{"value":"1. Contact Rakurai and share your wallet pubkey","id":"1.-contact-rakurai-and-share-your-wallet-pubkey","depth":2},{"value":"2. Bundle support / global block-engine endpoint","id":"2.-bundle-support-/-global-block-engine-endpoint","depth":2},{"value":"2.1. Endpoint: GetBlockEngineEndpoints","id":"2.1.-endpoint-getblockengineendpoints","depth":3},{"value":"2.2. Minimum requirements","id":"2.2.-minimum-requirements","depth":3},{"value":"3. Required gRPC services","id":"3.-required-grpc-services","depth":2},{"value":"3.1. Same URL for bundles and P2C","id":"3.1.-same-url-for-bundles-and-p2c","depth":3},{"value":"4. For validators — block-engine Admin RPC","id":"4.-for-validators--block-engine-admin-rpc","depth":2},{"value":"4.1. getBlockEngineUrls","id":"4.1.-getblockengineurls","depth":3},{"value":"4.2. setBlockEngineUrlBlocklist","id":"4.2.-setblockengineurlblocklist","depth":3},{"value":"Related","id":"related","depth":2}],"frontmatter":{"seo":{"title":"Setup Guide"}},"lastModified":"2026-09-08T11:35:39.000Z"},"slug":"/docs/services/rakurai_jito_private/rakurai_docs/transaction_inclusion/setup_guide","userData":{"isAuthenticated":false,"teams":["anonymous"]}}