메인 콘텐츠로 건너뛰기

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 수령.
유동성WithdrawLP 소각, 양쪽을 비례로 수령.
스왑SwapBaseIn정확한 입력 스왑(전체 경로: 볼트 + OpenBook).
스왑SwapBaseOut정확한 출력 스왑(전체 경로).
스왑SwapBaseInV2OpenBook을 건너뛰는 정확한 입력 스왑 — 볼트만, 적은 계정.
스왑SwapBaseOutV2OpenBook을 건너뛰는 정확한 출력 스왑.
유지보수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)
#이름WS참고
1token_programSPL Token.
2system_program
3rent
4ammWAmmInfo 계정(시드된 키).
5amm_authority프로그램 PDA.
6amm_open_ordersWOpenBook OpenOrders(시드됨).
7lp_mintW
8coin_mint
9pc_mint
10pool_coin_token_accountW
11pool_pc_token_accountW
12pool_withdraw_queueW
13pool_target_orders_accountW
14pool_lp_token_accountW생성자의 LP ATA.
15pool_temp_lp_token_accountW임시 계정.
16market_programOpenBook 프로그램.
17marketOpenBook 마켓.
18user_walletWS생성자. 임차료 및 초기 예치금을 지불합니다.
19user_token_coinW
20user_token_pcW
사후 조건
  • 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을 허용)
계정 (축약됨)
#이름WS
1token_program
2ammW
3amm_authority
4amm_open_orders
5amm_target_ordersW
6lp_mintW
7pool_coin_token_accountW
8pool_pc_token_accountW
9market
10user_coin_token_accountW
11user_pc_token_accountW
12user_lp_token_accountW
13user_ownerS
수학 — 표준 비례식. 풀의 유효 준비금(볼트 + 온북)을 사용하여 SDK는 주어진 LP 양을 생성하는 coin/pc 쌍을 계산하고 max_*에 대해 확인합니다. 어느 쪽이 한도를 초과하면 ExceededSlippage로 취소됩니다.

Withdraw

LP를 소각하고 양쪽을 수령합니다. 인자
amount: u64    // 소각할 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
계정 (축약됨)
#이름WS
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8market_program
9marketW
10market_bidsW
11market_asksW
12market_event_queueW
13market_coin_vaultW
14market_pc_vaultW
15market_vault_signer
16user_source_token_accountW
17user_dest_token_accountW
18user_ownerS
수학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_amountswap_*_out_amount 증가(분석용).
  • need_take_pnl_*이 프로토콜 수수료 지분만큼 증가합니다.
일반적인 오류ExceededSlippage, InvalidInput, InvalidStatus, InvalidMarket.

SwapBaseOut

정확한 출력, SwapBaseIn의 역함수. 동일한 계정. 인자
max_amount_in: u64
amount_out:    u64

SwapBaseInV2 / SwapBaseOutV2

OpenBook 계정 전체를 건너뛰는 변형 스왑 진입점입니다. 수학은 V1 경로와 동일하지만 계정 목록은 AMM 측면만으로 축소됩니다.
#이름WS
1token_program
2ammW
3amm_authority
4amm_open_orders
5pool_coin_token_accountW
6pool_pc_token_accountW
7user_source_token_accountW
8user_dest_token_accountW
9user_ownerS
풀의 유효 준비금은 여전히 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_ordersamm_open_orders 사이의 간격을 닫기 위해 새로운 주문을 게시했습니다.
권한이 필요하지 않습니다. 모든 계정이 호출할 수 있으며, 역사적으로 Raydium 키퍼가 정기적으로 수행했습니다.

WithdrawPnl / TakePnl

누적된 프로토콜 수수료의 관리자 수거. 인자
  • WithdrawPnl은 인자를 취하지 않습니다. need_take_pnl_*을 읽고 정확한 양을 이동합니다.
계정 (축약됨)
#이름WS
1token_program
2ammW
3amm_authority
4amm_config
5amm_open_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8pnl_coin_token_accountW수신자, AmmConfig에 저장됨.
9pnl_pc_token_accountW
10pnl_ownerS관리자 멀티시그.
11market_program
12marketW
13market_event_queueW
14market_coin_vaultW
15market_pc_vaultW
16market_vault_signer
효과
  • need_take_pnl_coinpool_coin_token_account에서 pnl_coin_token_account로 전송합니다.
  • pc도 동일합니다.
  • need_take_pnl_coinneed_take_pnl_pc를 0으로 설정합니다.
누적된 PnL이 이미 불변성에서 제외되었으므로 준비금에 변화가 없습니다.

SetParams

관리자 파라미터 변경: 상태 비트마스크, 주문 격자 깊이, 금액 파동, 수수료(드물게) 등. Raydium 멀티시그에 의해 호출됩니다. 인자는 CPMM의 UpdateAmmConfig와 유사한 param: u8 태그 + 페이로드입니다.

상태 변화 매트릭스

지시사항lp_mint 공급볼트PnL 카운터OpenBook
Initialize2생성자에게 초기 공급 민트됨+ init_coin_amount, + init_pc_amount0OpenOrders 생성됨
Deposit++ 양쪽채움 정산
Withdraw− 양쪽채움 정산
SwapBaseIn+ in, − out+ pnl 지분격자 재게시 가능
SwapBaseOut+ in, − out+ pnl 지분격자 재게시 가능
MonitorStep채움 정산취소 / 게시
WithdrawPnl− (pnl 수거됨)0
SetParams

다음으로 이동

출처: