跳转到主要内容

安装

构建客户端

URL 回退读取 ORBITFLARE_JETSTREAM_URL 环境变量。所有构建器方法与 gRPC 客户端 完全相同,默认值与行为一致(RetryTimeoutKeepalivePingIntervalMaxMissedPongsChannelCapacityLogger)。

构建订阅

JetStream 支持交易过滤器(不支持槽位、区块或承诺级别,那些是 Yellowstone 专有的)。每个 TransactionFilter 都提供 AccountIncludeAccountExcludeAccountRequired

读取流

Subscribe 返回一个 *jetstream.Stream。调用 Next(ctx)
关闭、多个流、重连与 ping/pong 的工作方式都与 gRPC 客户端 完全相同。

完整示例

一个监听 Raydium AMM 兑换并打印每笔交易槽位的流。

JetStream v2

JetStream v2(github.com/orbitflare/orbitflare-sdk-go/jetstream/v2)与 v1 运行在相同的端点和身份验证上,且完全向后兼容:v1 保持不变。v2 新增:
  • 运行时管理的过滤器 - 无需重连即可在活动流上添加与移除过滤器。
  • 逐条消息的序列号 - 每条响应都带有单调递增的 Sequence,便于检测丢失的消息。
  • 可选富化 - 可按交易请求手续费支付方、程序 id、计算单元价格、计算上限、解析后的地址表地址等。
  • 槽位生命周期事件 - 独立的服务器流,投递槽位 alive/complete/dead 事件。
v2 客户端位于 jetstream/v2 下。构建器与 v1 完全相同(相同方法、默认值、ORBITFLARE_JETSTREAM_URL 环境变量与故障转移):

构建类型化过滤器

每个过滤器都是带有客户端自选 id(通过 .WithID())的 TransactionFilter。该 id 会在每笔匹配的交易及过滤器校验确认中回传,便于你关联匹配结果并在之后移除该过滤器。
过滤器必须至少设置 AccountIncludeAccountExcludeAccountRequired 之一;空(匹配一切)的过滤器会被拒绝。IncludeEnrichment 为可选(默认关闭)且作用于整个订阅:只要任一活动过滤器启用了它,你收到的每笔交易都会被富化。

订阅交易

在活动流上管理过滤器

从流中取得一个句柄,无需重连即可添加或移除过滤器。移除时引用你用 .WithID() 指定的过滤器 id。
stream.AddFilters(...)stream.RemoveFilters(...) 是同一操作的快捷方式。若流已关闭,两者都会返回错误。

槽位生命周期事件

SubscribeSlots() 是独立的服务器流,不接受过滤器。

健康探测

GetVersion(ctx)Ping(ctx, count) 是一元调用,具备与流相同的故障转移。
关于完整的 protobuf 规范、消息结构、富化字段及槽位状态,参见 JetStream v2 协议参考