RabbitStream 简介:使用 Shyft gRPC 检测未确认(预处理)的 Solana 交易

  • Shyft_to
  • 发布于 2025-11-26 10:44
  • 阅读 12

RabbitStream 是一个能够以 shred 速度传输 Solana 交易数据的工具,它通过 Yellowstone gRPC 过滤提供实时数据,适用于 token sniping、MEV 检测和高频交易。与标准的 Yellowstone gRPC 相比,RabbitStream 速度更快,但缺少执行日志和内部指令。

介绍 RabbitStream:使用 Shyft gRPC 检测未确认(预处理)的 Solana 交易

通过 gRPC 过滤器,直接从 Shreds 流式传输预处理的 Solana 交易。

Rabbitstream 标题封面

“速度在 Solana 上至关重要。” ⚡

无论你是构建狙击机器人、MEV 搜索器还是高频交易系统,你已经知道最快的数据来自 shreds。

这些原始 shreds 由验证器广播,甚至在执行发生之前 —— 让你可以无过滤地访问网络上的每笔交易。

🤯 但这里有个问题:原始 Shreds 简直是一场噩梦。

你可以获得网络上的每笔交易。未过滤。二进制编码。缺少执行元数据。并且你需要自定义解码逻辑才能理解这一切

🐰 RabbitStream 解决了这个问题!

RabbitStream 以 shred 速度提供实时 Solana 交易数据,并具有 Yellowstone gRPC 过滤功能。非常适合 Solana 上的代币狙击、MEV 检测和高频交易。

什么是 RabbitStream?

RabbitStream = Shreds 的卓越速度 + 像 gRPC 一样易于使用

RabbitStream 直接从 Solana shreds 流式传输交易,但以你常用的相同结构化格式交付,例如 Yellowstone gRPC。

相同的过滤器。相同的订阅格式。仅仅快 30-100 毫秒 ⚡

RabbitStream

通过 gRPC 过滤获取 shred 速度的数据。无需原始 shred 解析。

我们为什么构建它?

Solana 分阶段处理交易:

  1. Shredding —— 验证器接收交易并广播 shreds
  2. 执行 —— 交易运行,生成日志和元数据
  3. Geyser —— 标准 gRPC 提取完全处理的数据
  • 标准 gRPC 在 Geyser 阶段(最后一个)提取信息。你可以获得完整的数据,但需要等待更长的时间。
  • 但是 RabbitStream 在 Shredding 阶段本身提取信息。你可以更快地获得数据,但没有执行日志和内部指令。

它有什么不同

  • 使用你现有的代码 与 Yellowstone gRPC 相同的 SubscribeRequest 格式。按帐户、程序或交易类型过滤。切换端点并保留你的代码。
  • 结构化交易 无需二进制解码。你可以获得签名、帐户密钥、指令和基本元数据,采用熟悉的格式。
  • 快 30-100 毫秒 我们使用 Pump.fun 代币检测器对 RabbitStream 与标准 Yellowstone gRPC 进行了基准测试。在所有测试中都具有一致的速度优势。查看基准代码 →
  • 直接来自 Leaders Shreds 直接来自多个地区的 Solana 验证器。没有中继延迟。

何时使用 RabbitStream?

在以下情况下使用 RabbitStream:

  • 你正在狙击代币发行(Pump.fun、Raydium、Orca)
  • 你正在检测 MEV 或套利机会
  • 你需要尽可能快的交易警报

在以下情况下使用 gRPC:

  • 你需要交易日志和内部指令
  • 你需要执行结果和错误详情
  • 数据完整性比速度更重要

快速开始

这是一个基本的 Pump.fun 代码:

import "dotenv/config";

import Client, {
  CommitmentLevel,
  SubscribeRequest,
  SubscribeRequestAccountsDataSlice,
} from "@triton-one/yellowstone-grpc";

const client = new Client(
  "https://rabbitstream.ams.shyft.to/",
  process.env.X_TOKEN,
  undefined
);

const req: SubscribeRequest = {
  accounts: {},
  slots: {},
  transactions: {
    pumpFun: {
      vote: false,
      failed: false,
      signature: undefined,
      accountInclude: ["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"],
      accountExclude: [],
      accountRequired: [],
    },
  },
  transactionsStatus: {},
  entry: {},
  blocks: {},
  blocksMeta: {},
  accountsDataSlice: [] as SubscribeRequestAccountsDataSlice[],
  ping: undefined,
  commitment: CommitmentLevel.PROCESSED,
};

async function handleStream(client: Client, args: SubscribeRequest) {
  // Subscribe for events
  console.log(`Subscribing and starting stream...`);
  // 订阅事件
  console.log(`正在订阅并启动流...`);
  const stream = await client.subscribe();

  // Create `error` / `end` handler
  // 创建 `error` / `end` 处理程序
  const streamClosed = new Promise<void>((resolve, reject) => {
    stream.on("error", (error) => {
      console.log("ERROR", error);
      // 错误
      console.log("错误", error);
      reject(error);
      stream.end();
    });
    stream.on("end", () => {
      resolve();
    });
    stream.on("close", () => {
      resolve();
    });
  });

  // Handle updates
  // 处理更新
  stream.on("data", (data) => {
    console.log("Received data....");
    // 收到数据....
    console.log("收到数据....");
    console.dir(data, { depth: null });
  });

  // Send subscribe request
  // 发送订阅请求
  await new Promise<void>((resolve, reject) => {
    stream.write(args, (err: any) => {
      if (err === null || err === undefined) {
        resolve();
      } else {
        reject(err);
      }
    });
  }).catch((reason) => {
    console.error(reason);
    throw reason;
  });

  await streamClosed;
}

async function subscribeCommand(client: Client, args: SubscribeRequest) {
  while (true) {
    try {
      await handleStream(client, args);
    } catch (error) {
      console.error("Stream error, restarting in 1 second...", error);
      // 流错误,将在 1 秒后重新启动...
      console.error("流错误,将在 1 秒后重新启动...", error);
      await new Promise((resolve) => setTimeout(resolve, 1000));
    }
  }
}

subscribeCommand(client, req);

就是这样。与 Yellowstone 具有相同的过滤功能,只是更快!

🛠️正在寻找更多技术细节?

了解速度差异、响应结构或查看更多示例?

👉立即试用 RabbitStream

(附注 — RabbitStream 🔴 已对所有 Shyft 用户开放)**

阅读文档 →

在 Rabbitstream 上了解更多 →

  • 原文链接: blogs.shyft.to/introduci...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Shyft_to
Shyft_to
在 Solana上更快更智能地构建,使用Shyft的SuperIndexer、gRPC、RPC、API和SDK