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 →
PlatformConfig, GlobalConfig üzerine oturan platform düzeyinde bir katmandır. GlobalConfig protokol genelinde kuralları tanımlarken (“işlem ücreti %1, arz en az 10M olmalı, sadece bu cüzdan mezun olabilir”), PlatformConfig her başlatma platformunun — pump.fun, Raydium’un kendi arayüzü, üçüncü taraf launchpad’ler — kendi ücretini eklemek, mezuniyet sonrası LP’nin payını talep etmek, başlatmalarının hangi eğri şekillerini seçebileceğini kısıtlamak ve markalamalarını (ad, web sitesi, resim) zincir üzerinde göstermek için kullandığı araçtır.

Nedir

Bir PlatformConfig hesabı, bir platform için beş çapraz işlevi yönetir:
  1. Markalama — ad, web sitesi, resim bağlantısı; tümü satır içi depolanır, böylece herhangi bir explorer veya toplayıcı, bir token’ı başlatan platformu gösterebilir.
  2. Platform ücreti — protokolün trade_fee_rate’inin üzerine ek bir işlem ücreti (fee_rate). Platform’un platform_fee_wallet’ine tahakkuk eder. GlobalConfig.max_share_fee_rate tarafından 100 bps ile sınırlandırılır.
  3. LP geçiş bölüşümü — üç depolanan tam sayı (platform_scale, creator_scale, burn_scale) toplamı 1_000_000’e eşittir. 2026-08-17 yükseltmesinden önce, creator ölçeği ayrı bir creator Fee Key’i üretiyordu. Yükseltmeden sonra yürütülen geçişler ilk ikisini platform’a ait kilitli LP payına birleştirir; geri kalan yakılır.
  4. Eğri parametresi beyaz listesi — bu platformda izin verilen tam olarak hangi (supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...) kombinasyonlarını listeleyen bir Vec<PlatformCurveParam>. Vektör boşsa veya tüm girişler geçersizse, herhangi bir kombinasyon izin verilir; aksi takdirde başlatmalar tam olarak bir girişle eşleşmelidir.
  5. Global-config beyaz listesi — seçilen GlobalConfig için platform tarafından oluşturulan bir PlatformAllowConfig gerektiren isteğe bağlı bir kısıtlama.
PDA türetme:
(Kanonik seed listesi için kaynakta create_platform_config’e bakın.)

Düzen

platform_scale + creator_scale + burn_scale toplamı 1_000_000’e eşit olmalıdır. 2026-08-17 yükseltmesinden önce, creator_scale ayrı olarak kilitliydi ve Fee Key’i token yaratıcısına gidiyordu. Yükseltmeden sonra yürütülen geçişler için, platform_scale’e eklenir ve kilitli LP hakları platform’a gider. Güncellenmiş mantık altında örnek sonuçlar:
  • (0, 100_000, 900_000) — %90 LP yakılır, %10 platform’a kilitlenir.
  • (50_000, 100_000, 850_000) — %85 yakılır, %15 platform’a kilitlenir.
  • (0, 0, 1_000_000) — tam yakma, NFT mint yok. Katı “içeriden kimse yok” başlatmaları.

Markalama alanları

name, web ve img satır içi bayt dizileridir, boyut sabitine kadar sıfırlarla doldurulur. Bunları dizeler olarak okumak için ilk \0’a kadar dilimleyin:
Sabitler kasıtlı olarak cömerttir (name: 64, web: 256, img: 256), böylece platformlar explorer’lar ve toplayıcılar için yeterli meta veri içerebilir ve zincir dışı depolamaya dokunmaz. Bu boyutları aşan herhangi bir şey CreatePlatformConfig’de InvalidInput ile geri döner.

Ücret mekaniği

