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

# İşlem İzleme

> Yellowstone gRPC kullanarak canlı Solana işlemlerini akış olarak alın ve filtreleyin

## Genel Bakış

İşlem abonelikleri, ağ tarafından onaylandıklarında yürütme sonuçlarını sunar. Hangi hesapların dahil olduğuna göre filtreleyebilir, oy işlemlerini hariç tutabilir ve başarısız işlemleri dahil edip etmeyeceğinizi seçebilirsiniz.

## Filtre Parametreleri

| Parametre         | Tür        | Açıklama                                                                                     |
| ----------------- | ---------- | -------------------------------------------------------------------------------------------- |
| `vote`            | `boolean`  | Oy işlemlerini dahil et (`true`) veya hariç tut (`false`). Varsayılan: tümünü dahil et.      |
| `failed`          | `boolean`  | Başarısız işlemleri dahil et (`true`) veya hariç tut (`false`). Varsayılan: tümünü dahil et. |
| `signature`       | `string`   | Tek bir belirli işlem imzasını izle.                                                         |
| `accountInclude`  | `string[]` | Yalnızca bu hesaplardan herhangi birini içeren işlemleri dahil et (mantıksal VEYA).          |
| `accountExclude`  | `string[]` | Bu hesaplardan herhangi birini içeren işlemleri hariç tut.                                   |
| `accountRequired` | `string[]` | Yalnızca bu hesapların tamamını içeren işlemleri dahil et (mantıksal VE).                    |

<Note>
  `accountInclude` ve `accountRequired` birlikte çalışır: `accountInclude` herhangi bir eşleşmeye izin verirken, `accountRequired` listelenen her hesabın mevcut olmasını zorunlu kılar. Hassas filtreler oluşturmak için bunları birleştirin.
</Note>

## Örnek: Belirli Bir Programı İzleme

```typescript theme={null}
import Client, { CommitmentLevel, SubscribeRequest } from "@triton-one/yellowstone-grpc";

const GRPC_URL = "https://your-endpoint.grpc.orbitflare.com";
const X_TOKEN = "YOUR_GRPC_TOKEN";
const PING_INTERVAL_MS = 30_000;

const client = new Client(GRPC_URL, X_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 ? "FAILED" : "OK"} tx: ${sig}`);
    } else if (data.pong) {
      console.log("Pong received");
    }
  });

  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);
    });
  });

  setInterval(() => {
    stream.write({ ping: { id: 1 }, accounts: {}, accountsDataSlice: [], transactions: {}, transactionsStatus: {}, slots: {}, blocks: {}, blocksMeta: {}, entry: {} }, () => {});
  }, PING_INTERVAL_MS);

  await streamClosed;
}

main();
```

## Örnek: Ayrıştırılmış Çıktıyla Token Program Transferlerini İzleme

Bu örnek, `bs58` kullanarak ham tampon alanlarını okunabilir dizelere dönüştürür:

```typescript theme={null}
import Client, { CommitmentLevel, SubscribeRequest } from "@triton-one/yellowstone-grpc";
import bs58 from "bs58";

const GRPC_URL = "https://your-endpoint.grpc.orbitflare.com";
const X_TOKEN = "YOUR_GRPC_TOKEN";

function toBase58(buf: Buffer | Uint8Array | null | undefined): string {
  if (!buf || buf.length === 0) return "";
  return bs58.encode(buf instanceof Buffer ? buf : Buffer.from(buf));
}

const client = new Client(GRPC_URL, X_TOKEN, {
  "grpc.max_receive_message_length": 1024 * 1024 * 1024, // 1 GiB
});

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

  stream.on("data", (data) => {
    if (!data.transaction) return;
    const tx = data.transaction.transaction;
    const sig = toBase58(tx.signature);
    const accounts = tx.transaction?.message?.accountKeys?.map(toBase58) ?? [];
    console.log(`Tx: ${sig}`);
    console.log(`Accounts: ${accounts.join(", ")}`);
  });

  const request: SubscribeRequest = {
    transactions: {
      tokenTransfers: {
        vote: false,
        failed: false,
        accountInclude: [
          "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", // SPL Token
        ],
        accountExclude: [],
        accountRequired: [],
      },
    },
    commitment: CommitmentLevel.PROCESSED,
    accounts: {},
    accountsDataSlice: [],
    slots: {},
    transactionsStatus: {},
    blocks: {},
    blocksMeta: {},
    entry: {},
  };

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

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

  await streamClosed;
}

main();
```

## Yaygın Kullanım Senaryoları

| Kullanım Senaryosu                         | Filtre Stratejisi                                                |
| ------------------------------------------ | ---------------------------------------------------------------- |
| Swap'lar için bir DEX izleme               | `accountInclude: [dexProgramId]`, `vote: false`                  |
| Cüzdan aktivitesini tespit etme            | `accountInclude: [walletPubkey]`, `vote: false`, `failed: false` |
| Belirli bir token mint'ini izleme          | `accountInclude: [mintAddress]`                                  |
| Tüm oy dışı, başarılı işlemleri takip etme | `vote: false`, `failed: false`, hesap filtresi yok               |
| Tek bir işlemi izleme                      | `signature: "txSignatureHere"`                                   |
