Solana Data
Delivered Faster

Accelerate data propagation using P1's global POP network

Global Distribution
Faster Cross-Continental Delivery
Reduced latency for distant validators

βœ… Zero code changes β€’ βœ… Works with existing validators β€’ βœ… Automatic failover

Free Beta - No Payment Required for Solana Validators Until Q2 2025

Why StatePipe?

Leverage our global network to replicate Solana state in real time creating StatePipe

Faster Delivery

Accelerated data propagation across continents using P1's optimized global network.

Zero Code Changes

Works with your existing Solana validator. No modifications to Solana code required.

Global POP Network

Three-tier architecture with POPs worldwide. Automatic routing to nearest node.

Self-Validating

Shreds contain Solana signatures from block producers. No additional auth needed.

Automatic Failover

Turbine continues working if P1 goes down. You get blocks from whichever arrives first.

Real-Time Metrics

Prometheus integration with detailed metrics. Monitor shred propagation in real-time.

DDoS Resilience

Distributed POP network helps Solana withstand DDoS attacks. Multiple redundant paths prevent single points of failure.

Low Bandwidth Access

Enables real-time Solana data access in bandwidth-constrained regions. Efficient UDP++ protocol minimizes data transfer requirements.

How It Works

Five-step process from validator to validator

1

Pipe Validator Agent Intercepts

Your validator operates normally. The pipe-validator-agent listens on UDP++ port 8000 (TVU) and intercepts shreds from Solana's gossip network.

Solana Validator β†’ Turbine Gossip β†’ pipe-validator-agent
2

Upload to Nearest POP

Shreds are efficiently sent via UDP++ to your nearest P1 POP node for global distribution.

Agent β†’ UDP++ β†’ Nearest POP
3

POP Network Fanout

When a slot is complete (all 96 shreds received), the POP broadcasts availability to all other POPs globally using consistent hashing.

POP β†’ ShredAvailable β†’ Global POP Network
4

Parallel Downloads

Distant validators query multiple POPs and download shreds in parallel for maximum speed.

Distant Agent β†’ ShredRequest β†’ Multiple POPs β†’ Parallel Download
5

Inject to Validator

Shreds are injected to the local validator's TVU port. The validator processes them exactly like Turbine shreds β€” it can't tell the difference!

Agent β†’ UDP++ β†’ Validator TVU (localhost:8000) β†’ Data Reconstruction

Technical Architecture

Three-Tier POP Network

  • Tier 1: Cache all 96 shreds (100% redundancy)
  • Tier 2: Cache ~25% via consistent hashing
  • Tier 3: Cache ~17% (data shreds only)

Protocol Details

  • Protocol: Raw UDP++ (no TCP/HTTP/TLS)
  • Port: 14455 (configurable)
  • Authentication: None (shreds are self-validating)
  • Data Size: ~1.2KB per shred, ~115KB per slot

System Requirements

Minimal overhead, works with your existing validator setup

Required

  • OS: Linux (Ubuntu 20.04+ or compatible)
  • Solana: v1.14+ (any recent validator version)
  • Network: UDP port 14456 open (configurable)
  • Tools: curl (for downloading binary)
  • Keypair: Any Solana keypair (for authentication)

Recommended

  • CPU: Minimal overhead (~1-2% of existing load)
  • RAM: ~100 MB additional
  • Disk: ~50 MB for binary and logs
  • Bandwidth: ~2 Mbps additional (bidirectional)
  • Setup: systemd for service management

Compatibility Notes

  • β€’ Works alongside standard Solana validator without code changes
  • β€’ Compatible with all Solana networks (mainnet-beta supported)
  • β€’ Does not interfere with consensus or validation
  • β€’ Pre-built binary - no compilation or Rust toolchain needed
  • β€’ Currently Linux only

Find Your Nearest POP

Connect to the closest Point of Presence for optimal performance

πŸ‡ΊπŸ‡Έ North America

  • New York: nyc.p1pop.net:14455
  • San Francisco: sfo.p1pop.net:14455
  • Dallas: dal.p1pop.net:14455

πŸ‡ͺπŸ‡Ί Europe

  • London: lon.p1pop.net:14455
  • Frankfurt: fra.p1pop.net:14455
  • Amsterdam: ams.p1pop.net:14455

🌏 Asia Pacific

  • Tokyo: tyo.p1pop.net:14455
  • Singapore: sgp.p1pop.net:14455
  • Sydney: syd.p1pop.net:14455

πŸ’‘ Tip: Use the POP closest to your node's physical location for lowest latency. Not sure which to choose? Contact hello@pipe.network for help.

Get Started in 6 Steps

Simple configuration with automatic registration

Mainnet Beta

1. Install Validator Agent

