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

# 에러 코드

> Raydium 온체인 프로그램별 Anchor 에러 enum — 원인 및 권장 UX 메시지 포함.

<Info>
  **이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.**

  [영문판 보기 →](/reference/error-codes)
</Info>

<Info>
  **공식 출처.** 아래 표는 Raydium 공개 저장소 각 프로그램의 `error.rs`에서 재생성됩니다. 프로그램이 업그레이드되어 새 변형이 추가되면, 표를 재정렬하지 말고 각 표 하단의 링크를 통해 추출 스크립트를 재실행한 뒤 행을 추가하세요. Anchor 에러 코드는 이름이 아닌 **소스 순서**로 할당되므로, 순서를 바꾸면 통합자의 에러 처리 로직이 깨집니다.
</Info>

## Anchor 에러 코드 작동 방식

Anchor는 프로그램의 `ErrorCode` enum 각 변형에 `6000`부터 시작하는 숫자 코드를 부여합니다. 트랜잭션이 실패하면 다음 정보가 노출됩니다.

* **숫자 에러 코드** (예: `0x1771` = 6001) — 트랜잭션 로그에 표시됩니다.
* **에러 이름** (예: `InvalidOwner`) — IDL에서 확인할 수 있습니다.
* **`#[msg(...)]` 문자열** — Anchor가 `log_messages`에 출력합니다.

통합 시에는 메시지 문자열이 아닌 **숫자 코드**를 기준으로 매칭하세요. 문자열은 버전 변경 없이 수정될 수 있습니다.

```ts theme={null}
// 예시: CPMM 슬리피지 에러를 감지해 사용자 친화적 메시지를 표시합니다.
const CPMM_EXCEEDED_SLIPPAGE = 6005;

try {
  await sdk.cpmm.swap({ ... });
} catch (err: any) {
  const code = err?.error?.errorCode?.number ?? err?.code;
  if (code === CPMM_EXCEEDED_SLIPPAGE) {
    showToast("Price moved past your slippage tolerance. Increase slippage or retry.");
    return;
  }
  throw err;
}
```

## CPMM (Standard AMM) 에러

