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

# Helius 속도 제한

> 모든 계획 및 제품에 대한 Helius 속도 제한에 대한 완벽한 가이드입니다.

## 속도 제한이란?

속도 제한은 초당 요청할 수 있는 횟수를 제어합니다. 속도 제한을 초과하면 HTTP 429 응답을 받게 됩니다. 429 또는 기타 일시적 오류가 발생했을 때 취할 조치에 대한 지침은 아래의 [재시도 및 오류 처리](#재시도-및-오류-처리)를 참조하십시오.

## 표준 속도 제한

귀하의 계획에는 RPC 요청과 DAS API 요청을 위한 두 가지 표준 속도 제한 그룹이 있습니다. 각 Helius 계획에 대한 기본 속도 제한은 다음과 같습니다.

<table>
  <thead align="left">
    <tr>
      <th width="200">계획</th>
      <th width="260">RPC 속도 제한</th>
      <th width="260">DAS 및 향상된 API</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><strong>무료</strong></td>
      <td>10 요청/s</td>
      <td>2 요청/s</td>
    </tr>

    <tr>
      <td><strong>개발자</strong></td>
      <td>50 요청/s</td>
      <td>10 요청/s</td>
    </tr>

    <tr>
      <td><strong>기업</strong></td>
      <td>200 요청/s</td>
      <td>50 요청/s</td>
    </tr>

    <tr>
      <td><strong>전문가</strong></td>
      <td>500 요청/s</td>
      <td>100 요청/s</td>
    </tr>

    <tr>
      <td><strong>엔터프라이즈</strong></td>
      <td>맞춤형</td>
      <td>맞춤형</td>
    </tr>
  </tbody>
</table>

### 속도 제한 증가

전문가 계획에 있는 팀은 \$100/월에 추가 100 RPS를 구매할 수 있습니다.

출시 전에 맞춤형 속도 제한이 필요하시면 [영업팀에 연락](https://www.helius.dev/contact)하십시오. 개발자 또는 비즈니스 등급에 있는 경우 계획을 업그레이드하여 속도 제한을 증가시키십시오.

## 특별 속도 제한

일부 엔드포인트 및 전문 Helius 제품은 계산 요구 사항으로 인해 특별 속도 제한이 적용됩니다.

### 거래 전송

<table>
  <thead align="left">
    <tr>
      <th width="200">엔드포인트</th>
      <th width="100">무료</th>
      <th width="100">개발자</th>
      <th width="100">기업</th>
      <th width="100">전문가</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>Sender</code></td>
      <td>50/sec</td>
      <td>50/sec</td>
      <td>50/sec</td>
      <td>50/sec</td>
    </tr>

    <tr>
      <td><code>sendTransaction</code></td>
      <td>1/sec</td>
      <td>5/sec</td>
      <td>50/sec</td>
      <td>100/sec</td>
    </tr>

    <tr>
      <td><code>sendBundle</code></td>
      <td>—</td>
      <td>—</td>
      <td>5/sec</td>
      <td>5/sec</td>
    </tr>

    <tr>
      <td><code>simulateBundle</code></td>
      <td>10/sec</td>
      <td>50/sec</td>
      <td>200/sec</td>
      <td>500/sec</td>
    </tr>
  </tbody>
</table>

전문가 계획에 있고 `sendTransaction` 속도 제한을 증가시켜야 하는 경우 [영업팀에 연락](https://www.helius.dev/contact)하십시오.

전문가 플랜 사용자는 고성능 거래 앱 지원을 위해 Sender에 대한 속도 제한 증가 및 맞춤형 팁 배치를 [요청](https://www.helius.dev/contact)할 수도 있습니다.

### 복잡한 RPC 호출

<table>
  <thead align="left">
    <tr>
      <th width="200">엔드포인트</th>
      <th width="100">무료</th>
      <th width="100">개발자</th>
      <th width="100">기업</th>
      <th width="100">전문가</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>getProgramAccounts</code></td>
      <td>5/sec</td>
      <td>25/sec</td>
      <td>50/sec</td>
      <td>75/sec</td>
    </tr>
  </tbody>
</table>

### 기록 데이터

기록 데이터 메서드에 대한 일괄 요청을 수행할 때 다음 제한이 적용됩니다:

<table>
  <thead align="left">
    <tr>
      <th style={{width: '300px'}}>메서드</th>
      <th style={{width: '300px'}}>최대 배치 크기</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td><code>getTransaction</code></td>
      <td>요청당 100개 항목</td>
    </tr>

    <tr>
      <td><code>getTransactionsForAddress</code></td>
      <td>일괄 요청 불가</td>
    </tr>

    <tr>
      <td><code>getTransfersByAddress</code></td>
      <td>일괄 요청 불가</td>
    </tr>

    <tr>
      <td>기타 모든 기록 메서드</td>
      <td>요청당 10개 항목</td>
    </tr>
  </tbody>
</table>

<Warning>
  배치 제한을 초과하면 오류 응답이 발생합니다. `getTransactionsForAddress` 및 `getTransfersByAddress`의 경우 각 주소는 별도의 요청에서 쿼리해야 합니다.
</Warning>

### LaserStream

<table>
  <thead align="left">
    <tr>
      <th width="200">리소스</th>
      <th width="50">무료</th>
      <th width="100">개발자</th>
      <th width="100">기업</th>
      <th width="150">전문가</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>네트워크</td>
      <td>—</td>
      <td>Devnet</td>
      <td>Devnet, Mainnet</td>
      <td>Devnet, Mainnet</td>
    </tr>

    <tr>
      <td>최대 공개키</td>
      <td>—</td>
      <td>10M</td>
      <td>10M</td>
      <td>10M</td>
    </tr>

    <tr>
      <td>활성 연결</td>
      <td>—</td>
      <td>—</td>
      <td>10</td>
      <td>100</td>
    </tr>
  </tbody>
</table>

### 지갑 API

[지갑 API](/docs/ko/api-reference/wallet-api)는 DAS 및 향상된 API와 동일한 속도 제한을 따릅니다. 모든 엔드포인트는 이 제한을 공유합니다:

<table>
  <thead align="left">
    <tr>
      <th width="200">엔드포인트</th>
      <th width="100">무료</th>
      <th width="100">개발자</th>
      <th width="100">기업</th>
      <th width="100">전문가</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>모든 지갑 API 엔드포인트</td>
      <td>2/sec</td>
      <td>10/sec</td>
      <td>50/sec</td>
      <td>100/sec</td>
    </tr>
  </tbody>
</table>

여기에는 신원 조회, 잔액, 기록, 전송 및 자금 출처 엔드포인트가 포함됩니다. [지갑 API 문서](/docs/ko/wallet-api/overview)에서 자세히 알아보십시오.

### LaserStream WebSocket

<table>
  <thead align="left">
    <tr>
      <th width="200">리소스</th>
      <th width="100">무료</th>
      <th width="100">개발자</th>
      <th width="100">기업</th>
      <th width="100">전문가</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>동시 연결</td>
      <td>5</td>
      <td>150</td>
      <td>250</td>
      <td>1,000</td>
    </tr>

    <tr>
      <td>연결당 구독</td>
      <td>1,000</td>
      <td>1,000</td>
      <td>1,000</td>
      <td>1,000</td>
    </tr>

    <tr>
      <td>WebSocket 유형</td>
      <td>표준</td>
      <td>표준, 향상된</td>
      <td>표준, 향상된</td>
      <td>표준, 향상된</td>
    </tr>
  </tbody>
</table>

### Webhooks

<table>
  <thead align="left">
    <tr>
      <th width="200">리소스</th>
      <th width="100">무료</th>
      <th width="100">개발자</th>
      <th width="100">기업</th>
      <th width="100">전문가</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>최대 Webhooks</td>
      <td>5</td>
      <td>50</td>
      <td>50</td>
      <td>50</td>
    </tr>

    <tr>
      <td>웹훅당 주소</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
      <td>100k</td>
    </tr>
  </tbody>
</table>

### ZK 압축

<table>
  <thead align="left">
    <tr>
      <th width="200">서비스</th>
      <th width="100">무료</th>
      <th width="100">개발자</th>
      <th width="100">기업</th>
      <th width="100">전문가</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>Photon API</td>
      <td>2/sec</td>
      <td>10/sec</td>
      <td>50/sec</td>
      <td>100/sec</td>
    </tr>

    <tr>
      <td><code>getValidityProof</code></td>
      <td>1/sec</td>
      <td>5/sec</td>
      <td>10/sec</td>
      <td>20/sec</td>
    </tr>
  </tbody>
</table>

## 재시도 및 오류 처리

귀하의 애플리케이션이 `429 Too Many Requests`, `503 Service Unavailable` 또는 일시적 `5xx` 응답을 받으면 잠시 기다렸다가 재시도하십시오. 즉시 재시도하지 마십시오. 즉시 재시도하면 요청이 쌓이고 속도 제한 회복이 더 느려집니다.

### 권장 전략

* 첫 번째 재시도 전 약 **1초**를 기다립니다.
* 매번 재시도할 때마다 기다림을 **두 배로 늘리십시오**, 최대 **30초**까지.
* 각 대기에 \*\*±25%\*\*의 작은 무작위 변화를 추가하여 여러 앱이 동일한 순간에 모두 재시도하지 않도록 합니다.
* **5회 시도** 후 포기하고 호출한 코드에 오류를 반환합니다.

### 재시도할 오류

| 상태                         | 재시도? | 이유                              |
| -------------------------- | ---- | ------------------------------- |
| `400`, `401`, `403`, `404` | 아니요  | 클라이언트 오류 — 재시도해도 결과가 변경되지 않습니다. |
| `408`                      | 예    | 요청 시간 초과.                       |
| `409`                      | 아니요  | 충돌 — 호출자에서 해결하십시오.              |
| `422`                      | 아니요  | 유효성 검사 오류.                      |
| `429`                      | 예    | 속도 제한 초과 — 대기 후 백오프로 재시도하십시오.   |
| `500`, `502`               | 예    | 일시적 서버 오류.                      |
| `503`                      | 예    | 서비스 사용 불가 — 대기 후 백오프로 재시도하십시오.  |
| `504`                      | 예    | 게이트웨이 시간 초과.                    |
| 네트워크 오류                    | 예    | 연결 재설정, DNS 실패 또는 소켓 시간 초과.     |

### 예시

<CodeGroup>
  ```ts TypeScript theme={"system"}
  const RETRYABLE = new Set([408, 429, 500, 502, 503, 504]);

  export async function callWithRetry<T>(
    request: () => Promise<Response>,
    maxAttempts = 5,
  ): Promise<T> {
    let delay = 1000;
    for (let attempt = 1; attempt <= maxAttempts; attempt++) {
      const res = await request();
      if (res.ok) return (await res.json()) as T;

      if (!RETRYABLE.has(res.status) || attempt === maxAttempts) {
        throw new Error(`${res.status} after ${attempt} attempt(s): ${await res.text()}`);
      }

      const jitterMs = delay * (0.75 + Math.random() * 0.5);
      await new Promise((r) => setTimeout(r, jitterMs));
      delay = Math.min(delay * 2, 30_000);
    }
    throw new Error("unreachable");
  }
  ```

  ```python Python theme={"system"}
  import random
  import time

  RETRYABLE = {408, 429, 500, 502, 503, 504}

  def call_with_retry(request, max_attempts: int = 5):
      delay = 1.0
      for attempt in range(1, max_attempts + 1):
          response = request()
          if response.ok:
              return response.json()

          if response.status_code not in RETRYABLE or attempt == max_attempts:
              response.raise_for_status()

          time.sleep(delay * random.uniform(0.75, 1.25))
          delay = min(delay * 2, 30.0)
  ```

  ```bash Shell theme={"system"}
  call_with_retry() {
    local attempt=1 delay=1 body status
    while [ "$attempt" -le 5 ]; do
      response=$(curl -sS -w "\n%{http_code}" "$@")
      body=$(printf '%s\n' "$response" | sed '$d')
      status=$(printf '%s\n' "$response" | tail -n1)
      case "$status" in
        2*) printf '%s\n' "$body"; return 0 ;;
        408|429|500|502|503|504) ;;  # fall through and retry
        *) printf '%s\n' "$body" >&2; return 1 ;;
      esac
      # ~delay seconds with 25% jitter
      sleep "$(awk -v d="$delay" 'BEGIN { srand(); print d * (0.75 + rand() * 0.5) }')"
      delay=$(( delay * 2 > 30 ? 30 : delay * 2 ))
      attempt=$(( attempt + 1 ))
    done
    return 1
  }
  ```
</CodeGroup>

### 오류 응답 형태

모든 Helius API는 오류 발생 시 구조화된 JSON 본문을 반환합니다. JSON-RPC 엔드포인트(Solana RPC, DAS, Sender, Priority Fee, ZK Compression)는 표준 JSON-RPC 2.0 봉투를 반환합니다.

```json theme={"system"}
{
  "jsonrpc": "2.0",
  "error": { "code": -32005, "message": "Too many requests" },
  "id": "1"
}
```

REST 엔드포인트(지갑 API, 관리자 API)는 다음과 같이 반환합니다.

```json theme={"system"}
{
  "error": "RATE_LIMIT_EXCEEDED",
  "code": 429,
  "details": "Too many requests. Retry after 2 seconds."
}
```

전체 오류 코드 목록과 각 오류 코드의 의미에 대해서는 [공통 오류 코드](/docs/ko/api-reference/common-error-codes)를 참조하십시오.
