Skip to main content
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 tespitini destekler. Bu sayfa, neyin uygulandığı ve nerede olduğunun tek sayfalık referansıdır; program kaynağına dosya ve satır alıntıları içerir.

Program düzeyinde destek

İzin listesi kontrolleri şurada bulunur: CPMM veya CLMM’de swap zamanında mint kontrolü yoktur — kapı yalnızca havuz oluşturma sırasında açılır. Bir havuz var olduktan sonra, swaplar mint’lerin değişmediğini güvenerek çalışır; bu Token-2022 mint durumunun değişmez kısımları için doğrudur.

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 mevcut freeze_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.
  • OpenPositionV2 klasik SPL pozisyon NFT’lerini Token-2022 havuz varlıkları üzerinde kapsar. OpenPositionWithToken22Nft Token-2022 pozisyon NFT’lerini kapsar.
  • OpenPosition V1 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.
Donmuş pozisyonlar sahibi tarafından yönetilebilir kalır ancak aktarılamaz. 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 bir MINT_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 olarak SupportMintAssociated 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).
Etki: CLMM ekibi, program yükseltmesi olmadan belirli bir Token-2022 mint’ini havuz oluşturmaya katılabilir. CPMM’nin eşdeğeri yoktur — izin listesi kesinlikle kaynak kodlanmıştır.

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çin reference/program-addresses bölümüne bakın.
  • DefaultAccountState uzantısı Frozen olarak ayarlanmıştır.
  • Kalıcı delegesi de superstate_allowlist::ID’dir.
Bu bir kayıt defteri değil, bir buluşsal yöntemdir — Superstate’in gelecekte aynı authority şekliyle yayınladığı herhangi bir mint otomatik olarak kabul edilecektir.

Bypass’ların feragat etmediği şeyler

Bypass’lar uzantı izin listesini atlar, ancak program yine de şunları uygular:
  • Mint, Token veya Token-2022 tarafı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_checked aracılığıyla gerçekleşir — ücret taşıyan mint’ler vault’a doğru miktarı indirir.
Whitelist’e alınmış veya PDA’ya kayıtlı bir mint, örneğin daha sonra 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.
  • NonTransferableTransfer her 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ı Frozen durumunda 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:
Doğru bir UI şunları gösterir:
  • amountIn + token2022FeeIn olarak “gönderdiğiniz”
  • amountOut - token2022FeeOut olarak “aldığınız”
  • feeAmount havuz ücreti (LP + protokol) olarak; Token-2022 transfer ücretinden ayrıdır
Yalnızca 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:
SDK otomatik olarak dönüştürür. Doğrudan RPC okuyucuları 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’in programId == TokenzQdB... varsa. API bunu yüzeylendirir:
Göndermek için 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_mint semantiğ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 Swap talimatını çağırmak. Swap Token-2022’den önce geliştirilmiştir. Herhangi bir mint Token-2022 olduğunda SwapV2 kullanın.
  • Yeni Token-2022 mint’lerini otomatik olarak listelemek. Cüzdanlar ve toplayıcılar, bir mint’i kullanıcılara sunmadan önce TransferHook ve NonTransferable kontrol 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 ScaledUiConfig kodlamasının Superstate buluşsal yöntemi olmadan çalışması için bağımlılık yükseltmesi.
Herhangi biri iniş yaptığında bu sayfa güncellenecektir.

İşaretçiler

Kaynaklar:
  • raydium-cp-swap/programs/cp-swap/src/utils/token.rsMINT_WHITELIST, is_supported_mint.
  • raydium-clmm/programs/amm/src/util/token.rsMINT_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.