메인 콘텐츠로 건너뛰기
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
Stable AMM은 자체 프로그램 ID를 가진 독립적인 프로그램입니다. AMM v4 프로그램의 모드가 아니며, AMM v4를 “통해” 거래되지 않습니다. 별도로 배포, 업그레이드, 호출됩니다. AMM v4와는 수수료 및 계정 레이아웃 규칙에서만 유사합니다.
2026-06-22 업그레이드 — 사용되지 않는 OpenBook(마켓) 코드 제거. Stable AMM은 오래전부터 OpenBook에 주문을 게시하지 않았습니다. 오더북 마켓 메이킹 경로는 수년간 휴면 상태였습니다. 이 업그레이드는 남은 마켓 관련 계정과 코드를 삭제합니다. 라이브 거래 동작은 변경하지 않습니다.통합자를 위한 두 가지 결과:
  1. 더 작은 계정 레이아웃. SwapBaseIn / SwapBaseOut (18 → 9), Deposit (14 → 12), Withdraw (21/22 → 12)는 사용되지 않는 Serum/마켓 계정을 제거합니다. 이전 레이아웃은 하위 호환성을 위해 여전히 파싱됩니다. WithdrawPnl (16 → 10)은 호환성 경로가 없는 하드 브레이킹 변경입니다(관리자 전용).
  2. 대부분의 명령어가 제거됩니다. SwapBaseIn, SwapBaseOut, Deposit, Withdraw, WithdrawPnl만 호출 가능합니다. 다른 모든 명령어는 더 이상 호출할 수 없습니다.
변경 로그: reference/changelog.

명령어 목록

호출 가능

명령어카테고리참고
Deposit유동성유동성 추가, LP 수령. 새로운 12계정 레이아웃; 이전 14계정 레이아웃도 호환됨.
Withdraw유동성LP 소각, 양쪽 모두 수령. 새로운 12계정 레이아웃; 이전 21/22계정 레이아웃도 호환됨.
SwapBaseIn스왑정확한 입력 스왑. 새로운 9계정 레이아웃; 이전 18계정 레이아웃도 호환됨.
SwapBaseOut스왑정확한 출력 스왑. 새로운 9계정 레이아웃; 이전 18계정 레이아웃도 호환됨.
WithdrawPnl관리자누적된 프로토콜 수수료 회수. 새로운 10계정 레이아웃 (하드 브레이킹 — 이전 레이아웃 호환성 없음).

제거됨(더 이상 호출 불가)

2026-06-22 업그레이드에서 제거되었으며 더 이상 호출할 수 없습니다. 제거된 명령어를 참조하세요.
명령어이전 카테고리이전 목적
Initialize라이프사이클풀 생성.
PreInitialize라이프사이클레거시 사전 할당 헬퍼.
InitModelData모델 설정조회 테이블 생성 및 초기화.
UpdateModelData모델 설정호출당 최대 5개 테이블 요소 채우기.
MonitorStep크랭크OpenBook 체결 정산, 주문 재게시.
SetParams관리자풀 파라미터 변경.
WithdrawSrm레거시SRM 수수료 할인 리베이트 회수.
SimulateInfo진단읽기 전용 견적 헬퍼.

Deposit

