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 →
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ı yayıncı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 vault mint’in mevcutfreeze_authority’si hardcoded kısıtlı-yayıncı listesiyle eşleştiğinde birini dondurur. İlk liste, aşağıdaki Superstate tespiti yoluyla 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 yayıncı pozisyon NFT’yi kontrol etmez.
OpenPositionV2klasik SPL pozisyon NFT’lerini Token-2022 havuz varlıkları üzerinde kapsar.OpenPositionWithToken22NftToken-2022 pozisyon NFT’lerini kapsar.OpenPositionV1 vault 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.
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, yine de üç açık bypass’tan biri aracılığıyla kabul edilebilir. Uzantı yinelemesi çalışmadan önce sırayla denenir.1. Statik mint whitelist
Her programda hardcoded birMINT_WHITELIST base58 dizesi sabiti vardır. Mint’in adresi eşleşirse, işlev hemen true döndürür ve uzantı kontrolü yapılmaz.
Bu adresler programa gömülüdür; 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 adanmış authority:RayVyjyJQz9vAi126A4sGexKnSU1XeZaHTRcM1mZMPY(mainnet),rayf3nEbb3bnfN6RDGFpqPbjc5uUa3tRUzu6UVYrRx5(devnet).
3. Superstate tespiti — yalnızca CLMM
CLMM, programa bağlıspl-token-2022 sürümünün açamadığı ScaledUiConfig uzantısını kullanan Superstate’in tokenize edilmiş varlıkları için özel bir üçüncü yola sahiptir. Bağımlılığı yükseltmek yerine, CLMM Superstate token’larını authority şekilleriyle tespit eder:
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ı delegesi de
superstate_allowlist::ID’dir.
Bypass’ların feragat etmediği şeyler
Bypass’lar uzantı izin listesini atlar, ancak program yine de şunları uygular:- Mint,
TokenveyaToken-2022tarafından sahiplenilir. Özel bir token programı upstream’de reddedilir. - Havuz vault’ları Token-2022 havuzları için doğru ATA uzantılarıyla oluşturulur (
ImmutableOwner, vb.). - Tüm transferler
transfer_checkedaracılığıyla gerçekleşir — ücret taşıyan mint’ler vault’a doğru miktarı indirir.
TransferHook eklemesi, swap zamanında kontrol kazanmaz; hook her transferde çalışır ve swap’ları bozabilir. Bu nedenle whitelist’e alma 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 hariç tutulan uzantının neden hariç tutulduğu
- 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 girmek yeteneği. 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 miktarları şifrelenmiştir; eğri swap’ı fiyatlandıramaz.
- PermanentDelegate — delegenin sahibi, havuz vault’u da dahil olmak üzere herhangi bir token hesabını temizleyebilir. Yalnızca güvenilir yayıncı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 iniş yapacak ve hesap başına çözmesi gerekecektir. Yalnızca Superstate tespiti aracılığıyla izin verilir; bu, yayıncının kayıt sırasında kurumsal hesapları çö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 miktardan daha az hareket ettirir. SDK hesaplamanın her iki yarısını da 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 transferi 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 tam mint hesabını accounts’da 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 alıntı yaparsanız, yürütülen ücret alıntı edilen ü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 miktar’ı tutar; “UI miktarı” ana miktar çarpı zaman bağımlı veya yönetici tarafından ayarlanan ölçek faktörüdür. Swap matematiği ana miktar üzerinde çalışır:pool.token0Vault.amount’u ana miktar 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 alıntısına güvenmek. Alıntı API’si alıntı yapmayı reddetmez — havuz oluşturma geri alınır. UI’nızda havuz oluşturmayı ortaya çıkarmadan önce
is_supported_mintsemantiğini çevrimdışı olarak doğrulayın. - Transfer ücreti kesintisi olmadan alıntı yapmak. Her iki tarafta %1 transfer ücreti mint’i olan %0,25 CPMM havuzunun etkili ücreti %0,25 değil, yaklaşık %2,25’tir. SDK alıntısını veya Trade API alıntısını 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ştirilmiştir. 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 listeli transfer-hook programları (ekosistem sözleşmesi 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).
- CLMM’nin
ScaledUiConfigkodlamasının Superstate buluşsal yöntemi olmadan çalışması için bağımlılık yükseltmesi.
İş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.

