이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
이 항목은 예정된 AMM v4 프로그램 업데이트를 다룹니다. 배포 전에 로컬 릴리스 브랜치에 대해 검증되었습니다. 새로운 명령어에 의존하기 전에 배포된 프로그램을 확인하세요.
solana-program =2.1.0에 고정되어 있었으며, 이 고정이 차단되고 있었습니다. 시스템 프로그램 헬퍼는 Solana 3.0에서 자체 solana-system-interface 크레이트로 이동했고, spl-token은 9.0에 도달했으며, spl-associated-token-account는 8.0에 도달했습니다. 이 릴리스는 세 가지 모두를 포함합니다.
두 번째는 프로토콜이 받아야 할 자금입니다. SIMD-0437은 렌트 면제 최소값을 5단계에 걸쳐 90% 감소시키고 있으며, 1단계는 2026년 9월 3일 메인넷에 도착했습니다. AMM v4가 그 이전에 생성한 모든 계정(수백 개의 풀 볼트, LP 민트, AmmInfo 및 TargetOrders 계정)은 이제 과잉 자금이 조성되어 있으며, 프로그램 소유 계정의 lamports는 해당 프로그램에서만 이동할 수 있습니다. 따라서 새로운 명령어가 필요합니다.
통합자를 위한 요약
- 트레이더나 LP가 호출하는 것은 변경되지 않았습니다.
Initialize2,Deposit,Withdraw,SwapBaseIn,SwapBaseOut,SwapBaseInV2,SwapBaseOutV2,WithdrawPnl및SetParams는 계정 목록, 인수 레이아웃 및 수학을 유지합니다. 계정 레이아웃이 변경되지 않았습니다. 기존 오류 코드가 이동하지 않았습니다. - 하나의 명령어가 추가됩니다:
WithdrawExcessLamports, 태그18. 관리자 전용, 인수 없음, 가변 계정 목록. AMM v4 제어 계정에서 렌트 면제 최소값 이상의 lamports를 반환하고 다른 것은 건드리지 않습니다.products/amm-v4/instructions를 참조하세요. - 하나의 오류 코드가 추가됩니다:
60LamportsCalculateError.AmmError는 Anchor 번호가 아닙니다 — 0부터 시작합니다 — 따라서 이는custom program error: 0x3c입니다. 코드0–59는 변경되지 않습니다. CreateConfigAccount(태그 14)는 더 이상 렌트 sysvar를 읽지 않습니다 그리고 이제 4개 계정 명령어로 문서화됩니다. 이 릴리스에서는 아무것도 손상되지 않습니다. 이것이 포함됩니다: 계정이 목록의 마지막이었고 핸들러는 길이 확인 없이 위치적으로 읽으므로, 여전히 이를 전달하는 관리자 도구는 계속 작동합니다.- IDL 새로고침이 필요합니다 클라이언트를 생성하는 경우. 하나의 새로운 명령어, 하나의 새로운 오류 변형, 하나의 변경된 계정 목록.
WithdrawExcessLamports
명령어는 수집 lamports 지갑을 유일한 서명자 및 대상으로, AMM v4 권한 PDA, SPL Token 프로그램, 그리고 임의의 수의 소스 계정을 사용합니다. 각 소스 계정의 소유자에 따라 디스패치합니다:
wSOL 분기가 흥미로운 부분입니다. 래핑된 SOL 계정의 lamport 잔액 은 토큰 잔액이므로, 토큰 프로그램은 이에 대해
WithdrawExcessLamports를 완전히 거부합니다. SyncNative를 통한 왕복과 델타 크기의 UnwrapLamports는 기증된 초과분만 추출하고 래핑된 잔액을 정확히 시작한 위치에 남깁니다 — 이는 나중에 확인되며, 산술이 일치하지 않으면 LamportsCalculateError가 발생합니다. 따라서 SOL 측 풀 볼트는 스윕을 통해 전체 유동성을 유지하며, LP는 스윕 전후로 가격 변화를 보지 않습니다.
서명자는 클러스터당 전용 키이며, 기존 AMM 소유자 및 풀 생성 수수료 주소와 동일한 config_feature 모듈 아래에 하드코딩됩니다. CPMM 및 LaunchLab과 달리, AMM v4는 오직 해당 지갑만 수락합니다 — 관리자 폴백이 없습니다. 주소는 reference/program-addresses에 있습니다.
CreateConfigAccount는 더 이상 렌트 sysvar를 읽지 않습니다
Solana 3.0은 Rent::get()을 렌트 매개변수를 읽는 자연스러운 방법으로 만드는 것이므로, 릴리스는 프로그램의 모든 네 개의 Rent::from_account_info(...) 호출을 대체했습니다. 세 개의 호출에서 — 풀의 토큰 계정, LP 민트 및 Initialize2 중 PDA 계정을 생성하는 헬퍼 — sysvar 계정은 여전히 전달되고 토큰 프로그램 CPI로 여전히 전달되므로, 해당 계정 목록에 대해 아무것도 변경되지 않습니다. CreateConfigAccount에서 sysvar는 다른 목적이 없었고 목록의 마지막 계정이었으므로, 문서화된 목록에서 제거되었습니다:
이전의 5개 계정 목록을 보내는 것은 여전히 작동합니다. 제거된 계정은 마지막이었고,
process_create_config는 총 개수를 확인하는 것이 없는 next_account_info를 통해 위치적으로 4개 계정을 읽으므로, 후행 렌트 계정은 절대 조회되지 않습니다. 관리자 도구는 명확성을 위해 업데이트되어야 하지만, 긴급하지는 않습니다. 사용자 대면 빌더는 이 명령어를 전혀 구성하지 않습니다.
Initialize2는 과도하게 읽지 않을 경우입니다: 또한 Rent::from_account_info 호출을 중단했지만, 렌트 계정은 위치 3에 유지되며 여전히 실제로 사용됩니다 — 프로그램은 풀의 볼트와 LP 민트를 생성하는 spl_token::initialize_account 및 initialize_mint CPI로 이를 전달합니다. 해당 계정 목록에서 이를 제거하면 풀 생성이 손상됩니다.
의존성 변경
프로그램이 사용하는 시스템 프로그램 조각 —
system_instruction::create_account, transfer, allocate, assign, 및 프로그램 ID 자체 — 이제 solana_program::system_program 및 solana_program::system_instruction이 아닌 solana-system-interface에서 옵니다. 프로그램 ID는 바이트 동일하므로, 이는 체인상 결과가 없는 컴파일 타임 이동이며, 이에 대해 비교하는 InvalidSysProgramAddress 확인도 포함됩니다.
두 개의 죽은 모듈도 삭제되었습니다: srm_token 및 msrm_token, OpenBook 제거에서 남겨진 Serum/MSRM 민트 선언. 아무것도 이들을 참조하지 않았습니다.
변경되지 않은 것
- 모든 계정 레이아웃.
AmmInfo,StateData,TargetOrders,AmmConfig— 동일한 크기, 동일한 필드 오프셋. 인덱서나 디코더 변경 없음. - 오류 코드
0–59.LamportsCalculateError는60에 추가되므로 아무것도 이동하지 않습니다. - AMM 권한 PDA. 여전히 전체 프로그램에 대한 하나의 PDA, 시드
["amm authority"], nonce254. - 수수료, PnL 회계 및 곡선. 건드리지 않음.
WithdrawExcessLamports는 어떤 풀의 준비금에도 포함되지 않은 lamports를 이동합니다. - Token-2022. 여전히 지원되지 않음. 새로운 명령어는 레거시 SPL Token 프로그램에만 말합니다.
- 프로그램 ID. 변경되지 않음 —
reference/program-addresses를 참조하세요.
업데이트된 페이지
products/amm-v4/instructions—WithdrawExcessLamports가 계정 목록 및 소유자별 디스패치 테이블과 함께 추가됨; 렌트 sysvar 제거를 다루는 새로운CreateConfigAccount/UpdateConfigAccount섹션; 인벤토리 테이블 및 상태 변경 매트릭스 행 추가.products/amm-v4/overview— 릴리스 배너.reference/error-codes— 새로운 “AMM v4:AmmError는 Anchor 번호가 아님” 섹션으로 코드60및0기반 번호 매기기 문서화.reference/program-addresses— 새로운 “초과 lamports 수집 지갑” 섹션.solana-fundamentals/rent-and-reclaimable-rent— 새로운 “Raydium 프로그램이 자체 측에서 스윕하는 것” 섹션; 래핑된 SOL 노트가 두 토큰 프로그램 모두UnwrapLamports를 노출한다고 말하도록 수정됨.solana-fundamentals/toolchain— Agave 3.1.10,release.anza.xyz, Rust 1.91.0.

