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 →
Raydium không chấp nhận các mint Token-2022 tùy ý. Cả CPMM và CLMM đều chạy ở chế độ danh sách cho phép nghiêm ngặt: chỉ một tập hợp nhỏ các extension được chấp nhận theo mặc định; mọi thứ khác bị từ chối khi tạo pool. Một số mint đáng tin cậy được chấp nhận bằng địa chỉ được mã hóa cứng; CLMM còn hỗ trợ sổ đăng ký theo mint do quản trị viên quản lý và phát hiện token Superstate tại thời gian chạy. Trang này là tài liệu tham khảo duy nhất cho những gì được thực thi và ở đâu, với trích dẫn tệp và dòng vào mã nguồn chương trình.

Hỗ trợ ở cấp chương trình

Các kiểm tra danh sách cho phép nằm trong: Không có kiểm tra mint tại thời gian swap trên CPMM hoặc CLMM — cổng chỉ kích hoạt khi tạo pool. Khi một pool tồn tại, các swap chỉ tin tưởng rằng các mint không thay đổi, điều này là chính xác đối với các phần bất biến của trạng thái mint Token-2022.

Đóng băng NFT vị trí CLMM cho các nhà phát hành bị hạn chế

Các tài khoản NFT vị trí vẫn không bị đóng băng theo mặc định. CLMM chỉ đóng băng một khi vị trí sử dụng đường dẫn mở V2 ít nhất một mint vault hiện tại có freeze_authority khớp với danh sách nhà phát hành bị hạn chế được mã hóa cứng. Danh sách ban đầu chứa cùng một quyền được sử dụng bởi đường dẫn phát hiện Superstate bên dưới. Đặt pool PDA làm freeze authority của mint NFT vị trí không phải là một sự đóng băng. Đây là một quy tắc giữ quyền sở hữu vị trí, không phải là một danh sách cho phép tạo pool khác:
  • Pool có thể đã tồn tại và vẫn có thể hoán đổi.
  • Mint NFT vị trí sử dụng CLMM pool PDA làm freeze authority của chính nó; nhà phát hành cơ bản không kiểm soát NFT vị trí.
  • OpenPositionV2 bao gồm NFT vị trí SPL Token cổ điển trên tài sản pool Token-2022. OpenPositionWithToken22Nft bao gồm NFT vị trí Token-2022.
  • OpenPosition V1 không kiểm tra mint vault và không thể phục vụ tài sản Token-2022 bị hạn chế được nhắm mục tiêu bởi danh sách được gửi.
  • Các vị trí hiện có không thay đổi.
Các vị trí bị đóng băng vẫn có thể được quản lý bởi chủ sở hữu của chúng nhưng không thể được chuyển. ClosePosition làm tan băng và đốt nguyên tử khi khách hàng chuyển pool làm tài khoản còn lại đầu tiên. Xem products/clmm/ticks-and-positions.

Danh sách cho phép extension CPMM và CLMM

Sau khi các phím tắt danh sách tĩnh (được đề cập bên dưới), chương trình lặp qua các extension của mint và từ chối mint nếu nó mang bất kỳ extension nào khác ngoài năm cái này: Bất cứ điều gì không có trong danh sách này — TransferHook, NonTransferable, ConfidentialTransferMint, PermanentDelegate, MintCloseAuthority, DefaultAccountState, GroupPointer, GroupMemberPointer, MemberPointer, Pausable, v.v. — khiến is_supported_mint trả về false và tạo pool hoàn nguyên. Các dòng liên quan (CPMM, hình dạng giống hệt trong CLMM):
cp-swap/src/utils/token.rs:190–200

Đường vòng

Một mint Token-2022 không phù hợp với danh sách cho phép vẫn có thể được chấp nhận thông qua một trong ba đường vòng rõ ràng. Chúng được thử theo thứ tự, trước khi lặp extension chạy.

1. Danh sách mint tĩnh

Một mảng hằng số MINT_WHITELIST của các chuỗi base58 được mã hóa cứng trong mỗi chương trình. Nếu địa chỉ mint khớp, hàm trả về true ngay lập tức và không có kiểm tra extension nào được thực hiện. Các địa chỉ này được nướng vào chương trình; cập nhật danh sách yêu cầu nâng cấp chương trình thông qua multisig nâng cấp 3/4.

2. Sổ đăng ký theo mint — chỉ CLMM

CLMM còn tham khảo PDA SupportMintAssociated tại seed [b"support_mint", mint]. Nếu PDA đó tồn tại cho mint, nó được chấp nhận bất kể tập hợp extension của nó. PDA được tạo bởi CreateSupportMintAssociated (admin/create_support_mint_associated.rs). Lệnh được kiểm soát bởi hai người ký:
  • crate::admin::ID — quyền quản trị viên Raydium tiêu chuẩn.
  • crate::create_support_mint_associated_owner::ID — một quyền chuyên dụng cho mục đích này: RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY (mainnet), rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5 (devnet).
