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 modu çalıştırır: varsayılan olarak yalnızca küçük bir uzantı seti geçer; diğer her şey havuz oluşturma sırasında reddedilir. Her program bir mint’i tek bir mekanizmayla kabul eder — yönetici tarafından yönetilen mint başına kayıt PDA’sı. Her iki program da çeşitli noktalarda sabit kodlanmış bypass’lara sahipti; bunların tümü artık silinmiştir. Bu sayfa, neyin uygulandığı ve nerede olduğunun tek sayfalık referansıdır ve program kaynağına atıflar içerir.
Program düzeyinde destek
İzin listesi kontrolleri şurada bulunur:
- CPMM:
is_supported_mintinraydium-cp-swap/programs/cp-swap/src/utils/token.rs,InitializeveInitializeWithPermission’dan çağrılır. - CLMM:
is_supported_mintinraydium-clmm/programs/amm/src/util/token.rs,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 yolu kullandığında ve en az bir kasa mint’inin mevcutfreeze_authority’si sabit kodlanmış frozen_position_nft_authorities::IDS listesinde göründüğünde birini dondurur. Bu liste CLMM’nin önceki Superstate-token algılamasının yerini aldı ve eski buluşsal yöntemin eşleştirdiği ihraççı otoritesini taşır. Havuz PDA’sını pozisyon NFT mint’inin freeze authority’si olarak ayarlamak kendi başına bir dondurma değildir. Bu bir havuz oluşturma izin listesi değil, bir pozisyon-saklama kuralıdır:
- 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)TransferFeeConfigekler. Başka bir şeyNoSupportExtensiondöndürür. Önceden var olan bir Token-2022 mint hiç base olarak sağlanamaz.TransferFeeConfigeklendiğinde, mint’intransfer_fee_config_authority’si mezuniyet’e kadar başlatma otoritesi PDA’sıdır,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 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
Aşağıda kapsanan iki kısa devre sonrasında, 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
Bypass yolları
İzin listesine uymayan bir Token-2022 mint’i yine de kabul edilebilir, her programda bir mekanizmayla. Her iki program da geçmişte sabit kodlanmış bypass’lara sahipti; bunların hiçbiri hayatta kalmadı.is_supported_mint artık her iki programda da byte-for-byte aynı fonksiyondur: eski SPL Token mint’leri geçer, kayıt PDA’sı olan bir mint geçer ve diğer her şey yalnızca izin listesi uzantılarını taşımalıdır.
Tek bypass: mint başına kayıt
Her iki program da[b"support_mint", mint] seed’inde bir SupportMintAssociated PDA’sına danışır. Bu PDA mint için varsa, mint’in uzantı setinden bağımsız olarak kabul edilir.
Her programın kendi PDA kopyası (farklı program ID’leri altında türetilir), kendi CreateSupportMintAssociated / CloseSupportMintAssociated çifti ve paylaşılan yönetici ile birlikte kendi adanmış otoritesi vardır:
Dört anahtar (CPMM ve CLMM × mainnet ve devnet) Support-mint kayıt otoriteleri altında listelenir.
Her iki programda da talimat crate::admin::ID veya o programın adanmış otoritesini kabul eder ve mint’in Token-2022 tarafından sahip olunmasını gerektirir. Etki: belirli bir Token-2022 mint’i program yükseltmesi olmadan havuz oluşturmaya katılabilir — bu nedenle sabit kodlanmış listeler gidebilir.
Her program kayıt defterini sahip olduğu her havuz oluşturma yolundan danışır: CPMM Initialize ve InitializeWithPermission’dan (ikincisi LaunchLab mezuniyetlerinin kullandığı şeydir, bu nedenle kayıtlı bir mint mezuniyet kadar oluşturur), CLMM CreatePool, CreateCustomizablePool ve CreateCustomizablePoolV2’den.
Kaldırılan geçişler
Her iki hardcoded mekanizma da dağıtılan programlardan kaldırılmıştır. Eski davranışa karşı yazılan entegrasyonlar yine de bunları varsayabileceğinden, burada yalnızca belgelendirme amaçlı yer almaktadır.Statik MINT_WHITELIST — kaldırıldı
is_supported_mint işlemini extension yinelemesinden önce kısa devre yapmak için kullanılan base58 mint adreslerinin sabit bir dizisi. CLMM’nin altı adresi vardı ve 2026-07-24’te silinmiştir; CPMM’nin aynı setin ilk dördü vardı ve 2026-09-09 yükseltmesinde silinmiştir.
Bu mint’lerden biri için zaten var olan bir pool işlem yapmaya devam eder — mint kontrolü yalnızca pool oluşturma sırasında çalışır. Şimdi bunlardan biri için yeni bir pool oluşturmak, bunun yerine bir registry PDA’sı gerektirir.
Superstate yetki şekli algılaması — kaldırıldı
CLMM, Superstate’in tokenize edilmiş varlıklarını adrese göre değil yetki şekline göre tanımlamıştır:freeze_authority ve permanent delegate’in her ikisi de superstate_allowlist::ID değerine eşit olan ve DefaultAccountState değeri Frozen olarak ayarlanmış bir Token-2022 mint kabul edilmiştir. Bu bir buluşsal yöntemdi, bu nedenle aynı şekle sahip herhangi bir gelecek mint otomatik olarak kabul edilmiş olurdu.
2026-07-31’de superstate_allowlist modülü ile birlikte silinmiştir. Bunun yerine geçen şey daha dar kapsamlı ve farklı bir amaca hizmet eder: frozen_position_nft_authorities::IDS, hiçbir şeyi kabul etmez — bir position NFT’nin dondurulup dondurulmayacağına karar verir ve yukarıda açıklanmıştır. Eski buluşsal yöntemin eşleştirdiği tek bir ihraçcı yetki, bu listenin tek girdisidir.
Geçişlerin feragat etmediği şeyler
Geçişler extension izin listesini atlar, ancak program yine de şunları uygular:- Mint,
TokenveyaToken-2022tarafından sahiplenilir. Özel bir token programı upstream’de reddedilir. - Pool vault’ları, Token-2022 pool’ları için doğru ATA extension’ları ile oluşturulur (
ImmutableOwner, vb.). - Tüm transferler
transfer_checkedaracılığıyla gerçekleşir — ücretli mint’ler vault’a doğru miktarı gönderir.
TransferHook eklemesi, swap zamanında bir kontrol kazanmaz; hook her transferde çalışır ve swap’ları bozabilir. Bir mint’i kaydetmek bu nedenle yüksek güven gerektiren bir işlemdir.
”Engellendi” semantiği
is_supported_mint false döndürdüğünde, pool 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 pool’lar bu kontrolü geriye dönük olarak başarısız olamaz — kapı yalnızca oluşturma sırasında çalışır. Mint extension’ları, Raydium’un reddettiği kategoriler için değişmezdir (transfer hook, non-transferable, confidential transfer oluşturulduktan sonra eklenemez), bu nedenle statik kontrol yeterlidir.
Her hariç tutulan extension neden hariç tutulur
- 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 giriş yapabilme yeteneği ile. Güvenli bir sandbox yoktur. Bazı DEX’ler hook izin listeleri tutar; Raydium tutmaz.
- NonTransferable —
Transferher zaman başarısız olur. Bir pool emanet alamaz. - ConfidentialTransfer — transfer miktarları şifrelenmiştir; eğri swap’ı fiyatlandıramaz.
- PermanentDelegate — delegate’in sahibi, pool vault dahil olmak üzere herhangi bir token hesabını temizleyebilir. Yalnızca mint’i kaydederek kabul edilebilir, bu da güvenilir bir ihraçcının (örn. düzenlenmiş bir stablecoin) duruma göre eklenmesidir.
- MintCloseAuthority — mint kapatılabilir; mevcut pool’lar kullanılamaz hale gelir. Varsayılan olarak yasaklanmıştır.
- DefaultAccountState (Frozen) — pool ATA’ları
Frozendurumunda yer alır ve hesap başına çözülmesi gerekir. Yalnızca mint’i kaydederek kabul edilebilir, bu da ihraçcının kurumsal hesapları kayıt sırasında çözdüğünü varsayar. - Group/Member pointers — aktif olarak zararlı değildir, ancak gözden geçirilmemiştir. Yüzeyi dar tutmak için varsayılan olarak yasaklanmıştır.
Transfer ücreti muhasebesi
TransferFeeConfig taşıyan mint’ler için, her swap, yatırma ve çekme nominal miktardan daha az hareket ettirir. İki ayrı sayı söz konusudur ve SDK bunları ayrı tutar:
- Pool ücreti (LP + protokol + fon + yaratıcı) eğriden gelir.
raydium.cpmm.computeSwapAmount({ ... })bunufeeolarak döndürür,amountIn,amountOut,minAmountOut,executionPrice,priceImpactve hamswapResultile birlikte. - Token-2022 transfer ücreti pool’dan değil mint’ten gelir.
@raydium-io/raydium-sdk-v2içindekigetTransferAmountFeeyardımcıları tarafından hesaplanır, bu da birGetTransferAmountFeedöndürür:
computePairAmount inputAmountFee ve anotherAmount değerlerini GetTransferAmountFee değerleri olarak döndürür.
Doğru bir UI şunları gösterir:
- giriş miktarı artı transfer
fee’si “gönderdiğiniz” olarak - çıkış miktarı eksi transfer
fee’si “aldığınız” olarak - pool
fee’si ayrı bir satır olarak — bu Token-2022 ücreti değildir
amountIn → amountOut gösteren naif bir UI maliyetleri az gösterir. Bu yardımcılara cluster’dan epochInfo geçirin, bunları önbelleğe almayın; epoch, mint’in older ve newer ücret konfigürasyonu arasında seçim yapan şeydir.
maximumFee sınırı
Token-2022 transfer ücretleri transfer başına sınırlandırılmıştı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 yetkilisi, sonraki epoch’ta etkinleşen bir ücret oranı değişikliğini planlayabilir. Geçiş penceresi sırasında, iki konfigürasyon (older, newer) mint’te aynı anda yaşar ve TransferChecked geçerli epoch’a göre seçim yapar. CPMM SwapV2 ve CLMM SwapV2 her ikisi de tam mint hesabını accounts içinde geçer, bu nedenle program ek bir arama olmadan doğru konfigürasyonu okur.
Trade API veya SDK aracılığıyla bir epoch’tan daha fazla ileri tarihte fiyat belirtirseniz, yürütülen ücret belirtilen ücretinden farklı olabilir — eski konfigürasyonun maximum_fee_basis_points tarafından sınırlandırılır.
Faiz getiren ve ScaledUiAmount
Pool ana parayı tutar; “UI miktarı” ana para çarpı zaman bağımlı veya yönetici tarafından ayarlanmış bir ölçek faktörüdür. Swap matematiği ana para üzerinde çalışır:pool.token0Vault.amount değerini ana para olarak değerlendirmelidir.
”Token-2022 pool” tanımı
Bir pool, her iki mint’inprogramId == TokenzQdB... değerine sahip olması durumunda Token-2022 pool’udur. API bunu ortaya çıkarır:
programId kullanın ve UI uyarısı ortaya çıkarmak 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. Pool oluşturmaya izin vermeden önce extension listesini izin listesine karşı kontrol edin ve mint’in registry PDA’sını kontrol edin.
- Mint hiç kabul edilmediğinde SDK’nın fiyatlandırmasına güvenmek. Fiyatlandırma API’si fiyatlandırmayı reddetmez — pool oluşturma geri alınır. Pool oluşturmayı UI’nızda ortaya çıkarmadan önce
is_supported_mintsemantiğini çevrimdışı olarak doğrulayın. - Transfer ücreti kesintisi olmadan fiyatlandırmak. Bir pool’un her iki tarafında da %1 transfer ücreti mint’i olan %0,25 CPMM pool’u yaklaşık %2,25 etkili ücrete sahiptir, %0,25 değil. SDK fiyatlandırmasını veya Trade API fiyatlandırmasını kullanın — asla ücret’i yalnızca pool’un ücret katmanından manuel olarak hesaplamayın.
- Token-2022 pool’unda eski
Swaptalimatını çağırmak.SwapToken-2022’den önce gelir. Her iki mint de 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 ortaya çıkarmadan ö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 seviyesinde izin verilen transfer-hook programları (ekosistem sözleşmesi gelişiyor).
- Gizli transfer uyumlu AMM’ler (araştırma aşaması).
- Daha geniş CPMM per-mint registry’si (CLMM ile eşlik).
- Registry için genel bir okuma yolu, böylece bir UI “desteklenmeyen”i “desteklenmeyen ancak kayıtlı”dan ayırt edebilir, PDA’yı kendisi türetmeden.
İş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—is_supported_mint,support_mint_associated_is_initialized.raydium-clmm/programs/amm/src/util/token.rs—is_supported_mint,support_mint_associated_is_initialized,frozen_position_nft_authorities,position_nft_must_freeze.raydium-clmm/programs/amm/src/instructions/admin/create_support_mint_associated.rs— per-mint registry 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 (extension kontrolü yok).

