什么是 Yellowstone gRPC?

Yellowstone gRPC 通过直接连接到 Solana 的领导者节点,接收实时生成的分片数据,提供 超低延迟的数据流传输。这使您的应用程序能够以最小的延迟接收实时数据。

高性能

使用高效的二进制协议进行序列化,最大化吞吐量并最小化带宽使用

实时流传输

支持双向流传输,立即创建和取消订阅

高级过滤

通过账户、交易和程序过滤器精确控制接收的数据

多种数据类型

在单一流中订阅账户、交易、槽、区块和条目

流类型

实时监控账户变化跟踪余额更新、数据修改、所有权变更以及账户创建/删除事件,并提供精确的过滤选项。

账户监控指南

学习如何通过过滤示例流式传输账户更新

如何访问 Yellowstone gRPC

选择最适合您需求的选项:LaserStream - 多租户、高可用的 gRPC 服务,具有自动故障切换和历史回放功能。非常适合大多数生产应用程序。Dedicated Nodes - 独享的 gRPC 端点,提供资源隔离保障。最适合特殊需求。需要帮助选择? 查看我们的详细比较指南,了解哪种选项适合您的使用场景。

快速开始

准备好开始流式传输了吗?从我们的综合设置指南开始:

Yellowstone gRPC 快速入门

包含安装、认证和首次流式传输的完整设置指南

订阅请求结构

每个 gRPC 订阅都需要一个正确结构化的请求。以下是构建方法:

核心参数

commitment
string
required
数据一致性的承诺级别
  • processed - 节点已处理的交易
  • confirmed - 集群已确认的交易
  • finalized - 集群已完成的交易
ping
boolean
保持连接活跃设置为 true,每 15 秒接收一次 pong 消息,防止负载均衡器或代理导致的连接超时。
accounts_data_slice
array
优化数据传输请求账户数据的特定字节范围:
[
  { "offset": 0, "length": 100 },
  { "offset": 200, "length": 50 }
]

过滤器配置


示例:基础交易监控

以下是一个完整的示例,帮助您快速入门:
import Client, { CommitmentLevel, SubscribeRequest } from "@triton-one/yellowstone-grpc";

const client = new Client("your-grpc-endpoint", "your-api-token", {
  "grpc.max_receive_message_length": 64 * 1024 * 1024
});

const stream = await client.subscribe();

// Handle incoming data
stream.on("data", (data) => {
  if (data.transaction) {
    console.log(`Transaction: ${data.transaction.signature}`);
    console.log(`Success: ${!data.transaction.meta?.err}`);
  }
});

// Subscribe to transactions with complete request structure
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);
这是一个基础示例。用于生产环境时,请实现适当的错误处理、重连逻辑和数据处理。有关完整实现,请参阅我们的详细指南。

准备好开始了吗?

高级资源