> ## 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.

# Мониторинг транзакций

> Потоковая передача и фильтрация живых транзакций Solana через Yellowstone gRPC

## Обзор

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

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

| Параметр          | Тип        | Описание                                                                                      |
| ----------------- | ---------- | --------------------------------------------------------------------------------------------- |
| `vote`            | `boolean`  | Включать (`true`) или исключать (`false`) транзакции голосования. По умолчанию: включать все. |
| `failed`          | `boolean`  | Включать (`true`) или исключать (`false`) неудачные транзакции. По умолчанию: включать все.   |
| `signature`       | `string`   | Мониторинг одной конкретной подписи транзакции.                                               |
| `accountInclude`  | `string[]` | Включать только транзакции, затрагивающие любой из этих аккаунтов (логическое ИЛИ).           |
| `accountExclude`  | `string[]` | Исключать транзакции, затрагивающие любой из этих аккаунтов.                                  |
| `accountRequired` | `string[]` | Включать только транзакции, затрагивающие все эти аккаунты (логическое И).                    |

<Note>
  `accountInclude` и `accountRequired` работают совместно: `accountInclude` допускает любое совпадение, а `accountRequired` требует присутствия каждого перечисленного аккаунта. Комбинируйте их для создания точных фильтров.
</Note>

## Пример: Мониторинг конкретной программы

```typescript theme={null}
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"`                                   |
