이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
2026-07 업그레이드 이후, AMM v4의 OpenBook / Serum 의존성이 제거되었습니다 — 더 이상 어떤 명령어도 OpenBook 상태를 읽거나 쓰지 않습니다. 아래의 마켓 계정들은 레거시 v1 명령어 레이아웃의 위치 플레이스홀더로만 유지되며(수락되지만 무시됨),
AmmInfo의 참조 필드로만 남아 있습니다. V2 스왑 진입점을 사용하세요. 이 페이지는 여전히 계정을 “풀 소유” 및 “OpenBook (레거시)” 섹션으로 분류하여 이전 트랜잭션을 읽을 수 있도록 합니다.목록
AMM v4 풀은 생성 시 하나의 바인딩된 마켓을AmmInfo에 기록합니다. 전체 구성은 다음과 같습니다:
참고: “serum” 접두사는 하위 호환성을 위해 AMM v4의 IDL 및 필드 이름에 유지됩니다. 이 계정들은 OpenBook 제거 후 더 이상 기능하지 않습니다.
AmmInfo
풀의 루트 상태 계정입니다. 풀과 OpenBook 참조를 인라인으로 포함하기 때문에 크기가 큽니다(약 752바이트).
구조체 레이아웃은 변경되지 않았습니다(바이트 호환), 따라서 기존 역직렬화기는 계속 작동하지만, OpenBook 제거 후 위에서
더 이상 사용되지 않음으로 표시된 필드는 더 이상 쓰이지 않습니다 — swap_* 거래량 카운터는 마지막 값에서 동결됩니다. 거래량 분석을 위해서는 이 필드 대신 거래 로그를 사용하세요. need_take_pnl_*과 pool_open_time만 적극적으로 유지됩니다.coin_vault,pc_vault— 풀의 SPL Token 볼트.coin은 Serum/OpenBook 규칙에 따라token_0(기본),pc는token_1(인용)입니다.coin_decimals,pc_decimals— 민트와 일치합니다.open_orders,target_orders,market— 레거시 참조 필드. 여전히AmmInfo에 있고 v1 명령어 레이아웃에서 위치상으로 전달되지만, 프로그램은 더 이상 읽거나 검증하지 않습니다. V2 스왑 진입점은 이들을 생략합니다.fees.swap_fee_numerator / swap_fee_denominator— 결합된 거래 수수료. 기본값25 / 10_000 = 0.25%.status— 작업을 제어하는 단일 열거형u64상태이며 비트마스크가 아닙니다.param = 0(Status)과 함께SetParams를 통해 관리자가 설정 가능합니다. 아래 Status를 참조하세요.lp_amount— 풀의 내부 LP 총액.lp_mint.supply와 같지 않습니다: 정확히 온전한 LP 토큰 한 개(10^coin_decimals기본 단위)만큼 더 큽니다. 그 양은 초기화 시 계산되지만 실제로 발행되지는 않기 때문입니다. 모든 비례 계산은lp_amount를 사용하므로 당신도 이를 사용하세요.amm_owner— 생성 시 크리에이터가 아니라 프로그램에 하드코딩된 관리자 키에서 기록됩니다.state_data.need_take_pnl_*— 총 누적 수수료와 스윕된 금액 간의 차이.TakePnl이 이를 0으로 설정합니다.
OpenBook 연결
제거됨. OpenBook / Serum 의존성이 프로그램에서 삭제되었습니다(2026-07 업그레이드). 이 섹션에서 설명하는 계정들은 더 이상 검증되거나 사용되지 않습니다. 이들은
AmmInfo의 참조 필드로, 그리고 레거시 v1 명령어 레이아웃의 위치 플레이스홀더로 남아 있습니다. V2 스왑 진입점을 사용하세요(SwapBaseInV2 / SwapBaseOutV2). 이들은 이 계정들을 전혀 사용하지 않습니다.SwapBaseIn / SwapBaseOut, Deposit, 또는 Withdraw 명령어를 호출할 때, 계정 개수는 여전히 이전 레이아웃과 일치해야 하지만(마켓 계정들이 역사적 위치를 차지), 그들의 내용은 더 이상 확인되지 않습니다 — CPI가 이들에 대해 발행되지 않습니다. 새 코드는 이 계정들을 전혀 사용하지 않는 V2 스왑 변형을 사용해야 합니다.
amm_open_orders는 OpenBook 소유 계정으로 이 마켓의 풀 한도 주문 상태를 보유합니다: 활성 주문, 정산된 잔액, 추천인 등. amm_target_orders는 AMM 측입니다: 프로그램이 현재 게시된 것과 저렴하게 비교하고 차이를 배치/취소할 수 있도록 AMM의 의도된 그리드(각 주문 슬롯의 가격/크기)를 보유합니다.
권한 PDA
전체 AMM v4 프로그램에 정확히 하나의amm_authority PDA가 있습니다. 그 시드는 간단합니다(["amm authority"]), 그 범프는 모든 AmmInfo에 저장됩니다. 이 권한은 모든 AMM v4 풀의 모든 토큰 이동에 서명합니다.
254이며 모든 AmmInfo에 nonce로 미러링됩니다. WithdrawExcessLamports는 그 nonce를 하드코딩하여 이를 다시 파생합니다.
볼트
풀의 SPL Token 볼트는owner가 amm_authority인 표준 토큰 계정입니다. ATA가 아닙니다 — 그들의 주소는 Initialize2에서 [AMM_V4_PROGRAM_ID, market, "coin_vault_associated_seed"] 및 [AMM_V4_PROGRAM_ID, market, "pc_vault_associated_seed"]로부터 파생된 PDA입니다. 민트는 시드가 아니며 amm_id도 시드가 아닙니다. 주소는 AmmInfo에 저장됩니다; 파생은 일회성 호기심입니다.
Token-2022는 지원되지 않습니다. 프로그램은 모든 볼트 이동에 대해 SPL Token의 프로그램 ID를 하드코딩합니다. AMM v4 풀을 Token-2022 민트에 바인딩하려고 시도하면 Initialize2에서 InvalidSplTokenProgram으로 실패합니다.
LP 민트
권한이amm_authority인 클래식 SPL Token 민트입니다. 총 공급량은 풀의 LP 소유권을 추적합니다; LP를 소각하면 두 볼트에서 비례적으로 토큰을 반환합니다.
상태 내 미러는 존재합니다: AmmInfo.lp_amount. 이는 민트의 공급량과 같지 않습니다 — 정확히 온전한 LP 토큰 한 개(10^coin_decimals 기본 단위)만큼 더 큽니다. 그 양은 초기화 시 계산되지만 실제로 발행되지는 않기 때문입니다. 프로그램의 모든 비례 계산은 lp_amount로 나누므로, 민트의 온체인 공급량 대신 이 필드를 사용하세요.
상태
AmmInfo.status는 단일 열거형 u64 상태이며 비트마스크가 아닙니다. 동등성으로 검사하세요 — status & 1을 검사하는 클라이언트는 모든 라이브 풀을 잘못 분류합니다. 정상 거래 상태가 비트 0이 설정된 6이기 때문입니다.
Initialize2는 open_time이 미래이면 7을, 그렇지 않으면 6을 기록합니다. 7 상태의 풀은 state_data.pool_open_time 시점 이후의 첫 스왑에서 스스로 6으로 전환됩니다. 0..=7 범위를 벗어난 값은 AmmStatus::from_u64를 패닉시킵니다.
Raydium 멀티시그는 param = 0(Status)과 함께 SetParams를 통해 상태를 설정하며 1–7 값만 허용됩니다. (AdminCancelOrders는 제거되었습니다.)
관찰 / 오라클
AMM v4는 전용 관찰 계정이 없으며, OpenBook 제거 이후로는 그것을 파생할 오더북 상태도 없습니다. 프로그램 지원이 있는 Raydium TWAP가 필요하면 CPMM 또는 CLMM을 사용하세요 — 둘 다ObservationState 링 버퍼를 유지합니다. 그렇지 않으면 스왑 로그를 오프체인에서 인덱싱하세요.
처음부터 풀의 계정 파생
AMM v4의 풀 계정은 바인딩된 마켓을 키로 하는 일반 PDA입니다 — 시드 키쌍도 아니고 쌍별 PDA도 아닙니다. 그 모두가AMM_V4_PROGRAM_ID 아래에서 동일한 3개 시드 형태 [AMM_V4_PROGRAM_ID, market, <label>]를 사용합니다:
raydium-sdk-v2의 Liquidity.getAssociatedPoolKeys를 참조하세요.
실제로, 통합자는 GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID>에서 또는 SDK에서 풀의 전체 계정 세트를 읽습니다. 손으로 파생하는 것은 거의 필요하지 않습니다.
라이프사이클 빠른 참조
풀과 그들의 계정은 무기한 지속됩니다. 유동성이 완전히 출금되더라도
AmmInfo는 남아 있습니다.
어디서 무엇을 읽을지
- 수학 및 수수료 산술:
products/amm-v4/math. - 수수료 분할 및 CPMM/CLMM과의 비교:
products/amm-v4/fees. - 명령어 계정 목록:
products/amm-v4/instructions. - OpenBook 계정 파생: OpenBook 프로그램 소스(
github.com/openbook-dex/program) — 산문 형태의 문서가 아니라 Rust 모노레포입니다.
- Raydium AMM 프로그램 —
raydium-io/raydium-amm reference/program-addresses정규 프로그램 ID의 경우- 상대방 계정의 경우 OpenBook / Serum 프로토콜