Bir PlatformConfig’e bağlı bir eğri üzerindeki swap üç katmanlı ücret alır:
  • trade_fee protokolün protocol_fee_owner’ına tahakkuk eder (CollectFee aracılığıyla talep edilir).
  • platform_fee platform başına bir kasaya tahakkuk eder (ClaimPlatformFee veya ClaimPlatformFeeFromVault aracılığıyla talep edilir; instructions bölümüne bakın).
  • creator_fee yaratıcının pubkey’i + quote mint tarafından anahtarlanan yaratıcı başına bir kasaya tahakkuk eder (ClaimCreatorFee aracılığıyla talep edilir).
creator_fee_rate MAX_CREATOR_FEE_RATE = 5000 (50 bps) ile sınırlandırılır. fee_rate (platform ücreti) GlobalConfig.max_share_fee_rate tarafından 10000 (100 bps) ile sınırlandırılır.

NFT geçiş bölüşümü (yalnızca CPMM)

Bir başlatma CPMM’ye mezun olduğunda, geçiş talimatı CPMM::InitializeWithPermission tarafından mint edilen LP token’larını iki şekilde böler:
lp_to_platform sıfır değilse, LP-Lock programı bunu platform_nft_wallet tarafından sahip olunan bir Fee Key NFT’sine sarar. Bu, ayrı platform ve yaratıcı Fee Key’leri oluşturan yükseltme öncesi davranışın yerini alır. Yükseltmeden önce tamamlanan geçişler tarafından oluşturulan Fee Key’ler değişmeden kalır. Bu LP-fee hakkı, platform_cp_creator tarafından kontrol edilen CPMM yaratıcı ücretlerinden ayrıdır. Yakma dilimi doğrudan yakılır, bu nedenle hiçbir hesap bunu geri çekemez veya bu payın temsil ettiği LP ücretlerini talep edemez. Depolanan migrate_type = 0 olan mevcut başlatmalar hala eski AMM v4 yolunu kullanabilir. Yeni başlatma bu geçiş türünü reddeder.

Eğri parametresi beyaz listesi

curve_params: Vec<PlatformCurveParam>, platformun başlatmalarının hangi eğri şekillerini seçebileceğini kısıtlamak için mekanizmasıdır. Vektör boş değilse ve en az bir girişi geçerliyse, program Initialize’da başlatmanın parametrelerinin tam olarak bir girişle eşleşmesini zorunlu kılar.
Her alanın joker anlamına gelen bir sentinel değeri vardır (herhangi bir değer eşleşir): u64 alanları için u64::MAX, u8 alanları için u8::MAX, supply / sell / fund-raising alanları için 0. Tüm sentinel’leri olan bir BondingCurveParam “her şeye izin ver” — boş beyaz liste davranışına eşdeğerdir. Initialize’daki eşleştirme algoritması:
  1. curve_params’ı global_config’i başlatmanın seçilen GlobalConfig’i ile eşleşen girişlere filtreleyin.
  2. Filtrelenmiş liste boşsa, herhangi bir parametreye izin verin (platform bu GlobalConfig için hiçbir şeyi beyaz listelemedi).
  3. Filtrelenmiş listedeki her girişin all_is_invalid() varsa (her alan joker), herhangi bir parametreye izin verin.
  4. Aksi takdirde girişleri yineleyin; her girişi için, başlatmanın parametrelerini her joker olmayan alana karşı kontrol edin. Tüm joker olmayan alanlar eşleşirse, kabul edin ve dönün.
  5. Hiçbir girişi eşleşmezse, InvalidInput ile geri döndürün.
Bu, bir platformun “sadece standart 1B-supply / 800M-sold / 30k-USDC-raise / no-vesting şeklini izin ver” demesini sağlar; bu dört alan için somut değerler ve başka yerlerde joker’ler yazarak. Veya daha katı bir platform, desteklenen başlatma katmanı başına üç veya dört ayrık şekli numaralandırabilir. MAX_CURVE_PARAMS = 10 beyaz liste boyutunu sınırlandırır.

PlatformAllowConfig — bir platformu kısıtlama

