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 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
AMM v4 지시사항은 일관되게 풀 측면(AMM v4 프로그램 계정)과 마켓 측면(바인드된 마켓의 OpenBook 계정)을 모두 요구합니다. 어느 한쪽 세트를 생략하거나 불일치하면 거래가 취소됩니다. 아래의 계정 목록은 명확성을 위해 Raydium SDK의 필드 이름을 사용하며, 기본 IDL은 때때로 serum_* 접두어를 사용합니다.
지시사항 목록
| 그룹 | 지시사항 | 참고 |
|---|
| 풀 라이프사이클 | Initialize2 | 현재 풀 생성 지시사항(여전히 작동함; UI는 새로운 풀에 CPMM을 기본값으로 함). |
| 유동성 | Deposit | 유동성 추가, LP 수령. |
| 유동성 | Withdraw | LP 소각, 양쪽을 비례로 수령. |
| 스왑 | SwapBaseIn | 정확한 입력 스왑(전체 경로: 볼트 + OpenBook). |
| 스왑 | SwapBaseOut | 정확한 출력 스왑(전체 경로). |
| 스왑 | SwapBaseInV2 | OpenBook을 건너뛰는 정확한 입력 스왑 — 볼트만, 적은 계정. |
| 스왑 | SwapBaseOutV2 | OpenBook을 건너뛰는 정확한 출력 스왑. |
| 유지보수 | SetParams | 관리자: 풀 파라미터 변경. |
| 유지보수 | WithdrawPnl | 누적된 프로토콜 PnL을 PnL 소유자 계정으로 이전. |
| 유지보수 | CreateConfigAccount | 관리자: 프로그램 수준 AmmConfig PDA 초기화. |
| 유지보수 | UpdateConfigAccount | 관리자: 프로그램 수준 설정 파라미터 변경. |
SDK는 사용자 대면 지시사항에 대한 빌더만 노출합니다. 유지보수 지시사항은 일반적으로 Raydium 키퍼에 의해 호출됩니다.
Initialize2
기존 OpenBook 마켓에 바인드된 새로운 AMM v4 풀을 부트스트랩합니다.
인자
nonce: u8
open_time: u64
init_pc_amount: u64
init_coin_amount: u64
계정 (쓰기 가능 W, 서명자 S)
| # | 이름 | W | S | 참고 |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | AmmInfo 계정(시드된 키). |
| 5 | amm_authority | | | 프로그램 PDA. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders(시드됨). |
| 7 | lp_mint | W | | |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | |
| 11 | pool_pc_token_account | W | | |
| 12 | pool_withdraw_queue | W | | |
| 13 | pool_target_orders_account | W | | |
| 14 | pool_lp_token_account | W | | 생성자의 LP ATA. |
| 15 | pool_temp_lp_token_account | W | | 임시 계정. |
| 16 | market_program | | | OpenBook 프로그램. |
| 17 | market | | | OpenBook 마켓. |
| 18 | user_wallet | W | S | 생성자. 임차료 및 초기 예치금을 지불합니다. |
| 19 | user_token_coin | W | | |
| 20 | user_token_pc | W | | |
사후 조건
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, 여기서 INIT_BURN ≈ 100 LP 단위는 순환 밖으로 유지됩니다.
- OpenBook 주문은 아직 게시되지 않았습니다. 첫 번째
MonitorStep이 초기 격자를 게시합니다.
일반적인 오류 — InvalidInput(불일치하는 소수점, 정렬 안 됨), NotApproved, OpenBook 측 InvalidMarketState.
Deposit
유동성을 추가합니다.
인자
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = coin 기반, 1 = pc 기반
// (일부 SDK 변형도 other_amount_min을 허용)
계정 (축약됨)
| # | 이름 | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | amm_target_orders | W | |
| 6 | lp_mint | W | |
| 7 | pool_coin_token_account | W | |
| 8 | pool_pc_token_account | W | |
| 9 | market | | |
| 10 | user_coin_token_account | W | |
| 11 | user_pc_token_account | W | |
| 12 | user_lp_token_account | W | |
| 13 | user_owner | | S |
수학 — 표준 비례식. 풀의 유효 준비금(볼트 + 온북)을 사용하여 SDK는 주어진 LP 양을 생성하는 coin/pc 쌍을 계산하고 max_*에 대해 확인합니다. 어느 쪽이 한도를 초과하면 ExceededSlippage로 취소됩니다.
Withdraw
LP를 소각하고 양쪽을 수령합니다.
인자
계정 — Deposit과 유사하지만 방향이 반대입니다. lp_mint는 소각을 위해 쓰기 가능하며, 사용자 ATA는 수신자입니다. MonitorStep과 유사한 OpenBook에서의 정산 단계가 내부적으로 비례식 수학 전에 발생하므로 상환은 최신 준비금을 사용합니다.
SwapBaseIn
정확한 입력 스왑. 항상 AMM 경로 스왑입니다(OpenBook 매칭을 통해 라우팅되지 않음).
새 코드에는 V2 변형을 사용하세요. AMM v4가 더 이상 OpenBook과 유동성을 공유하지 않기 때문에, 유효성 검사를 위해 전체 OpenBook 계정 세트를 여전히 요구하는 V1 진입점(SwapBaseIn, SwapBaseOut)은 기능적으로 중복됩니다. 새 통합은 훨씬 작은 계정 목록을 사용하고 현재의 표준 실행 경로를 나타내는 SwapBaseInV2 / SwapBaseOutV2를 사용해야 합니다. V1 형식은 완전성을 위해 및 기존 온체인 거래를 읽기 위해 여기에 문서화되어 있습니다.
인자
amount_in: u64
minimum_amount_out: u64
계정 (축약됨)
| # | 이름 | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | W | |
| 5 | amm_target_orders | W | |
| 6 | pool_coin_token_account | W | |
| 7 | pool_pc_token_account | W | |
| 8 | market_program | | |
| 9 | market | W | |
| 10 | market_bids | W | |
| 11 | market_asks | W | |
| 12 | market_event_queue | W | |
| 13 | market_coin_vault | W | |
| 14 | market_pc_vault | W | |
| 15 | market_vault_signer | | |
| 16 | user_source_token_account | W | |
| 17 | user_dest_token_account | W | |
| 18 | user_owner | | S |
수학 — products/amm-v4/math를 참조하세요.
사전 조건
amm.status가 스왑을 허용합니다(상태 비트마스크의 0비트가 설정되지 않음).
amm.state_data.pool_open_time <= now.
amount_in > 0.
user_source_token_account가 최소 amount_in을 보유합니다.
사후 조건
- 사용자는 소스 토큰
amount_in을 잃고, 목적지 토큰 amount_out ≥ minimum_amount_out을 얻습니다.
state_data.swap_*_in_amount 및 swap_*_out_amount 증가(분석용).
need_take_pnl_*이 프로토콜 수수료 지분만큼 증가합니다.
일반적인 오류 — ExceededSlippage, InvalidInput, InvalidStatus, InvalidMarket.
SwapBaseOut
정확한 출력, SwapBaseIn의 역함수. 동일한 계정.
인자
max_amount_in: u64
amount_out: u64
SwapBaseInV2 / SwapBaseOutV2
OpenBook 계정 전체를 건너뛰는 변형 스왑 진입점입니다. 수학은 V1 경로와 동일하지만 계정 목록은 AMM 측면만으로 축소됩니다.
| # | 이름 | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | pool_coin_token_account | W | |
| 6 | pool_pc_token_account | W | |
| 7 | user_source_token_account | W | |
| 8 | user_dest_token_account | W | |
| 9 | user_owner | | S |
풀의 유효 준비금은 여전히 OpenBook에 게시된 토큰을 계산하므로 견적 수학은 변경되지 않습니다. V2를 사용하여 계산을 절약하고 같은 거래에서 OpenBook 크랭크가 필요하지 않을 때 마켓 계정을 전달하지 않으세요. Raydium 라우터는 AMM v4를 통해 라우팅할 때 항상 V2 형식을 사용합니다.
인자는 V1 형식과 동일합니다(SwapBaseInV2에서는 amount_in / minimum_amount_out, SwapBaseOutV2에서는 max_amount_in / amount_out).
MonitorStep (레거시 / 비활성)
더 이상 크랭킹되지 않습니다. AMM v4는 더 이상 OpenBook과 유동성을 공유하지 않으므로 MonitorStep은 할 일이 없습니다 — 풀에 정산, 취소 또는 교체할 게시된 주문이 없습니다. 지시사항은 하위 호환성을 위해 온체인 프로그램에 남아 있지만 Raydium 키퍼는 더 이상 이를 호출하지 않습니다. 수동으로 호출하는 것은 효과적으로 no-op입니다(0으로 설정된 상태 새로고침 제외) 통합자에게 필요하지 않아야 합니다.
원래 이 지시사항은 풀의 OpenBook 상호작용을 크랭킹했습니다.
인자
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
계정 — 스왑을 위한 위의 모든 것 + 관리 OpenBook 계정.
원래 효과(현재 실제로 관련 없음):
- 채워진 모든 주문을 정산했습니다(그들의 수익은 OpenBook CPI를 통해
market_coin_vault/market_pc_vault에서 풀의 볼트로 이동).
- 가격이나 크기가 더 이상
target_orders와 일치하지 않는 오래된 주문을 취소했습니다.
target_orders와 amm_open_orders 사이의 간격을 닫기 위해 새로운 주문을 게시했습니다.
권한이 필요하지 않습니다. 모든 계정이 호출할 수 있으며, 역사적으로 Raydium 키퍼가 정기적으로 수행했습니다.
WithdrawPnl / TakePnl
누적된 프로토콜 수수료의 관리자 수거.
인자
WithdrawPnl은 인자를 취하지 않습니다. need_take_pnl_*을 읽고 정확한 양을 이동합니다.
계정 (축약됨)
| # | 이름 | W | S | |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_config | | | |
| 5 | amm_open_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | pnl_coin_token_account | W | | 수신자, AmmConfig에 저장됨. |
| 9 | pnl_pc_token_account | W | | |
| 10 | pnl_owner | | S | 관리자 멀티시그. |
| 11 | market_program | | | |
| 12 | market | W | | |
| 13 | market_event_queue | W | | |
| 14 | market_coin_vault | W | | |
| 15 | market_pc_vault | W | | |
| 16 | market_vault_signer | | | |
효과
need_take_pnl_coin을 pool_coin_token_account에서 pnl_coin_token_account로 전송합니다.
- pc도 동일합니다.
need_take_pnl_coin 및 need_take_pnl_pc를 0으로 설정합니다.
누적된 PnL이 이미 불변성에서 제외되었으므로 준비금에 변화가 없습니다.
SetParams
관리자 파라미터 변경: 상태 비트마스크, 주문 격자 깊이, 금액 파동, 수수료(드물게) 등. Raydium 멀티시그에 의해 호출됩니다. 인자는 CPMM의 UpdateAmmConfig와 유사한 param: u8 태그 + 페이로드입니다.
상태 변화 매트릭스
| 지시사항 | lp_mint 공급 | 볼트 | PnL 카운터 | OpenBook |
|---|
Initialize2 | 생성자에게 초기 공급 민트됨 | + init_coin_amount, + init_pc_amount | 0 | OpenOrders 생성됨 |
Deposit | + | + 양쪽 | — | 채움 정산 |
Withdraw | − | − 양쪽 | — | 채움 정산 |
SwapBaseIn | — | + in, − out | + pnl 지분 | 격자 재게시 가능 |
SwapBaseOut | — | + in, − out | + pnl 지분 | 격자 재게시 가능 |
MonitorStep | — | 채움 정산 | — | 취소 / 게시 |
WithdrawPnl | — | − (pnl 수거됨) | 0 | — |
SetParams | — | — | — | — |
다음으로 이동
출처: