RabbitStream 是一个可以从 Solana shreds 中直接读取交易数据的服务,它使用 Yellowstone gRPC 过滤提供实时 Solana 交易数据,速度比 Yellowstone gRPC 快 30-100ms,主要用于 token sniping, MEV 检测,以及 Solana 上的高频交易。

“速度在 Solana 上至关重要。”⚡
无论你是构建狙击机器人、MEV 搜索器还是高频交易系统,你都已经知道最快的数据来自 shreds。
这些原始 shreds 由验证器广播,甚至在执行发生之前 —— 让你可以无过滤地访问网络上的每笔交易。
🤯 但问题是:原始 Shreds 简直是一场噩梦。
你可以获得网络上的每笔交易。未经过滤。二进制编码。缺少执行元数据。而且你需要自定义解码逻辑才能理解这一切。
🐰 RabbitStream 解决了这个问题!
RabbitStream 以 shred 速度提供实时的 Solana 交易数据,并具有 Yellowstone gRPC 过滤功能。非常适合在 Solana 上进行 token 狙击、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...`);
const stream = await client.subscribe();
// Create `error` / `end` handler
const streamClosed = new Promise<void>((resolve, reject) => {
stream.on("error", (error) => {
console.log("ERROR", error);
reject(error);
stream.end();
});
stream.on("end", () => {
resolve();
});
stream.on("close", () => {
resolve();
});
});
// Handle updates
stream.on("data", (data) => {
console.log("Received data....");
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);
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
}
subscribeCommand(client, req);
就是这样。与 Yellowstone 相同的过滤,只是更快!
了解速度差异、响应结构或查看更多示例?
(附注 — RabbitStream 已对所有 Shyft 用户🔴上线)
- 原文链接: blogs.shyft.to/introduci...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!