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 thông qua đị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, kèm theo trích dẫn tệp và dòng từ 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 tài khoản khi vị trí sử dụng đường dẫn mở V2 và ít nhất mộtfreeze_authority hiện tại của mint vault 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 authority được sử dụng bởi đường dẫn phát hiện Superstate dưới đây. Đặ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 quản lý 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ể swap.
- 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í Token SPL 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 vault mint 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 tan băng và đốt nguyên tử khi client chuyển pool làm tài khoản còn lại đầu tiên. Xem products/clmm/ticks-and-positions.
Mint quote LaunchLab
Hai mint của LaunchLab được kiểm soát rất khác nhau, và sự bất đối xứng rất dễ bỏ sót.- Mint base — LaunchLab tạo nó. Mint base Token-2022 chỉ có thể truy cập được thông qua
initialize_with_token_2022, và chương trình sẽ chỉ đính kèmMetadataPointervà (tùy chọn)TransferFeeConfig. Bất cứ thứ gì khác sẽ trả vềNoSupportExtension. Một mint Token-2022 đã tồn tại không thể được cung cấp làm base. KhiTransferFeeConfigđược đính kèm,transfer_fee_config_authoritycủa mint là launch authority PDA cho đến khi tốt nghiệp, trong khiwithdraw_withheld_authoritycủa nó làtransfer_fee_extension_authđược cấu hình của nền tảng từ khi tạo mint trở đi — chương trình launchpad tự nó không có lệnh withdraw-withheld. Xemproducts/launchlab/platform-config. - Mint quote — LaunchLab không tạo nó và không sàng lọc nó.
CreateConfigchấp nhận tài khoản mint như được cung cấp, vì vậy không có tương đươngis_supported_mintở phía quote. Cổng duy nhất là những mint nào mà quản trị viên chọn liên kết vớiGlobalConfig.
TransferHook sẽ chạy hook của nó trên mỗi lần mua, bán và yêu cầu phí trong mỗi pool được trích dẫn trong nó, và mint quote PermanentDelegate sẽ cho phép đại biểu quét các vault quote của những pool đó. Cả hai đều không bị chương trình chặn.
Những gì LaunchLab xử lý chính xác khi mint quote được liên kết:
- Vault quote, cả hai vault phí và tài khoản token của người nhận phí chia sẻ được tạo trên chương trình của mint quote.
TransferFeeConfigở phía quote được định giá vào cả bốn lệnh giao dịch, và giới hạn slippage được kiểm tra so với số tiền ròng của người trả tiền chứ không phải là chuyển động brutto của vault. Xemproducts/launchlab/instructions.PoolState.token_program_flagghi lại các chương trình của cả hai mint — bit0 cho mint base, bit1 cho mint quote. Giải mã nó theo bit; byte không phải là boolean. Xemproducts/launchlab/accounts.
Initialize không dùng nữa vẫn nhận chương trình quote chỉ dành cho kế thừa, vì vậy config với mint quote Token-2022 chỉ có thể truy cập được thông qua InitializeV2 và InitializeWithToken2022.
Danh sách cho phép extension CPMM và CLMM
Sau khi các lối tắt danh sách tĩnh (được đề cập dưới đây), 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ứ thứ 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 tác.
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 dẫn bỏ qua
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 lối thoát 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.
Những đị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— authority quản trị viên Raydium tiêu chuẩn.crate::create_support_mint_associated_owner::ID— authority chuyên dụng cho mục đích này:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(devnet).
3. Phát hiện Superstate — chỉ CLMM
CLMM có đường dẫn thứ ba dành riêng cho tài sản 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 authority của chúng:
raydium-clmm/programs/amm/src/util/token.rs:485
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 lối thoát không miễn trừ
Các lối thoát 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. 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 chứa phí hạ cánh số tiền chính xác trong vault.
TransferHook sau đó không nhận được kiểm tra 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 là một hành động đòi hỏi sự tin tưởng cao.
Ngữ nghĩa “Bị chặn”
Khiis_supported_mint trả về false, tạo pool hoàn tác 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ể hoàn tác thất bạ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 khi 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 chương trình tùy chỉnh 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ó sandbox 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. Pool không thể lấy quyền quản lý. - ConfidentialTransfer — số tiền chuyển giao được mã hóa; đường cong không thể định giá swap.
- PermanentDelegate — người nắm giữ đại biểu 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. Không được phép theo mặc định.
- DefaultAccountState (Frozen) — pool ATA sẽ hạ cánh ở trạng thái
Frozenvà yêu cầu 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 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. Không được phép theo mặc định để giữ bề mặt hẹp.
Kế toán phí chuyển giao
Đối với mint mangTransferFeeConfig, mỗi swap, deposit và withdraw 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 + token2022FeeInlà “bạn gửi”amountOut - token2022FeeOutlà “bạn nhận”feeAmountlà 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 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; người gọi chương trình trực tiếp phải sao chép nó.
Chuyển đổi epoch
Authority 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 config (older, newer) tồn tại trên mint cùng một lúc và TransferChecked chọn theo epoch hiện tại. Cả SwapV2 CPMM và SwapV2 CLMM đều chuyển toàn bộ tài khoản mint trong accounts, vì vậy chương trình đọc config chính xác mà không cần tra cứu 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 — giới hạn bởi maximum_fee_basis_points của config 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 do quản trị viên đặt. Toán học swap hoạt động trên gốc:pool.token0Vault.amount là gốc.
Định nghĩa “pool Token-2022”
Pool là pool Token-2022 nếu 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. 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 tác. Xác nhận ngữ nghĩa
is_supported_mintngoài chuỗi trước khi bề mặt tạo pool trong UI của bạn. - Trích dẫn mà không cắt tóc phí chuyển giao. Mint phí chuyển giao 1% ở cả hai phía 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ê mint Token-2022 mới. Ví dụ và tổng hợp nên kiểm tra
TransferHookvàNonTransferabletrước khi bề 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 liệt kê trắng ở cấp độ Solana (quy ước hệ sinh thái phát triển).
- AMM tương thích chuyển giao bảo 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 LaunchLab.raydium-launchpad/programs/launchpad/src/instructions/admin/create_config.rs— liên kết mint quote LaunchLab (không có kiểm tra extension).

