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. 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 hardcoded 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 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, swap’lar mint’lerin değişmediğini güvenir, bu Token-2022 mint durumunun değişmez kısımları için doğrudur.

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 V2 açık yolunu kullandığında ve en az bir kasa mint’inin mevcut freeze_authority’si hardcoded 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ççı yetkilisini 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.
  • OpenPositionV2 klasik SPL pozisyon NFT’lerini Token-2022 havuz varlıkları üzerinde kapsar. OpenPositionWithToken22Nft Token-2022 pozisyon NFT’lerini kapsar.
  • OpenPosition V1 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.
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.

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_2022 aracılığıyla ulaşılabilir ve program yalnızca MetadataPointer ve (isteğe bağlı olarak) TransferFeeConfig ekler. Başka bir şey NoSupportExtension döndürür. Önceden var olan bir Token-2022 mint base olarak hiç sağlanamaz. TransferFeeConfig eklendiğinde, mint’in transfer_fee_config_authority’si mezuniyet’e kadar başlatma yetkilisi PDA’sıdır, withdraw_withheld_authority’si ise mint oluşturulmadan 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. CreateConfig mint hesabını olduğu gibi kabul eder, bu nedenle quote tarafında is_supported_mint eşdeğeri yoktur. Tek kapı, bir yönetici tarafından GlobalConfig’e bağlanmayı seçen mint’lerdir.
Bu, Token-2022 quote mint’ini bağlamayı yüksek güven gerektiren bir eylem yapar, aynı nedenle aşağıda bir mint’i kaydetmek: TransferHook quote mint’i her satın alma, satış ve ücret talebinde kendi hook’unu çalıştırır ve PermanentDelegate quote mint’i temsilcinin bu havuzların quote kasalarını temizlemesine izin verir. İkisi de program tarafından engellenmez. LaunchLab bir quote mint bağlandıktan sonra doğru şekilde işlediği şey:
  • Quote kasası, her iki ücret kasası ve pay-ücret alıcısının token hesabı quote mint’inin kendi programında oluşturulur.
  • Quote tarafında TransferFeeConfig dö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_flag her 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.
Kullanımdan kaldırılan 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 Token-2022 mint’i yine de kabul edilebilir, her programda bir mekanizmayla. Her iki program da geçmişte hardcoded bypass’lara sahipti; bunların hiçbiri hayatta kalmadı. is_supported_mint artık her iki programda da bayt-bayt aynı fonksiyondur: eski SPL Token mint’leri geçer, mint’in bir kayıt PDA’sı varsa 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] tohumu ile SupportMintAssociated PDA’sını danışır. Bu PDA mint için varsa, mint’in uzantı setinden bağımsız olarak kabul edilir. Her programın kendi PDA kopyası vardır (farklı program ID’leri altında türetilir), kendi CreateSupportMintAssociated / CloseSupportMintAssociated çifti ve paylaşılan yönetici ile birlikte kendi adanmış yetkilisi: Dört anahtar (CPMM ve CLMM × mainnet ve devnet) Destek-mint kayıt yetkilendirmeleri altında listelenmiştir. Her iki programda talimat crate::admin::ID veya o programın adanmış yetkilisini 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 hardcoded 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 mezun olur ve oluşturur), CLMM CreatePool, CreateCustomizablePool ve CreatePermissionedPool’dan.

Kaldırılan bypass’lar

Her iki hardcoded mekanizması dağıtılan programlardan gitti. Eski davranışa karşı yazılan entegrasyonlar yine de bunları varsayabilir diye burada belgelenmiştir.

Statik MINT_WHITELIST — kaldırıldı

