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

# 트랜잭션 기록 스캔

> 서버 측에서 주소 기록을 검색하여 프로그램 명령어를 호출하거나 토큰 민트와 상호작용하는 트랜잭션을 찾고, 파싱된 일치 항목과 해당 서명 또는 개수를 반환합니다.

이 페이지의 요청 본문, 응답 스키마 및 예시는 OpenAPI 정의에서 생성됩니다.

스캔은 한 주소의 기록을 탐색하고 `match` 기준과 일치하는 트랜잭션만 유지한 후 해당 트랜잭션만 파싱합니다. [파싱된 트랜잭션 기록](https://www.helius.dev/docs/ko/api-reference/parsed-events/transaction-history.md)을 페이지별로 조회하고 클라이언트 측에서 필터링하는 대신 사용하세요.

기본적으로 `data`의 각 항목은 [트랜잭션 파싱](https://www.helius.dev/docs/ko/api-reference/parsed-events/transactions.md)이 반환하는 것과 동일한 `TransactionResult` 형식을 사용합니다. 일치하는 서명만 가져오거나 개수만 가져오려면 `returnShape`을 설정하세요. 응답에는 스캔이 어디까지 진행되었고 왜 중지되었는지 알려 주는 `scan` 요약도 포함됩니다.

## 스캔 작동 방식

1. 스캔은 설정한 `slot`, `time` 및 서명 범위 내에서 주소 기록을 `sortOrder` 순서로 페이지당 최대 1,000개의 트랜잭션씩 가져옵니다.
2. `match`에 설정된 모든 기준과 일치하는 트랜잭션을 유지합니다.
3. 다음 중 하나에 먼저 도달하면 중지합니다. `limit`개의 일치 항목 발견(기본 `transactions` 형식만 해당), `budget.maxScannedTransactions`개 스캔, 기록 또는 범위의 끝, 요청 시간 제한.

일찍 중지된 스캔도 여전히 `200`입니다. `paginationToken`이 존재하는 동안에는 `data`이 비어 있더라도 반환된 값을 사용하여 다시 호출하세요.

## 일치 기준

`match`은 필수입니다. `programs`, `mints` 또는 둘 다 설정하세요. 둘 다 설정하면 트랜잭션이 두 조건 모두와 일치해야 합니다.

### 프로그램별 일치

`programs`에는 최대 20개의 프로그램을 나열할 수 있으며, 각 프로그램은 한 번만 지정할 수 있습니다. 트랜잭션에 해당 프로그램 중 하나의 최상위 또는 내부(CPI) 명령어가 프로그램의 `scope` 내에 있으면 일치합니다.

각 프로그램에 대해 일치 범위를 좁힐 수 있습니다.

* `instructions`: 프로그램의 모든 IDL 버전에 있는 명령어 이름입니다. IDL에 표기된 형태나 snake\_case를 사용할 수 있습니다. 프로그램의 IDL에 없는 이름을 지정하면 `400`이 반환됩니다.
* `discriminators`: 각각 1\~8개의 16진수 인코딩 바이트로 이루어진 명령어 데이터 접두사이며 선택적으로 `0x` 접두사를 사용할 수 있습니다. IDL이 없는 프로그램에 사용하세요.
* 두 목록 중 하나 또는 둘 다 설정하세요. 둘 다 설정하면 명령어가 지정된 명령어 중 하나이거나 데이터가 판별자 중 하나로 시작할 때 일치합니다. 프로그램의 모든 명령어와 일치시키려면 둘 다 생략하세요.
* 각 목록에는 프로그램당 최대 50개의 항목을 지정할 수 있습니다.

프로그램의 디코딩된 명령어 이름을 확인하려면 Parsed Streams의 [`describeProgram`](https://www.helius.dev/docs/ko/parsed-streams/quickstart#디스커버리) 메서드를 사용하세요.

### 민트별 일치

`mints`에는 `{ "mint": "...", "scope": "address" }` 형식의 객체를 최대 20개까지 나열할 수 있으며, 각 민트는 한 번만 지정할 수 있습니다. 트랜잭션의 사전 또는 사후 토큰 잔액 중 하나가 해당 민트의 `scope` 내에서 지정된 민트 중 하나에 해당하면 일치합니다.

민트에 대해 지갑을 스캔할 때는 `tokenAccounts`을 `balanceChanged`으로 설정하세요. 기본적으로 기록에서는 지갑 자체가 아닌 지갑의 토큰 계정만 건드리는 트랜잭션을 제외하며, 여기에는 많은 수신 토큰 전송이 포함됩니다.

### 네이티브 SOL 일치

네이티브 SOL에는 토큰 잔액이 없으므로 스캔은 lamport를 기준으로 일치 여부를 판단합니다. 네이티브 SOL 민트 `So11111111111111111111111111111111111111111`을 사용하세요(래핑된 SOL은 `So11111111111111111111111111111111111111112`입니다).

* `address` 범위에서는 스캔한 주소의 lamport가 변경되면 트랜잭션이 일치합니다.
* `transaction` 범위에서는 어느 계정이든 lamport가 변경되면 일치합니다.

수수료 납부자에게 부과된 수수료는 포함되지 않습니다. 각 계정을 개별적으로 비교하므로 한 계정에서 나갔다가 동일한 트랜잭션에서 다시 돌아온 lamport는 포함되지 않습니다. 네이티브 SOL 일치는 Pump.fun 판매처럼 프로그램이 전송 명령어 없이 지급한 SOL을 감지합니다. 또한 Jito 팁이나 계정에 지불되거나 계정에서 환불된 임대료와 같은 부수적인 이동도 감지합니다.

### 일치 범위

각 프로그램과 각 민트에는 `scope`가 적용됩니다.

| `scope` | 프로그램의 명령어가 포함되는 조건 | 민트의 토큰 잔액이 포함되는 조건 |
| - | - | - |
| `address` (기본값) | 해당 계정 중 하나가 `address`이거나, `address`이 소유한 토큰 계정이거나, 민트가 `address`인 토큰 계정이거나, `address` 자체가 프로그램입니다. | 해당 토큰 계정이 `address`이거나 `address`이 소유하거나, 해당 민트가 `address`입니다. |
| `transaction` | 트랜잭션 내 어디에든 나타납니다. | 트랜잭션 내 어디에든 나타납니다. |

스캔한 주소가 트랜잭션에는 있지만 일치시킬 명령어나 잔액에는 없는 경우 `transaction` 범위를 사용하세요. 예를 들어 주소가 수수료만 지불하거나, 다중 서명 트랜잭션을 실행하거나, Anchor 이벤트 CPI에서 누락된 경우입니다. USDC도 보유한 트랜잭션을 찾기 위해 토큰 민트를 스캔하려면 USDC 항목에 `transaction` 범위를 사용해야 합니다.

토큰 계정 소유권은 각 토큰 잔액에 기록된 `owner`에서 가져옵니다. 이를 기록하지 않은 이전 트랜잭션은 `address` 자체에 대해서만 `address` 범위와 일치합니다.

## 반환 형식

`returnShape`은 응답에서 일치 항목에 대해 반환할 내용을 설정합니다.

| `returnShape` | `data` | 용도 |
| - | - | - |
| `transactions` (기본값) | 파싱된 일치 항목, 최대 `limit`개. | 디코딩된 명령어, 전송 및 요약을 읽습니다. |
| `signatures` | 일치 항목당 하나의 `{ signature, slot, transactionIndex, blockTime }` 객체. | 파싱하지 않고 일치하는 서명을 수집합니다. |
| `count` | 생략됩니다. `scan.matchedTransactions`은 일치 항목 수입니다. | 범위 내 일치 항목의 수를 계산합니다. |

`signatures`과 `count`은 `limit` 및 `rawTransaction`을 무시합니다. 요청이 스캔하는 범위의 모든 일치 항목을 반환하므로 `windowEnd`, `budget` 또는 `deadline`에서만 중지합니다. 전체 기록의 개수를 계산하려면 `paginationToken`을 사용해 계속 호출하고 `scan.matchedTransactions`을 합산하세요.

`returnShape: "signatures"`을 사용하는 `data`의 각 항목은 다음과 같습니다.

```json theme={"system"}
{
  "signature": "5zmGhmd3JZxXzz8MnA8MM1K7PXRwA1z35n3xT6ZJGRz3sAi25p8jaZuPWFCB4nEPx7DUke9y3pwrd4V7xAFozQBy",
  "slot": 460869102,
  "transactionIndex": 203,
  "blockTime": 1792848886
}
```

크레딧은 반환되는 내용이 아니라 스캔한 기록 페이지에 따라 결정되므로 세 형식의 비용은 모두 같습니다.

## 요청 예시

### Pump.fun 매수 및 매도

Pump.fun 프로그램의 기록에서 `buy` 및 `sell` 명령어를 스캔합니다.

```json theme={"system"}
{
  "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      }
    ]
  },
  "limit": 100
}
```

Pump.fun에는 `buy_exact_sol_in`, `buy_v2` 및 `sell_v2` 같은 변형도 있습니다. 일치시킬 모든 명령어 이름을 나열하세요.

### 한 토큰의 매수 및 매도

한 토큰의 Pump.fun 거래를 가져오려면 프로그램 대신 토큰의 민트 주소를 스캔하세요. 민트 기록에는 해당 토큰의 활동만 포함되며, 각 매수 또는 매도 명령어는 민트를 계정으로 나열하므로 기본 `address` 범위와 일치합니다.

```json theme={"system"}
{
  "address": "<MINT_ADDRESS>",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      }
    ]
  }
}
```

USDC 토큰 계정도 관련된 토큰 트랜잭션만 유지하려면 `transaction` 범위로 USDC를 추가하세요. 기본 `address` 범위를 사용하면 USDC 잔액이 민트 주소에 속해야 하므로 어떤 항목도 일치하지 않습니다.

```json theme={"system"}
{
  "address": "<MINT_ADDRESS>",
  "match": {
    "mints": [
      { "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "scope": "transaction" }
    ]
  }
}
```

### 두 프로그램에 걸친 지갑 거래

여러 프로그램 중 하나에 대한 호출과 일치시키려면 여러 프로그램을 나열하세요. 이 요청은 지갑의 Pump.fun 및 PumpSwap 거래를 서명으로만 반환합니다.

```json theme={"system"}
{
  "address": "<WALLET_ADDRESS>",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      },
      {
        "programId": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
        "instructions": ["buy", "sell"]
      }
    ]
  },
  "returnShape": "signatures"
}
```

### 특정 시간 범위의 지갑 USDC 활동

2025년에 USDC와 상호작용한 트랜잭션을 찾기 위해 지갑 기록을 스캔합니다. `tokenAccounts: "balanceChanged"`에는 지갑의 USDC 토큰 계정만 건드린 전송도 포함됩니다.

```json theme={"system"}
{
  "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
  "match": {
    "mints": [{ "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" }]
  },
  "tokenAccounts": "balanceChanged",
  "time": { "gte": 1735689600, "lte": 1767225599 }
}
```

일치하는 트랜잭션 수만 가져오려면 `"returnShape": "count"`을 추가하세요.

### 지갑의 SOL 이동

2025년에 지갑이 지불한 수수료 외에 SOL 잔액을 변경한 트랜잭션을 찾기 위해 지갑을 스캔합니다. 여기에는 프로그램이 전송 명령어 없이 지급한 SOL도 포함됩니다.

```json theme={"system"}
{
  "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
  "match": {
    "mints": [{ "mint": "So11111111111111111111111111111111111111111" }]
  },
  "time": { "gte": 1735689600, "lte": 1767225599 }
}
```

## 페이지네이션 및 중지 이유

`scan.stoppedOn`은 요청이 종료된 이유를 알려 줍니다.

| `stoppedOn` | 의미 | `paginationToken` |
| - | - | - |
| `windowEnd` | 기록 또는 요청한 범위의 끝에 도달했습니다. | 없습니다. 스캔이 완료되었습니다. |
| `limit` | `limit`개의 일치 항목을 반환했습니다. 기본 `transactions` 형식에만 적용됩니다. | 마지막으로 반환된 일치 항목 바로 다음부터 재개하므로 일치 항목을 건너뛰지 않습니다. |
| `budget` | `budget.maxScannedTransactions`개의 트랜잭션을 스캔했습니다. | 다음 기록 페이지에서 재개합니다. |
| `deadline` | 요청 시간 제한에 도달했습니다. | 다음 기록 페이지에서 재개합니다. 기한으로 인해 중간에 중단된 페이지는 다음 호출에서 다시 가져옵니다. |

`scan.scannedThrough`은 마지막으로 스캔한 트랜잭션의 슬롯과 블록 시간을 제공하므로 긴 기록의 진행 상황을 보고할 수 있습니다.

드문 명령어를 찾는 스캔은 일치 항목을 찾지 못한 채 예산을 모두 사용할 수 있습니다. 이 경우 응답의 `data` 배열은 비어 있지만 `paginationToken`은 계속 반환되므로 스캔을 계속하세요.

```json theme={"system"}
{
  "data": [],
  "paginationToken": "460903064:422",
  "scan": {
    "stoppedOn": "budget",
    "scannedTransactions": 2000,
    "matchedTransactions": 0,
    "scannedThrough": { "slot": 460903064, "blockTime": 1792856105 },
    "creditsCharged": 12
  }
}
```

이 루프는 기록을 모두 탐색할 때까지 스캔을 계속합니다.

```javascript scan-pumpfun-trades.js theme={"system"}
const API_KEY = process.env.HELIUS_API_KEY;

if (!API_KEY) {
  console.error("Missing HELIUS_API_KEY.");
  process.exit(1);
}

const URL = `https://mainnet.helius-rpc.com/v1/parsed-events/scan?api-key=${API_KEY}`;
const PUMP_PROGRAM = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";

async function scan(paginationToken) {
  const response = await fetch(URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      address: PUMP_PROGRAM,
      match: {
        programs: [{ programId: PUMP_PROGRAM, instructions: ["buy", "sell"] }],
      },
      limit: 100,
      ...(paginationToken && { paginationToken }),
    }),
  });

  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }

  return response.json();
}

