Skip to main content
Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
Bản phát hành này thêm một đường dẫn không chuyển nhượng có điều kiện cho các pool nhà phát hành bị hạn chế KYC được chọn. Nó không khóa mọi vị trí mới, không khóa tài sản pool, hoặc ngăn chặn chủ sở hữu vị trí quản lý thanh khoản. Pool PDA của CLMM trở thành freeze authority cho mọi mint NFT vị trí mới, nhưng tài khoản token NFT vẫn không bị khóa theo mặc định. Chương trình chỉ khóa nó khi vị trí sử dụng OpenPositionV2 hoặc OpenPositionWithToken22Nft và ít nhất một mint vault cơ bản có freeze authority từ danh sách restricted-issuer được mã hóa cứng.

TL;DR cho các nhà tích hợp

  • Các mint NFT vị trí mới có freeze authority, nhưng không bị khóa theo mặc định. OpenPosition, OpenPositionV2, và OpenPositionWithToken22Nft đặt pool_state của vị trí làm freeze authority của mint. Mint authority vẫn bị xóa sau khi NFT duy nhất được mint.
  • Khóa yêu cầu đường dẫn V2 cộng với khớp nhà phát hành. OpenPositionV2OpenPositionWithToken22Nft kiểm tra vault_0_mint.freeze_authorityvault_1_mint.freeze_authority. Tài khoản NFT mới chỉ bị khóa nếu ít nhất một khớp với danh sách chương trình. Nếu không khớp, nó vẫn không bị khóa và có thể chuyển nhượng.
  • Khóa có nghĩa là gắn với chủ sở hữu. SPL Token từ chối chuyển NFT và thay đổi chủ sở hữu tài khoản token bằng lỗi AccountFrozen gốc của nó. Tăng/giảm thanh khoản và thu thập phí/phần thưởng tiếp tục hoạt động khi chủ sở hữu NFT ký.
  • Đóng vẫn khả dụng. ClosePosition phát hiện tài khoản NFT bị khóa, sử dụng pool PDA để thaw nó, sau đó đốt NFT và đóng vị trí một cách nguyên tử.
  • Đóng bị khóa yêu cầu một tài khoản còn lại. Client phải thêm personal_position.pool_id làm tài khoản còn lại đầu tiên. Thiếu nó trả về CLMM AccountLack; truyền pool sai trả về NotApproved.
  • Các vị trí hiện có không bị ảnh hưởng. Bản cập nhật không thay đổi retroactively freeze authorities của NFT mint hoặc khóa các tài khoản token hiện có.
  • Không có thay đổi bố cục trạng thái CLMM hoặc danh sách tài khoản IDL được khai báo. PoolState, PersonalPositionState, và các đối số hướng dẫn vẫn tương thích byte. Yêu cầu đường dẫn đóng được thực hiện thông qua remaining_accounts.

Logic kích hoạt

Chương trình đánh giá hai mint vault tại thời điểm mở:
Freeze authority bị thiếu không khớp. Một bên khớp là đủ. Danh sách là frozen_position_nft_authorities::IDS và mang một mục nhập duy nhất. Các khóa mainnet-beta và devnet hiện tại nằm trong reference/program-addresses. Kiểm tra chạy trong trình xử lý vị trí mở chung chỉ khi các tài khoản mint vault được cung cấp. Điều này có nghĩa:

Thay đổi freeze authority của NFT vị trí

Trước bản cập nhật này, một mint NFT vị trí SPL cổ điển mới tạo không giữ lại freeze authority. Sau bản cập nhật, mọi mint NFT vị trí mới đặt tên pool của nó làm freeze authority, bao gồm các vị trí trong các pool thông thường. Cài đặt freeze authority này một mình không khóa tài khoản token NFT; các vị trí thông thường và không khớp vẫn không bị khóa. Sử dụng pool PDA thay vì khóa admin hoặc nhà phát hành toàn cầu sẽ thu hẹp freeze authority thành một pool. Một bên ngoài không thể ký như PDA, và CLMM không công khai hướng dẫn mục đích chung để khóa hoặc thaw các tài khoản vị trí tùy ý. Mã mới sử dụng freeze authority chỉ ở hai nơi:
  1. Khóa ngay sau khi mint khi kiểm tra nhà phát hành cơ bản khớp.
  2. Thaw trong ClosePosition ngay trước khi đốt.

