메인 콘텐츠로 건너뛰기
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
버전 배너. 모든 TypeScript 데모는 Solana mainnet-beta에 대해 @raydium-io/raydium-sdk-v2@0.2.42-alpha을 대상으로 하며, 2026년 4월에 검증되었습니다. Rust CPI 스켈레톤은 raydium-cp-swapmaster 브랜치를 대상으로 하며 Anchor 0.30.x입니다. 프로그램 ID는 reference/program-addresses의 상수에서 가져옵니다.

필수 사항

이 페이지의 모든 데모는 raydium-sdk-V2-demo/src/cpmm의 파일을 반영합니다. 각 섹션 옆에 GitHub 링크가 있습니다. 부트스트랩은 데모 저장소의 config.ts.template (소스)을 따릅니다:
Raydium 인스턴스는 SDK의 파사드입니다. 아래의 모든 데모에서 사용됩니다. 이 인스턴스는 api-v3.raydium.io에서 토큰 목록과 수수료 설정을 느리게 가져옵니다. 오프라인 환경에서는 자체 데이터로 시드할 수 있습니다.

CPMM 풀 생성

소스: src/cpmm/createCpmmPool.ts
SDK가 자동으로 처리하는 몇 가지 작업:
  • 풀 생성 전에 민트를 token0/token1 순서로 정렬합니다.
  • 일회성 create_pool_feepoolFeeAccount에 지불합니다.
  • 호출자의 연결된 토큰 계정이 누락된 경우 생성합니다.
  • 각 쪽에 맞는 토큰 프로그램(SPL Token 또는 Token-2022)을 선택합니다.
확인 후 다음을 사용하여 실시간 풀 상태를 가져올 수 있습니다:

스왑 (기본 입력)

소스: src/cpmm/swap.ts
참고: SDK는 항상 getPoolInfoFromRpc 내에서 RPC에서 풀 상태를 다시 가져옵니다. 서명하려는 트랜잭션에 대해 api-v3.raydium.io에서 호가를 제시하지 마세요. 한 블록 오래된 호가는 착지 시간에 ExceededSlippage로 빠질 수 있습니다.

스왑 (기본 출력)

소스: src/cpmm/swapBaseOut.ts

유동성 입금

소스: src/cpmm/deposit.ts
SDK는 풀의 현재 준비금을 사용하여 lpAmountneeded_token_0needed_token_1로 변환하고, 명령어의 maximum_* 인수에 대해 각각을 1 + slippage로 부풀리며, 필요한 경우 ATA 생성을 빌드합니다.

유동성 출금

소스: src/cpmm/withdraw.ts

프로토콜/펀드/크리에이터 수수료 수집

소스: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts 이 명령어는 관리자 또는 크리에이터가 제어하며 일반적으로 Raydium 멀티시그 또는 풀 크리에이터가 보유한 서명자로부터 호출됩니다. SDK는 이를 원시 빌더로 노출합니다:
오프체인에서 PoolState에서 누적된 수수료를 직접 읽을 수 있습니다:

Rust CPI 스켈레톤

자신의 Anchor 프로그램에서 CPMM을 호출하려면 (예: 예치자를 대신하여 스왑하는 볼트), CPI 컨텍스트는 다음과 같습니다. 계정 순서는 products/cpmm/instructions를 따릅니다.
CPI가 PDA로 서명하는 경우 (예: 예치자를 대신하여 볼트를 관리하는 경우), CpiContext::newCpiContext::new_with_signer로 바꾸고 시드를 전달합니다.

일반적인 함정

지원 티켓을 열기 전에 확인할 짧은 체크리스트:
  • 정렬된 민트. 파생된 poolState PDA가 온체인 풀과 일치하지 않으면 민트를 정렬하는 것을 잊었을 가능성이 높습니다.
  • 오래된 API 호가. api-v3.raydium.io에서의 준비금 값을 CurveCalculator.swap에 절대 전달하지 마세요. RPC에서 가져오세요.
  • 잘못된 토큰 프로그램. Token-2022 민트의 금고는 SPL Token이 아닌 Token-2022 프로그램이 소유합니다. 항상 풀의 token_0_program / token_1_program 필드를 사용하세요.
  • 전송 수수료 민트에 대해 과소 계산된 슬리피지. 풀의 어느 쪽이든 Token-2022 전송 수수료 민트인 경우, minimum_amount_out은 금고가 보내는 것이 아니라 사용자가 실제로 받는 것으로 계산되어야 합니다.
  • 스왑에서 NotApproved. PoolState.status를 확인하세요. 관리자가 해당 풀에서 스왑을 일시 중지했을 수 있습니다. 상태 비트마스크는 products/cpmm/instructions를 참조하세요.

다음으로 이동

소스: