Перейти к основному содержанию

Documentation Index

Fetch the complete documentation index at: https://docs.orbitflare.com/llms.txt

Use this file to discover all available pages before exploring further.

Обзор

Подписки на транзакции доставляют результаты выполнения по мере их подтверждения сетью. Вы можете фильтровать по задействованным аккаунтам, исключать транзакции голосования и выбирать, включать ли неудачные транзакции.

Параметры фильтрации

ПараметрТипОписание
votebooleanВключать (true) или исключать (false) транзакции голосования. По умолчанию: включать все.
failedbooleanВключать (true) или исключать (false) неудачные транзакции. По умолчанию: включать все.
signaturestringМониторинг одной конкретной подписи транзакции.
accountIncludestring[]Включать только транзакции, затрагивающие любой из этих аккаунтов (логическое ИЛИ).
accountExcludestring[]Исключать транзакции, затрагивающие любой из этих аккаунтов.
accountRequiredstring[]Включать только транзакции, затрагивающие все эти аккаунты (логическое И).
accountInclude и accountRequired работают совместно: 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}] ${failed ? "ОШИБКА" : "OK"} тр.: ${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: false, failed: false
Отслеживание конкретного токен-минтаaccountInclude: [mintAddress]
Все успешные не-голосовые транзакцииvote: false, failed: false, без фильтра аккаунтов
Мониторинг одной транзакцииsignature: "txSignatureHere"