Base58 mint adreslerinin sabit bir dizisi, uzantı yinelemesinden önce is_supported_mint’i kısa devre yapmak için kullanılırdı. CLMM’nin altı adres vardı ve 2026-07-24’te silindi; CPMM’nin aynı setin ilk dördü vardı ve 2026-09-09 yükseltmesinde silindi. Bu mint’lerden biri için zaten var olan havuz ticaret yapmaya devam eder — mint kontrolü yalnızca havuz oluşturma sırasında çalışır. Şimdi bunlardan biri için yeni havuz oluşturmak yerine bir kayıt PDA’sı gerektirir.

Superstate yetkilisi-şekli algılaması — kaldırıldı

CLMM kısaca Superstate’in tokenize edilmiş varlıklarını adrese göre değil yetkilisi şekline göre tanımladı: freeze_authority ve kalıcı temsilci her ikisi de superstate_allowlist::ID’ye eşit olan Token-2022 mint’i, DefaultAccountState Frozen olarak ayarlanmış, kabul edildi. 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 silindi. Bunun yerini alan daha dar bir şey ve farklı bir amaca hizmet eder: frozen_position_nft_authorities::IDS, hiçbir şeyi kabul etmez — bir pozisyon NFT’nin donup donmayacağına karar verir ve yukarıda açıklanmıştır. Eski buluşsal yöntemin eşleştirdiği tek ihraççı yetkilisi bu listede tek giriştir.

Bypass’ların feragat etmediği şey

Bypass’lar uzantı izin listesini atlar, ancak program yine de uygulanır:
  • Mint Token veya Token-2022 tarafından sahip olunur. Özel bir token programı yukarı akışta reddedilir.
  • Havuz kasaları Token-2022 havuzları için doğru ATA uzantıları ile oluşturulur (ImmutableOwner, vb.).
  • Tüm transferler transfer_checked aracılığıyla gider — ücret taşıyan mint’ler kasa’ya doğru tutarı indirir.
Daha sonra TransferHook ekleyen beyaz listeli veya PDA kayıtlı mint’i swap zamanında kontrol kazanmaz; hook basitçe her transferde çalışır ve swap’ları bozabilir. Mint’i kaydetmek 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şturulduktan sonra eklenemez), bu nedenle statik kontrol yeterlidir.

Her dışlanan uzantı neden dışlanır

  • TransferHook — her transferde keyfi CU tüketimi, keyfi başarısızlık koşulları ve çağıran programı yeniden girmek yeteneği ile özel bir programı çağırır. Güvenli sandbox yoktur. Bazı DEX’ler hook izin listelerini korur; Raydium yapmaz.
  • NonTransferable — Transfer her zaman başarısız olur. Havuz saklama alamaz.
  • ConfidentialTransfer — transfer tutarları şifrelenir; eğri swap’ı fiyatlandıramaz.
  • PermanentDelegate — temsilcinin sahibi havuz kasası da dahil olmak üzere herhangi bir token hesabını temizleyebilir. Yalnızca mint’i kaydederek kabul edilebilir, bu da güvenilir ihraççı (örn. düzenlenmiş stablecoin) duruma göre nasıl katılır.
  • MintCloseAuthority — mint kapatılabilir; mevcut havuzlar kullanılamaz hale gelir. Varsayılan olarak disallowed.
  • DefaultAccountState (Frozen) — havuz ATA’ları Frozen durumunda inecek ve hesap başına çözmek gerekir. Yalnızca mint’i kaydederek kabul edilebilir, bu da ihraççının kurumsal hesapları kayıt sırasında çözdüğünü varsayar.
  • Group/Member pointers — aktif olarak zararlı değil, ancak gözden geçirilmemiş. Yüzeyi dar tutmak için varsayılan olarak disallowed.

Transfer-ücret muhasebesi

