shredstream
Jito ShredStream、Shyft RabbitStream、Triton Deshredといった技術を活用し、Solanaのトランザクションを処理前にストリーミング配信することで、取引の透明性向上や高速化に貢献するSkill。
📜 元の英語説明(参考)
Pre-execution Solana transaction streaming via Jito ShredStream, Shyft RabbitStream, and Triton Deshred
🇯🇵 日本人クリエイター向け解説
Jito ShredStream、Shyft RabbitStream、Triton Deshredといった技術を活用し、Solanaのトランザクションを処理前にストリーミング配信することで、取引の透明性向上や高速化に貢献するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o shredstream.zip https://jpskill.com/download/10434.zip && unzip -o shredstream.zip && rm shredstream.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/10434.zip -OutFile "$d\shredstream.zip"; Expand-Archive "$d\shredstream.zip" -DestinationPath $d -Force; ri "$d\shredstream.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
shredstream.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
shredstreamフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
ShredStream — 実行前 Solana データ
ShredStream は、バリデーターがブロックを実行する前にトランザクションデータを提供します。これは通常、標準の Yellowstone gRPC よりも 100〜500 ミリ秒早くなります。確認済みの結果ではなく、トランザクションの意図を確認できます。
これは、時間的制約の厳しい取引戦略にとって、Solana データへの最速の経路です。
仕組み
Solana バリデーターは、トランザクションをshreds(それぞれ約 1,228 バイト、UDP MTU 向けにサイズ調整)にシリアライズすることにより、ブロックを生成します。Shreds は Turbine (Solana のファンアウトプロトコル、2〜3 ホップ) を介して伝播します。ShredStream は、Jito の Block Engine を介してリーダーバリデーターから直接 shreds を受信することにより、Turbine をバイパスします。
Leader Validator
│
├── Turbine (standard, 2-3 hops, 200-500ms)
│ └── Your RPC Node → Yellowstone gRPC (post-execution)
│
└── Jito Block Engine (direct)
└── ShredStream Proxy (your server)
├── UDP shreds → Your RPC/Validator (faster block building)
└── gRPC entries → Your Trading Bot (decoded transactions)
取得できるもの vs. 取得できないもの
| 利用可能 (実行前) | 利用不可 (実行が必要) |
|---|---|
| トランザクション署名 | 成功/失敗ステータス |
| アカウントキー (pubkeys) | 残高の変更 (実行前/後) |
| 命令 (プログラム、アカウント、データ) | ログメッセージ |
| アドレスルックアップテーブル参照 | インナー命令 (CPI) |
| スロット番号 | トークン残高の変更 |
| 消費されたコンピュートユニット |
重要なトレードオフ: 完全性よりも速度。これから起こることを確認できますが、実際に成功したかどうかを確認することはできません。表示されるトランザクションの中には、最終的に失敗するものもあります。
実行前データを取得する 3 つの方法
| プロバイダー | 製品 | レイテンシー | アクセス | コスト |
|---|---|---|---|---|
| Jito | ShredStream Proxy | リーダーから約 10〜50 ミリ秒 | 申請 + 認証キーペア | 無料 (ベータ版) |
| Shyft | RabbitStream | gRPC よりも約 15〜100 ミリ秒高速 | Shyft gRPC プラン | 月額 199 ドルから |
| Triton | Deshred (SubscribeDeshred) |
shred から約 6.3 ミリ秒 p50 | Triton の顧客 | 月額約 2,900 ドル以上 |
詳細な比較については、references/providers_compared.md を参照してください。
オプション 1: Jito ShredStream Proxy
最も直接的なアプローチ — Jito のオープンソースプロキシを自分のサーバーで実行します。
アクセスを取得する
- Solana キーペアを生成します:
solana-keygen new -o shred_auth.json - Jito のフォーム に公開鍵を添えて申請します
- 承認を待ちます (キーペアがホワイトリストに登録されます)
- ステーキング要件なし、ベータ版期間中は無料
プロキシを実行する
# クローンしてビルド
git clone https://github.com/jito-labs/shredstream-proxy.git --recurse-submodules
cd shredstream-proxy
# gRPC を有効にして実行します (キーフラグ: --grpc-service-port)
RUST_LOG=info cargo run --release --bin jito-shredstream-proxy -- shredstream \
--block-engine-url https://mainnet.block-engine.jito.wtf \
--auth-keypair /path/to/shred_auth.json \
--desired-regions ny,amsterdam \
--dest-ip-ports 127.0.0.1:8001 \
--grpc-service-port 7777
Docker (UDP にはホストネットワークが必要):
docker run -d --name shredstream-proxy --rm \
--network host \
-e RUST_LOG=info \
-e BLOCK_ENGINE_URL=https://mainnet.block-engine.jito.wtf \
-e AUTH_KEYPAIR=/app/shred_auth.json \
-e DESIRED_REGIONS=ny,amsterdam \
-e DEST_IP_PORTS=127.0.0.1:8001 \
-e GRPC_SERVICE_PORT=7777 \
-v /path/to/shred_auth.json:/app/shred_auth.json \
jitolabs/jito-shredstream-proxy shredstream
構成
| パラメータ | 説明 | 例 |
|---|---|---|
BLOCK_ENGINE_URL |
Jito block engine エンドポイント | https://mainnet.block-engine.jito.wtf |
AUTH_KEYPAIR |
ホワイトリストに登録された Solana キーペアへのパス | shred_auth.json |
DESIRED_REGIONS |
最大 2 つ、カンマ区切り | ny,amsterdam |
DEST_IP_PORTS |
生の shreds (UDP) を転送する場所 | 127.0.0.1:8001 |
GRPC_SERVICE_PORT |
gRPC エントリーストリーミングを有効にする | 7777 |
SRC_BIND_PORT |
受信 shred UDP ポート | 20000 |
利用可能なリージョン: amsterdam, dublin, frankfurt, london, ny, salt-lake-city, singapore, tokyo
動作確認
# UDP 経由で shreds が到着しているか確認します
sudo tcpdump 'udp and dst port 20000'
# 多くの ~1200 バイトのパケットが継続的に表示されるはずです
gRPC 経由で使用する
use jito_protos::shredstream::{
shredstream_proxy_client::ShredstreamProxyClient,
SubscribeEntriesRequest,
};
let mut client = ShredstreamProxyClient::connect("http://127.0.0.1:7777").await?;
let mut stream = client
.subscribe_entries(SubscribeEntriesRequest {})
.await?
.into_inner();
while let Some(entry) = stream.message().await? {
let entries: Vec<solana_entry::entry::Entry> =
bincode::deserialize(&entry.entries)?;
for e in &entries {
for tx in &e.transactions {
let sig = tx.signatures[0];
let msg = tx.message();
// Parse instructions, accounts, etc.
}
}
println!("Slot {}: {} entries, {} transactions",
entry.slot,
entries.len(),
entries.iter().map(|e| e.transactions.len()).sum::<usize>()
);
}
オプション 2: Shyft RabbitStream
Yellowstone gRPC のドロップイン代替 — 同じ SubscribeRequest 形式で、エンドポイントが異なるだけです。インフラストラクチャを実行せずに実行前データを取得する最も簡単な方法です。
export GRPC_ENDPOINT="https://rabbitstream.ny.shyft.to"
export GRPC_TOKEN="your-shyft-x-token"
# yellowstone-grpc と同じコード、エンドポイントが異なるだけ
import grpc
endpoint = "rabbitstream.ny.shyft.to"
token = os.environ["GRPC_TOKEN"]
# ... 標準の Yellowstone 接続コード ...
# トランザクションをサブスクライブ — 同じフィルター形式
request = SubscribeRequest(
transactions={
"pumpfun": SubscribeRequestFilterTransactions(
account_include=["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"],
vote=False,
failed=False,
)
},
commitment=Commitm 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
ShredStream — Pre-Execution Solana Data
ShredStream gives you transaction data before the validator executes the block — typically 100-500ms earlier than standard Yellowstone gRPC. You see transaction intent, not confirmed results.
This is the fastest path to Solana data for time-critical trading strategies.
How It Works
Solana validators produce blocks by serializing transactions into shreds (~1,228 bytes each, sized for UDP MTU). Shreds propagate through Turbine (Solana's fanout protocol, 2-3 hops). ShredStream bypasses Turbine by receiving shreds directly from leader validators via Jito's Block Engine.
Leader Validator
│
├── Turbine (standard, 2-3 hops, 200-500ms)
│ └── Your RPC Node → Yellowstone gRPC (post-execution)
│
└── Jito Block Engine (direct)
└── ShredStream Proxy (your server)
├── UDP shreds → Your RPC/Validator (faster block building)
└── gRPC entries → Your Trading Bot (decoded transactions)
What You Get vs. What You Don't
| Available (Pre-Execution) | NOT Available (Needs Execution) |
|---|---|
| Transaction signatures | Success/failure status |
| Account keys (pubkeys) | Balance changes (pre/post) |
| Instructions (program, accounts, data) | Log messages |
| Address lookup table references | Inner instructions (CPI) |
| Slot number | Token balance changes |
| Compute units consumed |
Key tradeoff: Speed for completeness. You see what's about to happen but can't confirm it actually succeeded. Some transactions you see will ultimately fail.
Three Ways to Get Pre-Execution Data
| Provider | Product | Latency | Access | Cost |
|---|---|---|---|---|
| Jito | ShredStream Proxy | ~10-50ms from leader | Apply + auth keypair | Free (beta) |
| Shyft | RabbitStream | ~15-100ms faster than gRPC | Shyft gRPC plan | From $199/mo |
| Triton | Deshred (SubscribeDeshred) |
~6.3ms p50 from shred | Triton customer | ~$2,900+/mo |
See references/providers_compared.md for detailed comparison.
Option 1: Jito ShredStream Proxy
The most direct approach — run Jito's open-source proxy on your own server.
Get Access
- Generate a Solana keypair:
solana-keygen new -o shred_auth.json - Apply at Jito's form with your public key
- Wait for approval (your keypair gets whitelisted)
- No staking requirement, free during beta
Run the Proxy
# Clone and build
git clone https://github.com/jito-labs/shredstream-proxy.git --recurse-submodules
cd shredstream-proxy
# Run with gRPC enabled (key flag: --grpc-service-port)
RUST_LOG=info cargo run --release --bin jito-shredstream-proxy -- shredstream \
--block-engine-url https://mainnet.block-engine.jito.wtf \
--auth-keypair /path/to/shred_auth.json \
--desired-regions ny,amsterdam \
--dest-ip-ports 127.0.0.1:8001 \
--grpc-service-port 7777
Docker (host networking required for UDP):
docker run -d --name shredstream-proxy --rm \
--network host \
-e RUST_LOG=info \
-e BLOCK_ENGINE_URL=https://mainnet.block-engine.jito.wtf \
-e AUTH_KEYPAIR=/app/shred_auth.json \
-e DESIRED_REGIONS=ny,amsterdam \
-e DEST_IP_PORTS=127.0.0.1:8001 \
-e GRPC_SERVICE_PORT=7777 \
-v /path/to/shred_auth.json:/app/shred_auth.json \
jitolabs/jito-shredstream-proxy shredstream
Configuration
| Parameter | Description | Example |
|---|---|---|
BLOCK_ENGINE_URL |
Jito block engine endpoint | https://mainnet.block-engine.jito.wtf |
AUTH_KEYPAIR |
Path to whitelisted Solana keypair | shred_auth.json |
DESIRED_REGIONS |
Max 2, comma-separated | ny,amsterdam |
DEST_IP_PORTS |
Where to forward raw shreds (UDP) | 127.0.0.1:8001 |
GRPC_SERVICE_PORT |
Enable gRPC entry streaming | 7777 |
SRC_BIND_PORT |
Incoming shred UDP port | 20000 |
Available regions: amsterdam, dublin, frankfurt, london, ny, salt-lake-city, singapore, tokyo
Verify It's Working
# Check shreds are arriving via UDP
sudo tcpdump 'udp and dst port 20000'
# Should see many ~1200-byte packets continuously
Consume via gRPC
use jito_protos::shredstream::{
shredstream_proxy_client::ShredstreamProxyClient,
SubscribeEntriesRequest,
};
let mut client = ShredstreamProxyClient::connect("http://127.0.0.1:7777").await?;
let mut stream = client
.subscribe_entries(SubscribeEntriesRequest {})
.await?
.into_inner();
while let Some(entry) = stream.message().await? {
let entries: Vec<solana_entry::entry::Entry> =
bincode::deserialize(&entry.entries)?;
for e in &entries {
for tx in &e.transactions {
let sig = tx.signatures[0];
let msg = tx.message();
// Parse instructions, accounts, etc.
}
}
println!("Slot {}: {} entries, {} transactions",
entry.slot,
entries.len(),
entries.iter().map(|e| e.transactions.len()).sum::<usize>()
);
}
Option 2: Shyft RabbitStream
Drop-in replacement for Yellowstone gRPC — same SubscribeRequest format, just a different endpoint. Easiest way to get pre-execution data without running infrastructure.
export GRPC_ENDPOINT="https://rabbitstream.ny.shyft.to"
export GRPC_TOKEN="your-shyft-x-token"
# Same code as yellowstone-grpc, just different endpoint
import grpc
endpoint = "rabbitstream.ny.shyft.to"
token = os.environ["GRPC_TOKEN"]
# ... standard Yellowstone connection code ...
# Subscribe to transactions — same filter format
request = SubscribeRequest(
transactions={
"pumpfun": SubscribeRequestFilterTransactions(
account_include=["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"],
vote=False,
failed=False,
)
},
commitment=CommitmentLevel.PROCESSED,
)
Limitations: Only transaction filters work. No account, slot, or block subscriptions. The meta field is empty (no execution results).
Regional endpoints: rabbitstream.{ny,va,ams,fra}.shyft.to
Option 3: Triton Deshred
Lowest latency (~6.3ms p50) via Triton's SubscribeDeshred RPC. Same Yellowstone client, different method.
// Requires yellowstone-grpc-client with Deshred support
let (mut tx, mut stream) = client.subscribe_deshred().await?;
tx.send(SubscribeDeshredRequest {
deshred_transactions: hashmap!{
"pumpfun".to_string() => SubscribeRequestFilterDeshredTransactions {
vote: Some(false),
account_include: vec!["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P".into()],
..Default::default()
}
},
..Default::default()
}).await?;
Access: Triton customers only, paid beta, requires their custom Agave validator fork.
Parsing Pre-Execution Transactions
Without execution metadata, parsing is simpler but requires program-specific knowledge.
Identify the Program
# From a raw VersionedTransaction (post-deserialization)
account_keys = [str(k) for k in tx.message.account_keys]
for ix in tx.message.instructions:
program_id = account_keys[ix.program_id_index]
if program_id == "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P":
# This is a PumpFun instruction
discriminator = ix.data[:8]
# Decode instruction data per PumpFun IDL
Instruction Discriminators
Most Solana programs use 8-byte discriminators (Anchor SHA256 hash of the instruction name). Match instruction.data[:8] against known values for each program.
# Common approach
PUMPFUN_CREATE = bytes.fromhex("181ec828051c0777")
PUMPFUN_BUY = bytes.fromhex("66063d1201daebea")
PUMPFUN_SELL = bytes.fromhex("33e685a4017f83ad")
disc = ix.data[:8]
if disc == PUMPFUN_BUY:
# Parse buy parameters from remaining bytes
...
Warning: Discriminator values are program-specific and can change between program versions. Always verify against the current program IDL. See the pumpfun-mechanics skill for PumpFun-specific parsing.
Common Architecture: ShredStream + Yellowstone
Most production systems use both:
ShredStream (pre-execution) Yellowstone gRPC (post-execution)
│ │
▼ ▼
Intent Detection Confirmation + Reconciliation
"Wallet X is buying token Y" "Buy succeeded, wallet now holds Z"
│ │
▼ ▼
Pre-compute Response Execute / Update State
(route, sign, prepare bundle) (record PnL, update positions)
This gives you the speed advantage of ShredStream for signal detection while using Yellowstone for reliable state management.
Deployment Requirements
- Public IP required — NAT breaks UDP shred delivery
- Host networking — Docker bridge mode drops shred packets
- UDP port 20000 open for incoming shreds
- Co-locate near validators — Frankfurt, NY, Amsterdam, London, Tokyo recommended
- Bare metal preferred — Cloud VMs add 1-5ms jitter from shared NICs
See references/deployment.md for full infrastructure guide.
Files
References
references/providers_compared.md— Jito ShredStream vs Shyft RabbitStream vs Triton Deshredreferences/deployment.md— Infrastructure requirements, region selection, firewall configurationreferences/proto_reference.md— ShredStream protobuf definitions and Entry parsing
Scripts
scripts/parse_shredstream_entries.py— Decode and analyze ShredStream gRPC entriesscripts/rabbitstream_monitor.py— Connect to Shyft RabbitStream for pre-execution transaction monitoring