jito-solana
repository·master·Indexed 20 days ago
https://github.com/jito-foundation/jito-solanaA high-performance fork of the Solana validator optimized for Maximum Extractable Value (MEV) and specialized validator workloads. It includes support for the Block Assembly Marketplace (BAM), tools for configuring local clusters, methods for baking validator accounts into genesis, and the Geyser Plugin Interface for extending the validator runtime.
What's inside jito-solana
- The Solana Remote Wallet is a library designed for interacting with "remote" wallets. These are wallets where the private key bytes are not directly accessible to the local machine, such as hardware wallets like Ledger devices.
Locate the @solana/web3.js repository
masterThe
@solana/web3.jslibrary has been moved to its own dedicated repository. For the latest documentation, installation instructions, and API references, visit the official Solana Labs repository.https://github.com/solana-labs/solana-web3.jsMonitor cluster health with agave-watchtower
masterThe
agave-watchtowerprogram monitors cluster health by periodically polling an RPC API. It verifies that:- Transaction counts are advancing.
- New blockhashes are available.
- No validators are delinquent.
If the Validator Admission Ticket (VAT) feature is active, it also alerts if a monitored validator's vote account balance falls below the bank-side VAT balance threshold (as visible via RPC).
Configuration Options:
- RPC URLs: Use
--urlto provide a single RPC URL or--urlsto provide up to 3 URLs. If 3 URLs are provided, at least 2 must confirm cluster health for the check to pass. Providing exactly 2 URLs is not supported. - Validator Filtering: Use
--validator-identityto restrict failure notifications to a specific set of validators.
Use the Solana Virtual Machine (SVM) as a standalone library
masterThe Solana Virtual Machine (SVM) can be used as a standalone library outside of the standard Solana Validator. This is useful for applications such as:
- SVM Rollups: Reducing hardware requirements for rollups by executing blocks without the full validator stack.
- SVM Fraud Proofs: Generating succinct proofs of invalid state transitions.
- Validator Sidecars: Separating JSON-RPC workloads (like
simulateTransaction) from the main validator. - Custom Environments: Running SVM within other consensus frameworks (e.g., Avalanche subnets) or creating modified versions (SVM+).
Locate the Solana SDK
masterThesolana-sdkis no longer maintained within this repository. For the current version and development of the Solana SDK, use the official repository athttps://github.com/anza-xyz/solana-sdk.Build Rust bindings for BigTable using build-proto
masterThebuild-protoproject is a helper utility designed to build Rust bindings for BigTable. It is used to simplify the build process by leveraging the fact that most Solana developers already haveprotoc(the Protocol Buffers compiler) installed on their systems, rather than requiring a complex manual setup for all dependencies.Monitor Ping API performance with the Ping Results dashboard
masterThe Ping Results dashboard displays relevant information and performance metrics for the Ping API.Monitor cluster state with the Cluster Telemetry dashboard
masterThe Cluster Telemetry dashboard provides visibility into the current state of the cluster, specifically covering:
- Cluster Stability
- Validator Streamer
- Tomer Consensus
- IP Network
- Snapshots
- RPC Send Transaction Service
Monitor the Fee Market with the Fee Market dashboard
masterThe Fee Market dashboard tracks economic metrics related to transaction costs, including:
- Total Prioritization Fees
- Block Min Prioritization Fees
- Cost Tracker Stats
Understand SVMTransaction and TransactionCheckResult
masterSVMTransaction
A trait representing a transaction that has already passed protocol rule checks (e.g., signature verification and account index validation). It provides access to:
signatures: Encrypted transaction message hashes.static_account_keys: Slice ofPubkeyused in the transaction.account_keys: All account pubkeys (including address table lookups).recent_blockhash: The recent block hash.instructions_iter: Iterator over instructions.message_address_table_lookups: Iterator over address table lookups (for V0 transactions).
TransactionCheckResult
A data structure that stores transaction details, such as whether it contains a nonce, the nonce value, and the lamports per signature required for fees.
How the Solana Geyser Plugin Interface works
masterThe Geyser Plugin Interface allows you to extend the Solana Validator runtime by injecting a plugin that reacts to real-time events, such as account updates, block processing, or transaction processing. This is commonly used to stream validator state to external storage, like a PostgreSQL database.
To create a plugin, you must:
- Implement the
GeyserPlugintrait defined ingeyser_plugin_interface.rs. - Compile your plugin as a
cdylibdynamic library. - Expose a
Cfunction named_create_plugin()that returns an instance of yourGeyserPluginimplementation.
- Implement the
Understand the SVM Functional Model and Transaction Lifecycle
masterThe Solana Virtual Machine (SVM) manages the control flow for transaction execution. At a high level, the process involves loading program accounts, verifying them, creating an invocation context, and invoking the Runtime Berkeley Packet Filter (RBPF) on programs.
Key components include:
- Account Database & Sysvar Cache: The SVM interacts with these via traits provided by the caller.
- Program Loader: A helper module providing utilities like
load_program_with_pubkeyto load programs from on-chain. - MessageProcessor: Contained in the
solana-program-runtimecrate, this component is responsible for the actual execution of the transaction message. - LogCollector: Defined in
solana-program-runtime, used to capture execution logs.
Note that while the
bank(in a Solana Validator context) consumes the results of execution, thebankstructure itself is not part of the SVM specification.