{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"codeGuideFiles":[],"seo":{"title":"Rakurai Geyser — 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":"rakurai-geyser--guide"},"children":["Rakurai Geyser — Guide"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Build and run Geyser plugins compatible with the Rakurai validator client."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Audience:"]}," Validator operators running third-party Geyser plugins with Rakurai."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["See also:"]}," ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/spark-geyser/readme"},"children":["spark-geyser README"]}," · ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/rakurai_docs/validators/setup"},"children":["Setup and build"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1.-overview"},"children":["1. Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The struct layout and padding of the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Rakurai Validator"]}," are slightly different from the standard ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Agave/Solana validator"]},". Because of this, you cannot directly run any Geyser with the Rakurai validator and vice versa. To run any Geyser with Rakurai Validator, you must use the Geyser-related crates from the Rakurai repository and build your Geyser with them."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A sample Geyser plugin binary is provided in this repository: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/spark-geyser/readme"},"children":["spark-geyser"]}]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," Running a standard Geyser without applying Rakurai-compatible patches ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["may crash your node or cause undefined behavior"]},"."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2.-required-patch"},"children":["2. Required patch"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Apply the following patch to your Geyser's top-level ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Cargo.toml"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"toml","header":{"controls":{"copy":{}}},"source":"[patch.crates-io]\nagave-geyser-plugin-interface = { git = \"https://github.com/rakurai-io/rakurai-validator.git\", package = \"agave-geyser-plugin-interface\", tag = \"release/v3.1.8-rakurai.0\" }\nsolana-account-decoder = { git = \"https://github.com/rakurai-io/rakurai-validator.git\", package = \"solana-account-decoder\", tag = \"release/v3.1.8-rakurai.0\" }\nsolana-transaction-context = { git = \"https://github.com/rakurai-io/rakurai-validator.git\", package = \"solana-transaction-context\", tag = \"release/v3.1.8-rakurai.0\" }\nsolana-transaction-status = { git = \"https://github.com/rakurai-io/rakurai-validator.git\", package = \"solana-transaction-status\", tag = \"release/v3.1.8-rakurai.0\" }\n\n[workspace.lints.rust]\ndeprecated = \"allow\"\n","lang":"toml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," The release tag in the patch must exactly match the Rakurai validator version. If the versions do not match, the validator may crash due to struct/ABI mismatch."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3.-build-steps"},"children":["3. Build steps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After applying the patch:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"cargo clean\ncargo build --release\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Then run your Geyser plugin as usual."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For a reference implementation and configuration, see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/docs/services/rakurai_jito_private/spark-geyser/readme"},"children":["spark-geyser README"]},"."]}]},"headings":[{"value":"Rakurai Geyser — Guide","id":"rakurai-geyser--guide","depth":1},{"value":"1. Overview","id":"1.-overview","depth":2},{"value":"2. Required patch","id":"2.-required-patch","depth":2},{"value":"3. Build steps","id":"3.-build-steps","depth":2}],"frontmatter":{"seo":{"title":"Rakurai Geyser — Guide"}},"lastModified":"2026-06-22T13:51:52.000Z"},"slug":"/docs/services/rakurai_jito_private/rakurai_docs/validators/geyser","userData":{"isAuthenticated":false,"teams":["anonymous"]}}