Crates.io | yellowstone-vixen-yellowstone-fumarole-source |
lib.rs | yellowstone-vixen-yellowstone-fumarole-source |
version | 0.3.0 |
created_at | 2025-09-15 12:09:14.030625+00 |
updated_at | 2025-09-15 12:09:14.030625+00 |
description | Yellowstone Fumarole source for the Yellowstone Vixen |
homepage | |
repository | https://github.com/rpcpool/yellowstone-vixen |
max_upload_size | |
id | 1839854 |
size | 150,989 |
Yellowstone Vixen is a comprehensive framework for building program-aware, real-time Solana data pipelines. It provides the core components—runtime, parser definitions, and handler interfaces—needed to transform raw on-chain events into structured, actionable data. Vixen supports the registration of custom data sources, allowing developers to integrate various data streams seamlessly.
Solana change events, following the Yellowstone gRPC specification, are received from the source and routed through pluggable parsers. This enables developers to log, store, or stream enriched data for indexing, analytics, and downstream consumption.
Yellowstone Vixen solves core challenges for Solana dApp developers:
A minimal example using Token Program parsers and a Logger handler:
use std::path::PathBuf;
use clap::Parser;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use yellowstone_vixen::Pipeline;
use yellowstone_vixen_parser::token_program::{AccountParser, InstructionParser};
use yellowstone_vixen_yellowstone_grpc_source::YellowstoneGrpcSource;
#[derive(clap::Parser)]
#[command(version, author, about)]
pub struct Opts {
#[arg(long, short)]
config: PathBuf,
}
#[derive(Debug)]
pub struct Logger;
impl<V: std::fmt::Debug + Sync> yellowstone_vixen::Handler<V> for Logger {
async fn handle(&self, value: &V) -> yellowstone_vixen::HandlerResult<()> {
tracing::info!(?value);
Ok(())
}
}
fn main() {
tracing_subscriber::registry()
.with(tracing_subscriber::EnvFilter::from_default_env())
.with(tracing_subscriber::fmt::layer())
.init();
let Opts { config } = Opts::parse();
let config = std::fs::read_to_string(config).expect("Error reading config file");
let config = toml::from_str(&config).expect("Error parsing config");
yellowstone_vixen::Runtime<YellowstoneGrpcSourc>::builder()
.account(Pipeline::new(AccountParser, [Logger]))
.instruction(Pipeline::new(InstructionParser, [Logger]))
.build(config)
.run();
}
RUST_LOG=info cargo run -- --config "./Vixen.toml"
Prometheus metrics are served on the /metrics
endpoint. To collect metrics, we have setup a prometheus server as a docker container. You can access the metrics at http://localhost:9090
after running the prometheus server using docker-compose.
To run prometheus, you need to have docker and docker-compose installed on your machine. To start the services, run the following command:
sudo docker-compose up
Address | Public Name | Parser |
---|---|---|
boop8hVGQGqehUK2iVEMEnMrL5RbjywRzHKBmBE7ry4 |
Boop.fun | yellowstone-vixen-boop-parser |
JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 |
Jupiter Aggregator v6 | yellowstone-vixen-jupiter-swap-parser |
LiMoM9rMhrdYrfzUCxQppvxCSG1FcrUK9G8uLq4A1GF |
Kamino Limit Order | yellowstone-vixen-kamino-limit-orders-parser |
cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG |
Meteora DAMM v2 | yellowstone-vixen-meteora-amm-parser |
dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN |
Meteora Dynamic Bonding Curve | yellowstone-vixen-meteora-dbc-parser |
LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo |
Meteora DLMM | yellowstone-vixen-meteora-parser |
Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB |
Meteora Pools | yellowstone-vixen-meteora-pools-parser |
24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi |
Meteora Vault | yellowstone-vixen-meteora-vault-parser |
MoonCVVNZFSYkqNXP6bxHLPL6QQJiMagDL3qcqUQTrG |
Moonshot | yellowstone-vixen-moonshot-parser |
whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc |
Whirlpools | yellowstone-vixen-orca-whirlpool-parser |
pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA |
Pump.fun AMM | yellowstone-vixen-pump-swaps-parser |
6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P |
Pump.fun | yellowstone-vixen-pumpfun-parser |
675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 |
Raydium Liquidity Pool V4 | yellowstone-vixen-raydium-amm-v4-parser |
CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK |
Raydium Concentrated Liquidity | yellowstone-vixen-raydium-clmm-parser |
CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C |
Raydium CPMM | yellowstone-vixen-raydium-cpmm-parser |
LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj |
Raydium Launchpad | yellowstone-vixen-raydium-launchpad-parser |
5U3EU2ubXtK84QcRjWVmYt9RaDyA8gKxdUrPFXmZyaki |
Virtuals | yellowstone-vixen-virtuals-parser |
Yellowstone Vixen supports several official data sources for ingesting Solana account and transaction data. Each source is provided as a Rust crate and can be configured in your Vixen pipeline. Below is a summary of the available sources:
Source Crate | Description |
---|---|
yellowstone-grpc-source |
Dragon's Mouth (gRPC Source): Scalable and reliable streaming of account and transaction data from Solana nodes via the Dragon's Mouth Geyser plugin. Can be self-hosted or accessed via commercial vendors. See the Dragon's Mouth documentation and Yellowstone repository for more details. |
yellowstone-fumarole-source |
Fumarole Reliable Streams: Scalable, reliable, and persistent streaming of Solana accounts and transactions. Fumarole merges data from multiple nodes for high availability, supports consumer groups for horizontal scalability, and allows clients to resume streams after interruptions. Currently in limited beta—contact Triton support for access. Learn more or see the GitHub repo. |
solana-rpc-source |
Solana RPC Source: Pulls account data directly from a Solana node's JSON-RPC API using getProgramAccounts . |
solana-snapshot-source |
Solana Snapshot Source: Loads and processes Solana ledger snapshots for offline or historical analysis. |
Refer to the crate documentation for setup instructions and configuration options.
This project is developed by ABK Labs and Triton One.