Hiệu ứng: nhóm CLMM có thể chọn một mint Token-2022 cụ thể vào tạo pool mà không cần nâng cấp chương trình. CPMM không có tương đương — danh sách cho phép của nó hoàn toàn được mã hóa nguồn.

3. Phát hiện Superstate — chỉ CLMM

CLMM có một đường dẫn thứ ba dành riêng cho tài sản được token hóa của Superstate, sử dụng extension ScaledUiConfig mà phiên bản spl-token-2022 được liên kết vào chương trình CLMM không thể giải nén. Thay vì nâng cấp phụ thuộc, CLMM phát hiện token Superstate bằng hình dạng quyền của chúng:
raydium-clmm/programs/amm/src/util/token.rs:485 Một mint vượt qua nhánh này nếu tất cả bốn giữ:
  • Chương trình sở hữu của nó là chương trình Token-2022.
  • Freeze authority của nó bằng superstate_allowlist::ID. Xem reference/program-addresses cho các giá trị mainnet-beta và devnet.
  • Extension DefaultAccountState của nó được đặt thành Frozen.
  • Permanent delegate của nó cũng là superstate_allowlist::ID.
Đây là một heuristic, không phải là một sổ đăng ký — bất kỳ mint nào trong tương lai mà Superstate phát hành với hình dạng quyền tương tự sẽ được chấp nhận tự động.

Những gì các đường vòng không miễn trừ

Các đường vòng bỏ qua danh sách cho phép extension, nhưng chương trình vẫn thực thi:
  • Mint được sở hữu bởi Token hoặc Token-2022. Một chương trình token tùy chỉ bị từ chối ở thượng nguồn.
  • Các vault pool được tạo với các extension ATA phù hợp cho pool Token-2022 (ImmutableOwner, v.v.).
  • Tất cả các chuyển giao đi qua transfer_checked — mint mang phí hạ cánh số tiền phù hợp trong vault.
Một mint được liệt kê trắng danh hoặc được đăng ký PDA mà, ví dụ, thêm TransferHook sau đó không nhận được kiểm tra tại thời gian swap; hook sẽ chỉ chạy trên mỗi chuyển giao và có thể làm gián đoạn swap. Do đó, liệt kê trắng danh là một hành động tin tưởng cao.

Ngữ nghĩa “Bị chặn”

Khi is_supported_mint trả về false, tạo pool hoàn nguyên với ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM). Xem reference/error-codes cho các mã số. Các pool hiện có không thể thất bại một cách hồi tố với kiểm tra này — cổng chỉ chạy khi tạo. Các extension mint là bất biến đối với các danh mục mà Raydium từ chối (transfer hook, non-transferable, confidential transfer không thể được thêm sau tạo), vì vậy kiểm tra tĩnh là đủ.

Tại sao mỗi extension bị loại trừ bị loại trừ

  • TransferHook — gọi một chương trình tùy chỉ trên mỗi chuyển giao, với tiêu thụ CU tùy ý, điều kiện thất bại tùy ý, và khả năng nhập lại chương trình gọi. Không có hộp cát an toàn nào tồn tại. Một số DEX duy trì danh sách cho phép hook; Raydium không.
  • NonTransferableTransfer luôn thất bại. Một pool không thể giữ quyền sở hữu.
  • ConfidentialTransfer — số tiền chuyển giao được mã hóa; đường cong không thể định giá swap.
  • PermanentDelegate — một người giữ delegate có thể quét bất kỳ tài khoản token nào, bao gồm vault pool. Chỉ được phép thông qua danh sách tĩnh cho các nhà phát hành đáng tin cậy (ví dụ: stablecoin được quy định).
  • MintCloseAuthority — mint có thể được đóng; các pool hiện có trở nên không sử dụng được. Bị cấm theo mặc định.
  • DefaultAccountState (Frozen) — pool ATA sẽ hạ cánh ở trạng thái Frozen và yêu cầu làm tan băng cho mỗi tài khoản. Chỉ được phép thông qua phát hiện Superstate, giả định rằng nhà phát hành làm tan băng các tài khoản tổ chức khi đăng ký.
  • Con trỏ Nhóm/Thành viên — không gây hại tích cực, nhưng chưa được xem xét. Bị cấm theo mặc định để giữ bề mặt hẹp.

Kế toán phí chuyển giao

