Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
2026-07 프로그램 업그레이드 이후, AMM v4의 OpenBook / Serum 의존성이 제거되었습니다. 레거시 v1 SwapBaseIn / SwapBaseOut, Deposit, Withdraw 명령어는 하위 호환성을 위해 기존 계정 레이아웃을 유지합니다: 마켓 계정은 여전히 기존 위치에서 수락되지만, 더 이상 검증되거나 사용되지 않습니다 (CPI가 발행되지 않음). 새로운 통합은 마켓 계정을 완전히 생략하는 V2 스왑 엔드포인트를 사용해야 합니다. 여러 명령어가 제거되었으며 이제 되돌아갑니다 — 변경 로그 항목을 참조하세요. 아래 계정 목록은 Raydium SDK의 필드 이름을 사용합니다. 기본 IDL은 때때로 serum_* 접두사를 사용합니다.

명령어 목록

SDK는 사용자 대면 명령어에 대한 빌더만 노출합니다. 유지보수 명령어는 일반적으로 Raydium 키퍼에 의해 호출됩니다. 제거됨 / 더 이상 호출 불가능 (이제 unimplemented!로 되돌아가며, 클라이언트 빌더가 삭제됨): Initialize (태그 0, Initialize2 사용), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, Initialize2 사용), SimulateInfo (12), AdminCancelOrders (13).

Initialize2

기존 OpenBook 마켓에 바인딩된 새로운 AMM v4 풀을 부트스트랩합니다. 인자
계정 (쓰기 가능 W, 서명자 S) 사후 조건
  • lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, 여기서 INIT_BURN ≈ 100 LP 단위는 유통에서 제외됩니다.
  • OpenBook 주문이 게시되지 않습니다 (오더북 그리드가 제거됨). market_program / market은 여전히 전달되지만 참조 필드로만 저장됩니다. coin_lot_size / pc_lot_size / min_size0으로 초기화됩니다.
일반적인 오류InvalidInput (소수 자릿수 불일치, 정렬되지 않음), NotAllowed.

Deposit

유동성을 추가합니다. 인자
계정 (축약) 수학 — 표준 비례. 풀의 유효 준비금 (금고 + 온북)을 사용하여 SDK는 주어진 LP 양을 생성하는 코인/pc 쌍을 계산하고 max_*에 대해 확인합니다. 어느 쪽이든 한도를 초과하면 ExceededSlippage로 되돌아갑니다.

Withdraw

LP를 소각하고 양쪽을 수령합니다. 인자
계정Deposit과 유사하지만 방향이 반대입니다. lp_mint는 소각을 위해 쓰기 가능하고, 사용자 ATA는 수신자입니다. 계정 레이아웃은 변경되지 않습니다 (마켓 계정은 여전히 위치적으로 전달되고 무시됨). 더 이상 OpenBook에서 정산하는 단계가 없습니다 — 비례 수학은 금고 잔액을 직접 사용합니다.

SwapBaseIn

정확한 입력 스왑. 항상 AMM 경로 스왑입니다 (OpenBook 매칭을 통해 라우팅하지 않음).
새 코드에는 V2 변형을 사용하세요. AMM v4의 OpenBook 의존성이 제거되었으므로, V1 엔드포인트 (SwapBaseIn, SwapBaseOut)는 여전히 전체 17개 계정 목록 (또는 선택적 target-orders 계정 포함 18개)을 예상하지만, OpenBook/마켓 계정은 이제 위치적으로 수락되고 무시됩니다 — 검증되지 않으며 CPI가 발행되지 않습니다. 잘못된 계정 개수를 전달하면 여전히 WrongAccountsNumber로 되돌아가지만, 마켓 계정 내용은 더 이상 확인되지 않습니다. 새로운 통합은 SwapBaseInV2 / SwapBaseOutV2를 사용해야 하며, 이는 훨씬 더 작은 계정 목록을 사용하고 오늘날의 정규 실행 경로를 나타냅니다. V1 형식은 완전성을 위해 그리고 기존 온체인 트랜잭션을 읽기 위해 여기에 문서화되어 있습니다.
인자
계정 (축약) 수학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을 얻습니다.
  • need_take_pnl_*는 프로토콜 수수료 몫만큼 증가합니다.
  • 참고: state_data.swap_*_in_amount / swap_*_out_amount 분석 카운터는 더 이상 업데이트되지 않습니다 — 값이 고정됩니다. 거래량 분석을 위해 거래 로그를 사용하세요.