Program ID: [reference/program-addresses](/ko/reference/program-addresses#on-chain-programs) 참고. 출처: `raydium-cp-swap/programs/cp-swap/src/error.rs`.

| 코드   | 변형                             | `#[msg]` 문자열                                                                    | 일반적인 원인                                                                                  | 권장 UX                                      |
| ---- | ------------------------------ | ------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------ |
| 6000 | `NotApproved`                  | Not approved                                                                    | 호출자가 관리자 명령의 권한 있는 주체가 아닙니다.                                                             | "풀 관리자만 이 작업을 수행할 수 있습니다."                 |
| 6001 | `InvalidOwner`                 | Input account owner is not the program address                                  | 전달된 계정이 잘못된 프로그램 소유입니다 (잘못된 토큰 프로그램 또는 잘못된 PDA인 경우가 많습니다).                               | "내부 오류: 계정 소유자 불일치 — 새로고침 후 다시 시도하세요."     |
| 6002 | `EmptySupply`                  | Input token account empty                                                       | LP 또는 토큰 계정 잔액이 0인데 양수가 필요한 단계에서 호출되었습니다.                                                | "인출할 잔액이 없습니다."                            |
| 6003 | `InvalidInput`                 | InvalidInput                                                                    | 일반적인 잘못된 인수입니다 (범위를 벗어난 금액, 잘못된 플래그).                                                    | "잘못된 입력입니다 — 금액을 확인하고 다시 시도하세요."           |
| 6004 | `IncorrectLpMint`              | Address of the provided lp token mint is incorrect                              | 전달된 LP 민트 계정이 `pool_state.lp_mint`와 일치하지 않습니다.                                           | "내부 오류: 잘못된 LP 민트 — 풀 데이터를 새로고침하세요."       |
| 6005 | `ExceededSlippage`             | Exceeds desired slippage limit                                                  | 실행 가격이 사용자의 `minAmountOut` / `maxAmountIn`보다 불리합니다.                                      | "슬리피지 허용 범위를 초과했습니다. 슬리피지를 늘리거나 다시 시도하세요." |
| 6006 | `ZeroTradingTokens`            | Given pool token amount results in zero trading tokens                          | 예치/인출 계산에서 한쪽이 0으로 반올림됩니다 (포지션이 너무 작음).                                                  | "이 풀의 최소 금액보다 작습니다."                       |
| 6007 | `NotSupportMint`               | Not support token\_2022 mint extension *(소스 내 문법 오류)*                           | 풀이 안전하게 처리할 수 없는 Token-2022 확장을 만났습니다 (예: `TransferHook`, `DefaultAccountState=Frozen`). | "이 토큰에는 CPMM에서 지원하지 않는 확장이 있습니다."          |
| 6008 | `InvalidVault`                 | invaild vault *(소스 내 오타)*                                                       | 전달된 볼트 계정이 `pool_state`에 기록된 것과 일치하지 않습니다.                                               | "내부 오류: 잘못된 볼트 — 새로고침 후 다시 시도하세요."         |
| 6009 | `InitLpAmountTooLess`          | Init lp amount is too less(Because 100 amount lp will be locked) *(소스 내 문법 오류)* | 풀 초기화 시 계산된 LP 공급량이 영구 잠금 금액보다 낮습니다.                                                     | "초기 유동성이 너무 작습니다. 예치 금액을 늘리세요."            |
| 6010 | `TransferFeeCalculateNotMatch` | TransferFee calculate not match                                                 | Token-2022 수수료 민트의 실제 이체 후 금액이 사전 계산 값과 일치하지 않습니다.                                       | "토큰 전송 수수료가 트랜잭션 중 변경되었습니다. 다시 시도하세요."     |
| 6011 | `MathOverflow`                 | Math overflow                                                                   | 스왑/예치/수수료 계산 중 오버플로우가 발생했습니다.                                                            | "이 풀에서 처리하기에 금액이 너무 큽니다."                  |
| 6012 | `InsufficientVault`            | Insufficient vault                                                              | 풀 볼트 잔액이 요청된 출력을 충당하기에 부족합니다.                                                            | "이 규모를 처리할 풀 유동성이 부족합니다."                  |
| 6013 | `InvalidFeeModel`              | Invalid fee model                                                               | 관리자가 온체인에서 거부된 `AmmConfig` 파라미터 조합을 설정했습니다.                                              | 해당 없음 — 관리자 전용 경로.                         |
| 6014 | `NoFeeCollect`                 | Fee is zero                                                                     | `collect_protocol_fee` / `collect_fund_fee`가 수집 가능한 수수료가 0인 상태에서 호출되었습니다.                | 해당 없음 — 관리자 경로; 도구에서 무시해야 합니다.             |

재생성 출처: [github.com/raydium-io/raydium-cp-swap — error.rs](https://github.com/raydium-io/raydium-cp-swap/blob/master/programs/cp-swap/src/error.rs).

## CLMM 에러

Program ID: [reference/program-addresses](/ko/reference/program-addresses#on-chain-programs) 참고. 출처: `raydium-clmm/programs/amm/src/error.rs`.

| 코드   | 변형                                       | `#[msg]` 문자열                                                                            | 일반적인 원인                                                                                                            | 권장 UX                                                  |
| ---- | ---------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ |
| 6000 | `NotApproved`                            | Not approved                                                                            | 호출자가 이 명령의 설정된 관리자가 아닙니다.                                                                                          | "풀 관리자만 이 작업을 수행할 수 있습니다."                             |
| 6001 | `InvalidUpdateConfigFlag`                | invalid update amm config flag                                                          | 관리자가 `update_amm_config`에 알 수 없는 `param` 값을 전달했습니다.                                                                | 해당 없음 — 관리자 전용 경로.                                     |
| 6002 | `AccountLack`                            | Account lack                                                                            | 트랜잭션에 필요한 나머지 계정이 누락되었습니다 (보통 tick-array 또는 oracle 확장).                                                            | "내부 오류: 누락된 계정 — 풀 데이터를 새로고침하세요."                      |
| 6003 | `ClosePositionErr`                       | Remove liquidity, collect fees owed and reward then you can close position account      | 유동성, 미수령 수수료 또는 미수령 리워드가 남아 있는 포지션을 닫으려 했습니다.                                                                      | "포지션을 닫기 전에 모든 유동성을 인출하고 수수료/리워드를 수령하세요."              |
| 6004 | `InvalidTickIndex`                       | Tick out of range                                                                       | `tick_lower` 또는 `tick_upper`가 `[-443636, 443636]` 범위를 벗어났습니다.                                                      | "이 풀의 가격 범위가 허용 범위를 벗어났습니다."                           |
| 6005 | `TickInvalidOrder`                       | The lower tick must be below the upper tick                                             | `tick_lower >= tick_upper`입니다.                                                                                     | "하한 가격은 상한 가격보다 낮아야 합니다."                              |
| 6006 | `TickLowerOverflow`                      | The tick must be greater, or equal to the minimum tick(-443636)                         | 하한 틱 언더플로우.                                                                                                        | "하한 가격이 너무 낮습니다."                                      |
| 6007 | `TickUpperOverflow`                      | The tick must be lesser than, or equal to the maximum tick(443636)                      | 상한 틱 오버플로우.                                                                                                        | "상한 가격이 너무 높습니다."                                      |
| 6008 | `TickAndSpacingNotMatch`                 | tick % tick\_spacing must be zero                                                       | 전달된 틱이 풀의 `tick_spacing`의 배수가 아닙니다.                                                                                | "가격을 가장 가까운 유효한 단위로 맞추세요."                             |
| 6009 | `InvalidTickArray`                       | Invalid tick array account                                                              | tick-array 슬롯에 잘못된 PDA가 전달되었습니다.                                                                                   | "내부 오류: 잘못된 tick array — 풀 데이터를 새로고침하세요."              |
| 6010 | `InvalidTickArrayBoundary`               | Invalid tick array boundary                                                             | tick-array 인덱싱의 경계 오류입니다.                                                                                          | "내부 오류: tick-array 경계 오류."                             |
| 6011 | `SqrtPriceLimitOverflow`                 | Square root price limit overflow                                                        | 호출자가 제공한 `sqrt_price_limit`이 유효 범위를 벗어났습니다.                                                                        | "가격 한도가 범위를 벗어났습니다."                                   |
| 6012 | `SqrtPriceX64`                           | sqrt\_price\_x64 out of range                                                           | 스왑 중 풀의 현재 sqrt 가격이 범위를 벗어났습니다.                                                                                    | "스왑을 다시 시도하세요."                                        |
| 6013 | `LiquiditySubValueErr`                   | Liquidity sub delta L must be smaller than before                                       | 유동성 감소 시 내부 불변 조건 위반.                                                                                              | "내부 오류: 유동성 회계 오류."                                    |
| 6014 | `LiquidityAddValueErr`                   | Liquidity add delta L must be greater, or equal to before                               | 유동성 증가 시 내부 불변 조건 위반.                                                                                              | "내부 오류: 유동성 회계 오류."                                    |
| 6015 | `ForbidBothZeroForSupplyLiquidity`       | Both token amount must not be zero while supply liquidity                               | `amount_0_max`와 `amount_1_max` 모두 0으로 유동성 증가를 호출했습니다.                                                              | "최소 하나의 토큰을 입력하세요."                                    |
| 6016 | `LiquidityInsufficient`                  | Liquidity insufficient                                                                  | 포지션의 유동성이 인출 요청을 충족하기에 부족합니다.                                                                                      | "인출 금액이 포지션 유동성을 초과합니다."                               |
| 6017 | `PriceSlippageCheck`                     | Price slippage check                                                                    | 실행 가격이 호출자의 슬리피지 가드를 통과하지 못했습니다.                                                                                   | "슬리피지 허용 범위를 초과했습니다. 슬리피지를 늘리거나 다시 시도하세요."             |
| 6018 | `TooLittleOutputReceived`                | Too little output received                                                              | `SwapBaseInput`: 출력 금액이 `other_amount_threshold` 미만입니다.                                                            | "슬리피지 초과 — 최소 출력 금액을 충족하지 못했습니다."                      |
| 6019 | `TooMuchInputPaid`                       | Too much input paid                                                                     | `SwapBaseOutput`: 입력 금액이 `other_amount_threshold`를 초과합니다.                                                          | "슬리피지 초과 — 최대 입력 금액을 초과했습니다."                          |
| 6020 | `ZeroAmountSpecified`                    | Swap special amount can not be zero                                                     | 스왑 명령의 `amount`가 0입니다.                                                                                             | "0보다 큰 금액을 입력하세요."                                     |
| 6021 | `InvalidInputPoolVault`                  | Input pool vault is invalid                                                             | 스왑의 입력 볼트 계정이 풀에 기록된 볼트와 일치하지 않습니다.                                                                                | "내부 오류: 잘못된 입력 볼트 — 풀 데이터를 새로고침하세요."                   |
| 6022 | `TooSmallInputOrOutputAmount`            | Swap input or output amount is too small                                                | 스왑 계산이 0으로 반올림되었습니다. 보통 매우 작은 먼지 금액입니다.                                                                            | "이 풀에서 스왑하기에 금액이 너무 작습니다."                             |
| 6023 | `NotEnoughTickArrayAccount`              | Not enough tick array account                                                           | 스왑 범위에 필요한 tick-array 나머지 계정이 충분하지 않습니다.                                                                           | "내부 오류: tick-array 부족 — 풀 데이터를 새로고침하세요."               |
| 6024 | `InvalidFirstTickArrayAccount`           | Invalid first tick array account                                                        | 전달된 첫 번째 tick-array 계정이 현재 틱을 포함하지 않습니다.                                                                           | "내부 오류: 잘못된 첫 번째 tick array — 풀 데이터를 새로고침하세요."         |
| 6025 | `InvalidRewardIndex`                     | Invalid reward index                                                                    | `reward_index`가 `[0, 2]` 범위를 벗어났습니다.                                                                               | 해당 없음 — 관리자 경로.                                        |
| 6026 | `FullRewardInfo`                         | The init reward token reach to the max                                                  | 풀에 이미 최대 리워드 민트(3개)가 설정되어 있습니다.                                                                                    | 해당 없음 — 관리자 경로.                                        |
| 6027 | `RewardTokenAlreadyInUse`                | The init reward token already in use                                                    | 리워드 민트가 기존 민트와 중복됩니다.                                                                                              | 해당 없음 — 관리자 경로.                                        |
| 6028 | `ExceptRewardMint`                       | The reward tokens must contain one of pool vault mint except the last reward            | 슬롯 2 이전에는 리워드 민트가 풀의 볼트 민트 중 하나와 일치해야 합니다.                                                                         | 해당 없음 — 관리자 경로.                                        |
| 6029 | `InvalidRewardInitParam`                 | Invalid reward init param                                                               | 잘못된 방출 시작/종료 시간 또는 초당 비율입니다.                                                                                       | 해당 없음 — 관리자 경로.                                        |
| 6030 | `InvalidRewardInputAccountNumber`        | Invalid collect reward input account number                                             | `CollectReward`에 잘못된 수의 나머지 계정이 전달되었습니다.                                                                           | "내부 오류: 잘못된 계정 수 — 새로고침 후 다시 시도하세요."                   |
| 6031 | `InvalidRewardPeriod`                    | Invalid reward period                                                                   | 리워드 방출 기간이 유효하지 않습니다 (`end <= start`, 기간이 0).                                                                      | 해당 없음 — 관리자 경로.                                        |
| 6032 | `NotApproveUpdateRewardEmissions`        | Modification of emissions is allowed within 72 hours from the end of the previous cycle | 관리자가 사이클 경계 72시간 이외에 방출량을 수정하려 했습니다.                                                                               | 해당 없음 — 관리자 경로.                                        |
| 6033 | `UnInitializedRewardInfo`                | uninitialized reward info                                                               | 초기화되지 않은 리워드 슬롯이 참조되었습니다.                                                                                          | 해당 없음 — 관리자 경로.                                        |
| 6034 | `NotSupportMint`                         | Not support token\_2022 mint extension                                                  | CLMM이 처리할 수 없는 Token-2022 확장을 만났습니다.                                                                               | "이 토큰에는 Raydium CLMM에서 지원하지 않는 확장이 있습니다."              |
| 6035 | `MissingTickArrayBitmapExtensionAccount` | Missing tickarray bitmap extension account                                              | 스왑이 기본 비트맵에 포함되지 않는 틱 범위를 넘어갔습니다. 확장 비트맵 계정이 필요합니다.                                                                | "내부 오류: tick-array 확장 누락 — 풀 데이터를 새로고침하세요."            |
| 6036 | `InsufficientLiquidityForDirection`      | Insufficient liquidity for this direction                                               | 스왑 방향으로 유동성이 충분하지 않습니다.                                                                                            | "이 스왑 규모를 처리할 유동성이 부족합니다."                             |
| 6037 | `MaxTokenOverflow`                       | Max token overflow                                                                      | 입력/출력 금액이 u64를 초과했습니다.                                                                                             | "이 풀에서 처리하기에 금액이 너무 큽니다."                              |
| 6038 | `CalculateOverflow`                      | Calculate overflow                                                                      | 수수료/유동성 계산 중 오버플로우가 발생했습니다.                                                                                        | "이 풀에서 처리하기에 금액이 너무 큽니다."                              |
| 6039 | `TransferFeeCalculateNotMatch`           | TransferFee calculate not match                                                         | Token-2022 전송 수수료의 실제 금액이 예상 값과 일치하지 않습니다.                                                                         | "토큰 전송 수수료가 트랜잭션 중 변경되었습니다. 다시 시도하세요."                 |
| 6040 | `OrderAlreadyFilled`                     | Order already fully filled, cannot modify                                               | 미체결 수량이 0인 주문에 `IncreaseLimitOrder` / `DecreaseLimitOrder`가 호출되었습니다.                                               | "이 지정가 주문은 이미 체결되었습니다 — 출력을 받으려면 정산하세요."               |
| 6041 | `InvalidOrderPhase`                      | Invalid order phase                                                                     | 틱의 현재 코호트와 더 이상 일치하지 않는 FIFO 코호트 단계의 주문을 수정하려 했습니다.                                                                | "현재 주문 상태에서는 이 작업을 수행할 수 없습니다."                        |
| 6042 | `InvalidLimitOrderAmount`                | Invalid limit order amount                                                              | 주문 열기/증가/감소 시 풀 최소값 미만(또는 0)입니다.                                                                                   | "주문 규모가 풀의 최소값보다 작습니다."                                |
| 6043 | `OrderPhaseSaturated`                    | Tick order phase saturated                                                              | 틱의 코호트 `order_phase` 카운터가 포화 상태입니다. 기존 코호트가 정산되어 넘어갈 때까지 해당 틱에서 새 주문을 열 수 없습니다.                                    | "이 가격에 활성 주문이 너무 많습니다. 인근 틱을 선택하거나 주문이 정산될 때까지 기다리세요." |
| 6044 | `InvalidDynamicFeeConfigParams`          | Invalid dynamic fee config params                                                       | `CreateDynamicFeeConfig` / `UpdateDynamicFeeConfig`가 거부되었거나, `CreateCustomizablePool`에서 유효한 설정 없이 동적 수수료를 활성화했습니다. | 관리자 경로에서는 해당 없음; 사용자 경로에서는 "동적 수수료 설정이 유효하지 않습니다."     |
| 6045 | `InvalidFeeOn`                           | Invalid fee on which token (must be 0, 1, or 2)                                         | `CreateCustomizablePool`에 `{0, 1, 2}` 범위 밖의 `collect_fee_on` 값이 전달되었습니다.                                           | "내부 오류: 잘못된 수수료 모드."                                   |
| 6046 | `ZeroSqrtPrice`                          | sqrt\_price\_x64 must be greater than 0                                                 | `CreateCustomizablePool` (또는 커스터마이징 가능한 초기 sqrt 가격을 허용하는 경로)이 `sqrt_price_x64 == 0`으로 호출되었습니다.                     | "초기 가격은 0보다 커야 합니다."                                   |
| 6047 | `ZeroLiquidity`                          | liquidity must be greater than 0                                                        | `liquidity == 0`이고 보상 금액도 없는 상태에서 유동성 공급 경로가 호출되었습니다.                                                              | "유동성 금액은 0보다 커야 합니다."                                  |
| 6048 | `MissingBaseFlag`                        | base\_flag is required when liquidity is zero                                           | 포지션 열기(금액 기준) 경로에서 `liquidity == 0`이 계산되었는데 어느 쪽이 기준인지 식별할 `base_flag`가 제공되지 않았습니다.                                | "0이 아닌 유동성을 입력하거나 기준 토큰을 지정하세요."                       |
| 6049 | `MissingMintAccount`                     | Mint account is required but not provided                                               | Token-2022 인식 경로가 확장 및 전송 수수료 검증에 필요한 입력/출력 민트 계정 없이 호출되었습니다.                                                      | "내부 오류: 민트 계정 누락 — 풀 데이터를 새로고침하세요."                    |
| 6050 | `MissingTokenProgram2022`                | Token-2022 program is required but not provided                                         | SPL-Token-2022 프로그램 계정이 누락된 것을 제외하면 위와 동일합니다.                                                                      | "내부 오류: Token-2022 프로그램 누락 — 새로고침 후 다시 시도하세요."         |

> **번호 재지정에 대한 참고.** 이번 릴리스에서 CLMM `ErrorCode` enum이 새로 번호가 매겨졌습니다. 기존 변형 5개(`LOK`, `ZeroMintAmount`, `InvalidLiquidity`, `TransactionTooOld`, `InvalidRewardDesiredAmount`)와 여러 오타(`Liquitity`, `enought`, `emissiones`)가 제거/수정되었고, 11개의 새 변형이 추가되었습니다. Anchor는 소스 순서로 에러 번호를 부여하므로, `6000` 이후의 모든 코드가 이전 릴리스 빌드 대비 이동했습니다. 숫자 코드를 이전 버전에 하드코딩한 클라이언트는 재매핑이 필요합니다.

재생성 출처: [github.com/raydium-io/raydium-clmm — error.rs](https://github.com/raydium-io/raydium-clmm/blob/master/programs/amm/src/error.rs).

## AMM v4, Farm v3 / v5 / v6, LaunchLab 에러

이 프로그램들은 각 챕터에서 별도로 문서화됩니다 ([`products/amm-v4/instructions`](/ko/products/amm-v4/instructions), [`products/farm-staking/instructions`](/ko/products/farm-staking/instructions), [`products/launchlab/instructions`](/ko/products/launchlab/instructions) 참고). 해당 프로그램들은 Anchor와 일반 Solana 에러 방식을 혼용하므로, 에러 표는 여기가 아닌 명령어 레퍼런스 옆에 위치합니다. 아래 코드는 해당 챕터에서 예약되어 있습니다.

| 프로그램         | 코드 범위 (Anchor만 해당)          | 레퍼런스                                                                           |
| ------------ | --------------------------- | ------------------------------------------------------------------------------ |
| AMM v4       | Custom u32 코드, Anchor 방식 아님 | [`products/amm-v4/instructions`](/ko/products/amm-v4/instructions)             |
| Farm v3 / v5 | Custom u32 코드               | [`products/farm-staking/instructions`](/ko/products/farm-staking/instructions) |
| Farm v6      | 6000+ (Anchor)              | [`products/farm-staking/instructions`](/ko/products/farm-staking/instructions) |
| LaunchLab    | 6000+ (Anchor)              | [`products/launchlab/instructions`](/ko/products/launchlab/instructions)       |

## SDK 에러를 프로그램 에러로 매핑하기

공식 TypeScript SDK는 온체인 에러를 `SendTransactionError`로 래핑하며, Anchor 프로그램의 경우 `AnchorError`로 래핑합니다.

```ts theme={null}
import { AnchorError } from "@coral-xyz/anchor";

try {
  await sdk.cpmm.swap({ ... });
} catch (err) {
  if (err instanceof AnchorError) {
    console.log(err.error.errorCode.number, err.error.errorCode.code, err.error.errorMessage);
    // 6005 ExceededSlippage "Exceeds desired slippage limit"
  } else {
    // Raw SendTransactionError — err.logs에서 "custom program error: 0x..." 줄을 확인하세요.
  }
}
```

Anchor 클라이언트를 사용하지 않는 경우, 트랜잭션 로그를 직접 파싱하세요.

```
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
```

`Error Number: (\d+)` 패턴은 Anchor 버전에 관계없이 안정적으로 매칭할 수 있습니다.

## 표 재생성 방법

프로그램이 업그레이드되어 새 에러가 추가되면, 소스에서 다시 추출하세요.

```bash theme={null}
# Clone and grep the error enum in order.
git clone --depth=1 https://github.com/raydium-io/raydium-cp-swap
awk '/#\[msg\(/{ gsub(/^[ \t]*#\[msg\("|"\)\][ \t]*/,""); m=$0; getline; gsub(/,/,""); gsub(/^[ \t]+/,""); print "6000+++\t" $0 "\t" m }' \
  raydium-cp-swap/programs/cp-swap/src/error.rs
# Replace 6000+++ with monotonically-increasing 6000,6001,... Append new rows to the table above.
```

새 변형이 추가될 때마다 반드시 [`reference/changelog`](/ko/reference/changelog)를 업데이트하세요. 그래야 SDK를 업그레이드하는 통합자들이 에러 핸들러를 갱신해야 한다는 것을 알 수 있습니다.

출처:

* [raydium-cp-swap error.rs (메인넷 CPMM)](https://github.com/raydium-io/raydium-cp-swap/blob/master/programs/cp-swap/src/error.rs)
* [raydium-clmm error.rs (메인넷 CLMM)](https://github.com/raydium-io/raydium-clmm/blob/master/programs/amm/src/error.rs)
