Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
이 항목은 예정된 CPMM 프로그램 업데이트를 다룹니다. 배포 전에 로컬 릴리스 브랜치에 대해 검증되었습니다. 새 명령이나 변경된 CreateAmmConfig 동작에 의존하기 전에 배포된 프로그램을 확인하세요.
CPMM의 주요 변경 사항은 프레임워크 이동입니다: Anchor 0.32.1에서 1.0.2로, 빌드 도구 체인은 Agave 2.3.0에서 3.1.10으로 이동합니다. 함께 따라오는 것은 4가지 동작 변경으로, 이 중 3가지는 관리 도구에만 영향을 미치고 1가지(민트 화이트리스트 제거)는 풀에 사용할 수 있는 Token-2022 민트를 변경합니다. 트레이더, LP 또는 풀 생성자가 호출하는 모든 것은 계정 목록, 인수 및 수학을 유지합니다.

통합자를 위한 요약

  • 사용자 대면 명령이 변경되지 않았습니다. Initialize, InitializeWithPermission, Deposit, Withdraw, SwapBaseInput, SwapBaseOutput 및 4개의 Collect*Fee 경로 모두 바이트 동일합니다. 계정 레이아웃이 변경되지 않았습니다.
  • 하나의 명령이 추가됩니다: CollectExcessLamports. 관리자 전용, 인수 없음, remaining_accounts로 전달된 소스입니다. CPMM 제어 금고, LP 민트 및 PDA에서 임차료 면제 최소값 이상의 lamports를 반환하며 다른 것은 건드리지 않습니다. products/cpmm/instructions를 참조하세요.
  • 하나의 오류 코드가 추가됩니다: 6015 LamportsCalculateError. 코드 60006014는 변경되지 않습니다.
  • CreateAmmConfig는 더 이상 서명자를 수수료 소유자 필드에 복사하지 않습니다. 새 구성은 하드코딩된 protocol_fee_ownerfund_fee_owner 키를 가져옵니다. 기존 AmmConfig 계정은 건드리지 않습니다 — 계정에서 protocol_owner / fund_owner를 읽으십시오. 어느 값이든 가정하지 마세요.
  • 하드코딩된 4개 주소 Token-2022 MINT_WHITELIST가 제거되었습니다. SupportMintAssociated PDA 레지스트리는 이제 확장 허용 목록의 유일한 우회입니다. 기존 풀은 영향을 받지 않습니다. 검사는 풀 생성 시에만 실행됩니다.
  • ClosePermissionPda는 공유 관리자가 아닌 전용 권한 PDA 생성자 권한을 수락합니다.
  • IDL 새로고침이 필요합니다. 하나의 새 명령, 하나의 새 오류 변형.
  • TypeScript 클라이언트 패키지의 이름이 변경되었습니다. @coral-xyz/anchor0.32.1에서 고정됩니다. Anchor 1.x 클라이언트는 @anchor-lang/core로 게시됩니다.

CollectExcessLamports

SIMD-0437의 1단계는 2026년 9월 3일 메인넷에 도착했으며, 임차료 면제 최소값을 9% 줄였고 4단계가 더 있습니다. 단계 전에 생성된 모든 CPMM 풀 금고, LP 민트, PoolState, AmmConfig, ObservationState, PermissionSupportMintAssociated 계정은 이제 과잉 자금이 조성되었으며, 프로그램 소유 계정의 lamports는 해당 프로그램에서만 이동할 수 있습니다. 명령은 4개의 고정 계정(서명자/대상 지갑, vault_and_lp_mint_auth_seed 권한 PDA, 둘 다 토큰 프로그램)을 가져간 다음 remaining_accounts의 임의 개수의 소스 계정을 가져갑니다. 각 소스 계정의 소유자에 따라 디스패치합니다: 토큰 계정 또는 민트의 경우 토큰 프로그램의 WithdrawExcessLamports(판별자 38)로의 CPI, CPMM 소유 PDA의 경우 직접 차변, 다른 것은 조용히 건너뜁니다. 래핑된 SOL은 이해할 가치가 있는 경우입니다. 네이티브 토큰 계정의 lamport 잔액 토큰 잔액이므로 두 토큰 프로그램 모두 하나에서 WithdrawExcessLamports를 거부합니다. CPMM은 대신 SyncNative를 CPI합니다(기부된 초과분을 래핑된 amount로 접으면서), 금액이 얼마나 증가했는지 측정하고, 정확히 그 델타에 대해 UnwrapLamports(판별자 45)를 수행한 다음 래핑된 잔액이 사전 동기화 값과 같아야 합니다 — 그렇지 않으면 LamportsCalculateError. SOL 측 풀 금고는 스윕을 통해 전체 유동성을 유지하며, LP는 스윕 전체에서 가격 변화를 보지 않습니다. 서명자는 공유 프로그램 관리자 또는 전용 수집 lamports 지갑일 수 있습니다. 주소는 reference/program-addresses에 있습니다.