일반적인 오류ExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (코인/pc 민트 동일).

SwapBaseOut

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

SwapBaseInV2 / SwapBaseOutV2

OpenBook 계정을 완전히 건너뛰는 변형 스왑 엔드포인트 (태그 16 / 17). 수학은 V1 경로와 동일하지만, 계정 목록은 AMM 측과 사용자만으로 축소됩니다 — 8개 계정, amm_open_orders는 전달되지 않습니다: 풀 준비금은 이제 금고 잔액 (미결제 PnL 제외)이므로 견적 수학은 간단하고 v1 경로와 동일합니다. V2를 사용하여 계산을 절약하고 (이제 무시되는) 마켓 계정을 전달하지 않도록 합니다. Raydium 라우터는 AMM v4를 통해 라우팅할 때 항상 V2 형식을 사용합니다. 인자는 V1 형식과 동일합니다 (SwapBaseInV2의 경우 amount_in / minimum_amount_out; SwapBaseOutV2의 경우 max_amount_in / amount_out).

MonitorStep 및 기타 제거된 명령어

제거됨 — 더 이상 호출 불가능. 2026-07 업그레이드 이후, MonitorStep (태그 2)이 프로그램에서 제거되었으며 호출되면 되돌아갑니다 (unimplemented!). 클라이언트 빌더도 삭제되었습니다. MigrateToOpenBook (5), WithdrawSrm (8), SimulateInfo (12), AdminCancelOrders (13), 그리고 레거시 Initialize (0) / PreInitialize (10) 풀 생성 엔드포인트도 마찬가지입니다 — 대신 Initialize2를 사용하세요.
역사적으로, MonitorStep은 풀의 OpenBook 상호작용을 크랭크했습니다: 체결된 주문을 정산하고 (OpenBook CPI를 통해 마켓 금고에서 풀 금고로 수익을 이동), 오래된 주문을 취소하고, target_ordersamm_open_orders 사이의 간격을 좁히기 위해 새 주문을 게시했습니다. OpenBook 의존성이 제거되면서 크랭크할 것이 없어졌고 명령어가 사라졌습니다. 여전히 이를 호출하는 키퍼나 통합은 호출을 제거해야 합니다.

WithdrawPnl / TakePnl

누적된 프로토콜 수수료의 관리자 수거. 인자
  • WithdrawPnl은 인자를 취하지 않습니다. need_take_pnl_*을 읽고 정확한 양을 이동합니다.
호환성 깨짐 (관리자만). 계정 목록이 17개 (+1 선택사항)에서 10개로 축소되었습니다 — amm_open_orders와 6개의 마켓 계정이 제거되었습니다 — 호환성 파싱 없이. 기존 레이아웃이 정렬되지 않아 (기존 #5는 amm_open_orders, 이제 pool_coin_token_account) InvalidCoinVault 같은 오류로 실패합니다. 관리자 도구를 업데이트해야 합니다.
계정 (새로운 10개 계정 레이아웃) 효과
  • need_take_pnl_coinpool_coin_token_account에서 pnl_coin_token_account로 전송합니다.
  • pc도 동일합니다.
  • need_take_pnl_coinneed_take_pnl_pc를 0으로 설정합니다.
  • 로직 변경: 금고 잔액이 누적된 PnL을 충당하기에 부족하면, 명령어는 TakePnlError를 직접 반환합니다 (더 이상 오더북 상태를 조작하지 않음).
누적된 PnL이 이미 불변식에서 제외되었으므로 준비금에 변화가 없습니다.

SetParams

Raydium 멀티시그에 의해 호출되는 관리자 매개변수 변경. 인자는 param: u8 태그 + 페이로드입니다.
호환성 깨짐 (관리자만). 계정 목록이 [amm (W), admin (S)]로만 축소되었습니다 (권한, 오픈 오더, 타겟 오더, 금고, 모든 마켓 계정이 제거됨). param 열거형이 재번호 매기고 정리되었습니다: Status = 0, State = 1, Fees = 2 (이전 9), SetOpenTime = 3 (이전 11). 모든 오더북 그리드 매개변수와 AmmOwner, LastOrderDistance, UpdateOpenOrder가 제거되었으며, SetParamsInstruction 구조체는 new_pubkeylast_order_distance를 삭제했습니다. 관리자 도구를 업데이트해야 합니다.

상태 변경 매트릭스

OpenBook 열이 사라졌습니다 — 더 이상 어떤 명령어도 오더북을 건드리지 않습니다.

다음 단계

출처: