메인 콘텐츠로 건너뛰기

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 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →

명령어 요약

태그Discriminator고정값변형
0SwapBaseInWithUserAccount입력레거시
1SwapBaseOutWithUserAccount출력레거시
5CreateSyncNative유틸리티
6CloseTokenAccount유틸리티
8SwapBaseIn입력현재
9SwapBaseOut출력현재
범례:
  • 고정값: 호출자가 정한 금액 (입력 = 정확 입력 amount_in; 출력 = 정확 출력 amount_out).
  • 변형: 레거시 명령어는 경로에 CLMM 홉이 없어도 비어있지 않은 limit_prices 덱이 필요합니다. 현재 명령어 (8 / 9)는 빈 limit_prices를 “검사 없음”으로 처리하는 것이 새 코드에 권장됩니다.
모든 스왑 변형은 사용자가 제어하는 ATA를 통해 중간 토큰을 라우팅합니다 — 사용자는 입력 ATA, 모든 중간 ATA, 출력 ATA를 소유합니다. 새로운 통합의 경우, 특정 이유가 없다면 태그 8 (SwapBaseIn) 또는 **태그 9 (SwapBaseOut)**을 사용하세요.

현재 스왑 명령어 (권장)

새 코드가 사용해야 할 진입점입니다. 인자 구조는 레거시 변형과 동일하지만 limit_prices는 비어있을 수 있습니다.

SwapBaseIn (태그 8)

정확 입력 멀티홉 스왑입니다. 호출자는 amount_in을 정하고, 라우터는 홉 단위로 실행하여 최종 금액이 minimum_amount_out 이상인지 확인합니다. 인자
amount_in:            u64
minimum_amount_out:   u64
limit_prices:         VecDeque<u128>  // 선택사항; 빈 덱은 홉 단위 CLMM 가격 확인 없음을 의미
계정
[
  <user_input_ata> W S,         // 서명자; 잔액 >= amount_in
  <user_intermediate_ata_1> W,  // 중간 홉마다 하나씩
  ... <user_intermediate_ata_N> W,
  <user_output_ata> W,
  <token_program>,

  <pool_program_hop_1>,         // 홉 1이 어떤 AMM 계열인지 식별
  <pool_state_hop_1> W,
  ... <홉 1의 프로그램에 필요한 다른 계정>,

  <pool_program_hop_2>,
  <pool_state_hop_2> W,
  ... <홉 2 계정>,

  ... [홉당 반복]
]
홉당 정확한 계정 목록은 기본 AMM 프로그램 (AMM v4 / CPMM / CLMM / Stable)에 따라 다릅니다. 라우터는 각 프로그램에 CPI하고 프로그램 ID가 지원되는 4가지 프로그램 중 하나와 일치하는지 확인합니다. 사전 조건
  • 호출자는 user_input_ata로 서명합니다.
  • user_input_ata.amount >= amount_in.
  • 각 중간 사용자 ATA가 존재하고 호출자가 소유합니다.
  • 어떤 홉이 CLMM이고 가격 범위 시행을 원하면, CLMM 홉마다 하나의 limit_prices 항목을 제공하세요.
사후 조건
  • user_input_ata 잔액이 amount_in만큼 감소합니다.
  • user_output_ata 잔액이 ≥ minimum_amount_out만큼 증가합니다.
  • 각 중간 ATA는 순 변화가 없습니다 (경로는 이전 홉에서 생성한 금액을 소비합니다).
흔한 오류
  • ExceededSlippage — 최종 출력 < minimum_amount_out.
  • InvalidInput — 빈 경로, 잘못된 형식의 계정, 또는 지원되지 않는 pool_program.
  • SqrtPriceX64 — CLMM 홉의 가격이 제공된 limit_prices 범위를 벗어남 (limit_prices가 비어있지 않을 때만).

SwapBaseOut (태그 9)

정확 출력 멀티홉 스왑입니다. 호출자는 amount_out을 정하고, 라우터는 실제 입력이 maximum_amount_in을 초과하지 않는지 확인합니다. 인자
maximum_amount_in:   u64
amount_out:          u64
limit_prices:        VecDeque<u128>  // 선택사항; 빈 덱은 홉 단위 CLMM 가격 확인 없음을 의미
계정 — 태그 8과 동일한 구조입니다. 사전 조건
  • 호출자는 user_input_ata로 서명합니다. 잔액 >= maximum_amount_in (최악의 경우).
  • 각 중간 및 출력 ATA가 존재합니다.
사후 조건
  • user_input_ata가 필요한 실제 금액만큼 감소합니다 (≤ maximum_amount_in).
  • user_output_ata가 정확히 amount_out만큼 증가합니다.