# Download the latest binary
sudo curl -L https://pipe.network/release/pipe-validator-agent/current/pipe-validator-agent \
    -o /usr/local/bin/pipe-validator-agent

# Make it executable
sudo chmod +x /usr/local/bin/pipe-validator-agent

# Create config directory
sudo mkdir -p /etc/pipe-validator-agent

πŸ’‘ Pre-built binary: No Rust/compilation required! Works on Ubuntu 20.04+ and compatible Linux distributions.

2. Install Solana CLI & Generate Keypair

If you don't already have Solana CLI tools installed:

# Install Solana CLI tools
sh -c "$(curl -sSfL https://release.anza.xyz/v3.0.8/install)"

# Verify installation
solana --version

Generate a keypair for StatePipe (or use an existing one):

# Generate a new keypair
solana-keygen new --outfile /home/ubuntu/statepipe-keypair.json

# Or use your existing validator keypair
# Just note the path to your keypair file

πŸ”‘ Security Note: You can use any Solana keypair for authentication. If you're a validator, you may use your validator identity keypair, or create a dedicated keypair just for StatePipe.

3. Configure with Auto-Registration

Create /etc/pipe-validator-agent/config.toml:

Auto-Registration

With auto_register = true, the agent automatically registers your node using your Solana keypair on first startup. No separate registration step needed!

# ══════════════════════════════════════════════════════════════════════════════
# PIPE Validator Agent - Production Configuration Example
# ══════════════════════════════════════════════════════════════════════════════

[network]
# Control API for POP discovery and validator registration
control_api_url = "https://api.p1pipe.com"
# How often to re-discover nearest POP (seconds)
nearest_pop_cache_ttl = 300

# ──────────────────────────────────────────────────────────────────────────────
# OPERATING MODE
# ──────────────────────────────────────────────────────────────────────────────
[mode]
blocks = false   # Legacy block mode (not recommended)
shreds = true    # Real-time shred acceleration (RECOMMENDED)
free_beta = true # Free during beta period

# ──────────────────────────────────────────────────────────────────────────────
# SHRED COLLECTION (Upload your shreds to PIPE network)
# ──────────────────────────────────────────────────────────────────────────────
[shred_collection]
enabled = true
solana_network = "mainnet-beta"  # Options: "mainnet-beta", "testnet", "devnet"
# Network interface binding
bind_ip = "0.0.0.0"
gossip_port = 8001  # Must match your validator's gossip port
tvu_port = 8000     # Must match your validator's TVU port
# Capture method - IMPORTANT!
# "pcap" = Passive capture (RECOMMENDED - no port conflicts)
# Requires: sudo apt-get install -y libpcap-dev
# And: sudo setcap cap_net_raw+ep /path/to/pipe-validator-agent
capture = "pcap"
# Optional: Force specific network interface for pcap
# Useful if auto-detection picks wrong interface
# capture_device = "eth0"

[shred_upload]
# POP gateway address for uploading shreds (REQUIRED field)
# Options:
#   - "127.0.0.1:14455" for local POP testing
#   - "185.26.8.55:14455" for US/Europe production
#   - "67.213.121.191:14455" for Asia production
# Can be overridden with --pop-gateway CLI flag
pop_address = "127.0.0.1:14455"
batch_size = 16  # Optimal batch size for uploads

# ──────────────────────────────────────────────────────────────────────────────
# SHRED LISTENER (Receive accelerated shreds from PIPE network)
# ──────────────────────────────────────────────────────────────────────────────
[shred_listener]
enabled = true
# POP subscription address (OPTIONAL - leave commented for auto-discovery)
# Uncomment and set if auto-discovery fails due to UDP blocking:
# pop_address = "185.26.8.55:14455"
# Multi-POP subscription (optional - for redundancy and lower latency)
# Uncomment to subscribe to multiple POPs simultaneously:
# pop_list = ["185.26.8.55:14455", "67.213.121.191:14455"]
# max_pop_subscriptions = 3
# Local address for receiving shreds from POP
bind_address = "0.0.0.0:14456"
# Your validator's TVU address (where to forward received shreds)
validator_tvu_address = "127.0.0.1:8000"
# Start receiving from current slot
min_slot = 0
# Keep-alive interval (milliseconds)
heartbeat_interval_ms = 10000

# ────────────────────────────────────────────────────────────────────────
# AUTHENTICATION & AUTO-REGISTRATION
# ────────────────────────────────────────────────────────────────────────
# Enable authentication (required for production POPs)
auth_enabled = true
# Path to your Solana validator identity keypair
validator_keypair_path = "/home/ubuntu/statepipe-keypair.json"
# Auto-registration with PIPE network (RECOMMENDED)
# Automatically registers your validator on first startup
auto_register = true
# Your validator metadata (required for auto-registration)
validator_name = "My Node"              # Human-readable name
contact_email = "your@email.com"        # Contact for operational issues

