메인 콘텐츠로 건너뛰기

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 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
Raydium의 핵심 상품들은 가격 책정을 위해 외부 오라클에 의존하지 않습니다 — 풀 상태 자체가 오라클입니다. 다만 API와 SDK는 사용자에게 표시할 USD 가격 책정을 위해 외부 오라클을 사용하며, Token-2022 민트는 SPL Token보다 풍부한 제어 기능을 제공하는데, 그 중 일부는 풀의 신뢰 모델을 근본적으로 변경합니다. 이 페이지에서는 둘 다를 다룹니다.

Raydium의 오라클

내부: 풀이 오라클이다

AMM v4, CPMM, CLMM의 경우, 프로토콜의 “현재 가격” 정의는 순전히 풀 상태에서 도출됩니다:
  • AMM v4 / CPMM: price = vaultB_balance / vaultA_balance (소수 자릿수 포함).
  • CLMM: price = (sqrtPriceX64 / 2^64)^2 × 10^(decimalsA - decimalsB).
스왑, 입금 또는 출금 중에 외부 오라클을 참조하지 않습니다. 이것이 AMM 설계의 “신뢰 불필요” 부분입니다: 풀 수학이 정확하면 가격 피드의 외부 조작이 이를 손상시킬 수 없습니다.

CLMM ObservationState를 TWAP 오라클로

CLMM 풀은 과거 sqrt_price 스냅샷을 기록하는 ObservationState 계정을 유지합니다. 다른 프로그램은 이를 활용하여 조작에 강한 시간 가중 평균 가격을 도출할 수 있습니다:
// 단순화된 TWAP: (현재, N슬롯 전)의 평균.
let obs_now  = load_observation(pool, Clock::slot());
let obs_past = load_observation(pool, Clock::slot() - 300);  // ~2분 전
let twap = (obs_now.price_cumulative - obs_past.price_cumulative)
         / (obs_now.slot - obs_past.slot);
이것은 Uniswap V3가 사용하는 동일한 패턴입니다. 단기 가격 조작(고래가 임시로 풀을 움직이는 경우)은 수백 개의 슬롯에 평균화되므로 TWAP을 손상시키지 않습니다. CLMM 민트에 더 안전한 가격 피드가 필요한 프로그램(청산 오라클, 옵션 가격 책정 등)은 즉시 가격이 아니라 ObservationState TWAP을 사용해야 합니다. CLMM 즉시 가격을 합성에 사용하지 마세요. 단일 대규모 스왑은 얕은 풀에서 현물 가격을 10% 이상 변동시킬 수 있으며, TWAP은 이를 완화합니다. 데이터 레이아웃은 products/clmm/accounts#observation-state를 참고하세요.

외부: 프론트엔드/API의 USD 가격 책정

Raydium의 프론트엔드와 api-v3.raydium.io는 USD 값(TVL, 수수료 APR, $ 거래량)을 표시합니다. 이들은 다음에서 나옵니다:
  • Pyth — 주요 민트의 기본 오라클.
  • Jupiter의 집계 가격 — 폴백.
  • 풀에서 도출한 가격 — 외부 오라클 커버리지가 없는 장꼬리 민트용.
USD 표시는 순전히 시각적 목적입니다 — 온체인 작업은 절대 Pyth를 읽지 않으며 풀 수학은 USD를 사용하지 않습니다. Pyth가 민트에 대한 데이터 제공을 중단하면 UI는 ”—“를 표시합니다. 풀은 계속 작동합니다.

오라클 조작은 Raydium 풀에 적용되지 않음

풀 상태가 오라클이므로, 버그 현상금 문헌이 의미하는 의미에서 “오라클 공격”은 없습니다 — 공격자가 손상시킬 수 있는 외부 조작 가능한 데이터 소스가 없습니다. 풀 상태에 대한 경제적 공격(플래시 론 스타일 조작)은 security/attack-vectors에서 다룹니다.

Token-2022 확장 위험

SPL Token-2022(일명 “Token Extensions”)는 확장을 통해 민트에 구성 가능한 동작을 추가합니다. 일부 확장은 이를 포함하는 풀의 신뢰 속성을 변경합니다. Raydium 프로그램은 일부는 자동으로 처리하고 다른 일부는 사용자 경고로 표시합니다.

전송 수수료

정의: 모든 전송에서 발신자가 민트 권한에 지급하는 구성 가능한 수수료(전송의 백분율, 절대 용어로 maximum_fee 상한까지). 위험: 수수료는 민트의 수수료 설정 권한자가 변경할 수 있습니다. 수수료가 1%일 때 유동성을 입금했는데 권한자가 50%로 올리면, 후속 스왑은 예상보다 훨씬 적게 반환됩니다. Raydium의 완화: 풀은 스왑 시간에 현재 transferFeeConfig를 읽고 수학을 조정합니다. 풀 자체는 손상되지 않지만 사용자는 더 나쁜 결과를 봅니다. 수수료 권한자는 지연된 수수료 변경을 예약할 수 있으며, Raydium의 UI는 임박한 수수료 변경이 있는 풀을 표시합니다. 잔존 위험: 진행 중인 스왑 중에 악의적인 수수료 권한자가 수수료를 변경하면, minimumAmountOut이 하향선을 보호합니다 — tx가 되돌아갑니다. 민트 발행자를 신뢰하면 괜찮습니다. 신뢰하지 않으면 LP를 하지 마세요.

전송 훅

정의: 전송은 별도의 프로그램(훅)을 호출하여 사용자 정의 검증 또는 부작용을 실행합니다. 위험: 훅은 스왑 중 풀의 내부 전송을 포함한 모든 전송을 차단할 수 있습니다. 업그레이드 가능한 훅은 나중에 악의적이 될 수 있습니다 — 입금 시점에 안전했던 것이 출금 시점에 스왑 불가능할 수 있습니다. Raydium의 완화: Raydium은 훅 프로그램 ID를 풀 상태에 나열합니다. 통합은 훅 프로그램 ID를 사용자에게 표시하여 예상된 (업그레이드 불가능, 감사됨) 프로그램인지 확인할 수 있도록 해야 합니다. 잔존 위험: 훅이 업그레이드 가능하고 권한자가 적대적이 되면 풀을 동결할 수 있습니다. Raydium은 전송 훅이 있는 풀을 차단하지 않지만 표시합니다. 전송 훅 풀에 LP하는 것은 훅이 안전함을 확인한 경우에만 하세요.

동결 권한

정의: 민트의 동결 권한은 그 민트를 보유한 모든 토큰 계정을 동결하여 모든 전송을 방지할 수 있습니다. 위험: 풀의 볼트 계정을 동결할 수 있는 동결 권한은 사실상 풀을 종료시킵니다 — 사용자는 출금할 수 없고 거래자는 스왑할 수 없습니다. 이는 SPL Token Token-2022에 적용됩니다. Token-2022로 새로운 것은 아니지만 여전히 위험입니다. Raydium의 완화: 프로그램 수준에서는 없습니다 — SPL Token의 동결은 풀에 불투명합니다. Raydium의 UI는 동결 가능한 민트가 있는 풀에 경고합니다. 입금하는 사용자는 동결 권한이 null이거나 신뢰할 수 있는 멀티시그인지 확인해야 합니다 (USDC는 동결 권한을 가지고 있습니다. 발행자 Circle입니다). 잔존 위험: 동결 가능한 민트는 동결될 수 있다는 것을 수용하세요. 주요 민트(USDC, USDT, USDY)는 발행자가 보유한 동결 권한을 가지며 규제 준수에만 사용됩니다. 이는 보통 수용 가능합니다.

영구 위임자

정의: 승인 없이 모든 보유자로부터 토큰을 전송할 수 있는 영구 위임자를 지정하는 Token-2022 확장. 위험: 영구 위임자는 언제든지 풀의 볼트를 비울 수 있습니다. Raydium의 완화: CPMM과 CLMM은 영구 위임자를 가진 민트로 풀을 생성하는 것을 거부합니다. 초기화가 되돌아갑니다. 실행 중인 Raydium 풀에는 영구 위임자 민트가 없습니다. 잔존 위험: 없음(검사가 정확한 한, 양쪽 감사에서 확인됨).

비전송 가능

정의: 보유자가 전송할 수 없는 민트. 위험: 풀은 사용자 ATA와 풀 볼트 사이에서 토큰을 이동하려면 전송 가능성에 의존합니다. 비전송 가능한 민트는 자명하게 풀을 깨뜨립니다. Raydium의 완화: 풀 생성은 비전송 가능한 민트에서 되돌아갑니다. 팜도 비전송 가능한 스테이킹 민트를 거부합니다.

기본 동결 / 폐쇄 권한 / 이자 베어링

Raydium이 처리하는 영향이 낮은 확장:
  • 기본 동결: 새 토큰 계정은 사용 전에 해제되어야 합니다. Raydium은 ATA 생성 시 이를 투명하게 처리합니다.
  • 폐쇄 권한: 지정된 권한은 토큰 계정을 폐쇄할 수 있습니다. 풀 볼트는 풀의 프로그램 유도 권한자가 소유하므로, 민트의 폐쇄 권한은 볼트에 적용되지 않습니다.
  • 이자 베어링: 표시된 잔액은 이자가 부과됩니다. amount는 고정되지만 uiAmount가 증가합니다. Raydium 풀 수학은 이자 부과가 아닌 amount를 사용합니다. 표시는 별도로 조정됩니다.

민트 권한

Token-2022 특정 위험은 아니지만 주목할 가치가 있습니다: 민트가 민트 권한을 유지하면, 보유자는 언제든지 공급을 팽창시킬 수 있습니다. 출시된 토큰의 경우, 이는 풀의 현재 가격에서 LP를 희석시킵니다. LaunchLab은 민트 권한이 null이 아닌 한 출시를 생성하는 것을 거부합니다.

UI의 위험 레이블

Raydium의 프론트엔드는 각 풀에 적용 가능한 위험 태그를 표시합니다:
  • TRANSFER_FEE — 0이 아닌 전송 수수료.
  • TRANSFER_HOOK — 전송 훅 확장이 활성.
  • FREEZE — 민트가 동결 권한을 가짐.
  • MINT — 민트가 민트 권한을 가짐 (공급이 팽창할 수 있음).
  • CLOSE — 민트가 폐쇄 권한을 가짐.
Raydium의 API를 사용하는 집계자는 이러한 레이블을 사용자에게 표시해야 합니다.

통합자 체크리스트

Raydium 풀과 합성하기 전:
  • getMint(mint, TOKEN_2022_PROGRAM_ID)를 통해 각 민트의 확장을 확인합니다.
  • permanent_delegate 또는 non_transferable을 가진 민트가 있는 풀을 건너뜁니다(이들은 Raydium에 존재하지 않아야 하지만 심층 방어).
  • 양쪽 민트의 동결 권한을 확인합니다. null 또는 신뢰할 수 있는 권한만.
  • 전송 훅 풀의 경우 훅 프로그램 ID를 화이트리스트와 확인합니다.
  • 전송 수수료 시나리오(수수료가 최대로 가면?)에 대해 노출을 규모화합니다.
  • 현물 가격이 아니라 CLMM TWAP(ObservationState)을 파생 상품 가격 책정에 사용합니다.

잔존 위험 수용 성명서

Raydium의 프로그램은 프로그램 수준에서 시행할 수 있는 것을 시행합니다:
  • 풀 생성은 permanent_delegate / non_transferable 민트를 거부합니다.
  • 스왑 수학은 현재 전송 수수료에 맞게 정확하게 조정됩니다.
  • ObservationState는 조작 저항성 오라클을 제공합니다.
사용자가 수용해야 할 잔존 위험:
  • 민트의 동결 권한은 풀을 동결할 수 있습니다.
  • 민트의 수수료 권한은 언제든지 전송 수수료(maximum_fee 상한까지)를 올릴 수 있습니다.
  • 전송 훅 프로그램은 악의적 코드로 업그레이드될 수 있습니다.
  • 이자 베어링 민트의 부과 속도는 변경될 수 있습니다.
올바른 방어는 LP 전 실사입니다: 신뢰하지 않는 집중된 권한을 가진 민트가 있는 풀에 입금하지 마세요. Raydium은 당신을 위해 그 신뢰를 결정할 수 없습니다. 관련된 사실만 표시할 수 있습니다.

포인터

출처:
  • SPL Token-2022 확장 문서.
  • 풀 초기화 검증 로직: src/raydium/cpmm/instrument.ts, src/raydium/clmm/instrument.ts.
  • Pyth — 프론트엔드에서 사용되는 외부 가격 오라클.