> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Decodificar trades Pump.fun con Yellowstone gRPC

> Suscríbete a transacciones Pump.fun y decodifica logs TradeEvent para obtener traders, mints e importes originales.

Suscríbete a transacciones Pump.fun ejecutadas y decodifica logs `TradeEvent`. Una transacción puede contener varios eventos.

Guarda el [helper del inicio rápido](/es/yellowstone-grpc/quickstart) como `stream.mts` en el mismo directorio. Los ejemplos usan las mismas variables y dependencias.

## Instala el decoder y el IDL

```bash theme={null}
npm install @coral-xyz/anchor @solana/web3.js
curl -L https://docs.solanatracker.io/idl/pump.json -o pump.json
```

Usa el [IDL Pump.fun incluido](/idl/pump.json). Proporciona dirección, discriminadores y nombres de campos; comprueba compatibilidad al actualizarlo.

## Decodifica actualizaciones

```typescript pump-trades.mts theme={null}
import { readFileSync } from "node:fs";
import { BorshCoder, EventParser, type Idl } from "@coral-xyz/anchor";
import { PublicKey } from "@solana/web3.js";
import bs58 from "bs58";
import { subscribe } from "./stream.mts";

const idl = JSON.parse(readFileSync("pump.json", "utf8")) as Idl;
const parser = new EventParser(new PublicKey(idl.address), new BorshCoder(idl));

for await (const update of subscribe({
  transactions: {
    pump: {
      vote: false, failed: false,
      accountInclude: [idl.address], accountExclude: [], accountRequired: [],
    },
  },
})) {
  const transaction = update.transaction?.transaction;
  if (!transaction || transaction.meta?.err) continue;
  try {
    let eventIndex = 0;
    for (const event of parser.parseLogs(transaction.meta?.logMessages ?? [])) {
      const index = eventIndex++;
      if (event.name !== "TradeEvent") continue;
      console.log({
        signature: bs58.encode(transaction.signature),
        slot: update.transaction!.slot,
        eventIndex: index,
        side: event.data.is_buy ? "buy" : "sell",
        mint: event.data.mint.toString(),
        trader: event.data.user.toString(),
        tokenAmountRaw: event.data.token_amount.toString(),
        quoteMint: event.data.quote_mint.toString(),
        quoteAmountRaw: event.data.quote_amount.toString(),
      });
    }
  } catch (error) {
    console.error("Trade event decode failed; check IDL compatibility", error);
  }
}
```

```bash theme={null}
npx tsx pump-trades.mts
```

## Interpreta los eventos

`EventParser` sigue la pila de invocación para no confundir logs de otros programas. Logs ausentes o truncados pueden impedir el decoding. Registra errores y reconcilia con el historial cuando necesites cobertura completa.

Conserva importes originales como cadenas y aplica los decimales de cada mint. Deduplica por firma e índice de evento: una firma puede incluir varios fills. El ejemplo observa trades; no envía swaps.

## Guías relacionadas

<CardGroup cols={2}>
  <Card title="Cuentas Pump.fun" href="/es/yellowstone-grpc/examples/pumpfun-accounts" />

  <Card title="Fiabilidad y rendimiento" href="/es/yellowstone-grpc/best-practices" />
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.