Yellowstone gRPC 将实时 Solana 数据流推送到你的应用。当你需要在事件发生时获得账户、交易、slot、区块或 entry 更新时,请使用它。
在底层,Yellowstone 可以在 Solana leader 生产 shred 的过程中靠近其节点接入。leader 是按计划生产区块的验证者;shred 是通过网络发送的一小段区块数据。Jito Shreds 加速可以让对延迟敏感的应用更早获得这些数据。
高性能
采用二进制协议和高效序列化,吞吐量最大、带宽占用最小。
高级过滤
通过账户、交易和程序级过滤器精确控制接收的数据。
多种数据类型
在单一数据流中订阅账户、交易、slot、区块和 entry。
定价与访问
独立方案
€200/月 — 固定费率,无按用量收费
- 欧洲区域:
https://grpc.solanatracker.io
- 美国区域:
https://grpc-us.solanatracker.io
- 25 个并发 gRPC 连接
- 超低延迟数据流
- 由 Jito Shreds 加速
- 7×24 在线,欧盟 + 美国自动故障切换
- 不按带宽或请求次数收费
Yellowstone gRPC 也与 RPC Business(€399/月)、RPC Professional(€799/月)及所有专用节点免费捆绑。完整对比见 定价与限制。
数据流类型
实时监控账户状态变化通过灵活的过滤器跟踪余额更新、数据修改、所有权变更以及账户创建/删除事件。账户监控指南
了解如何使用过滤器示例来流式获取账户更新。
流式获取交易执行数据实时接收交易签名、状态、程序调用以及代币余额更新。 跟踪共识与区块生产在不同 commitment 级别下流式获取 slot 更新、区块生成以及网络状态变化。Slot 与区块监控指南
流式获取 slot 和区块及其交易详情。
监控底层区块链 entry访问包含交易批次与执行结果的核心执行单元。Entry 监控指南
流式获取 entry 与交易批次。
快速开始
数分钟内启动数据流:
Yellowstone gRPC 快速入门
分步设置指南,包含安装、鉴权以及你的第一次数据流。
关键特性
Jito Shreds 加速
通过 Jito Shreds 进行增强,相比标准 Yellowstone gRPC 节点可提前 50–100 毫秒 提供数据。
区域端点
选择最近的端点以获得最佳性能:
- 欧洲:
https://grpc.solanatracker.io
- 美国:
https://grpc-us.solanatracker.io
灵活过滤
精细控制你接收的数据:
- 按账户、所有者或程序进行过滤
- 包含或排除投票/失败交易
- 应用
memcmp 和数据大小过滤器
- 切片账户数据以减小带宽占用
订阅请求结构
每个 gRPC 订阅都包含一个结构化请求,用于定义要流式传输的内容和方式。
核心参数
数据一致性级别
processed — 最快,未确认的数据
confirmed — 已经过集群确认
finalized — 完全最终化的数据
保持连接活跃有些客户端将其建模为 ping: { id: 1 };另一些则提供布尔助手。请使用与你 Yellowstone 客户端版本匹配的形式。
优化账户数据传输请求特定字节范围:[
{ "offset": 0, "length": 100 },
{ "offset": 200, "length": 50 }
]
过滤器配置
数据大小与内存比较过滤器(逻辑与):[
{ "dataSize": 165 },
{ "memcmp": { "offset": 0, "bytes": "base58_encoded_bytes" } }
]
多种过滤器类型之间使用与逻辑。数组内部的值使用或逻辑。
示例:owner: [TOKEN_PROGRAM] 加上 filters: [{ dataSize: 165 }] 表示“由 Token Program 拥有且长度恰好为 165 字节的账户。”
示例:基础交易监控
一个使用 TypeScript 的最简示例:
import Client, { CommitmentLevel, SubscribeRequest } from "@triton-one/yellowstone-grpc";
const client = new Client(
"https://grpc.solanatracker.io",
"your-api-token",
{ "grpc.max_receive_message_length": 64 * 1024 * 1024 }
);
const stream = await client.subscribe();
// 处理传入数据
stream.on("data", (data) => {
if (data.transaction) {
console.log(`Transaction: ${data.transaction.signature}`);
console.log(`Success: ${!data.transaction.meta?.err}`);
}
});
// 订阅交易
const subscribeRequest: SubscribeRequest = {
transactions: {
client: {
accountInclude: [
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", // Token Program
"11111111111111111111111111111111" // System Program
],
accountExclude: [],
accountRequired: [],
vote: false,
failed: false
}
},
commitment: CommitmentLevel.CONFIRMED,
ping: { id: 1 }
};
stream.write(subscribeRequest);
对于生产环境部署,请加入重试逻辑、错误处理和结构化的数据处理。详细的实现模式请参考相关指南。
准备开始?
监控 Pump.fun 数据
真实示例:实时流式获取 Pump.fun 交易。