Đối với các mint mang TransferFeeConfig, mỗi swap, tiền gửi và rút tiền di chuyển ít hơn số tiền danh nghĩa. SDK bề mặt cả hai nửa của tính toán:
Một UI chính xác hiển thị:
  • amountIn + token2022FeeIn như “bạn gửi”
  • amountOut - token2022FeeOut như “bạn nhận”
  • feeAmount như phí pool (LP + giao thức), tách biệt với phí chuyển giao Token-2022
Một UI ngây thơ chỉ hiển thị amountIn → amountOut giảm thiểu chi phí.

Giới hạn maximumFee

Phí chuyển giao Token-2022 được giới hạn cho mỗi chuyển giao. Đối với một mint 1% với giới hạn 10.000 token, chuyển giao 100.000.000 token chỉ trả 10.000 phí. computeSwapAmount của SDK áp dụng giới hạn; những người gọi chương trình trực tiếp phải sao chép nó.

Chuyển đổi epoch

Một quyền mint có thể lên lịch thay đổi tỷ lệ phí kích hoạt tại epoch tiếp theo. Trong cửa sổ chuyển đổi, hai cấu hình (older, newer) sống trên mint cùng một lúc và TransferChecked chọn theo epoch hiện tại. Cả CPMM SwapV2 và CLMM SwapV2 đều chuyển toàn bộ tài khoản mint trong accounts, vì vậy chương trình đọc cấu hình phù hợp mà không cần tìm kiếm thêm. Nếu bạn trích dẫn nhiều hơn một epoch trước thông qua Trade API hoặc SDK, phí được thực thi có thể khác với phí được trích dẫn — được giới hạn bởi maximum_fee_basis_points của cấu hình cũ hơn.

Lãi suất và ScaledUiAmount

Pool giữ số tiền gốc; “số tiền UI” là số tiền gốc nhân với hệ số tỷ lệ phụ thuộc thời gian hoặc được đặt bởi quản trị viên. Toán học swap hoạt động trên gốc:
SDK chuyển đổi tự động. Những người đọc RPC trực tiếp nên coi pool.token0Vault.amount là gốc.

Định nghĩa “pool Token-2022”

Một pool là pool Token-2022 nếu bất kỳ mint nào có programId == TokenzQdB.... API bề mặt này:
Sử dụng programId để gửi, và hasTransferFee để bề mặt cảnh báo UI.

Trợ giúp SDK

Lỗi tích hợp phổ biến

  • Chỉ pre-flighting ID chương trình. Một mint có thể là Token-2022 không được hỗ trợ. Đi bộ danh sách extension so với danh sách cho phép (và danh sách mint tĩnh) trước khi cho phép tạo pool.
  • Tin tưởng trích dẫn SDK khi mint không được chấp nhận hoàn toàn. API trích dẫn không từ chối trích dẫn — tạo pool là những gì hoàn nguyên. Xác nhận ngữ nghĩa is_supported_mint ngoài chuỗi trước khi hiển thị tạo pool trong UI của bạn.
  • Trích dẫn mà không cắt tóc phí chuyển giao. Một mint phí chuyển giao 1% ở cả hai bên của pool CPMM 0,25% có phí hiệu quả khoảng 2,25%, không phải 0,25%. Sử dụng trích dẫn SDK hoặc trích dẫn Trade API — không bao giờ tính toán phí theo cách thủ công từ tầng phí pool một mình.
  • Gọi lệnh Swap kế thừa trên pool Token-2022. Swap ra đời trước Token-2022. Sử dụng SwapV2 bất cứ khi nào mint nào là Token-2022.
  • Tự động liệt kê các mint Token-2022 mới. Ví dụ và tổng hợp nên kiểm tra TransferHookNonTransferable trước khi bề mặt một mint cho người dùng; cả hai đều không thân thiện với Raydium.

Công việc trong tương lai

Các mục lộ trình hệ sinh thái Solana và giao thức sẽ thay đổi ma trận này:
  • Các chương trình transfer-hook được cho phép ở cấp độ Solana (quy ước hệ sinh thái đang phát triển).
  • AMM tương thích chuyển giao bí mật (giai đoạn nghiên cứu).
  • Sổ đăng ký theo mint CPMM rộng hơn (tương đương với CLMM).
  • Nâng cấp phụ thuộc để giải mã ScaledUiConfig của CLMM hoạt động mà không cần heuristic Superstate.
Trang này sẽ được cập nhật khi bất kỳ hạ cánh.

Con trỏ

Nguồn:
  • raydium-cp-swap/programs/cp-swap/src/utils/token.rsMINT_WHITELIST, is_supported_mint.
  • raydium-clmm/programs/amm/src/util/token.rsMINT_WHITELIST, superstate_allowlist, is_superstate_token, is_supported_mint.
  • raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs — lệnh sổ đăng ký theo mint.
  • raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs — tạo mint base Token-2022 của LaunchLab.