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 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
조회 테이블 곡선
Stable AMM은 x·y=k 공식을 희소 조회 테이블(x, y, price 튜플)로 대체합니다. 스왑 가격을 책정할 때 프로그램은:- 예약금에서 풀의 현재 비율을 계산합니다.
- 이진 검색으로 그 비율을 포함하는 두 항목을 찾습니다.
- 그 사이를 선형 보간하여 중간 가격을 얻습니다.
- 수수료를 적용하고 견적을 반환합니다.
테이블 레이아웃 및 이진 검색
ModelDataInfo는 관리자가 인덱싱한 최대 50,000개의 DataElement 항목을 보유합니다. 처음 valid_data_count개만 활성화됩니다. 각 항목:
- 비율 계산:
target_ratio = (x_real * multiplier) / y_real. (element.x * multiplier) / element.y가target_ratio를 포함하는 항목들에 대해 이진 검색.- 괄호
[min_idx, max_idx]를 찾으면 보간합니다.
state.rs::ModelDataInfo::get_mininum_range_by_xy_real에서 약 150줄에 걸쳐 있습니다. 핵심 불변식: 항목이 정렬되어야 합니다(x 오름차순, y 내림차순, price 오름차순) 검색이 작동하려면.
선형 보간
두 테이블 포인트가 비율을 포함하면, 보간은 중간 가격과 예약금 쌍을 계산합니다:스케일링: multiplier
풀 예약금과 가격은 다른 스케일로 저장됩니다.ModelDataInfo의 multiplier 필드가 이를 설명합니다. 일반적인 패턴:
- Coin은 6 decimals, PC는 18 decimals를 가집니다.
- Multiplier = 10^6 (또는 유사함).
- 테이블 항목은 u64 범위에 맞도록 축소된 스케일로 저장됩니다.
스왑 가격 책정: SwapBaseIn 및 SwapBaseOut
SwapBaseIn (정확한 입력)
입력 금액amount_in이 주어지면:
(coin_vault, pc_vault)에서 현재 비율을 얻습니다.- 괄호 테이블 항목을 찾고 보간하여 테이블 공간 비율을 얻습니다.
- 입력을 테이블 공간으로 변환:
dx_table = amount_in * multiplier / ratio. - 새로운 X 좌표에서 테이블을 쿼리하여 새로운 Y를 찾습니다.
dy_table = y_old - y_new.- 다시 변환:
dy_real = dy_table * ratio / multiplier. - 거래 수수료 적용:
dy_output = dy_real - (dy_real * trade_fee_numerator / trade_fee_denominator). dy_output을 반환합니다.
SwapBaseOut (정확한 출력)
대칭: 원하는amount_out이 주어지면 필요한 amount_in을 풉니다.
두 경로 모두 먼저 채워진 OpenBook 주문을 정산합니다(내부 MonitorStep과 유사한 로직을 통해), 따라서 유효한 예약금이 이전 블록에서의 채움을 반영합니다.
수수료 적용
AMM v4와 동일: 전체 도출은products/amm-v4/math를 참조하세요.
pnl_portion은 need_take_pnl_*로 가고 관리자가 WithdrawPnl을 통해 쓸어갑니다. lp_portion은 볼트에 남아있고 k를 증가시켜 LP 토큰 보유자에게 이익을 줍니다.
MonitorStep 및 OpenBook
AMM v4와 마찬가지로MonitorStep은 크랭크 명령어로:
- 보류 중인 OpenBook 주문 채움을 정산합니다(토큰을 볼트에서 풀로 이동).
- 새로운 한정 주문 슬롯 그리드로
AmmInfo.target_orders를 업데이트합니다. - 새로운 그리드를 OpenBook에 게시합니다.
MonitorStep의 컴퓨팅 비용: 약 150k–180k CU (AMM v4와 유사).
요약: 이것이 작동하는 이유
조회 테이블 + 보간 설계는 효율적이고 유연합니다:- 효율성: 이진 검색은 O(log 50,000) ≈ 16회 반복이고, 각 반복은 약 300–500 CU입니다. 보간은 몇 번의 곱셈/나눗셈입니다. 총 견적 비용은 약 5k–15k CU로, 모든 스왑에서 공식을 재계산하는 것보다 훨씬 저렴합니다.
- 유연성: 관리자는 모든 구간별 선형 곡선을 인코딩할 수 있습니다. 스테이블코인 쌍은 1:1 주변에 높은 밀도를 얻습니다; 담보화된 쌍은 맞춤형 곡선을 얻습니다.
- OpenBook 합성: AMM v4의 동일한
MonitorStep/TargetOrders로직이 적용됩니다. 테이블을 통한 가격 발견이 주문 그리드 생성으로 피드됩니다.
raydium-stable/program/src/state.rs, 메소드 get_data_by_x, get_data_by_y, get_dy_by_dx_base_in 등을 참조하세요.
다음 단계
- 계정 —
ModelDataInfo및DataElement필드 참조. - 명령어 — 테이블을 채우기 위한
InitModelData,UpdateModelData. - 수수료 — 수수료 적용 및
WithdrawPnl. products/amm-v4/math— OpenBook 수수료 포함 주문 가격 책정 로직.
raydium-stable/program/src/state.rs(보간 및 이진 검색 구현)raydium-stable/program/src/math.rs(계산기 유틸리티)