Her platform, başlatmalarının hangi GlobalConfig hesaplarını kullanabileceğini kısıtlamayı seçer. restrict_global_config’i UpdatePlatformConfig::RestrictGlobalConfig(0 | 1) ile ayarlayın.
PDA seed’leri: [b"platform_allow_config", platform_config, global_config]. Platform yöneticisi, CreatePlatformAllowConfig ve ClosePlatformAllowConfig aracılığıyla izin verilen her çift için bir hesap oluşturur veya kapatır. Kısıtlama 1 olduğunda, başlatma beklenen PDA için remaining_accounts’ı arar ve eksik hesabı NotEnoughRemainingAccounts ile reddeder. Kısıtlama 0 olduğunda, izin hesabı gerekli değildir. Eski protokol-yönetici tarafından yönetilen PlatformGlobalAccess hesabı ve onun oluştur/kapat talimatları emekli olmuştur. Mevcut PlatformConfig ve GlobalConfig boyutları değişmez, ancak dekoderler eski global bayrağını yeni platform bayrağıyla değiştirmelidir. Eski erişim PDA’ları yeni kontrol tarafından tüketilmez.

Okuma yolu

“Bu token nereden başlatıldı” gösteren bir UI için, PoolState.platform_config orijinal PlatformConfig’i doğrudan gösterir — bir kez getirin ve markalamayı önbelleğe alın.

Güncelleme yolu

Cüzdan rotasyonları (platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) hepsi UpdatePlatformConfig aracılığıyla gider. Tam param kodları için kaynağın update_platform_config dağıtım tablosunu okuyun.

Yaygın tuzaklar

  • Beyaz liste sentinel’leri yanlış ayarlanmış. total_locked_amount = 0 olan bir BondingCurveParam joker değildir — vesting’i açıkça devre dışı bırakan başlatmalarla eşleşir. Bu alan için joker u64::MAX’tır. Aynı tuzak cliff_period ve unlock_period için de vardır. Sentinel’leri doğru ayarlamak için clear() kullanın (programın açığa çıkardığı).
  • NFT-bölüşüm yuvarlama. Üç ölçek tam olarak 1_000_000’e toplanmalıdır. CreatePlatformConfig’de bir hata geri döner; çalışma zamanında bir hata ekstra bir LP birimi mint veya yakardı, bu da katı eşitlik kontrolünün orada olmasının nedenidir.
  • Platform vesting çift tahsisi. platform_vesting_scale > 0 ise, platform başlatmanın bağış toplama sona erdikten sonra bir kez CreatePlatformVestingAccount çağırmalıdır; unutursa, bu pay tahsis edilmemiş ve sonsuza kadar hareketsiz kalır (başlatmanın total_locked_amount bütçesi tüketilir ancak platform asla talep etmez).
  • platform_cp_creator belirsizliği. Pubkey::default() olarak ayarlandığında, başlatma yaratıcısı mezuniyet sonrası CPMM havuzunun pool_creator’ü olarak kaydedilir; gerçek bir anahtara ayarlandığında, o anahtar bunun yerine kaydedilir. Bu, mezuniyet sonrası CPMM yaratıcı ücretlerinin yararlanıcısını ve orijinal CPMM::CollectCreatorFee yolunu imzalayabilecek kişiyi belirler. İzinsiz koleksiyon yolu hala bu kaydedilen anahtarın kanonik ATA’larını öder. Platform-config oluşturma zamanında hangi modeli istediğinize karar verin.
  • İzin hesabı olmadan kısıtlama. restrict_global_config’i gerekli PlatformAllowConfig’i oluşturmadan etkinleştirmek, bu config’i seçen yeni başlatmaları engeller.

İşaretçiler

Kaynaklar:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfig, PlatformParams, MigrateNftInfo, PlatformCurveParam, BondingCurveParam, is_valid_curve_param.
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig.
  • raydium-launch/programs/launchpad/src/lib.rs — platform config ve allow-config giriş noktaları.