Bu sayfa yapay zekâ tarafından otomatik olarak çevrilmiştir. İngilizce sürüm esas alınır.İngilizce sürümü görüntüle →
Raydium keyfi Token-2022 mint’lerini kabul etmez. CPMM ve CLMM her ikisi de katı bir izin listesi modunda çalışır: varsayılan olarak yalnızca küçük bir uzantı seti geçer; diğer her şey havuz oluşturma sırasında reddedilir. Bir avuç güvenilir mint, hardcoded adres tarafından kabul edilir; CLMM ek olarak yönetici tarafından yönetilen mint başına kayıt defterini ve çalışma zamanı Superstate token algılamasını destekler. Bu sayfa, neyin uygulandığı ve nerede olduğunun tek sayfalık referansıdır ve program kaynağına dosya-satır alıntıları içerir.
Program düzeyinde destek
İzin listesi kontrolleri şurada bulunur:
- CPMM:
is_supported_mintinraydium-cp-swap/programs/cp-swap/src/utils/token.rs:178,Initialize’dan çağrılır. - CLMM:
is_supported_mintinraydium-clmm/programs/amm/src/util/token.rs:280,CreatePool’dan çağrılır. - LaunchLab:
initialize_with_token_2022inraydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs(kaynak herkese açık değildir).
CLMM pozisyon NFT’si kısıtlı ihraççılar için dondurma
Pozisyon NFT hesapları varsayılan olarak donmuş değildir. CLMM yalnızca pozisyon bir V2 açık yolunu ve en az bir kasa mint’inin mevcutfreeze_authority’si hardcoded kısıtlı-ihraççı listesiyle eşleştiğinde birini dondurur. İlk liste, aşağıdaki Superstate algılaması yolunda kullanılan aynı authority’yi içerir. Havuz PDA’sını pozisyon NFT mint’inin freeze authority’si olarak ayarlamak kendi başına bir dondurma değildir. Bu bir pozisyon-saklama kuralıdır, başka bir havuz oluşturma izin listesi değildir:
- Havuz zaten var olabilir ve değiştirilebilir kalabilir.
- Pozisyon NFT mint’i CLMM havuz PDA’sını kendi freeze authority’si olarak kullanır; temel ihraççı pozisyon NFT’yi kontrol etmez.
OpenPositionV2klasik SPL pozisyon NFT’lerini Token-2022 havuz varlıkları üzerinde kapsar.OpenPositionWithToken22NftToken-2022 pozisyon NFT’lerini kapsar.OpenPositionV1 kasa mint’lerini incelemez ve gönderilen liste tarafından hedeflenen Token-2022 kısıtlı varlıklarına hizmet edemez.- Mevcut pozisyonlar değişmez.
ClosePosition istemci havuzu ilk kalan hesap olarak geçtiğinde atomik olarak çözer ve yakar. Bkz. products/clmm/ticks-and-positions.
LaunchLab quote mint’leri
LaunchLab’ın iki mint’i çok farklı şekilde kapılıdır ve asimetri kaçırması kolaydır.- Base mint — LaunchLab bunu oluşturur. Token-2022 base mint’i yalnızca
initialize_with_token_2022aracılığıyla ulaşılabilir ve program yalnızcaMetadataPointerve (isteğe bağlı olarak)TransferFeeConfigekleyecektir. Başka bir şeyNoSupportExtensiondöndürür. Önceden var olan bir Token-2022 mint’i base olarak hiç sağlanamaz.TransferFeeConfigeklendiğinde, mint’intransfer_fee_config_authority’si başlatma authority PDA’sıdır (mezuniyet’e kadar),withdraw_withheld_authority’si ise mint oluşturmadan itibaren platformun yapılandırılmıştransfer_fee_extension_auth’ıdır — launchpad programının kendisinin withdraw-withheld talimatı yoktur. Bkz.products/launchlab/platform-config. - Quote mint — LaunchLab bunu oluşturmaz ve taramaz.
CreateConfigmint hesabını olduğu gibi kabul eder, bu nedenle quote tarafındais_supported_minteşdeğeri yoktur. Tek kapı, bir yönetici tarafındanGlobalConfig’e bağlanmayı seçen mint’lerdir.
TransferHook quote mint’i her satın alma, satış ve ücret talebinde kendi hook’unu çalıştırır ve PermanentDelegate quote mint’i delegate’in bu havuzların quote kasalarını temizlemesine izin verir. İkisi de program tarafından engellenmez.
LaunchLab’ın bir quote mint’i bağlandıktan sonra doğru şekilde işlediği:
- Quote kasası, her iki ücret kasası ve share-fee alıcısının token hesabı quote mint’inin kendi programında oluşturulur.
- Quote tarafında
TransferFeeConfigdört ticaret talimatının tümüne fiyatlandırılır ve slippage sınırı kasa brüt hareketi yerine ödeyicinin net tutarına karşı kontrol edilir. Bkz.products/launchlab/instructions. PoolState.token_program_flagher iki mint’in programlarını kaydeder — base mint için bit0, quote mint için bit1. Bunu bit başına çöz; bayt bir boolean değildir. Bkz.products/launchlab/accounts.
Initialize talimatı hala eski quote programını alır, bu nedenle Token-2022 quote mint’i olan bir config yalnızca InitializeV2 ve InitializeWithToken2022 aracılığıyla ulaşılabilir.
CPMM ve CLMM uzantı izin listesi
Statik-whitelist kısa devrelerinden sonra (aşağıda ele alınmıştır), program mint’in uzantılarını yineler ve mint’i bu beş dışında herhangi bir uzantı taşıyorsa reddeder:
Bu listede olmayan herhangi bir şey —
TransferHook, NonTransferable, ConfidentialTransferMint, PermanentDelegate, MintCloseAuthority, DefaultAccountState, GroupPointer, GroupMemberPointer, MemberPointer, Pausable, vb. — is_supported_mint’in false döndürmesine ve havuz oluşturmanın geri alınmasına neden olur.
İlgili satırlar (CPMM, CLMM’de özdeş şekil):
cp-swap/src/utils/token.rs:190–200
Bypass yolları
İzin listesine uymayan bir Token-2022 mint’i yine de üç açık bypass’tan biri aracılığıyla kabul edilebilir. Uzantı yinelemesi çalışmadan önce sırayla denenir.1. Statik mint whitelist
Sabit birMINT_WHITELIST base58 dizesi dizisi her programda hardcoded’dir. Mint’in adresi eşleşirse, işlev hemen true döndürür ve uzantı kontrolü yapılmaz.
Bu adresler programa baked’dir; listeyi güncellemek 3/4 upgrade multisig aracılığıyla program yükseltmesi gerektirir.
2. Mint başına kayıt defteri — yalnızca CLMM
CLMM ek olarakSupportMintAssociated PDA’sını [b"support_mint", mint] seed’inde danışır. Bu mint için PDA varsa, uzantı setinden bağımsız olarak kabul edilir.
PDA, CreateSupportMintAssociated tarafından oluşturulur (admin/create_support_mint_associated.rs). Talimat iki imzacıya kapılıdır:
crate::admin::ID— standart Raydium yönetici authority’si.crate::create_support_mint_associated_owner::ID— bu amaç için özel authority:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(devnet).
3. Superstate algılaması — yalnızca CLMM
CLMM, özellikle Superstate’in tokenize edilmiş varlıkları için üçüncü bir yola sahiptir; bunlar CLMM programına bağlıspl-token-2022 sürümünün açamadığı ScaledUiConfig uzantısını kullanır. Bağımlılığı yükseltmek yerine, CLMM Superstate token’larını authority şekilleriyle algılar:
raydium-clmm/programs/amm/src/util/token.rs:485
Bir mint bu daldan geçer eğer dördü de tutarsa:
- Sahibi olan programı Token-2022 programıdır.
- Freeze authority’si
superstate_allowlist::ID’ye eşittir. Mainnet-beta ve devnet değerleri içinreference/program-addressesbölümüne bakın. DefaultAccountStateuzantısıFrozenolarak ayarlanmıştır.- Kalıcı delegate’i de
superstate_allowlist::ID’dir.
Bypass’ların feragat etmediği şeyler
Bypass’lar uzantı izin listesini atlar, ancak program yine de uygulanır:- Mint,
TokenveyaToken-2022tarafından sahiplenilir. Özel token programı upstream’de reddedilir. - Havuz kasaları Token-2022 havuzları için doğru ATA uzantılarıyla oluşturulur (
ImmutableOwner, vb.). - Tüm transferler
transfer_checkedaracılığıyla gider — ücret taşıyan mint’ler kasaya doğru tutarı indirir.
TransferHook ekleyen whitelisted veya PDA-kayıtlı bir mint, swap zamanında kontrol kazanmaz; hook basitçe her transferde çalışır ve swap’ları bozabilir. Whitelisting bu nedenle yüksek güven gerektiren bir eylemdir.
”Engellendi” semantiği
is_supported_mint false döndürdüğünde, havuz oluşturma ErrorCode::NotSupportMint (CPMM) / ErrorCode::NotSupportMint (CLMM) ile geri alınır. Sayısal kodlar için reference/error-codes bölümüne bakın.
Mevcut havuzlar bu kontrolü geriye dönük olarak başarısız olamaz — kapı yalnızca oluşturma sırasında çalışır. Mint uzantıları Raydium’un reddettiği kategoriler için değişmezdir (transfer hook, non-transferable, confidential transfer oluşturma sonrasında eklenemez), bu nedenle statik kontrol yeterlidir.
Her dışlanan uzantı neden dışlanır
- TransferHook — her transferde özel bir programı çağırır, keyfi CU tüketimi, keyfi başarısızlık koşulları ve çağıran programı yeniden giren yeteneği ile. Güvenli sandbox yoktur. Bazı DEX’ler hook izin listelerini korur; Raydium yapmaz.
- NonTransferable —
Transferher zaman başarısız olur. Havuz saklama alamaz. - ConfidentialTransfer — transfer tutarları şifrelenmiştir; eğri swap’ı fiyatlandıramaz.
- PermanentDelegate — delegate’in sahibi, havuz kasası da dahil olmak üzere herhangi bir token hesabını temizleyebilir. Yalnızca güvenilir ihraççılar (örn. düzenlenmiş stablecoin’ler) için statik whitelist aracılığıyla izin verilir.
- MintCloseAuthority — mint kapatılabilir; mevcut havuzlar kullanılamaz hale gelir. Varsayılan olarak disallowed.
- DefaultAccountState (Frozen) — havuz ATA’ları
Frozendurumunda inecek ve hesap başına çözmesi gerekir. Yalnızca Superstate algılaması aracılığıyla izin verilir, bu da ihraççının kurumsal hesapları kayıt sırasında çözeceğini varsayar. - Group/Member pointers — aktif olarak zararlı değildir, ancak gözden geçirilmemiştir. Yüzeyi dar tutmak için varsayılan olarak disallowed.
Transfer ücreti muhasebesi
TransferFeeConfig taşıyan mint’ler için, her swap, yatırma ve çekme nominal tutardan daha az hareket ettirir. SDK hesaplamanın her iki yarısını yüzeylendirir:
amountIn + token2022FeeInolarak “gönderdiğiniz”amountOut - token2022FeeOutolarak “aldığınız”feeAmounthavuz ücreti (LP + protokol) olarak, Token-2022 transfer ücretinden ayrıdır
amountIn → amountOut gösteren naif bir UI maliyetleri az gösterir.
maximumFee sınırı
Token-2022 transfer ücretleri transfer başına sınırlandırılır. %1 mint’i ve 10.000 token sınırı için, 100.000.000 token transfer yalnızca 10.000 ücret öder. SDK’nın computeSwapAmount sınırı uygular; doğrudan program çağıranları bunu çoğaltmalıdır.
Epoch geçişi
Bir mint authority, sonraki epoch’ta etkinleşen bir ücret oranı değişikliğini planlayabilir. Geçiş penceresi sırasında, iki config (older, newer) mint’te aynı anda yaşar ve TransferChecked mevcut epoch’a göre seçer. CPMM SwapV2 ve CLMM SwapV2 her ikisi de accounts’ta tam mint hesabını geçer, bu nedenle program ekstra arama olmadan doğru config’i okur.
Trade API veya SDK aracılığıyla bir epoch’tan daha fazla ileri fiyat belirtirseniz, yürütülen ücret fiyatlandırılan ücretten farklı olabilir — eski config’in maximum_fee_basis_points tarafından sınırlandırılır.
Faiz taşıyan ve ScaledUiAmount
Havuz ana tutarı tutar; “UI tutarı” ana tutarın zaman bağımlı veya yönetici tarafından ayarlanan ölçek faktörü ile çarpılmasıdır. Swap matematiği ana tutarda çalışır:pool.token0Vault.amount’u ana tutarı olarak ele almalıdır.
”Token-2022 havuzu” tanımı
Bir havuz Token-2022 havuzudur eğer herhangi bir mint’inprogramId == TokenzQdB... varsa. API bunu yüzeylendirir:
programId kullanın ve UI uyarısını yüzeylemek için hasTransferFee kullanın.
SDK yardımcıları
Yaygın entegrasyon hataları
- Yalnızca program ID’sini ön kontrol etmek. Bir mint Token-2022 ve desteklenmeyen olabilir. Havuz oluşturmaya izin vermeden önce uzantı listesini izin listesine (ve statik whitelist’e) karşı yürütün.
- Mint hiç kabul edilmediğinde SDK’nın teklifine güvenmek. Teklif API’si teklif vermeyi reddetmez — havuz oluşturma geri alınır. Havuz oluşturmayı UI’nize sunmadan önce
is_supported_mintsemantiğini çevrimdışı olarak onaylayın. - Transfer ücreti kesintisi olmadan teklif vermek. Her iki tarafında %1 transfer ücreti olan mint’i %0,25 CPMM havuzunda %2,25 civarında etkili ücret vardır, %0,25 değil. SDK teklifini veya Trade API teklifini kullanın — asla ücret’i yalnızca havuzun ücret katmanından manuel olarak hesaplamayın.
- Token-2022 havuzunda eski
Swaptalimatını çağırmak.SwapToken-2022’den önce geliştirildi. Herhangi bir mint Token-2022 olduğundaSwapV2kullanın. - Yeni Token-2022 mint’lerini otomatik olarak listelemek. Cüzdanlar ve toplayıcılar, bir mint’i kullanıcılara sunmadan önce
TransferHookveNonTransferablekontrol etmelidir; her ikisi de Raydium’a düşmandır.
Gelecek çalışma
Bu matrisi değiştirecek Solana ekosistemi ve protokol yol haritası öğeleri:- Solana düzeyinde izin listesi transfer-hook programları (ekosistem konvansiyonu gelişiyor).
- Gizli transfer uyumlu AMM’ler (araştırma aşaması).
- Daha geniş CPMM mint başına kayıt defteri (CLMM ile eşlik).
- Bağımlılık yükseltmesi böylece CLMM’nin
ScaledUiConfigkod çözme Superstate buluşsal yöntemi olmadan çalışır.
İşaretçiler
algorithms/token-2022-transfer-fees— swap’larda ücret matematiği.products/cpmm/instructions—SwapV2,Initialize.products/clmm/instructions—SwapV2,CreatePool,CreateSupportMintAssociated.reference/error-codes— program başınaNotSupportMintsayısal kodları.
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— mint başına kayıt defteri talimatı.raydium-launchpad/programs/launchpad/src/instructions/initialize_with_token_2022.rs— LaunchLab Token-2022 base-mint oluşturma.raydium-launchpad/programs/launchpad/src/instructions/admin/create_config.rs— LaunchLab quote-mint bağlama (uzantı kontrolü yok).

