Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
신뢰할 수 있는 정보 출처. 아래 표는 공개 Raydium 저장소의 각 프로그램 error.rs에서 재생성됩니다. 프로그램이 업그레이드되고 새로운 변형이 추가되면, 추출을 다시 실행하고(각 표 하단의 링크) 표를 재정렬하지 말고 추가하세요. Anchor 에러 코드는 이름이 아닌 소스 순서로 할당되므로, 순서를 바꾸면 통합자의 에러 처리가 깨집니다.

Anchor 에러 코드 작동 원리

Anchor는 프로그램의 ErrorCode 열거형의 각 변형에 6000부터 시작하는 숫자 코드를 할당합니다. 실패한 트랜잭션은 다음을 표시합니다:
  • 숫자 에러 코드 (예: 0x1771 = 6001) - 트랜잭션 로그에 표시됨
  • 에러 이름 (예: InvalidOwner) - IDL에서 제공됨
  • #[msg(...)] 문자열 - Anchor가 log_messages에 출력함
통합자는 메시지 문자열이 아닌 숫자 코드로 매칭해야 합니다(문자열은 버전 업데이트 없이 다시 작성될 수 있습니다).

CPMM (표준 AMM) 에러

프로그램 ID: reference/program-addresses 참조. 소스: raydium-cp-swap/programs/cp-swap/src/error.rs. 재생성 소스: github.com/raydium-io/raydium-cp-swap — error.rs.

CLMM 에러

프로그램 ID: reference/program-addresses 참조. 소스: raydium-clmm/programs/amm/src/error.rs.
재번호 매기기에 대한 참고. CLMM ErrorCode 열거형이 이 릴리스에서 재번호 매겨졌습니다: 5개의 레거시 변형(LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount)과 여러 오타(Liquitity, enought, emissiones)가 제거/수정되었고, 11개의 새로운 변형이 추가되었습니다. Anchor가 소스 순서로 에러를 번호 매기므로, 6000 이상의 모든 코드는 사전 릴리스 빌드에 상대적으로 이동했습니다. 이전 버전에 대해 숫자 코드를 하드코딩한 클라이언트는 재매핑해야 합니다.
재생성 소스: github.com/raydium-io/raydium-clmm — error.rs.

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

이 프로그램들은 각각의 장에서 문서화됩니다(products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions 참조). 이 프로그램들이 Anchor와 순수 Solana 에러 표면의 혼합을 사용하므로, 에러 표는 여기가 아닌 명령어 참조 옆에 있습니다. 아래 코드는 이 장들에서 예약됩니다:

SDK 에러를 프로그램 에러로 매핑

공식 TypeScript SDK는 온체인 에러를 SendTransactionError로 래핑하고, Anchor 프로그램의 경우 AnchorError로 래핑합니다:
클라이언트 측에서 Anchor를 사용하지 않는 경우 트랜잭션 로그를 파싱하세요:
패턴 Error Number: (\d+)은 Anchor 버전 전체에서 안정적이며 매칭하기에 안전합니다.

이 표 재생성

프로그램이 업그레이드되고 새로운 에러를 추가할 때 소스에서 다시 추출하세요:
프로그램이 업그레이드될 때 항상 reference/changelog를 업데이트하세요. 그러면 SDK를 업그레이드하는 통합자들이 에러 핸들러를 새로고침해야 한다는 것을 알 수 있습니다. 소스: