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 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
불변식
상수곱 마켓 메이커(CPMM)는 두 개의 준비금x와 y를 보유하고 다음을 강제합니다:
k는 거래 전 준비금의 곱입니다. 수수료가 없는 마켓의 경우 x · y = k입니다. 수수료가 있으면 k는 엄격히 증가합니다(LP 수수료의 일부는 준비금에 유지됩니다).
불변식은 의도적으로 기하학적입니다. 한쪽 준비금이 얼마나 작아지든, 다른 쪽은 무한정 증가하여 균형을 맞춥니다. 즉, 풀을 한쪽도 영에 도달할 때까지 배수할 수 없습니다.
가격 책정
현물 가격
언제든지y의 한계 가격을 x로 표시한 것은 곡선의 접선입니다:
x · y = k를 음함수 미분하면 dy/dx = −y/x를 얻습니다. 부호를 무시하면 |dy/dx| = y/x입니다).
이는 무한히 작은 거래에 대해 풀이 제시하는 가격입니다. 유한 거래의 경우, 곡선을 따라 슬리피지로 인해 실현된 가격이 더 악화됩니다.
정확한 입력 스왑 (Δx를 지급하고 Δy를 수령)
수수료가 있을 때,f를 수수료율이라 하면 (예: f = 0.0025는 25 bp):
Δx가 준비금에 들어갑니다. LP 수수료는 x'에 유지됩니다. 프로토콜 수수료는 별도의 회계 단계를 통해 곡선에서 제외됩니다(아래 수수료 회계 방식 참조).
정확한 출력 스왑 (Δy를 수령하고 최소 Δx를 지급)
Δx는 풀이 과소 청구되지 않도록 올림처리됩니다.
슬리피지와 가격 영향
가격 영향은 거래로 인한 풀의 현물 가격 변화를 측정합니다:Δx / x에 대해, 1차 전개는 다음을 제공합니다:
p_before과 effective 사이의 스프레드는 슬리피지입니다. 온체인 slippage UI는 보통 (effective − p_before) / p_before로 표현됩니다. SDK의 computeAmountOut이 이 이유로 amountOut과 priceImpact를 모두 반환합니다.
코드의 불변식 검증
스왑 후, 프로토콜은 다시 검증합니다:수수료 회계 방식
불변식 검사는 LP 수수료가 준비금에 유지된다고 가정합니다. 다른 Raydium 상품들은 프로토콜/펀드/크리에이터 구성을 다르게 처리합니다:CPMM 관례
수수료는1_000_000 분모에서 bp와 유사한 u64 비율입니다. 거래 수수료는 trade_fee_rate(총합)로 나뉘고 protocol_fee_rate, fund_fee_rate, creator_fee_rate를 통해 세분화됩니다. 각 스왑에서:
protocol_fees_*, fund_fees_*, creator_fees_*)에 적립되며 불변식에 사용되는 준비금에서 제외됩니다. 이것이 곡선을 이동하지 않고 수수료를 스윕할 수 있는 방법입니다. products/cpmm/fees를 참조하세요.
AMM v4 관례
수수료는10_000 분모의 numerator / denominator 비율입니다. 분할은 풀 생성 시 고정되고 AmmInfo.fees에 저장됩니다:
pnl_share는 state_data.need_take_pnl_*에 적립되고 준비금에서 제외됩니다. lp_share는 보관소에 유지됩니다. products/amm-v4/fees를 참조하세요.
두 관례 모두 불변식을 같은 방식으로 유지합니다. 차이점은 미학적입니다(분모 + 부분 범주 수).
반올림 규칙
- 수수료 계산은 올림합니다. 풀이 수수료를 절대 과소 청구하지 않도록 합니다.
- 출력 금액은 내림합니다. 불변식이 엄격하게 유지되도록 합니다(
k' > k, 수수료 추가 전에도). - 정확한 출력 입력 금액은 올림합니다. 사용자가 과소 지불하지 않도록 합니다.
x · Δx 곱에 u128을 사용합니다. 최종 결과는 포화 검사를 통해 u64로 다시 캐스트됩니다.
엣지 케이스
빈 풀
첫Deposit 전에, x = y = 0입니다. 스왑 명령어는 예금 전을 거부합니다.
영 출력
Δx가 충분히 작아서 내림 Δy가 0이 되면, 명령어는 ZeroTradingTokens으로 복귀합니다. 이것은 지불 없이 가치를 추출하는 것을 방지합니다. 또한 매우 불균형한 풀의 먼지 스왑이 실패함을 의미합니다.
먼지 LP
첫Deposit은 특별한 처리를 받습니다. 초기 LP 공급을 sqrt(x · y)로 계산하고 “초기 번 (init burn)” 금액(보통 100 LP 단위)을 번합니다. 이것은 “첫 예금자 인플레이션 공격”을 방지합니다(공격자가 보관소에 기부하고 LP 토큰 가치를 인플레이션하는 경우). 후속 예금은 비례 수학을 사용합니다.
차익거래와의 관계
CPMM 풀의 가격은 다음을 통해서만 변경됩니다:- 풀 자체를 통한 거래(사용자가 곡선을 따라 이동).
- 기부(스왑 없이 보관소로 토큰 전송).
작업 예시
예시 1 — 작은 거래, 무시할 수 있는 슬리피지
풀:x = 1_000_000, y = 2_000_000, k = 2·10^12. 수수료 f = 0.0025.
거래 Δx = 1_000:
1000 / 1993.01 ≈ 0.5018. 이전 현물: 0.5. 영향: ~0.36%.
예시 2 — 중간 규모 거래, 가시적 슬리피지
동일 풀,Δx = 100_000 (x의 10%):
100_000 / 181_405 ≈ 0.5513. 영향: ~10.3% — 2 · 10% = 20% 경험칙의 약 절반입니다(경험칙은 수수료가 없는 상수곱 곡선의 최악의 경우 상한입니다. 거래 수수료와 공식의 반전이 이를 낮춥니다).
포인터
products/cpmm/math— CPMM의 특정 반올림 + 수수료 분모 선택.products/amm-v4/math— AMM v4의 OpenBook 통합 준비금이 이 모델을 어떻게 확장하는지.algorithms/slippage-and-price-impact— UI를 위한 슬리피지 허용 크기 조정 전용 페이지.
- Uniswap v2 백서 —
x · y = k의 표준 설명. - Raydium CPMM 프로그램 소스.
- Raydium AMM v4 프로그램 소스.


