yellowstone-vixen-yellowstone-fumarole-source

Crates.ioyellowstone-vixen-yellowstone-fumarole-source
lib.rsyellowstone-vixen-yellowstone-fumarole-source
version0.3.0
created_at2025-09-15 12:09:14.030625+00
updated_at2025-09-15 12:09:14.030625+00
descriptionYellowstone Fumarole source for the Yellowstone Vixen
homepage
repositoryhttps://github.com/rpcpool/yellowstone-vixen
max_upload_size
id1839854
size150,989
Kyle Espinola (kespinola)

documentation

README

Yellowstone Vixen

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.

Table of Contents

Problem Solving

Yellowstone Vixen solves core challenges for Solana dApp developers:

  • Cost Efficiency: Share Dragon's Mouth subscriptions and filter only the data you care about.
  • Operational Simplicity: Lightweight setup, minimal external dependencies.
  • Observability: Built-in Prometheus metrics for lag, throughput, and error tracking.
  • Composability: Independent, reusable parser crates that can deserialize complex cross-program interactions (CPI).

Features

  • 🛠 Parser + Handler Architecture: Build pipelines that transform raw Solana events into structured models and trigger custom logic.
  • 🔥 Flexible Source Integration: Register custom data sources or use existing ones like Dragon's Mouth for Solana Geyser streams.
  • 📈 Metrics Support: Prometheus /metrics endpoint available out-of-the-box.
  • 🧪 Offline Testing with Fixtures: Test parsers without connecting to live Solana nodes using devnet fixtures.
  • 🔄 gRPC Streaming API: Serve parsed program events directly to external systems or clients.

Quick Start

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

Supported Programs

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

Official Sources

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.

Developer Resources

Maintainers

This project is developed by ABK Labs and Triton One.

Commit count: 212

cargo fmt