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.
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
IDL이란
Solana의 Anchor 프로그램은 명령어(instruction), 계정 레이아웃, 에러 열거형, 구조체 스키마를 설명하는 IDL(Interface Definition Language) 파일을 발행합니다. IDL은 클라이언트 코드 생성의 정보 출처입니다 — TS SDK, Rust CPI 크레이트, 그리고 타사 클라이언트는 모두 IDL을 기반으로 생성되거나 직접 작성됩니다. Raydium은 CPMM, CLMM, LaunchLab의 IDL을 발행합니다. AMM v4, Stable AMM, Farm (v3 / v5 / v6)은 Anchor 이전에 만들어졌거나 다른 이유로 Anchor 배포가 아닙니다 — SDK에서 계정 구조가 수동으로 유지됩니다.IDL 위치
IDL은 별도의 저장소에 있습니다:| 프로그램 | IDL 파일 |
|---|---|
| CPMM | raydium_cpmm/raydium_cp_swap.json |
| CLMM | raydium_clmm/raydium_clmm.json |
| LaunchLab | raydium_launchpad/raydium_launchpad.json |
| AMM v4 | 공식 IDL 없음 — 수동 작성된 레이아웃은 raydium-sdk-V2/src/raydium/liquidity/layout.ts 참조 |
| Stable AMM | 공식 IDL 없음 — SDK의 레이아웃 |
| Farm | 공식 IDL 없음 — SDK의 레이아웃 |
TypeScript 클라이언트 재생성
Anchor의 코드젠은 IDL에서 타입이 지정된 클라이언트를 생성합니다:raydium.cpmm.swap(...) 헬퍼를 사용합니다. SDK 아래 계층이 필요할 때만 재생성하세요.
Rust 클라이언트 (CPI 크레이트) 재생성
Raydium은 IDL이 있는 프로그램을 위한 Anchor 크레이트를 발행합니다:cpi 기능은 cpi::accounts::<Ix> 계정 구조체와 cpi::<ix>() 호출자를 노출합니다 — 바로 사용 가능한 CPI 래퍼입니다. 사용 패턴은 sdk-api/rust-cpi를 참조하세요.
새 바인딩을 생성하려면:
Python 클라이언트 재생성
공식 Raydium Python SDK는 없습니다. 타사 생성기는:anchorpy—@coral-xyz/anchor의 Python 포팅 버전. IDL에서 타입이 지정된 메서드 빌더를 생성합니다.solders— Rust 바인딩의 저수준 Solana 기본 요소 (트랜잭션, 키페어, 공개키);anchorpy아래에서 사용됩니다.
sdk-api/python-integration을 참조하세요.
IDL 변경 정책
Raydium은 IDL 안정성을 위해 다음 규칙을 따릅니다:- 명령어 구분자는 절대 변경되지 않습니다. 새 명령어를 추가하면 열거형 끝에 추가됩니다. 기존 구분자는 안정적으로 유지됩니다.
- 계정 구조체 레이아웃은 덧셈식으로만 진화합니다. 새 필드는 끝에 추가되며, on-chain 스키마의 크기 증가가 선행됩니다. 기존 필드는 오프셋을 유지합니다.
- 에러 열거형 코드는 추가만 가능합니다. 기존 에러 코드는 항상 같은 의미입니다.
- 중단적 변경은 새 프로그램에서 배송됩니다. 재설계가 필요할 때 팀은 새 프로그램 ID를 배포합니다 (예: AMM v4를 업그레이드하는 대신 새 프로그램으로 CPMM). 기존 풀은 구 프로그램에서 계속 실행되고, 새 풀은 새 프로그램으로 이동합니다.
IDL이 변경되었을 때 해야 할 일
- SDK 업데이트.
npm update @raydium-io/raydium-sdk-v2. - Anchor 코드젠을 직접 사용하면 클라이언트 코드를 재생성하세요.
- 계정 레이아웃 비교. 새 레이아웃의 뒤따르는 필드가 유일하게 코드가 보지 못한 것입니다. 필요한지 확인하세요.
- 구 명령어 구분자가 무효하다고 가정하지 마세요. 규칙 1에 따라 여전히 작동합니다.
- mainnet으로 롤링하기 전에 devnet에서 통합 테스트를 다시 실행하세요.
IDL 문제 해결
”Invalid discriminator” 에러
보통 IDL의 N 버전으로 빌드된 클라이언트가 프로그램의 배포 이전 버전에만 있던 명령어를 호출하려고 할 때 발생합니다. 실시간 프로그램에서 IDL을 다시 가져오세요:계정 디코딩 실패
program.account.<Name>.fetch(pubkey)가 “Invalid account discriminator”로 실패하면 계정이 이전 프로그램 버전으로 생성되었고 Anchor가 8바이트 구분자를 거부합니다. 수정은 Anchor 구분자를 강제하지 않는 SDK의 원본 레이아웃 파서를 사용하는 것입니다 (PoolInfoLayout.decode(accountData)).
생성된 클라이언트에 누락된 명령어
Anchor의 TS 코드젠은 IDL 항목의name이 유효한 식별자로 파싱되는 명령어에 대한 메서드만 생성합니다. Raydium의 명령어는 모두 이를 만족하지만, 불일치가 보이면 IDL 파일이 현재 SDK 릴리스에서 온 것인지 확인하세요.
관련 문서
sdk-api/rust-cpi— Rust CPI 크레이트 사용.sdk-api/python-integration—anchorpy를 통한 Python.sdk-api/typescript-sdk— 고수준 TS 클라이언트.