# ──────────────────────────────────────────────────────────────────────────────
# LEGACY BLOCK MODE (Not recommended - use shreds instead)
# ──────────────────────────────────────────────────────────────────────────────
[upload]
enabled = false

[download]
enabled = false
poll_interval_ms = 100
delivery_dir = "/tmp/incoming-blocks"

# ══════════════════════════════════════════════════════════════════════════════
# QUICK START CHECKLIST
# ══════════════════════════════════════════════════════════════════════════════
#
# 1. Install dependencies:
#    sudo apt-get install -y libpcap-dev
#
# 2. Set capabilities for pcap capture:
#    sudo setcap cap_net_raw+ep /usr/local/bin/pipe-validator-agent
#
# 3. Customize this config:
#    ✏️  validator_keypair_path - path to your validator identity
#    ✏️  validator_name - your validator's name
#    ✏️  contact_email - your email address
#    ✏️  pop_address in [shred_upload] - set to nearest POP
#    ✏️  Verify tvu_port matches your validator (usually 8000)
#    ✏️  Verify gossip_port matches your validator (usually 8001)
#
# 4. For production, update pop_address to nearest POP:
#    US/Europe: 185.26.8.55:14455
#    Asia: 67.213.121.191:14455
#
# 5. (Optional) For listener auto-discovery:
#    Leave pop_address commented in [shred_listener] section
#    If UDP probing fails, uncomment and set manually
#
# 6. Start the agent:
#    pipe-validator-agent --config /etc/pipe-validator-agent/config.toml
#
# 7. Monitor logs:
#    journalctl -u pipe-validator-agent -f
#
# 8. Check stats (printed every 10 seconds):
#    Look for: πŸ“Š PIPE Stats: ↑X shreds ↓Y shreds
#
# ══════════════════════════════════════════════════════════════════════════════

✏️ Required Customizations:

  • 1. Update pop_address in [shred_upload] to your nearest POP (see list above)
  • 2. Verify validator_keypair_path matches your keypair from Step 2
  • 3. Update validator_name and contact_email with your details
  • 4. Install libpcap: sudo apt-get install -y libpcap-dev
  • 5. Set capabilities: sudo setcap cap_net_raw+ep /usr/local/bin/pipe-validator-agent

4. Create Systemd Service

Create /etc/systemd/system/pipe-validator-agent.service:

[Unit]
Description=Pipe Validator Agent
After=network.target

[Service]
Type=simple
User=sol
ExecStart=/usr/local/bin/pipe-validator-agent --config /etc/pipe-validator-agent/config.toml
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

πŸ’‘ Note: Replace User=sol with your system's user account.

5. Start the Agent

# Reload systemd to recognize the new service
sudo systemctl daemon-reload

# Enable and start the service
sudo systemctl enable pipe-validator-agent
sudo systemctl start pipe-validator-agent

# Check status
sudo systemctl status pipe-validator-agent

6. Verify Auto-Registration & Operation

# Watch logs
sudo journalctl -u pipe-validator-agent -f | grep -i shred

# Expected output:
# πŸ” Auto-registration enabled
# βœ… Node registered: YourPubkey...
# βœ… Shred collection mode
# βœ… PopUploader plugin started
# βœ… Shred receiver started
# βœ… Shreds being uploaded to POP

Success!

Your validator is now using StatePipe for accelerated data delivery.

Network Characteristics

Optimized for cross-continental delivery

Global POP Network

P1's distributed Point of Presence (POP) network delivers shreds through optimized routes, reducing latency for validators in distant regions. Especially beneficial for cross-continental connections.

Long-Distance Routes

Optimized paths for intercontinental validator connections (e.g., Americas ↔ Asia, Europe ↔ Oceania)

Parallel Delivery

Multiple POPs work simultaneously to deliver shreds through the fastest available paths

πŸ–₯️

CPU

Minimal

Efficient processing with negligible CPU overhead

πŸ’Ύ

Memory

Minimal

Low memory footprint during operations

πŸ“‘

Network

~115KB

Per slot (96 shreds Γ— 1.2KB)

Data Flow Components

Collection

Agent intercepts shreds from Turbine gossip network

Upload

Efficient UDP++ transfer to nearest POP

Fanout

Global POP network distribution via consistent hashing

Download

Parallel retrieval from multiple POPs

Injection

Local delivery to validator's TVU port

Pricing

Simple, transparent pricing for validators

ACTIVE NOW

Free Beta

$0

Through Q2 2025

Early adopters grandfathered at reduced rates