CreateAmmConfig는 고정 수수료 소유자를 작성합니다

이 릴리스 전에 create_amm_config는 호출 서명자에서 두 수수료 소유자 필드를 설정했습니다:
이제 프로그램의 자체 상수를 작성합니다:
CreateAmmConfigcrate::admin::ID로 게이트되므로 실질적인 효과는 새로 생성된 수수료 계층이 관리자 멀티시그 대신 전용 운영 지갑에서 처음부터 스윕되며, 관리자는 UpdateAmmConfig 매개변수 3 또는 4를 통해 필드를 먼저 회전하지 않고는 방금 생성한 구성에서 수집할 수 없습니다. 두 상수는 프로그램의 나머지 주소와 동일한 devnet/mainnet cfg 패턴을 따르며, devnet에서는 둘 다 동일한 키로 확인됩니다. reference/program-addresses를 참조하세요.
이것은 마이그레이션이 아닙니다. 이미 존재하는 모든 AmmConfig는 생성된 protocol_ownerfund_owner를 유지합니다. 새 상수를 하드코딩하기 시작하는 수집 도구는 이전 구성에서 실패하고, “관리자 키”를 가정하는 도구는 새 구성에서 실패합니다. 필드를 읽으세요.

Token-2022 민트 화이트리스트가 제거되었습니다

is_supported_mint는 민트의 확장을 반복하기 전에 4개 주소의 하드코딩된 MINT_WHITELIST에서 단락되곤 했습니다. 해당 배열 — 그리고 모든 호출에서 빌드된 HashSet — 이 삭제되었습니다. 남은 것은:
  1. 레거시 SPL Token 민트는 무조건 통과합니다.
  2. [b"support_mint", mint]에서 초기화된 SupportMintAssociated PDA가 있는 민트는 무조건 통과합니다.
  3. 그렇지 않으면 민트의 모든 확장은 TransferFeeConfig, MetadataPointer, TokenMetadata, InterestBearingConfig, ScaledUiAmount 중 하나여야 합니다.
레지스트리 PDA는 프로그램에 한동안 있었으며, 자체 CreateSupportMintAssociated / CloseSupportMintAssociated 쌍과 공유 관리자 옆의 자체 전용 권한이 있으며, InitializeInitializeWithPermission 모두에서 참조됩니다. 정적 배열을 제거하면 민트 온보딩이 이제 프로그램 업그레이드가 아닌 순수 온체인 작업이 됩니다 — 이것이 요점입니다. 기존 풀은 영향을 받지 않습니다, 민트 검사는 풀 생성 시에만 실행되기 때문입니다. 변경되는 것은 4개의 이전에 화이트리스트된 민트 중 하나에 대해 CPMM 풀을 생성하려면 해당 민트가 레지스트리 PDA를 가져야 한다는 것입니다 — 중요한 것들은 메인넷에서 이미 가지고 있습니다. 레지스트리가 하는 것과 하지 않는 것을 포함한 전체 그림은 reference/token-2022-support에 있습니다.

ClosePermissionPda 서명자 확대

CreatePermissionPda는 이미 공유 관리자 또는 전용 권한 PDA 생성자 권한을 수락했지만, ClosePermissionPdaaddress = 제약으로 관리자에 고정되었습니다. 닫기 경로는 이제 동일한 쌍을 가져갑니다:
따라서 권한을 발급하는 권한은 멀티시그를 통해 라우팅하지 않고도 이를 취소할 수 있습니다. 무단 서명자에 대한 오류는 어느 쪽이든 InvalidOwner(6001)입니다 — 이전 address = 제약은 이미 해당 사용자 정의 오류를 수행했습니다 — 따라서 수락된 서명자 집합만 확대되었습니다.

