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

“速度在 Solana 上至关重要。” ⚡
无论你是构建狙击机器人、MEV 搜索器还是高频交易系统,你已经知道最快的数据来自 shreds。
这些原始 shreds 由验证器广播,甚至在执行发生之前 —— 让你可以无过滤地访问网络上的每笔交易。
🤯 但这里有个问题:原始 Shreds 简直是一场噩梦。
你可以获得网络上的每笔交易。未过滤。二进制编码。缺少执行元数据。并且你需要自定义解码逻辑才能理解这一切。
🐰 RabbitStream 解决了这个问题!
RabbitStream 以 shred 速度提供实时 Solana 交易数据,并具有 Yellowstone gRPC 过滤功能。非常适合 Solana 上的代币狙击、MEV 检测和高频交易。
RabbitStream = Shreds 的卓越速度 + 像 gRPC 一样易于使用
RabbitStream 直接从 Solana shreds 流式传输交易,但以你常用的相同结构化格式交付,例如 Yellowstone gRPC。
相同的过滤器。相同的订阅格式。仅仅快 30-100 毫秒 ⚡

通过 gRPC 过滤获取 shred 速度的数据。无需原始 shred 解析。
Solana 分阶段处理交易:
在以下情况下使用 RabbitStream:
在以下情况下使用 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 🔴 已对所有 Shyft 用户开放)**
- 原文链接: blogs.shyft.to/introduci...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!