Unlimited shred propagation
Global POP network
Community support
All features included
Get Started Free
Coming Q2 2025

Standard

$500-1500

Per validator/month

Estimated range - final pricing TBD

Everything in Free Beta
SLA guarantees
Priority support
Advanced metrics

Enterprise

Custom

Contact us

Everything in Standard
Dedicated POPs
Custom routing
24/7 dedicated support
Contact Us

πŸŽ‰ Beta Program Details

Now - Q2 2025: Free for all mainnet validators

After Beta: Early adopters receive 50% discount for first year

Pricing: Transparent, usage-based pricing announced 60 days before beta ends

Guarantee: No surprise charges - you'll choose whether to continue with full notice

Frequently Asked Questions

No, StatePipe runs alongside Turbine. Your validator receives data from whichever arrives first. If P1 goes down, Turbine continues working normally. This provides redundancy and faster propagation without replacing Solana's native gossip protocol.

No! The pipe-validator-agent intercepts shreds via Solana's gossip network and injects them back to your validator's TVU port. Your Solana validator runs completely unmodified. The validator can't tell the difference between shreds from Turbine and P1.

Your validator continues operating normally via Turbine. StatePipe provides acceleration, not replacement. Turbine is always running in parallel, so if P1 has any issues, data will still arrive via Solana's native protocol.

Performance varies based on network conditions and validator locations. P1's global POP network is designed to improve cross-continental data delivery for distant validators.

Yes! StatePipe only accelerates shred delivery. Your validator performs all the same validation, signature checking, and consensus operations as normal. We just help the data arrive faster.

Solana uses Reed-Solomon erasure coding: each slot is split into 64 data shreds + 32 parity shreds = 96 total. Your validator only needs any 64 shreds to reconstruct the full slot, providing redundancy against packet loss.

Shreds are self-validating - each contains a signature from the Solana leader. If someone sends a malicious shred through P1, your validator will reject it during normal validation. The worst case is benign: an invalid shred is discarded, and the data arrives via Turbine instead.

Minimal additional bandwidth. Each slot is ~115KB (96 shreds Γ— 1.2KB). At ~2 slots/second, that's roughly 230KB/s or 1.8 Mbps bidirectional. This is negligible compared to your validator's existing network requirements.

StatePipe creates a distributed overlay network with multiple redundant paths for data propagation. If one POP or path is targeted by a DDoS attack, shreds can be rerouted through alternative POPs. This distributed architecture helps Solana maintain network connectivity and consensus even during large-scale attacks, as the POP network provides multiple independent routes for critical blockchain data.

Yes! StatePipe uses an efficient UDP++ protocol that minimizes overhead and optimizes data transfer. Validators in regions with limited bandwidth or high latency can receive real-time Solana data faster and more reliably than through standard Turbine gossip. The global POP network ensures there's always a nearby node, reducing the distance data must travel and enabling validators in emerging markets to participate more effectively in the Solana network.

Troubleshooting

Common solutions:

  • β€’ Check logs: sudo journalctl -u pipe-validator-agent -n 100
  • β€’ Verify port 14456 is not in use: sudo lsof -i :14456
  • β€’ Ensure validator keypair path is correct in config.toml
  • β€’ Check binary is executable: ls -l /usr/local/bin/pipe-validator-agent
  • β€’ Try re-downloading binary: sudo curl -L https://pipe.network/release/pipe-validator-agent/current/pipe-validator-agent -o /usr/local/bin/pipe-validator-agent && sudo chmod +x /usr/local/bin/pipe-validator-agent

Check these items:

  • β€’ Verify your validator is actively producing/receiving blocks
  • β€’ Check TVU port matches validator config (usually 8000)
  • β€’ Ensure POP address is reachable: nc -zvu YOUR_POP 14455
  • β€’ Verify firewall allows outbound UDP traffic on port 14455
  • β€’ Check auto-registration succeeded in logs (look for "βœ… Validator registered")

Registration issues:

  • β€’ Verify validator_keypair_path points to a valid Solana keypair file
  • β€’ Ensure auto_register = true is set in config
  • β€’ Check control API is reachable: curl https://api.p1pipe.com/health
  • β€’ Verify you're running on mainnet-beta (testnet/devnet not supported yet)
  • β€’ Contact hello@pipe.network with your pubkey if issue persists

The agent should use minimal resources (~1-2% CPU, ~100MB RAM):

  • β€’ Monitor with: htop or systemctl status pipe-validator-agent
  • β€’ Reduce batch_size in config if seeing high CPU
  • β€’ Check for error loops in logs (restart if needed)
  • β€’ Ensure you're running latest version of the agent
  • β€’ Contact hello@pipe.network if issues persist

Still having issues?

Our support team is here to help!