흔한 오류
  • ExceededSlippage — 필요한 입력이 maximum_amount_in을 초과합니다.
  • InvalidInput, SqrtPriceX64 — 태그 8과 동일합니다.

레거시 스왑 명령어

이 구버전 변형들은 라이브 프로그램에서 여전히 호출 가능하며 완성도를 위해 문서화되었습니다. 새 코드의 경우 태그 8 / 태그 9를 선호하세요. 아래의 두 레거시 변형 모두 CLMM 홉이 없어도 비어있지 않은 limit_prices 덱이 필요하므로 사용하기 번거롭습니다.

SwapBaseInWithUserAccount (태그 0)

정확 입력 멀티홉 스왑으로, 태그 8과 동일한 형태이지만 더 엄격한 limit_prices 요구사항이 있습니다. 인자
amount_in:           u64
minimum_amount_out:  u64
limit_prices:        VecDeque<u128>  // 필수, 비어있지 않음
계정SwapBaseIn (태그 8)과 동일한 형태입니다. 모든 중간 슬롯은 호출자가 소유한 ATA여야 합니다. 사전 조건
  • 호출자는 user_input_ata로 서명합니다.
  • user_input_ata.amount >= amount_in.
  • 모든 중간 사용자 ATA가 존재하고 호출자가 소유합니다.
  • limit_prices는 비어있지 않습니다 (CLMM 홉당 하나의 항목; CLMM 홉이 없으면 자리 표시 값으로 채우세요).
사후 조건
  • user_input_ata 잔액이 amount_in만큼 감소합니다.
  • user_output_ata 잔액이 ≥ minimum_amount_out만큼 증가합니다.
흔한 오류
  • ExceededSlippage.
  • InvalidInput — 이 레거시 변형에서는 빈 limit_prices가 거부됩니다.
  • SqrtPriceX64.

SwapBaseOutWithUserAccount (태그 1)

정확 출력 스왑으로, SwapBaseOut (태그 9)의 레거시 대응물입니다. 인자
maximum_amount_in:   u64
amount_out:          u64
limit_prices:        VecDeque<u128>  // 필수, 비어있지 않음
계정 — 태그 0 / 태그 9와 동일한 형태입니다. 사전 조건
  • 호출자는 user_input_ata로 서명합니다.
  • user_input_ata.amount >= maximum_amount_in.
  • 모든 중간 사용자 ATA가 존재하고 호출자가 소유합니다.
  • limit_prices는 비어있지 않습니다.
사후 조건
  • user_input_ata가 필요한 실제 금액만큼 감소합니다 (≤ maximum_amount_in).
  • user_output_ata가 정확히 amount_out만큼 증가합니다.
흔한 오류
  • ExceededSlippage.
  • InvalidInput.
  • SqrtPriceX64.

유틸리티 명령어

CreateSyncNative (태그 5)

한 단계에서 wSOL ATA를 만들고 (없으면) 동기화합니다. 스왑과 함께 인라인으로 SOL을 래핑할 때 편리합니다. 인자
amount: u64    // 래핑할 SOL (lamports)
계정
[
  <user_wsol_ata> W,            // wSOL용 ATA; 없으면 생성
  <user_native_account> W S,    // 서명자; SOL이 여기서 차감됨
  <wsol_mint>,
  <system_program>,
  <token_program>,
  <associated_token_program>,
]
효과
  • user_wsol_ata가 아직 존재하지 않으면 생성합니다.
  • amount lamports를 서명자의 네이티브 SOL 잔액에서 ATA로 전송합니다.
  • ATA에서 SyncNative를 호출하여 토큰 잔액이 새로운 lamports를 반영하도록 합니다.
흔한 오류
  • InvalidOwneruser_wsol_ata의 소유자가 서명자가 아닙니다.

CloseTokenAccount (태그 6)

토큰 계정을 닫고 렌트를 대상 지갑에 반환합니다. CreateSyncNative와 쌍을 이룹니다: wSOL 레그 스왑 후, CloseTokenAccount를 호출하여 wSOL ATA를 지원하는 렌트를 복구하세요. 인자 — 없음. 계정
[
  <token_account_to_close> W,
  <destination_for_rent> W,
  <owner> S,
  <token_program>,
]
효과
  • token_account_to_close를 닫습니다.
  • 렌트 면제 lamports 잔액 (메인넷의 바닐라 SPL Token 계정의 경우 약 0.00203928 SOL)을 destination_for_rent로 전송합니다.
  • 토큰 계정의 잔액이 0이어야 합니다.
흔한 오류
  • InvalidOwner — 호출자가 ATA 소유자가 아닙니다.
  • 토큰 계정 잔액이 0이 아닙니다.

다음 단계