유동성을 추가하고 LP 토큰을 수령합니다. 인자
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base on coin, 1 = base on pc
계정 — 새로운 레이아웃, 12개 계정 (쓰기 가능 W, 서명자 S)
#이름WS참고
0token_programSPL Token.
1ammW풀의 AmmInfo.
2amm_authority프로그램 전역 PDA.
3amm_target_ordersW
4amm_lp_mintWLP 민트.
5amm_coin_vaultW풀 코인 볼트.
6amm_pc_vaultW풀 pc 볼트.
7model_data_account읽기 전용 조회 테이블.
8user_source_coinW사용자의 코인 입력.
9user_source_pcW사용자의 pc 입력.
10user_dest_lpW사용자의 LP ATA.
11user_source_ownerS트랜잭션 서명자.
호환성: amm_open_orders (이전 #3)와 serum_market (이전 #9)이 제거되었습니다. 14개 계정이 전달되면 명령어는 이전 14계정 레이아웃으로 파싱되며, Serum 계정은 무시됩니다. 수학 — 조회 테이블을 사용한 표준 비례 계산으로 비율을 계산합니다. SDK는 원하는 LP 양에 대한 코인/pc 쌍을 계산하고 최대 한도에 대해 확인합니다.

Withdraw

LP를 소각하고 양쪽을 비례적으로 수령합니다. 인자
amount: u64            // 소각할 LP 토큰
계정 — 새로운 레이아웃, 12개 계정 (쓰기 가능 W, 서명자 S)
#이름WS참고
0token_programSPL Token.
1ammW풀의 AmmInfo.
2amm_authority프로그램 전역 PDA.
3amm_target_ordersW
4amm_lp_mintWLP 민트.
5amm_coin_vaultW풀 코인 볼트.
6amm_pc_vaultW풀 pc 볼트.
7model_data_account읽기 전용 조회 테이블.
8user_source_lpW사용자의 LP 소스.
9user_dest_coinW사용자의 코인 출력.
10user_dest_pcW사용자의 pc 출력.
11user_lp_ownerS트랜잭션 서명자.
호환성: 9개의 Serum 계정(amm_open_orders, serum_program, serum_market, serum_coin_vault, serum_pc_vault, serum_vault_signer, serum_event_q, serum_bids, serum_asks)이 제거되었습니다. 이전 21- 또는 22계정 레이아웃은 여전히 허용됩니다. 다만 22번째 선택적 referrer_pc_wallet 계정에 대한 리페럴 수수료 로직이 제거되었습니다 — 여전히 전달할 수 있지만 더 이상 적용되지 않습니다. 전제 조건
  • user_source_lp는 최소 amount를 보유합니다.
사후 조건
  • amount LP 토큰이 소각됩니다.
  • 사용자는 현재 비례에 따라 코인 및 pc 양을 수령하며, 누적된 수수료로 조정됩니다.

SwapBaseIn

조회 테이블을 사용한 정확한 입력 스왑으로 가격을 책정합니다. 인자
amount_in: u64
minimum_amount_out: u64
계정 — 새로운 레이아웃, 9개 계정 (쓰기 가능 W, 서명자 S)
#이름WS참고
0spl_token programSPL Token.
1ammW풀의 AmmInfo.
2amm_authority프로그램 전역 PDA.
3amm_coin_vaultW풀 코인 볼트.
4amm_pc_vaultW풀 pc 볼트.
5model_data_account읽기 전용 조회 테이블.
6user_source_tokenW사용자의 입력 토큰 계정.
7user_destination_tokenW사용자의 출력 토큰 계정.
8user_source_ownerS사용자(트랜잭션 서명자).
호환성: 9개의 OpenBook 계정(amm_open_orders, serum_program, serum_market, serum_bids, serum_asks, serum_event_queue, serum_coin_vault, serum_pc_vault, serum_vault_signer)이 제거되었습니다. 전달된 계정 수가 9가 아니면 명령어는 이전 18계정 레이아웃으로 파싱됩니다. Serum 계정은 여전히 해당 위치를 차지해야 하지만 더 이상 검증되거나 사용되지 않습니다. 전제 조건
  • amm.status가 스왑을 허용합니다.
  • user_source_token은 ≥ amount_in을 보유합니다.
사후 조건
  • 사용자는 amount_in을 잃고, amount_out ≥ minimum_amount_out을 얻습니다.
  • 풀 수수료는 need_take_pnl_* 카운터를 증가시킵니다.
수학products/stable/math에 설명된 조회 테이블 보간.

SwapBaseOut

정확한 출력 스왑(SwapBaseIn의 역). 동일한 9계정 레이아웃, 다른 수학 방향. 인자
max_amount_in: u64
amount_out: u64

WithdrawPnl

관리자 전용. need_take_pnl_*에서 누적된 프로토콜 수수료를 지정된 PnL 계정으로 회수합니다.
하드 브레이킹 변경 — 호환성 경로 없음. 이 명령어는 이전 레이아웃에 대한 파싱이 없습니다. 이전 레이아웃을 보내면 계정 정렬 오류로 인해 InvalidTokenCoin과 같은 검증 오류로 실패합니다(이전 #3은 open_orders였음). WithdrawPnl을 호출하는 관리자 도구는 반드시 새로운 10계정 레이아웃으로 업데이트되어야 합니다.
인자 — 없음(상태 기반). 계정 — 새로운 레이아웃, 고정 10개 계정, 관리자 전용 (쓰기 가능 W, 서명자 S)
#이름WS참고
0spl_token programSPL Token.
1ammW풀의 AmmInfo.
2amm_authority프로그램 전역 PDA.
3amm_coin_vaultW풀 코인 볼트.
4amm_pc_vaultW풀 pc 볼트.
5amm_target_ordersW
6model_data조회 테이블.
7user_coinW관리자의 코인 계정(수수료 수령).
8user_pcW관리자의 pc 계정(수수료 수령).
9amm_adminS풀 관리자(서명자).
로직 변경: 풀의 사용 가능한 자금이 누적된 PnL을 인출하기에 부족할 때, 풀은 더 이상 CancelAllOrdersState / Disabled로 전환되지 않습니다. 명령어는 TakePnlError를 직접 반환합니다. 선택적 referrer_pc_wallet도 제거되었습니다. 전제 조건
  • amm_admin이 인증되어야 합니다.
사후 조건
  • need_take_pnl_coinneed_take_pnl_pc가 관리자의 계정으로 전송됩니다.
  • 카운터가 0으로 설정됩니다.

제거된 명령어

다음 명령어들은 2026-06-22 업그레이드에서 제거되었으며 더 이상 호출할 수 없습니다. 통합자가 과거 트랜잭션 및 SDK에서 이들을 인식할 수 있도록 여기에 문서화되어 있습니다.
  • Initialize — 이전에는 새로운 Stable AMM 풀을 부트스트랩했습니다. 제거됨.
  • PreInitialize — 레거시 사전 할당 헬퍼. 제거됨.
  • InitModelData — 이전에는 ModelDataInfo 조회 테이블을 생성하고 초기화했습니다. 제거됨.
  • UpdateModelData — 이전에는 호출당 최대 5개의 조회 테이블 요소를 채웠습니다. 제거됨.
  • MonitorStep — 체결을 정산하고 주문 그리드를 재게시한 OpenBook 크랭크. 풀이 OpenBook에 게시를 중단한 후 이미 오래 휴면 상태였으며, 이제 제거됨.
  • SetParams — 관리자 파라미터 변경(상태, 수수료, 소유자, 모델 데이터 키 등). 제거됨.
  • WithdrawSrm — 초기 Serum 시대 풀에서 SRM 수수료 할인 리베이트를 회수했습니다. 제거됨.
  • SimulateInfo — 읽기 전용 견적 헬퍼. 제거됨. 견적을 위해 SDK의 오프체인 stable-curve 헬퍼를 사용하세요(코드 데모 참조).

다음 단계

  • 계정 — 계정 필드 레이아웃 및 크기.
  • 수학 — 조회 테이블 보간 로직.
  • 코드 데모 — SDK에서 이들을 호출하는 방법.
출처:
  • raydium-stable/program/src/instruction.rs (enum 및 pack/unpack)
  • raydium-stable/program/src/processor.rs (실행 로직)