跳转到主要内容

概述

交易订阅在网络确认交易时提供执行结果。您可以按涉及的账户进行过滤、排除投票交易,并选择是否包含失败的交易。

过滤参数

参数类型描述
voteboolean包含(true)或排除(false)投票交易。默认:包含所有。
failedboolean包含(true)或排除(false)失败的交易。默认:包含所有。
signaturestring监控单个特定交易签名。
accountIncludestring[]仅包含涉及这些账户中任意一个的交易(逻辑 OR)。
accountExcludestring[]排除涉及这些账户中任意一个的交易。
accountRequiredstring[]仅包含涉及所有这些账户的交易(逻辑 AND)。
accountIncludeaccountRequired 协同工作:accountInclude 允许任意匹配,而 accountRequired 要求列出的每个账户都必须存在。组合使用它们以构建精确过滤器。

示例:监控特定程序

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

const client = new Client(
  "https://your-endpoint.grpc.orbitflare.com",
  "YOUR_GRPC_TOKEN",
  { "grpc.max_receive_message_length": 64 * 1024 * 1024 }
);

async function main() {
  const stream = await client.subscribe();

  const streamClosed = new Promise<void>((resolve, reject) => {
    stream.on("error", (error) => { reject(error); stream.end(); });
    stream.on("end", () => resolve());
    stream.on("close", () => resolve());
  });

  stream.on("data", (data) => {
    if (data.transaction) {
      const { transaction, slot } = data.transaction;
      const sig = Buffer.from(transaction.signature).toString("base64");
      const failed = transaction.meta?.err != null;
      console.log(`[slot ${slot}] ${failed ? "失败" : "成功"} 交易: ${sig}`);
    }
  });

  const request: SubscribeRequest = {
    transactions: {
      raydiumSwaps: {
        vote: false,
        failed: false,
        accountInclude: [
          "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", // Raydium AMM v4
        ],
        accountExclude: [],
        accountRequired: [],
      },
    },
    commitment: CommitmentLevel.CONFIRMED,
    accounts: {},
    accountsDataSlice: [],
    slots: {},
    transactionsStatus: {},
    blocks: {},
    blocksMeta: {},
    entry: {},
    ping: { id: 1 },
  };

  await new Promise<void>((resolve, reject) => {
    stream.write(request, (err) => {
      if (err == null) resolve(); else reject(err);
    });
  });

  await streamClosed;
}

main();

常见使用场景

使用场景过滤策略
监控 DEX 的兑换accountInclude: [dexProgramId]vote: false
检测钱包活动accountInclude: [walletPubkey]vote: falsefailed: false
监控特定代币铸币accountInclude: [mintAddress]
追踪所有非投票成功交易vote: falsefailed: false,无账户过滤
监控单个交易signature: "txSignatureHere"