TransferFeeConfig taşıyan mint’ler için, her swap, yatırma ve çekme nominal tutardan daha az hareket ettirir. İki ayrı sayı söz konusudur ve SDK bunları ayrı tutar:
  • Havuz ücreti (LP + protokol + fon + yaratıcı) eğriden gelir. raydium.cpmm.computeSwapAmount({ ... }) bunu fee olarak döndürür, amountIn, amountOut, minAmountOut, executionPrice, priceImpact ve ham swapResult ile birlikte.
  • Token-2022 transfer ücreti havuzdan değil mint’ten gelir. @raydium-io/raydium-sdk-v2’deki getTransferAmountFee yardımcıları tarafından hesaplanır, GetTransferAmountFee döndürür:
Yatırma ve çekme bunu doğrudan yüzey: computePairAmount inputAmountFee ve anotherAmount’ı GetTransferAmountFee değerleri olarak döndürür. Doğru UI şunları gösterir:
  • giriş tutarı artı transfer fee’si “gönderdiğiniz”
  • çıkış tutarı eksi transfer fee’si “aldığınız”
  • havuz fee’si ayrı bir satır — Token-2022 ücreti değildir
Yalnızca amountIn → amountOut gösteren naif UI maliyetleri az gösterir. Bu yardımcılara epochInfo’yu kümeden geçirin, onu önbelleğe almayın; epoch mint’in older ve newer ücret konfigürasyonu arasında seçim yapar.

maximumFee sınırı

Token-2022 transfer ücretleri transfer başına sınırlandırılır. %1 mint’i 10.000 token sınırı ile 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

Mint yetkilisi, sonraki epoch’ta etkinleşen ü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 konfigürasyonu okur. Trade API veya SDK aracılığıyla birden fazla epoch öncesinde fiyat alırsanız, yürütülen ücret alıntı ücretten farklı olabilir — eski konfigürasyonun maximum_fee_basis_points ile sınırlandırılır.

Faiz taşıyan ve ScaledUiAmount

Havuz ana tutarı tutar; “UI tutarı” ana tutar çarpı zaman bağımlı veya yönetici tarafından ayarlanan ölçek faktörüdür. Swap matematiği ana tutar üzerinde çalışır:
SDK otomatik olarak dönüştürür. Doğrudan RPC okuyucuları pool.token0Vault.amount’ı ana tutar olarak ele almalıdır.

”Token-2022 havuzu” tanımı

Havuz Token-2022 havuzudur eğer herhangi bir mint’in programId == TokenzQdB... varsa. API bunu yüzey:
Göndermek için programId kullanın ve UI uyarısı yüzeyi için hasTransferFee kullanın.

SDK yardımcıları

Yaygın entegrasyon hataları

  • Yalnızca program ID’sini ön kontrol etme. Mint Token-2022 ve desteklenmeyen olabilir. Havuz oluşturmaya izin vermeden önce uzantı listesini izin listesine karşı yürüyün ve mint’in kayıt PDA’sını kontrol edin.
  • Mint hiç kabul edilmediğinde SDK’nın alıntısına güvenme. Alıntı API’si alıntı vermeyi 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-ücret kesintisi olmadan alıntı alma. Her iki tarafında %1 transfer-ücret mint’i %0.25 CPMM havuzunun etkin ücreti %0.25 değil, yaklaşık %2.25’tir. SDK alıntısını veya Trade API alıntısını kullanın — hiçbir zaman ücret’i yalnızca havuzun ücret katmanından manuel olarak hesaplamayın.
  • Token-2022 havuzunda eski Swap talimatını çağırma. Swap Token-2022’den önce geliştirildi. Herhangi bir mint Token-2022 olduğunda SwapV2 kullanın.
  • Yeni Token-2022 mint’lerini otomatik listeleme. Cüzdanlar ve toplayıcılar 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 listesi 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 (CLMM ile eşlik).
  • Kayıt defterinin herkese açık okuma yolu, böylece UI “desteklenmeyen”i “desteklenmeyen ancak kayıtlı”dan PDA’yı kendisi türetmeden söyleyebilir.
Herhangi biri iniş yaptığında bu sayfa güncellenecektir.

İşaretçiler

Kaynaklar:
  • 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 — mint başına kayıt 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).