Di chuyển ClosePosition

Sáu tài khoản được khai báo không thay đổi. Đối với NFT bị khóa, thêm pool làm tài khoản còn lại đầu tiên:
Trình xử lý xác minh khóa trước khi tải PoolState, lấy các seed signer pool, và thực hiện:
Tất cả các bước chạy trong một hướng dẫn Solana và do đó commit hoặc revert cùng nhau. Truyền pool trên mọi lần đóng là an toàn: trình xử lý bỏ qua các tài khoản còn lại khi tài khoản NFT không bị khóa.
Ngắt client có điều kiện. Một client cũ hơn có thể mở thành công một vị trí sau khi nâng cấp vì bố cục tài khoản mở V2 không thay đổi. Nếu vị trí đó bị khóa, cùng một client có thể sau đó không thể đóng nó vì trình tạo ClosePosition của nó bỏ qua tài khoản pool còn lại. Cập nhật trình tạo đóng trước khi cho phép người dùng mở các vị trí trong các pool bị ảnh hưởng.

Ma trận tương thích

Không có biến thể lỗi tùy chỉnh CLMM mới hoặc dịch chuyển số được giới thiệu. Lỗi AccountFrozen gốc của SPL Token từ chối các nỗ lực chuyển hoặc thay đổi chủ sở hữu.

Trang được cập nhật

  • products/clmm/overview — tóm tắt bản phát hành và cảnh báo không chuyển nhượng bị hạn chế.
  • products/clmm/ticks-and-positions — mô hình freeze authority, kích hoạt, khả năng chủ sở hữu, và cảnh báo di chuyển đóng.
  • products/clmm/accounts — mint NFT vị trí và hành vi vòng đời.
  • products/clmm/instructions — postconditions mở và đường dẫn tài khoản còn lại ClosePosition bị khóa.
  • products/clmm/code-demos — ví dụ đóng Anchor trực tiếp và cảnh báo SDK được ghim.
  • user-flows/add-remove-liquidity — hành vi vị trí bị hạn chế hướng tới người dùng.
  • user-flows/burn-and-earn — các vị trí bị khóa không thể chuyển vào escrow khóa.
  • security/oracle-and-token-risks / security/attack-vectors — ranh giới rủi ro nhà phát hành và chuyển.
  • reference/token-2022-support — sự phân biệt giữa danh sách cho phép pool và quyền giám sát vị trí.
  • reference/error-codes — nguyên nhân AccountLackNotApproved được mở rộng.
  • reference/program-addresses — khóa khớp freeze authority restricted-issuer.
  • reference/fee-comparison / reference/glossary — ngoại lệ khả năng chuyển nhượng.
Xác minh 2026-08-13 so với:
  • Nhánh CLMM trước phát hành feat/position-nft-freeze tại ecb157760776f83f97507fa78c6e32cfb30d92a9.
  • Commits 2e95310 (khóa NFT restricted-issuer) và ecb1577 (freeze authority có phạm vi pool), so sánh với master tại 51fdba2.
  • Nguồn chương trình dưới instructions/{open_position,open_position_v2,open_position_with_token22_nft,close_position}.rsutil/token.rs.
  • position-nft-freeze.test.ts, bao gồm khả năng chuyển nhượng thông thường, từ chối chuyển/thay đổi chủ sở hữu bị khóa, và luồng thaw-before-close V2 cộng với Token-2022.
Xác minh này bao gồm nhánh nguồn trước phát hành, không phải triển khai mainnet-beta hoặc bản phát hành SDK được xuất bản. Xác nhận chương trình được triển khai, danh sách freeze authority bị hạn chế sản xuất, và trình tạo đóng SDK trước khi bật luồng.