Rakurai Geyser — Guide
Build and run Geyser plugins compatible with the Rakurai validator client.
Audience: Validator operators running third-party Geyser plugins with Rakurai.
See also: spark-geyser README · Setup and build
1. Overview
The struct layout and padding of the Rakurai Validator are slightly different from the standard 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.
A sample Geyser plugin binary is provided in this repository: spark-geyser.
Note: Running a standard Geyser without applying Rakurai-compatible patches may crash your node or cause undefined behavior.
2. Required patch
Apply the following patch to your Geyser's top-level Cargo.toml:
[patch.crates-io] agave-geyser-plugin-interface = { git = "https://github.com/rakurai-io/rakurai-validator.git", package = "agave-geyser-plugin-interface", tag = "release/v3.1.8-rakurai.0" } solana-account-decoder = { git = "https://github.com/rakurai-io/rakurai-validator.git", package = "solana-account-decoder", tag = "release/v3.1.8-rakurai.0" } solana-transaction-context = { git = "https://github.com/rakurai-io/rakurai-validator.git", package = "solana-transaction-context", tag = "release/v3.1.8-rakurai.0" } solana-transaction-status = { git = "https://github.com/rakurai-io/rakurai-validator.git", package = "solana-transaction-status", tag = "release/v3.1.8-rakurai.0" } [workspace.lints.rust] deprecated = "allow"
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.
3. Build steps
After applying the patch:
cargo clean cargo build --release
Then run your Geyser plugin as usual.
For a reference implementation and configuration, see the spark-geyser README.