let paginationToken;

do {
  const page = await scan(paginationToken);

  for (const result of page.data) {
    console.log(result.signature, result.parsed?.slot);
  }

  console.log(
    `stopped on ${page.scan.stoppedOn}: scanned ${page.scan.scannedTransactions}, ` +
      `matched ${page.scan.matchedTransactions}, charged ${page.scan.creditsCharged} credits`
  );

  // Keep going while a token is returned, even when this page had no matches.
  paginationToken = page.paginationToken;
} while (paginationToken);
```

> [!TIP]
>
> 가능한 한 가장 좁은 범위의 주소를 스캔하세요. 주소 기록의 모든 트랜잭션이 예산에 포함되므로 관련 없는 트랜잭션이 적은 주소일수록 각 요청에서 더 많은 일치 항목을 찾을 수 있습니다.

## 크레딧

각 스캔에는 **10크레딧과 스캔한 기록 페이지당 1크레딧**이 필요합니다. 한 페이지에는 최대 1,000개의 트랜잭션이 포함되므로 기본 예산인 10,000개의 트랜잭션을 사용하는 스캔의 비용은 최대 20크레딧입니다. 기한으로 인해 중간에 중단된 페이지는 스캔되지 않으며 요금도 부과되지 않습니다.

각 응답은 `scan.creditsCharged`에 청구 금액을 표시합니다. 플랜 가격은 [크레딧](https://www.helius.dev/docs/ko/billing/credits.md)을 참조하세요.

## 오류

| 상태 | 발생 조건 |
| - | - |
| `400` | 본문이 잘못되었거나 알 수 없는 필드가 있는 경우, `match`에서 `programs`과 `mints`을 모두 설정하지 않은 경우, 프로그램이나 민트가 두 번 이상 나열된 경우, 주소나 민트가 잘못된 경우, 명령어 이름이 프로그램의 IDL에 없는 경우, 목록이 제한을 초과한 경우, `scope`, `returnShape`, `rawTransaction` 또는 `tokenAccounts`에 알 수 없는 값이 있는 경우, `transactions` 형식에서 `limit`이 1~~100 범위를 벗어난 경우, 또는 `budget.maxScannedTransactions`이 1~~10,000 범위를 벗어난 경우입니다. |
| `500` | 예를 들어 스캔 범위에 저장된 트랜잭션을 디코딩할 수 없어 서버에서 요청이 실패했습니다. 부분 결과는 반환되지 않습니다. |
| `503` | 서비스가 최대 용량에 도달했거나 요청 시간 제한 전에 첫 번째 기록 페이지가 완료되지 않았습니다. 요청을 다시 시도하세요. |

요청 수준 오류는 `{"error": "limit must be between 1 and 100"}`과 같은 `error` 메시지가 포함된 JSON 본문을 반환합니다. `includeRawTransaction` 같은 알 수 없는 필드가 있는 본문(`rawTransaction` 사용)이나 `mints`을 `{ "mint": "..." }` 객체 대신 일반 문자열로 지정한 본문은 `{"error": "invalid request payload"}`을 반환합니다.

## 요청 매개변수

**address** `string` *required*

기록을 스캔할 주소입니다.

**match** `object` *required*

트랜잭션이 일치해야 하는 대상입니다. `programs`, `mints` 또는 둘 다 설정하세요. 둘 다 설정하면 트랜잭션이 두 조건 모두와 일치해야 합니다.

**match.programs** `array`

일치시킬 프로그램입니다. 최대 20개이며 각 프로그램은 한 번만 지정할 수 있습니다. 트랜잭션에 해당 프로그램 중 하나의 최상위 또는 내부(CPI) 명령어가 프로그램의 `scope` 내에 있으면 일치합니다.

**match.programs\[].programId** `string` *required*

프로그램 주소입니다.

**match.programs\[].instructions** `array`

프로그램의 모든 IDL 버전에 있는 명령어 이름입니다. IDL에 표기된 형태나 snake\_case를 사용할 수 있습니다. 최대 50개입니다. `discriminators`과 함께 사용할 수 있습니다.

**match.programs\[].discriminators** `array`

명령어 데이터 접두사입니다. 각각 1\~8개의 16진수 인코딩 바이트이며 선택적으로 `0x` 접두사를 사용할 수 있습니다. 최대 50개입니다. `instructions`과 함께 사용할 수 있습니다.

**match.programs\[].scope** `string` (default: address)

포함할 프로그램 명령어를 지정합니다. `address`은 계정이 `address`이거나, `address`이 소유한 토큰 계정이거나, 민트가 `address`인 토큰 계정인 명령어만 포함합니다. `address`이 프로그램인 경우에는 모든 명령어를 포함합니다. `transaction`은 트랜잭션에 포함된 해당 프로그램의 모든 명령어를 포함합니다.

* `address`
* `transaction`

**match.mints** `array`

일치시킬 민트입니다. 최대 20개이며 각 민트는 한 번만 지정할 수 있습니다. 트랜잭션의 사전 또는 사후 토큰 잔액 중 하나가 민트의 `scope` 내에서 해당 민트 중 하나에 속하면 일치합니다.

**match.mints\[].mint** `string` *required*

토큰 민트 주소입니다. 네이티브 SOL 민트 `So11111111111111111111111111111111111111111`은 토큰 잔액 대신 lamport 변경을 기준으로 일치 여부를 판단하며 수수료는 포함하지 않습니다.

**match.mints\[].scope** `string` (default: address)

포함할 민트의 토큰 잔액을 지정합니다. `address`은 토큰 계정이 `address`이거나 해당 주소가 소유한 경우 또는 민트가 `address`인 잔액만 포함합니다. 네이티브 SOL의 경우 `address`의 lamport 변경만 포함합니다. `transaction`은 트랜잭션에 있는 해당 민트의 모든 잔액을 포함합니다. 네이티브 SOL의 경우 모든 계정의 lamport 변경을 포함합니다.

* `address`
* `transaction`

**returnShape** `string` (default: transactions)

응답에서 일치 항목에 대해 반환할 내용을 지정합니다. `transactions`(`data`에 최대 `limit`개의 파싱된 일치 항목), `signatures`(`data`의 각 일치 항목에 `signature`, `slot`, `transactionIndex` 및 `blockTime`), 또는 `count`(`data` 없음, `scan.matchedTransactions`은 일치 항목 수)입니다. `signatures`과 `count`은 `limit` 및 `rawTransaction`을 무시합니다.

* `transactions`
* `signatures`
* `count`

**limit** `number` (default: 100)

`transactions` 형식으로 반환할 최대 일치 항목 수입니다. 범위는 1\~100입니다.

**budget** `object`

한 요청에서 스캔할 기록의 양을 제한합니다.

**budget.maxScannedTransactions** `number` (default: 10000)

이 요청에서 스캔할 최대 트랜잭션 수입니다. 범위는 1\~10,000입니다.

**beforeSignature** `string`

이 서명 이전의 트랜잭션을 스캔합니다.

**afterSignature** `string`

이 서명 이후의 트랜잭션을 스캔합니다.

**paginationToken** `string`

이전 스캔에서 반환된 커서입니다. 형식은 `slot:transactionIndex`입니다.

**sortOrder** `string` (default: desc)

기록을 스캔하고 일치 항목을 반환하는 순서입니다.

* `asc`
* `desc`

**commitment** `string` (default: confirmed)

기록을 가져올 때 사용하는 커밋먼트 수준입니다. `processed`은 지원되지 않습니다.

* `confirmed`
* `finalized`

**status** `string` (default: succeeded)

포함할 실행 결과입니다. 일치 여부를 판단하기 전에 필터링하므로 제외된 트랜잭션은 예산에 포함되지 않습니다.

* `succeeded`
* `failed`
* `any`

**tokenAccounts** `string` (default: none)

`address` 자체가 아니라 `address`이 소유한 토큰 계정만 참조하는 트랜잭션을 포함할지 지정합니다. `none`은 제외하고, `balanceChanged`은 토큰 계정 잔액을 변경하는 트랜잭션을 포함하며, `all`은 모두 포함합니다. 민트별로 지갑을 스캔할 때는 `balanceChanged`을 사용하세요.

* `none`
* `balanceChanged`
* `all`

**minContextSlot** `number`

요청을 평가할 수 있는 최소 슬롯입니다.

**rawTransaction** `string` (default: none)

성공한 각 결과에서 `getTransaction` 형식의 `rawTransaction`으로 반환되는 원본 Solana 트랜잭션의 인코딩입니다. `transactions` 형식에만 적용됩니다.

* `none`
* `json`
* `jsonParsed`
* `base64`

**slot** `object`

슬롯 비교 범위입니다. 각 경계값은 선택 사항입니다.

**slot.gt** `number`

이 값보다 큰 값과 일치합니다.

**slot.gte** `number`

이 값보다 크거나 같은 값과 일치합니다.

**slot.lt** `number`

이 값보다 작은 값과 일치합니다.

**slot.lte** `number`

이 값보다 작거나 같은 값과 일치합니다.

**time** `object`

Unix 초 단위의 블록 시간 비교 범위입니다. 각 경계값은 선택 사항입니다.

**time.gt** `number`

이 값보다 큰 값과 일치합니다.

**time.gte** `number`

이 값보다 크거나 같은 값과 일치합니다.

**time.lt** `number`

이 값보다 작은 값과 일치합니다.

**time.lte** `number`

이 값보다 작거나 같은 값과 일치합니다.


## OpenAPI

````yaml ko/openapi/parsed-events.yaml POST /v1/parsed-events/scan
openapi: 3.0.3
info:
  title: 파싱된 이벤트
  version: 0.1.0
  description: 파싱된 이벤트로 Solana 거래 및 파싱된 거래 기록을 파싱합니다.
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/scan:
    post:
      tags:
        - 파싱된 이벤트
      summary: 트랜잭션 기록 스캔
      description: >-
        주소 기록에서 지정된 프로그램 중 하나를 호출하거나 지정된 토큰 민트 중 하나를 참조하는 트랜잭션 또는 두 조건을 모두 충족하는
        트랜잭션을 검색하고, 파싱된 일치 항목이나 해당 서명 또는 개수를 반환합니다.
      operationId: scanParsedTransactionHistory
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanRequest'
            examples:
              Pump.fun buys and sells:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - buy
                          - sell
                  limit: 1
              Rare instruction, budget stop:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - set_params
                  budget:
                    maxScannedTransactions: 2000
              Count matches:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - set_params
                  returnShape: count
                  budget:
                    maxScannedTransactions: 2000
              Token transactions with a USDC account:
                value:
                  address: <MINT_ADDRESS>
                  match:
                    mints:
                      - mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                        scope: transaction
                  returnShape: signatures
      responses:
        '200':
          description: >-
            요청한 `returnShape` 형식의 일치 항목과 스캔 요약입니다. 부분 결과도 200으로 반환됩니다.
            `paginationToken`이 반환되는 동안에는 이를 사용하여 계속 진행하세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanPage'
              examples:
                Stopped on limit:
                  value:
                    data:
                      - signature: >-
                          5zmGhmd3JZxXzz8MnA8MM1K7PXRwA1z35n3xT6ZJGRz3sAi25p8jaZuPWFCB4nEPx7DUke9y3pwrd4V7xAFozQBy
                        parserStatus: OK
                        parsed:
                          slot: 460869102
                          blockTime: 1792848886
                          fee: 45000
                          feePayer: Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA
                          transactionStatus: OK
                          error: null
                          decodedError: null
                          nativeTransfers:
                            - fromUserAccount: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                              toUserAccount: 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              amount: 4207183
                          tokenTransfers:
                            - fromUserAccount: 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              toUserAccount: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                              fromTokenAccount: 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                              toTokenAccount: 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                              rawTokenAmount: 612181177082
                              decimals: 6
                              tokenStandard: Fungible
                              mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                          summary:
                            type: swap
                            description: >-
                              BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s가
                              Pump.fun을 통해 0.004207183 SOL을 612181.177082
                              3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump으로
                              스왑했습니다.
                            parsedData:
                              type: swap
                              protocol: pump_fun
                              kind: buy
                              in_amount: '4207183'
                              actual_out_amount: '612181177082'
                              input_mint: So11111111111111111111111111111111111111112
                              output_mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                              inner_swaps: []
                          instructions:
                            - instructionIndex: 0
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: ComputeBudget111111111111111111111111111111
                              rawAccounts: []
                              rawData: HMypLP
                              summary: null
                              programName: compute_budget
                              instructionName: set_compute_unit_limit
                              decoded:
                                args:
                                  units: '400000'
                                accounts: []
                            - instructionIndex: 1
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: ComputeBudget111111111111111111111111111111
                              rawAccounts: []
                              rawData: 3gJqkocMWaMm
                              summary: null
                              programName: compute_budget
                              instructionName: set_compute_unit_price
                              decoded:
                                args:
                                  micro_lamports: '100000'
                                accounts: []
                            - instructionIndex: 2
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                              rawAccounts:
                                - Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA
                                - 13ec7XdrjF3h3YcqBTFDSReRcUFwbCnJaAQspM4j6DDJ
                                - CNtxytSi1JNJgmBM444pGXK5eUEy5B2Q3haBHw2fzdoG
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - '11111111111111111111111111111111'
                                - TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                - 4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                - GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                - Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                - FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                - 8FoNgzmjuSmiy86EPCWxvv1q7oJSu2WGA7wPymwki2LJ
                                - MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                                - 6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                - 5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                              rawData: 23s1EunhJwrvzz8YSBTPv5WDZGm8uym8KQXhF3u
                              summary: null
                              programName: null
                              instructionName: null
                              decoded: null
                            - instructionIndex: 2
                              innerInstructionIndex: 0
                              stackHeight: 2
                              programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawAccounts:
                                - 4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                - GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - '11111111111111111111111111111111'
                                - TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                - HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                - Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                - FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                - 6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                - 5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                              rawData: i43WeUBGKA8F2B6dwt5RBzavSKrhGu93LB
                              summary:
                                type: swap
                                description: >-
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s가
                                  Pump.fun을 통해 0.004207183 SOL을 612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump으로
                                  스왑했습니다.
                                parsedData:
                                  type: swap
                                  protocol: pump_fun
                                  kind: buy
                                  in_amount: '4207183'
                                  actual_out_amount: '612181177082'
                                  input_mint: So11111111111111111111111111111111111111112
                                  output_mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  inner_swaps: []
                              programName: pump
                              instructionName: buy
                              decoded:
                                args:
                                  amount: '612181177082'
                                  max_sol_cost: '4207183'
                                  track_volume:
                                    - false
                                accounts:
                                  - name: global
                                    pubkey: >-
                                      4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                    isSigner: false
                                    isWritable: false
                                  - name: fee_recipient
                                    pubkey: >-
                                      GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                    isSigner: false
                                    isWritable: true
                                  - name: mint
                                    pubkey: >-
                                      3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                    isSigner: false
                                    isWritable: false
                                  - name: bonding_curve
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: false
                                    isWritable: true
                                  - name: associated_bonding_curve
                                    pubkey: >-
                                      7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                    isSigner: false
                                    isWritable: true
                                  - name: associated_user
                                    pubkey: >-
                                      7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                    isSigner: false
                                    isWritable: true
                                  - name: user
                                    pubkey: >-
                                      BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                    isSigner: true
                                    isWritable: true
                                  - name: system_program
                                    pubkey: '11111111111111111111111111111111'
                                    isSigner: false
                                    isWritable: false
                                  - name: token_program
                                    pubkey: >-
                                      TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                    isSigner: false
                                    isWritable: false
                                  - name: creator_vault
                                    pubkey: >-
                                      HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                    isSigner: false
                                    isWritable: true
                                  - name: event_authority
                                    pubkey: >-
                                      Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                    isSigner: false
                                    isWritable: false
                                  - name: program
                                    pubkey: >-
                                      6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                    isSigner: false
                                    isWritable: false
                                  - name: global_volume_accumulator
                                    pubkey: >-
                                      Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                    isSigner: false
                                    isWritable: false
                                  - name: user_volume_accumulator
                                    pubkey: >-
                                      FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                    isSigner: false
                                    isWritable: true
                                  - name: fee_config
                                    pubkey: >-
                                      8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                    isSigner: false
                                    isWritable: false
                                  - name: fee_program
                                    pubkey: >-
                                      pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                    isSigner: false
                                    isWritable: false
                                  - name: remainingAccount1
                                    pubkey: >-
                                      6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                    isSigner: false
                                    isWritable: false
                                  - name: remainingAccount2
                                    pubkey: >-
                                      5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                                    isSigner: false
                                    isWritable: false
                            - instructionIndex: 2
                              innerInstructionIndex: 1
                              stackHeight: 3
                              programId: pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                              rawAccounts:
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawData: >-
                                KX69VKtJ7u4E7dVvicNyuayxqa9Hr4EfndWiJBCjUyq1hDLtgcYW6pEh1tPqbHSkqHTQ8uiASv1QK1
                              summary: null
                              programName: pump_fees
                              instructionName: null
                              decoded: null
                            - instructionIndex: 2
                              innerInstructionIndex: 2
                              stackHeight: 3
                              programId: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                              rawAccounts:
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              rawData: jHqzogtBj1ey3
                              summary:
                                type: transfer
                                description: >-
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98이
                                  612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump을
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98에서
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s로
                                  전송했습니다.
                                parsedData: null
                              programName: token_2022
                              instructionName: transfer_checked
                              decoded:
                                args:
                                  amount: '612181177082'
                                  decimals: 6
                                accounts:
                                  - name: source_account
                                    pubkey: >-
                                      7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                    isSigner: false
                                    isWritable: true
                                  - name: mint
                                    pubkey: >-
                                      3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                    isSigner: false
                                    isWritable: false
                                  - name: destination_account
                                    pubkey: >-
                                      7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                    isSigner: false
                                    isWritable: true
                                  - name: owner_or_delegate
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: true
                                    isWritable: false
                            - instructionIndex: 2
                              innerInstructionIndex: 3
                              stackHeight: 3
                              programId: '11111111111111111111111111111111'
                              rawAccounts:
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              rawData: 3Bxs4E6xqUKPTjRy
                              summary:
                                type: transfer
                                description: >-
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s가
                                  0.004207183 SOL을
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98로
                                  전송했습니다.
                                parsedData: null
                              programName: system
                              instructionName: transfer
                              decoded:
                                args:
                                  lamports: '4207183'
                                accounts:
                                  - name: funding_account
                                    pubkey: >-
                                      BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                    isSigner: true
                                    isWritable: true
                                  - name: recipient_account
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: false
                                    isWritable: true
                            - instructionIndex: 2
                              innerInstructionIndex: 4
                              stackHeight: 3
                              programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawAccounts:
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                              rawData: >-
                                8jV3ThAnvn3jwQVVxYoxU8MvQQneX8ryEqnGqWTeKGi8UcTcTFd5VQ8KLpzRZhN2g6qpShcNYKQ6aEiZojgETaWrW1Mn92Drm2irNbjBdHGCTkuK3SBZb4HSn6KPZiJehmZL1aPNtVSRmGh2ojKXZLFtokDPK31XJJJZYBMowkVME4yWDsiA81AKAyJYq3afuYidCUgWsSfzSo8tZZRtCpSaeUd3M5JeyiE9V45vsDuPYsyBxmVFWf3qKWEcQuCDYu5HctwzvAeqU6Hmr1st5Kd62GrbHxua73RLuXpHotAjm3wYD6BkKEtKDpSnq47ewySqeUgF8MrTc121NwjKhedGJfp1VWv4TULoKaNTuA9KRzYVsTNgjYuwSgiXxQF2F1ePSHexBQdTiMbL1STcahdzuLvZoRkEUQX1WE9ayykQ1uiJ1FPFNCitKm6YwpLLLVwDDi8Rf2J5aeHxtLorKV5UWn1CnRukDpSJxAC91mmc6qNcJ6XQW5VxJMdhJcSSmSr1hi4dUt1vW6gspsMxEMUzGtiyBZeo
                              summary: null
                              programName: pump
                              instructionName: TradeEvent
                              decoded:
                                args:
                                  buyback_fee: '0'
                                  buyback_fee_basis_points: '0'
                                  cashback: '0'
                                  cashback_fee_basis_points: '0'
                                  creator: 2G5ZssGjViBdr4DdwYaQ23JQeNG8TRsrnHKs9pabUoCz
                                  creator_fee: '0'
                                  creator_fee_basis_points: '0'
                                  current_sol_volume: '0'
                                  fee: '0'
                                  fee_basis_points: '0'
                                  fee_recipient: GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                  holder_rewards: '0'
                                  holder_rewards_bps: '0'
                                  is_buy: true
                                  ix_name: buy
                                  last_update_timestamp: '0'
                                  mayhem_mode: true
                                  mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  quote_amount: '4207183'
                                  quote_mint: '11111111111111111111111111111111'
                                  real_quote_reserves: '27976582'
                                  real_sol_reserves: '27976582'
                                  real_token_reserves: '793353696151809'
                                  shareholders: []
                                  sol_amount: '4207183'
                                  timestamp: '1792848886'
                                  token_amount: '612181177082'
                                  total_claimed_tokens: '0'
                                  total_unclaimed_tokens: '0'
                                  track_volume: false
                                  user: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                  virtual_quote_reserves: '8676477109'
                                  virtual_sol_reserves: '8676477109'
                                  virtual_token_reserves: '1073253696151809'
                                accounts: []
                            - instructionIndex: 2
                              innerInstructionIndex: 5
                              stackHeight: 2
                              programId: MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                              rawAccounts:
                                - 8FoNgzmjuSmiy86EPCWxvv1q7oJSu2WGA7wPymwki2LJ
                              rawData: >-
                                HaAvdxyruSvtMDoMtGvePmYV4dda7tWKCLFHadQoSjYsbWWixs1eN1wCF27wUxZao1NfTPQGxhVs9GXmaVGUZ5mgBAEUUWKK4se3JtE5oKMHzxp6GRbR7wagdMtwKQEaJbXuMb9c75n3gPnTTFrxTjJrtBCejTAEQpd6mv9HUaxpt2u83Cts4WgXdvWqiHqk7xXkXQwV6M1VXmAfwZYg4CSjzAmooqqAdzbHuf243dbws8uDS4GrteXQiAYow3395wuNqLWzrcHropQTzvaDtpfAupYXEt2AZHPEuUsVhtt5n8xAieU5d4oHSjAvgBczW9cktco7Wto3kEo53QaJfbdEz4V9Jnx6ib2fdvW2EpLXUprJLcP9voTKAuuCZCTbQKSbwJWRG9UCPTssTDR3m9eE38WcqtK1v2jeRtbtK
                              summary: null
                              programName: null
                              instructionName: null
                              decoded: null
                    paginationToken: '460869102:203'
                    scan:
                      stoppedOn: limit
                      scannedTransactions: 1
                      matchedTransactions: 1
                      scannedThrough:
                        slot: 460869102
                        blockTime: 1792848886
                      creditsCharged: 11
                Stopped on budget, no matches:
                  value:
                    data: []
                    paginationToken: '460903064:422'
                    scan:
                      stoppedOn: budget
                      scannedTransactions: 2000
                      matchedTransactions: 0
                      scannedThrough:
                        slot: 460903064
                        blockTime: 1792856105
                      creditsCharged: 12
                Count shape:
                  value:
                    paginationToken: '460903064:422'
                    scan:
                      stoppedOn: budget
                      scannedTransactions: 2000
                      matchedTransactions: 0
                      scannedThrough:
                        slot: 460903064
                        blockTime: 1792856105
                      creditsCharged: 12
        '400':
          description: 잘못된 요청입니다. `error` 메시지에 문제의 이름이 표시됩니다.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: >-
                      6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P의 IDL에서
                      match.programs 명령을 찾을 수 없습니다: not_a_real_ix
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          description: >-
            서비스가 처리 용량 한도에 도달했거나 요청 기한 전에 첫 번째 기록 페이지 처리가 완료되지 않았습니다. 요청을 다시
            시도하세요.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: 서비스를 사용할 수 없습니다
components:
  schemas:
    ScanRequest:
      type: object
      description: 주소 기록에서 일치하는 트랜잭션을 스캔하기 위한 요청 본문입니다.
      required:
        - address
        - match
      additionalProperties: false
      properties:
        address:
          type: string
          description: 기록을 스캔할 주소입니다.
        match:
          $ref: '#/components/schemas/ScanMatch'
        returnShape:
          type: string
          description: >-
            응답에 포함할 일치 항목 형식입니다. `transactions`는 `data`에 파싱된 일치 항목을 최대
            `limit`개까지 포함하고, `signatures`는 `data`의 각 일치 항목에 `signature`, `slot`,
            `transactionIndex`, `blockTime`을 포함하며, `count`는 `data` 없이
            `scan.matchedTransactions`에 일치 항목 수를 포함합니다. `signatures`와 `count`는
            `limit` 및 `rawTransaction`을 무시합니다.
          enum:
            - transactions
            - signatures
            - count
          default: transactions
        limit:
          type: integer
          description: '`transactions` 형식으로 반환할 최대 일치 항목 수입니다. 범위는 1~100입니다.'
          minimum: 1
          maximum: 100
          default: 100
        budget:
          $ref: '#/components/schemas/ScanBudget'
        beforeSignature:
          type: string
          description: 이 서명 이전의 트랜잭션을 스캔합니다.
        afterSignature:
          type: string
          description: 이 서명 이후의 트랜잭션을 스캔합니다.
        paginationToken:
          type: string
          description: 이전 스캔에서 반환된 커서입니다. 형식은 `slot:transactionIndex`입니다.
        sortOrder:
          type: string
          description: 기록을 스캔하고 일치 항목을 반환하는 순서입니다.
          enum:
            - asc
            - desc
          default: desc
        commitment:
          type: string
          description: 기록을 가져올 때 사용하는 커밋먼트 수준입니다. `processed`는 지원되지 않습니다.
          enum:
            - confirmed
            - finalized
          default: confirmed
        status:
          type: string
          description: 포함할 실행 결과입니다. 일치 여부를 확인하기 전에 필터링하므로 제외된 트랜잭션은 예산에 포함되지 않습니다.
          enum:
            - succeeded
            - failed
            - any
          default: succeeded
        tokenAccounts:
          allOf:
            - $ref: '#/components/schemas/TokenAccountsFilter'
          description: >-
            `address` 자체가 아니라 `address`가 소유한 토큰 계정만 참조하는 트랜잭션을 포함할지 여부입니다.
            `none`은 해당 트랜잭션을 제외하고, `balanceChanged`는 토큰 계정 잔액을 변경하는 트랜잭션을 포함하며,
            `all`은 모두 포함합니다. 민트별로 지갑을 스캔할 때는 `balanceChanged`를 사용하세요.
        minContextSlot:
          type: integer
          description: 요청을 평가할 수 있는 최소 슬롯입니다.
        rawTransaction:
          allOf:
            - $ref: '#/components/schemas/RawTransactionEncoding'
          description: >-
            성공한 각 결과에서 `rawTransaction`으로 반환되는 원본 Solana 트랜잭션의 인코딩입니다.
            `getTransaction` 형식을 사용합니다. `transactions` 형식에만 적용됩니다.
        slot:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: 슬롯 비교 경계입니다. 각 경계는 선택 사항입니다.
        time:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: Unix 초 단위의 블록 시간 비교 경계입니다. 각 경계는 선택 사항입니다.
    ScanPage:
      type: object
      description: 요청한 `returnShape` 형식의 일치 항목과 스캔 요약입니다.
      properties:
        data:
          description: >-
            `sortOrder` 순서의 일치 항목입니다. `transactions`를 사용하면 각 항목은
            `/v1/parsed-events/transactions`가 반환하는 것과 같은 `TransactionResult`
            형식입니다. `signatures`를 사용하면 각 항목은 `ScanSignature`입니다. `count`를 사용하면 이
            필드가 없습니다. `paginationToken`이 있어도 비어 있을 수 있습니다.
          oneOf:
            - type: array
              title: 트랜잭션
              items:
                $ref: '#/components/schemas/TransactionResult'
            - type: array
              title: 서명
              items:
                $ref: '#/components/schemas/ScanSignature'
        paginationToken:
          type: string
          description: 다음 스캔을 계속할 위치를 나타내는 커서입니다. 스캔이 기록 또는 범위의 끝에 도달하면 이 필드가 없습니다.
        scan:
          $ref: '#/components/schemas/ScanSummary'
    ErrorResponse:
      type: object
      description: Request-level error response.
      properties:
        error:
          type: string
          description: Error message.
    ScanMatch:
      type: object
      description: >-
        트랜잭션이 충족해야 하는 일치 조건입니다. `programs`, `mints` 또는 둘 다 설정하세요. 둘 다 설정하면 트랜잭션이
        두 조건을 모두 충족해야 합니다.
      additionalProperties: false
      properties:
        programs:
          type: array
          description: >-
            일치시킬 프로그램입니다. 최대 20개이며 각 프로그램은 한 번만 지정할 수 있습니다. 트랜잭션의 최상위 또는
            내부(CPI)에 해당 프로그램 중 하나의 명령이 있고 프로그램의 `scope` 범위 내에 있으면 일치합니다.
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanProgramMatch'
        mints:
          type: array
          description: >-
            일치시킬 민트입니다. 최대 20개이며 각 민트는 한 번만 지정할 수 있습니다. 트랜잭션의 사전 또는 사후 토큰 잔액 중
            하나가 민트의 `scope` 범위 내에서 지정된 민트 중 하나에 해당하면 일치합니다.
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanMintMatch'
    ScanBudget:
      type: object
      description: 한 요청에서 스캔할 기록의 양에 대한 제한입니다.
      additionalProperties: false
      properties:
        maxScannedTransactions:
          type: integer
          description: 이 요청에서 스캔할 최대 트랜잭션 수입니다. 범위는 1~10,000입니다.
          minimum: 1
          maximum: 10000
          default: 10000
    TokenAccountsFilter:
      type: string
      description: >-
        `address` 자체가 아니라 `address`가 소유한 토큰 계정만 참조하는 트랜잭션을 포함할지 여부입니다. `none`은
        해당 트랜잭션을 제외하고, `balanceChanged`는 토큰 계정 잔액을 변경하는 트랜잭션을 포함하며, `all`은 모두
        포함합니다.
      enum:
        - none
        - balanceChanged
        - all
      default: none
    RawTransactionEncoding:
      type: string
      description: >-
        성공한 각 결과에서 `rawTransaction`으로 반환되는 원본 Solana 트랜잭션의 인코딩입니다.
        `getTransaction` 형식을 사용합니다. `none`은 원시 트랜잭션을 반환하지 않습니다.
      enum:
        - none
        - json
        - jsonParsed
        - base64
      default: none
    ComparisonBounds:
      type: object
      description: Numeric comparison bounds. Each field is optional.
      additionalProperties: false
      properties:
        gt:
          type: integer
          description: Match values greater than this value.
        gte:
          type: integer
          description: Match values greater than or equal to this value.
        lt:
          type: integer
          description: Match values less than this value.
        lte:
          type: integer
          description: Match values less than or equal to this value.
    TransactionResult:
      type: object
      description: Per-signature parser result.
      properties:
        signature:
          type: string
          description: Transaction signature for this item.
        parserStatus:
          type: string
          description: >-
            `OK` when parsing succeeded, or `ERROR` when the item failed to
            fetch or parse.
          enum:
            - OK
            - ERROR
        parsed:
          allOf:
            - $ref: '#/components/schemas/ParsedTransaction'
          description: Parsed transaction object. Present when `parserStatus` is `OK`.
        parserError:
          allOf:
            - $ref: '#/components/schemas/ParserError'
          description: Item-level error. Present when `parserStatus` is `ERROR`.
        rawTransaction:
          type: object
          description: >-
            요청한 `rawTransaction` 인코딩에 따라 `getTransaction` 형식으로 제공되는 원본 Solana
            트랜잭션입니다. `base64`를 사용하면 `transaction`은 `[data, "base64"]`입니다. 원시
            트랜잭션을 요청한 경우에만 표시됩니다.
          additionalProperties: true
    ScanSignature:
      type: object
      description: '`returnShape`를 `signatures`로 설정했을 때 반환되는 일치 항목입니다.'
      properties:
        signature:
          type: string
          description: 트랜잭션 서명입니다.
        slot:
          type: integer
          description: 트랜잭션이 포함된 슬롯입니다.
        transactionIndex:
          type: integer
          description: 슬롯 내 트랜잭션의 위치입니다.
        blockTime:
          type: integer
          nullable: true
          description: 사용 가능한 경우 Unix 초 단위의 블록 시간입니다.
    ScanSummary:
      type: object
      description: 스캔이 어디까지 진행되었고 중단된 이유가 무엇인지 나타냅니다.
      properties:
        stoppedOn:
          type: string
          description: >-
            스캔이 중단된 이유입니다. `windowEnd`는 기록 또는 범위의 끝, `limit`은 `limit`개의 일치 항목
            반환, `budget`은 `maxScannedTransactions`개 스캔, `deadline`은 요청 시간 제한 도달을
            의미합니다.
          enum:
            - windowEnd
            - limit
            - budget
            - deadline
        scannedTransactions:
          type: integer
          description: 이 요청에서 스캔한 트랜잭션 수입니다.
        matchedTransactions:
          type: integer
          description: 이 요청에서 찾은 일치 항목 수입니다. `returnShape`를 `count`로 설정하면 이 값이 결과입니다.
        scannedThrough:
          allOf:
            - $ref: '#/components/schemas/ScannedThrough'
          description: 마지막으로 스캔한 트랜잭션입니다. 스캔한 항목이 없으면 이 필드가 없습니다.
        creditsCharged:
          type: integer
          description: >-
            청구된 크레딧입니다. 요청당 10에 스캔한 기록 페이지당 1이 추가됩니다. 각 페이지에는 최대 1,000개의 트랜잭션이
            포함됩니다.
    ScanProgramMatch:
      type: object
      description: >-
        최상위 또는 내부(CPI)에 `programId`의 명령이 있는 트랜잭션과 일치합니다. 일치 범위를 좁히려면
        `instructions`, `discriminators` 또는 둘 다 설정하세요. 프로그램의 모든 명령과 일치시키려면 둘 다
        설정하지 마세요.
      required:
        - programId
      additionalProperties: false
      properties:
        programId:
          type: string
          description: 프로그램 주소입니다.
        instructions:
          type: array
          description: >-
            IDL에 표기된 형식 또는 snake_case 형식으로 지정한 프로그램 IDL 버전의 명령 이름입니다. 최대 50개입니다.
            `discriminators`와 함께 사용할 수 있습니다.
          maxItems: 50
          items:
            type: string
        discriminators:
          type: array
          description: >-
            명령 데이터 접두사입니다. 각각 선택적 `0x` 접두사가 있는 1~8바이트의 16진수 인코딩 값입니다. 최대 50개입니다.
            `instructions`와 함께 사용할 수 있습니다.
          maxItems: 50
          items:
            type: string
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            프로그램의 어떤 명령을 계산할지 지정합니다. `address`는 계정이 `address`이거나, `address`가 소유한
            토큰 계정이거나, 민트가 `address`인 토큰 계정을 포함하는 명령만 계산합니다. `address`가 프로그램인
            경우에는 모든 명령을 계산합니다. `transaction`은 트랜잭션에 있는 해당 프로그램의 모든 명령을 계산합니다.
    ScanMintMatch:
      type: object
      description: >-
        `scope` 범위 내에서 `mint`의 사전 또는 사후 토큰 잔액이 있는 트랜잭션과 일치합니다. 네이티브 SOL 민트
        `So11111111111111111111111111111111111111111`은 토큰 잔액 대신 lamport 변경과
        일치하며, 수수료 지불자에게 부과된 수수료는 계산하지 않습니다.
      required:
        - mint
      additionalProperties: false
      properties:
        mint:
          type: string
          description: >-
            토큰 민트 주소입니다. 네이티브 SOL 민트
            `So11111111111111111111111111111111111111111`은 토큰 잔액 대신 lamport 변경과
            일치하며 수수료는 계산하지 않습니다.
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            민트의 어떤 토큰 잔액을 계산할지 지정합니다. `address`는 토큰 계정이 `address`이거나 해당 주소가 소유한
            경우 또는 민트가 `address`인 잔액만 계산합니다. 네이티브 SOL의 경우 `address`의 lamport 변경만
            계산합니다. `transaction`은 트랜잭션에 있는 해당 민트의 모든 잔액을 계산합니다. 네이티브 SOL의 경우 모든
            계정의 lamport 변경을 계산합니다.
    ParsedTransaction:
      type: object
      description: Parser-v2 transaction model.
      properties:
        slot:
          type: integer
          description: Slot containing the transaction.
        blockTime:
          type: integer
          description: Unix timestamp for the block, when available.
          nullable: true
        fee:
          type: integer
          description: Transaction fee in lamports.
        feePayer:
          type: string
          description: Fee payer account, when available.
          nullable: true
        transactionStatus:
          type: string
          description: >-
            `OK` when the transaction executed successfully, or `ERROR` when
            execution failed.
          enum:
            - OK
            - ERROR
        nativeTransfers:
          type: array
          description: Transaction-level SOL transfers in lamports.
          items:
            $ref: '#/components/schemas/NativeTransfer'
        tokenTransfers:
          type: array
          description: Transaction-level SPL Token and Token-2022 transfers.
          items:
            $ref: '#/components/schemas/TokenTransfer'
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Best transaction-level summary, when available.
          nullable: true
        instructions:
          type: array
          description: Parsed top-level and inner instructions in execution order.
          items:
            $ref: '#/components/schemas/ParsedInstruction'
    ParserError:
      type: object
      description: Item-level parser error.
      properties:
        code:
          type: string
          description: Machine-readable parser error code.
        message:
          type: string
          description: Human-readable parser error message.
    ScannedThrough:
      type: object
      description: 마지막으로 스캔한 트랜잭션의 위치입니다.
      properties:
        slot:
          type: integer
          description: 마지막으로 스캔한 트랜잭션의 슬롯입니다.
        blockTime:
          type: integer
          nullable: true
          description: 마지막으로 스캔한 트랜잭션의 블록 시간입니다. Unix 초 단위입니다.
    MatchScope:
      type: string
      description: 프로그램 명령 또는 민트 토큰 잔액이 계산되기 위해 존재해야 하는 범위입니다.
      enum:
        - address
        - transaction
      default: address
    NativeTransfer:
      type: object
      description: SOL movement detected at transaction level.
      properties:
        fromUserAccount:
          type: string
          description: Account sending lamports.
          nullable: true
        toUserAccount:
          type: string
          description: Account receiving lamports.
          nullable: true
        amount:
          type: integer
          description: Amount in lamports.
    TokenTransfer:
      type: object
      description: SPL Token or Token-2022 movement detected at transaction level.
      properties:
        fromUserAccount:
          type: string
          description: Owner or authority for the source side, when known.
          nullable: true
        toUserAccount:
          type: string
          description: Owner for the destination side, when known.
          nullable: true
        fromTokenAccount:
          type: string
          description: Source token account.
          nullable: true
        toTokenAccount:
          type: string
          description: Destination token account.
          nullable: true
        rawTokenAmount:
          type: integer
          description: Raw integer token amount.
        decimals:
          type: integer
          description: Mint decimals used to interpret the raw amount.
        tokenStandard:
          type: string
          description: Token standard when known, such as `Fungible` or `UnknownStandard`.
        mint:
          type: string
          description: Token mint address.
    ParsedSummary:
      type: object
      description: Human-readable summary for a transaction or instruction.
      properties:
        type:
          type: string
          description: Summary type, such as `swap`, `transfer`, or `create_account`.
        description:
          type: string
          description: Human-readable summary text.
        parsedData:
          type: object
          description: >-
            Structured payload behind the summary, when available — for example
            swap metadata with `protocol`, `kind`, amounts, and mints. The shape
            varies by summary type and protocol.
          nullable: true
          additionalProperties: true
    ParsedInstruction:
      type: object
      description: Parsed top-level or inner instruction.
      properties:
        instructionIndex:
          type: integer
          description: 최상위 명령어 인덱스입니다.
        innerInstructionIndex:
          type: integer
          description: 적용 가능한 경우, 최상위 명령어 내의 내부 명령어 인덱스입니다.
          nullable: true
        stackHeight:
          type: integer
          description: Stack height when available.
          nullable: true
        programId:
          type: string
          description: Program ID that executed the instruction.
        rawAccounts:
          type: array
          description: Raw account pubkeys resolved from instruction account indexes.
          items:
            type: string
        rawData:
          type: string
          description: Raw instruction data.
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: Instruction-level summary, when available.
          nullable: true
        programName:
          type: string
          description: Parser-known program name, when available.
          nullable: true
        instructionName:
          type: string
          description: Decoded instruction name, when available.
          nullable: true
        decoded:
          allOf:
            - $ref: '#/components/schemas/DecodedInstruction'
          description: Decoded args and accounts, when decoding succeeds.
          nullable: true
    DecodedInstruction:
      type: object
      description: Decoded instruction args and named accounts.
      properties:
        args:
          type: object
          description: >-
            Decoded instruction arguments. Argument names and shapes depend on
            the instruction.
          additionalProperties: true
        accounts:
          type: array
          description: Decoded instruction accounts with parser-known names.
          items:
            $ref: '#/components/schemas/DecodedAccount'
    DecodedAccount:
      type: object
      description: Named account used by a decoded instruction.
      properties:
        name:
          type: string
          description: Parser-known account name.
        pubkey:
          type: string
          description: Account public key.
        isSigner:
          type: boolean
          description: Whether the account signed the transaction.
        isWritable:
          type: boolean
          description: Whether the account was writable for the instruction.
  responses:
    InternalError:
      description: >-
        예를 들어 요청한 범위에 저장된 트랜잭션을 디코딩할 수 없어 서버에서 요청이 실패했습니다. 전체 요청이 실패하며 부분 결과는
        반환되지 않습니다.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            default:
              value:
                error: 내부 서버 오류
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key

````

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