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:
- CPMM:
is_supported_minttrongraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178, được gọi từInitialize. - CLMM:
is_supported_minttrongraydium-clmm/programs/amm/src/util/token.rs:280, được gọi từCreatePool. - LaunchLab:
initialize_with_token_2022trongraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(mã nguồn không công khai).
Đó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 và í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í.
OpenPositionV2bao gồm NFT vị trí SPL Token cổ điển trên tài sản pool Token-2022.OpenPositionWithToken22Nftbao gồm NFT vị trí Token-2022.OpenPositionV1 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.
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 PDASupportMintAssociated 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).
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 extensionScaledUiConfig 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. Xemreference/program-addressescho các giá trị mainnet-beta và devnet. - Extension
DefaultAccountStatecủa nó được đặt thànhFrozen. - Permanent delegate của nó cũng là
superstate_allowlist::ID.
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
TokenhoặcToken-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.
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”
Khiis_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.
- NonTransferable —
Transferluô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
Frozenvà 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 mangTransferFeeConfig, 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:
amountIn + token2022FeeInnhư “bạn gửi”amountOut - token2022FeeOutnhư “bạn nhận”feeAmountnhư phí pool (LP + giao thức), tách biệt với phí chuyển giao Token-2022
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: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:
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 và 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_mintngoà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
Swapkế thừa trên pool Token-2022.Swapra đời trước Token-2022. Sử dụngSwapV2bấ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
TransferHookvàNonTransferabletrướ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ã
ScaledUiConfigcủa CLMM hoạt động mà không cần heuristic Superstate.
Con trỏ
algorithms/token-2022-transfer-fees— toán học phí trong swap.products/cpmm/instructions—SwapV2,Initialize.products/clmm/instructions—SwapV2,CreatePool,CreateSupportMintAssociated.reference/error-codes— mã sốNotSupportMintcho mỗi chương trình.
raydium-cp-swap/programs/cp-swap/src/utils/token.rs—MINT_WHITELIST,is_supported_mint.raydium-clmm/programs/amm/src/util/token.rs—MINT_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.