도구 체인 및 종속성 변경

Anchor 1.0은 모든 CPI 호출 사이트에서 두 가지를 변경합니다. 자신의 프로그램에서 CPMM을 통합하는 경우 중요합니다: CpiContext::newAccountInfo 대신 프로그램의 Pubkey를 가져가고, Context는 4개 대신 1개의 수명 매개변수를 가집니다. 클라이언트 측에서 RequestBuilder::instructions()Result<...> 대신 Vec<Instruction>을 반환하고, CommitmentConfigsolana_sdk 대신 anchor_client에서 옵니다. spl-associated-token-account 8.0은 주소 도우미를 ::address 아래로 이동하고 프로그램 ID를 ::program::ID로 이동했습니다. sdk-api/rust-cpi를 참조하세요. 두 가지 빌드 시스템 세부 사항, 둘 다 온체인 효과 없음: 프로그램 크레이트는 CPSWAP_LOCALNET_ADMIN 환경 변수에서 로컬 지갑을 admin으로 컴파일하는 localnet 기능을 선언합니다(관리자 게이트 테스트가 실제로 서명할 수 있도록 — yarn test:local-admin이 이를 연결합니다). programs/cp-swap/Cargo.toml의 중복 [profile.release] 블록이 삭제되었습니다. Cargo는 워크스페이스 루트 외부의 [profile]을 무시하므로 루트 블록이 이미 적용 중인 것입니다 — 프로그램 수준 블록의 panic = "abort"가 적용되지 않았다는 사실을 포함합니다.

변경되지 않은 것

  • 모든 계정 레이아웃. PoolState, AmmConfig, ObservationState, Permission, SupportMintAssociated — 동일한 크기, 동일한 오프셋.
  • 오류 코드 60006014.
  • 확장 허용 목록 자체. 여전히 동일한 5개 확장.
  • 수수료율, 수수료 발생 및 곡선. CollectExcessLamports는 어떤 풀의 준비금의 일부도 아닌 lamports를 이동합니다.
  • spl_memo. Withdraw의 메모 프로그램 제약은 spl_memo::id()에서 anchor_spl::memo::ID로 이동했습니다 — 이름이 바뀐 anchor-spl 내보내기 아래의 동일한 주소입니다.
  • 프로그램 ID. 변경되지 않음.

업데이트된 페이지

  • products/cpmm/instructionsCollectExcessLamports가 계정 목록 및 소유자별 디스패치 테이블과 함께 추가됨; CreateAmmConfigcreator_fee_rate 인수 및 고정 수수료 소유자에 대한 참고를 얻습니다; CollectExcessLamports, CreateSupportMintAssociated, CloseSupportMintAssociated에 대한 명령 요약 행이 추가됨; ClosePermissionPda 서명자 수정됨; Initialize 전제 조건이 레지스트리 전용 우회를 위해 다시 작성됨; 상태 변경 매트릭스 행이 추가됨.
  • products/cpmm/accounts — Token-2022 섹션이 레지스트리 PDA 주위에서 다시 작성됨, 화이트리스트 제거가 호출됨; ClosePermissionPda 서명자 수정됨.
  • products/cpmm/overview — 화이트리스트 문장이 다시 작성됨.
  • products/cpmm/code-demos — Rust CPI 스켈레톤이 Anchor 1.0으로 업데이트됨.
  • reference/token-2022-support — 우회 경로 섹션이 레지스트리 PDA 주위에서 다시 작성됨, 제거된 MINT_WHITELIST가 “제거된 우회” 섹션으로 이동됨.
  • reference/error-codes6015 문서화됨.
  • reference/program-addresses — 새로운 “CPMM support-mint registry authority”, “CPMM fee-owner wallets” 및 “Excess-lamports collection wallets” 섹션; ClosePermissionPda 참고 수정됨.
  • sdk-api/rust-cpi, solana-fundamentals/toolchain, integration-guides/cpi-integration — Anchor 1.0 핀 및 CPI 마이그레이션 참고.
  • solana-fundamentals/rent-and-reclaimable-rent — 새로운 “Raydium 프로그램이 자신의 측에서 스윕하는 것” 섹션.