이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
이 항목은 예정된 CLMM 프로그램 업데이트를 다룹니다. 배포 전에
raydium-clmm의 chore/upgrade-anchor 브랜치(헤드 a72f9e1)에 대해 검증되었습니다. 새 명령이나 변경된 CreateAmmConfig 동작에 의존하기 전에 배포된 프로그램을 확인하세요.0.32.1에서 =1.0.2로, 빌드 도구 체인은 Agave 2.3.0에서 3.1.10으로 이동합니다. 두 가지 관리자 측 변경이 함께 진행됩니다: 새로운 CollectExcessLamports 명령과 CreateAmmConfig의 고정 수수료 소유자입니다.
트레이더, LP, 한도 주문 사용자 또는 풀 생성자가 호출하는 모든 명령은 계정 목록, 인수 및 수학을 유지합니다.
통합자를 위한 요약
- 사용자 대면 명령이 변경되지 않았습니다.
CreatePool,CreateCustomizablePool,CreatePermissionedPool, 모든OpenPosition*/IncreaseLiquidity*/DecreaseLiquidity*경로,ClosePosition,Swap/SwapV2/SwapRouterBaseIn, 5개의 한도 주문 명령 및 보상 명령은 네트워크에서 바이트 동일합니다. 계정 레이아웃이 변경되지 않았습니다. - 하나의 명령이 추가됩니다:
CollectExcessLamports. 이는 관리자 전용이며 인수를 취하지 않습니다. 호출당 하나의 풀을 스윕합니다: 풀의 자체PoolState는 항상 스윕되며, 풀 PDA는remaining_accounts에 전달하는 자신의 자산고를 서명합니다.remaining_accounts의 다른 CLMM 소유 계정도 스윕됩니다.products/clmm/instructions를 참조하세요. - 하나의 오류 코드가 추가됩니다:
6052LamportsCalculateError. 코드6000–6051은 변경되지 않습니다. CreateAmmConfig는 더 이상 서명자를owner/fund_owner에 복사하지 않습니다. 새 구성은 하드코딩된protocol_fee_owner및fund_fee_owner키를 가져옵니다. 메인넷에서 이들은 이미 모든 21개의 기존 구성에 저장된 동일한 두 키입니다. 기존AmmConfig계정은 변경되지 않으므로 계정에서 필드를 계속 읽으세요.- IDL을 새로고침하세요. 39개 명령과 53개 오류에 대해 하나의 명령과 하나의 오류 변형을 추가합니다.
- 이제 CPMM과 CLMM을 하나의 크레이트에 넣을 수 있습니다. 두 저장소 모두
chore/upgrade-anchor브랜치에서anchor-lang/anchor-spl=1.0.2를 고정하므로 단일 프로그램이 둘 다에 CPI할 수 있습니다.sdk-api/rust-cpi를 참조하세요. - TypeScript 클라이언트 패키지의 이름이 변경됩니다. 테스트 스위트는
@coral-xyz/anchor0.32.1에서@anchor-lang/core1.0.2로 이동합니다.
CollectExcessLamports
SIMD-0437의 1단계는 2026년 9월 3일 메인넷에서 활성화되었습니다. 단계 전에 생성된 모든 CLMM 계정은 이제 과잉 자금이 조성되었으며, CLMM 프로그램만 자신이 소유한 계정에서 lamports를 이동할 수 있습니다. 여기에는 풀 자산고, 보상 자산고, PoolState, AmmConfig, ObservationState, TickArrayBitmapExtension 등이 포함됩니다.
명령은 4개의 고정 계정을 취한 다음 remaining_accounts의 임의 개수의 소스 계정을 취합니다:
풀이 서명 권한이지, 프로그램 전체 PDA가 아닙니다. CPMM은 하나의 글로벌
vault_and_lp_mint_auth_seed 권한으로 서명합니다. CLMM 토큰 자산고는 자신의 PoolState에 의해 소유되므로 단일 호출은 슬롯 2에 전달된 풀에 대해서만 서명할 수 있습니다. 각 토큰 프로그램 소스는 해당 풀을 권한으로 가져야 합니다: token_vault_0, token_vault_1 또는 풀의 보상 자산고 중 하나입니다. 다른 풀의 토큰 계정이나 사용자의 토큰 계정은 토큰 프로그램의 소유자 확인에 실패하고 전체 명령을 되돌립니다. 프로그램은 이를 건너뛰지 않습니다. 포지션 NFT 민트도 스윕할 수 없습니다. 포지션이 열릴 때 민트 권한이 취소되기 때문입니다. 풀별로 스윕하세요.
명령은 두 번의 패스를 만들며 그 순서는 고정됩니다:
- 토큰 프로그램 CPI 먼저. SPL Token 또는 Token-2022가 소유한 모든 소스에 대해 비네이티브 계정은
WithdrawExcessLamports(판별자38)를 가져옵니다. 네이티브 wSOL 자산고는SyncNative→UnwrapLamports(판별자45) 왕복을 가져오며, 이는 래핑된 잔액이 사전 동기화 값과 같은지 확인하는 것으로 끝납니다. 그렇지 않으면 호출이LamportsCalculateError로 실패합니다. SOL 측 자산고는 전체 유동성을 유지하며, 스윕 전체에서 스왑 견적이 변경되지 않습니다. - 직접 차변 두 번째. 패스 2는
pool_state를 먼저 차변한 다음 CLMM 프로그램이 소유한 모든 소스를rent.minimum_balance(data_len)까지 차변합니다.
UnbalancedInstruction으로 중단되므로 호출자는 소스를 임의의 순서로 전달할 수 있습니다.
지갑 주소는 reference/program-addresses에 나열되어 있습니다.
CreateAmmConfig는 고정 수수료 소유자를 작성합니다
이 릴리스 전에 create_amm_config는 호출 서명자에서 두 수수료 소유자 필드를 설정했습니다:
CreateAmmConfig는 여전히 crate::admin::ID로 제한됩니다. 이 릴리스 전에 모든 새 수수료 계층은 두 필드 모두에 관리자로 시작했으며 UpdateAmmConfig 매개변수 3 / 4로 회전해야 했습니다. 이제 운영 지갑으로 시작합니다. 메인넷에서 상수는 이미 모든 21개의 기존 구성에 owner / fund_owner로 저장된 동일한 키입니다. 프로그램은 이제 운영이 수동으로 설정하는 데 사용된 값을 작성합니다.
수집 서명자는 변경되지 않습니다. CollectProtocolFee는 amm_config.owner 또는 crate::admin::ID를 수락하고, CollectFundFee는 amm_config.fund_owner 또는 crate::admin::ID를 수락하며, 이 릴리스 전후 모두입니다.
devnet에서 두 상수는 동일한 키로 확인됩니다. reference/program-addresses를 참조하세요.
도구 체인 및 종속성 변경
Anchor 1.0 CPI 호출 사이트의 변경 사항은 CPMM 통합자가 이미 처리한 것과 동일합니다.
CpiContext::new는 AccountInfo 대신 프로그램의 Pubkey를 취하고, Context는 4개 대신 1개의 수명 매개변수를 가집니다. 클라이언트 크레이트에서 RequestBuilder::instructions()은 이제 Result 없이 Vec<Instruction>을 반환하고, system_program은 solana-system-interface로 이동했습니다. sdk-api/rust-cpi를 참조하세요.
온체인 효과가 없는 빌드 시스템 세부 사항:
- Localnet 관리자.
localnet기능은 더 이상 커밋된 픽스처로 지원되는 고정 테스트 키를 컴파일하지 않습니다. 대신 빌드 시간에CLMM_LOCALNET_ADMIN환경 변수에서 관리자를 읽으며,yarn test:local-admin은 로컬 지갑에서 설정합니다. 픽스처의.gitignore예외는 사라졌습니다. - 릴리스 프로필.
programs/amm/Cargo.toml의 중복[profile.release]블록이 삭제되었습니다. Cargo는 워크스페이스 루트 외부의[profile]을 무시하므로 루트 블록이 이미 적용 중인 것이었고, 프로그램 수준panic = "abort"는 적용되지 않았습니다. - Anchor.toml.
seeds = false는resolution = true더하기skip-lint = false가 되고, 오래된[registry]URL이 제거됩니다. - 린트.
programs/amm/Cargo.toml은 Anchor 및 Solana 매크로가 내보내는 기능 cfg에 대한[lints.rust] unexpected_cfgs허용 목록을 추가합니다. - README. 이 브랜치에서 README는 여전히
coral-xyz/anchor에서rustup default 1.86.0및avm install 0.32.1을 실행하도록 지시합니다. 대신Anchor.toml및solana-fundamentals/toolchain을 따르세요.
변경되지 않은 것
- 모든 계정 레이아웃.
PoolState,AmmConfig,TickArrayState,TickArrayBitmapExtension,PersonalPositionState,ObservationState,LimitOrderState,DynamicFeeConfig,Permission및SupportMintAssociated는 동일한 크기와 오프셋을 유지합니다. - 오류 코드
6000–6051. - 스왑, 유동성, 수수료, 동적 수수료 및 한도 주문 수학.
CollectExcessLamports는 어떤 풀의 준비금에도 포함되지 않은 lamports를 이동합니다. - 포지션 NFT 동결 2026-08-17부터, 풀 동결 권한 규칙 및
ClosePosition해제 경로 포함. spl_memo.DecreaseLiquidityV2의 메모 프로그램 제약은spl_memo::id()에서anchor_spl::memo::ID로 이동했습니다. 둘 다 동일한 주소를 지정합니다.anchor-spl은 내보내기의 이름을 바꿨을 뿐입니다.- 프로그램 ID.
업데이트된 페이지
products/clmm/instructions: 업그레이드 배너; 계정 목록, 두 패스 디스패치 테이블 및 풀별 범위 지정이 있는CollectExcessLamports섹션; 인벤토리, 관리자 게이팅 및 상태 변경 매트릭스 행;CollectProtocolFee/CollectFundFee의 수수료 소유자 참고.products/clmm/accounts:AmmConfig소유자 주석 및CreateAmmConfig가 작성하는 것에 대한 참고.products/clmm/code-demos: 버전 배너 및 Rust CPI 스켈레톤이 Anchor 1.0으로 이동.products/cpmm/code-demos: “CLMM과 크레이트를 공유할 수 없음” 참고 제거.reference/error-codes:6052문서화.reference/program-addresses: 새로운 “CLMM 수수료 소유자 지갑” 섹션; CLMM이 “초과 lamports 수집 지갑”에 추가됨.sdk-api/rust-cpi,sdk-api/anchor-idl,solana-fundamentals/toolchain:raydium-clmm에 대한 Anchor 1.0 핀 및 크레이트 분할 경고 폐기.solana-fundamentals/rent-and-reclaimable-rent: CLMM이 “Raydium 프로그램이 자신의 측에서 스윕하는 것”에 추가됨.security/admin-and-multisig: CLMM 초과 lamports 수집기 역할.protocol-overview/versions-and-migration: CLMM 업그레이드 이력 글머리 기호.

