메인 콘텐츠로 건너뛰기
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
문서 변경 로그 항목입니다. 모든 업데이트의 색인은 reference/changelog를 참고하세요. 프로토콜의 역사적 타임라인은 introduction/history-and-milestones를 참고하세요.
AMM v4는 오래전부터 OpenBook(구 Serum)으로 유동성을 공유하지 않았습니다. 하이브리드 오더북 마켓 메이킹 경로는 수년간 휴면 상태였습니다. 이번 업그레이드는 정리 작업입니다. Serum 의존성, 모든 오더북 CPI, 죽은 마켓 메이킹 명령어를 프로그램에서 제거하여 AMM v4를 순수 상수곱(x·y=k) AMM으로 만듭니다. 라이브 거래 동작은 변경되지 않습니다 — 남아있는 OpenBook 주문이 없었기 때문입니다.

통합자를 위한 요약

  • Swap / Deposit / Withdraw는 변경 없이 계속 작동합니다. 기존 계정 레이아웃으로 구성된 트랜잭션은 여전히 실행됩니다 — 제거된 Serum/마켓 계정은 단순히 무시됩니다(검증 없음, CPI 없음). SwapBaseIn / SwapBaseOut은 여전히 17개(+1개 선택) 계정을 예상합니다. DepositWithdraw 레이아웃은 변경되지 않습니다. 기존 흐름을 유지하기 위해 클라이언트 업데이트를 배포할 필요가 없습니다.
  • V2 스왑 엔드포인트로 마이그레이션하세요. SwapBaseInV2 / SwapBaseOutV2는 마켓 계정과 amm_open_orders를 포함하지 않습니다(총 8개 계정). 따라서 트랜잭션이 더 작고 저렴합니다. 라우터/애그리게이터는 V2를 통해 라우팅해야 합니다.
  • WithdrawPnl은 하드 브레이킹 변경입니다(관리자 전용). 17개(+1개 선택) → 10개 계정으로 축소되며 호환성 파싱이 없습니다. 기존 레이아웃이 정렬되지 않아(기존 #5는 amm_open_orders) 검증에 실패합니다. 관리자 도구를 업데이트해야 합니다.
  • SetParams는 하드 브레이킹 변경입니다(관리자 전용). 계정이 [amm, admin]으로 축소되고, param 열거형이 재번호화됩니다(Fees 9 → 2, SetOpenTime 11 → 3). AmmOwner, LastOrderDistance, UpdateOpenOrder 및 그리드 매개변수는 제거됩니다.
  • 여러 명령어는 더 이상 호출할 수 없습니다. Initialize, PreInitialize, MonitorStep, MigrateToOpenBook, WithdrawSrm, SimulateInfo, AdminCancelOrders는 이제 되돌립니다. 풀을 생성하려면 Initialize2를 사용하세요.
  • 온체인 계정 레이아웃은 바이트 안정적이고 오류 코드는 변경되지 않습니다. AmmInfo / StateData는 레이아웃을 유지합니다(기존 OpenBook 필드는 유지되지만 더 이상 사용되지 않음/고정). AmmError 번호는 보존되며, 새로운 NotAllowed만 추가됩니다.

이것이 중요한 이유(거래자, LP, 통합자)

  • 거래자는 스왑 동작이나 가격 책정에 변화를 보지 않습니다 — 상수곱 곡선은 변경되지 않습니다. V2 레이아웃 스왑은 약 8개 적은 계정을 포함하므로 더 저렴합니다.
  • LP는 동일한 예치/인출 경제학을 유지합니다. 유동성은 오래전부터 풀 금고에만 있었으므로 풀 가치는 완전히 온풀입니다. 이 업그레이드는 오래된 마켓 배관만 삭제합니다.
  • 통합자는 더 작고 간단한 트랜잭션과 금고에서 직접 읽는 견적 모델을 얻습니다. 기존 통합은 손상되지 않습니다(관리자 WithdrawPnl / SetParams 제외). 하지만 v1 스왑 호환성 shim은 임시적입니다 — 편의에 따라 V2로 마이그레이션하세요.

명령어 수준 변경

여전히 호출 가능, 레이아웃 변경 없음(하위 호환)

Initialize2, Deposit, Withdraw, SwapBaseIn, SwapBaseOut, CreateConfigAccount, UpdateConfigAccount는 기존 계정 목록을 유지합니다. SwapBaseIn / SwapBaseOut, Deposit, Withdraw에서 OpenBook/마켓 계정은 여전히 위치적으로 허용되지만 더 이상 검증되거나 사용되지 않습니다 — CPI가 발행되지 않고 풀 준비금은 금고만으로 계산됩니다. 계정 개수는 여전히 일치해야 하므로 기존 트랜잭션은 변경 없이 계속 실행됩니다.

SwapBaseInV2 / SwapBaseOutV2 — 권장 경로

마켓 계정과 amm_open_orders를 완전히 생략합니다(8개 계정, 태그 16 / 17). 견적 수학은 v1과 동일합니다. 새로운 통합과 라우터는 V2를 사용해야 합니다.

WithdrawPnl — 17개(+1개 선택) → 10개 계정(⚠️ 하드 브레이킹, 호환성 경로 없음)

amm_open_orders와 6개의 모든 마켓 계정이 제거됩니다. 새로운 고정 10개 계정 관리자 전용 레이아웃은 호환성 파싱이 없습니다. 기존 레이아웃이 정렬되지 않아 InvalidCoinVault 같은 오류로 실패합니다.

SetParams[amm, admin]으로 축소(⚠️ 하드 브레이킹) + 재번호화된 매개변수

권한, 오픈 오더, 타겟 오더, 금고, 모든 마켓 계정이 제거됩니다. param 열거형이 재번호화되고 축소됩니다:
매개변수이전 값새 값
Status00
State11
Fees92
SetOpenTime113
모든 오더북 그리드 매개변수(OrderNum, Depth, AmountWave, MinPriceMultiplier, MaxPriceMultiplier, MinSize, VolMaxCutRatio, InitOrderDepth, SetSwitchTime, ClearOpenTime, Seperate) 및 AmmOwner, LastOrderDistance, UpdateOpenOrder는 제거됩니다. SetParamsInstruction 구조체는 new_pubkeylast_order_distance를 제거합니다.

더 이상 호출 불가능(런타임에 되돌림, 빌더 제거)

명령어태그대체
Initialize0Initialize2
MonitorStep2없음(오더북 크랭크, 폐기)
MigrateToOpenBook5없음
WithdrawSrm8없음(SRM 수수료 할인, 폐기)
PreInitialize10Initialize2
SimulateInfo12오프체인 / SDK 견적
AdminCancelOrders13없음

준비금 / 상태 변경

  • 풀 자산 공식. 총 풀 자산은 이제 금고 잔액 − 미결제 PnL(need_take_pnl)입니다. OpenBook 오픈 오더 항목 — 실제로는 이미 0 — 은 제거됩니다. 견적 코드는 금고 잔액에서 직접 읽을 수 있습니다.
  • 더 이상 사용되지 않는 상태 필드. StateData.total_pnl_pc, total_pnl_coin, orderbook_to_init_time, swap_coin_in_amount, swap_pc_out_amount, swap_acc_pc_fee, swap_pc_in_amount, swap_coin_out_amount, swap_acc_coin_fee는 레이아웃 호환성을 위해 유지되지만 더 이상 업데이트되지 않습니다. swap_* 거래량 카운터에 의존하는 소비자는 거래 로그로 전환해야 합니다.
  • AmmInfo 초기화. coin_lot_size, pc_lot_size, min_size는 이제 0으로 초기화됩니다.
  • 제거된 의존성 및 CPI. serum_dex 크레이트는 Cargo.toml에서 제거됩니다. 모든 Serum DEX CPI(invoke_dex_new_order_v3, invoke_dex_cancel_order_v2, invoke_dex_settle_funds, invoke_dex_init_open_orders, …)는 invokers.rs에서 제거됩니다. 제거된 데이터 구조: LastOrderDistance, SimulateParams, RunCrankData, GetPoolData, GetSwapBaseInData, GetSwapBaseOutData.