Skip to main content
寻找Helius的管理gRPC服务? 此页面记录了开放的Yellowstone gRPC协议作为参考。对于拥有24小时历史重播、多节点故障转移和全管理环境的生产使用,请参见LaserStream——Helius与Yellowstone兼容的gRPC产品。

什么是Yellowstone gRPC?

Yellowstone gRPC通过直接连接Solana领导节点接收生成中的分片,提供Solana区块链数据的超低延迟流。这将实时数据以最小的延迟传递到您的应用程序。

高性能

二进制协议与高效序列化,实现最大吞吐量和最小带宽使用

实时流

双向流,立即创建和取消订阅

高级过滤

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

多种数据类型

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

流类型

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

账户监控指南

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

如何访问Yellowstone gRPC

选择最符合您需求的选项:

LaserStream

LaserStream 是一个多租户、高可用的gRPC服务,具有自动故障转移和24小时历史回放功能。非常适合大多数生产应用程序。
有兴趣试用LaserStream?申请两天试用;我们会审核每个申请。

专用节点

Dedicated Nodes 提供一个独享的gRPC端点,具有资源隔离保证。适合特殊需求和高级操作员。

比较gRPC选项

需要帮助做决定?阅读我们的gRPC比较指南以确定LaserStream或专用节点是否最适合您的用例。

快速开始

准备好开始流式传输了吗? 首先阅读我们的综合设置指南,或申请免费的LaserStream试用:

Yellowstone gRPC快速入门

涵盖安装、认证和配置您的第一个流

LaserStream试用

申请为期两天的LaserStream试用,然后再升级或购买专用节点

订阅请求结构

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

核心参数

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

过滤器配置

account
array<string>
要监控的账户公钥数组(逻辑或)
owner
array<string>
要监控的所有者公钥数组(逻辑或)
filters
array<object>
DataSize 和 Memcmp 过滤器(逻辑与):
[
  { "dataSize": 165 },
  { "memcmp": { "offset": 0, "bytes": "base58_encoded_bytes" } }
]
当使用多个过滤器类型时,它们作为逻辑与操作。在数组内,值作为逻辑或操作。
vote
boolean
包含/排除投票交易
failed
boolean
包含/排除失败的交易
signature
string
监控特定交易签名
account_include
array<string>
包含涉及这些账户的交易(逻辑或)
account_exclude
array<string
排除涉及这些账户的交易
account_required
array<string>
包含涉及所有这些账户的交易(逻辑与)
account_include
array<string>
过滤区块内的交易和账户
include_transactions
boolean
包含区块内的所有交易
include_accounts
boolean
包含区块内的所有账户更新
include_entries
boolean
包含区块内的所有条目
filter_by_commitment
boolean
default:"false"
true 时,仅接收指定承诺级别的插槽更新。当 false 时,接收所有承诺级别的更新。

示例:基础交易监控

这里有一个完整的示例,帮助您入门:
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);
这是一个基础示例。用于生产时,请实现适当的错误处理、重新连接逻辑和数据处理。请参阅我们的详细指南以获取完整实现。

准备开始了吗?

完整安装指南

安装、身份验证和第一个流的实现

流泵 AMM 数据

实际示例:监控泵 AMM 交易

高级资源