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 seçebileceği parametreleri kısıtlamak ve markalamalarını (ad, web sitesi, görüntü) 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, görüntü bağlantısı; hepsi satır içi depolanır, böylece herhangi bir explorer veya toplayıcı platformu gösterebilir.
  2. Platform ücreti — protokolün trade_fee_rate’ine ek olarak ekstra işlem ücreti (fee_rate). Platform’un platform_fee_wallet’ına tahakkuk eder. Her iki oluşturma ve güncelleme yolunda 500 bps (50000) ile sınırlandırılır; 2026-08-26’da 100 bps (10000) üzerinden yükseltildi — bkz. Ücret sınırları.
  3. LP geçiş bölüşümü — üç depolanan tam sayı (platform_scale, creator_scale, burn_scale) toplamı 1_000_000. 2026-08-17 yükseltmesinden önce, creator ölçeği ayrı bir creator Fee Key’i üretiyordu. Yükseltmeden sonra gerçekleştirilen geçişler ilk ikisini platform’a ait kilitli LP payına birleştirir; geri kalan yakılır.
  4. Başlatma parametresi kuralları — seçilen GlobalConfig için PlatformCurveRule hesabını karşılamayı gerektiren isteğe bağlı bir kısıtlama (restrict_curve_param). Kurallar değer bantlarını, alternatif seviyeleri ve token türü kapılarını destekler; PlatformConfig üzerinde değil, kendi hesaplarında yaşarlar.
  5. Global-config izin listesi — seçilen GlobalConfig için platform tarafından oluşturulan PlatformAllowConfig’i 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

Hesap sabit 944 bayttır. 2026-08-31 sürümüne kadar başlatma parametrelerini PlatformCurveRule hesaplarına taşıyan bir sondaki Vec<PlatformCurveParam> tutuyordu; restrict_curve_param, curve_rule_manager ve vec’in uzunluk önekinin işgal ettiği 4 bayt hepsi padding’den çıktı, bu nedenle bayt sayısı ve her önceki alan ofseti değişmedi. Dekoderler’in ne değiştirmesi gerektiği için changelog girişine bakın. platform_scale + creator_scale + burn_scale tam olarak 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 gitti. Yükseltmeden sonra gerçekleştirilen geçişler için, platform’a 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 basımı 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 doldurulmuştur. 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, zincir dışı depolamaya dokunmadan. Bu boyutları aşan herhangi bir şey CreatePlatformConfig’te InvalidInput ile geri döner.

Ücret mekaniği

Bir PlatformConfig’e bağlı bir curve ü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 vault’a tahakkuk eder (ClaimPlatformFee veya ClaimPlatformFeeFromVault aracılığıyla talep edilir; bkz. instructions).
  • creator_fee creator’ın pubkey’i + quote mint tarafından anahtarlanan creator başına vault’a tahakkuk eder (ClaimCreatorFee aracılığıyla talep edilir).

Ücret sınırları

Her iki oran da 1/1_000_000 cinsinden ifade edilir, bu nedenle 5000 50 bps ve 50000 500 bps’dir. fee_rate için iki uygulama noktası farklı dosyalardaki ayrı require! çağrılarıdır, bu nedenle farklı hata kodları taşırlar, ancak aynı tavanı uygularlar. İzin verilen herhangi bir oranla oluşturulan bir platform daha sonra düzenlenebilir, AllInfo toplu varyantı da dahil olmak üzere her alanı yeniden yazar. Her iki fee_rate sınırı orijinal olarak 100 bps (10000) idi. Güncelleme sınırı 2026-01-27’de 25000 (250 bps)‘e taşındı; 2026-08-26’da her ikisi 50000 (500 bps)‘e taşındı — bkz. changelog girişi. GlobalConfig.max_share_fee_rate her iki oranı da sınırlamaz. Dört swap talimatının aldığı işlem başına share_fee_rate argümanını — referral ücretini — sınırlar ve başka hiçbir şeyi değil. Bkz. global-config.

Token-2022 transfer-fee yetkileri

transfer_fee_extension_auth, bir başlatma InitializeWithToken2022 aracılığıyla transfer ücreti eklenmiş olarak oluşturulduğunda, base mint’in TransferFeeConfig yetkililerini tutacak platform anahtarını adlandırır. Uzantı iki yetkiliye sahiptir ve bunlar başlatma yaşam döngüsünün farklı noktalarında teslim edilir: 2026-08-27 öncesinde mint her iki yetkilide authority PDA ile oluşturuldu ve her ikisi mezuniyet sırasında platform’a taşındı. Program hiçbir çekme-alıkoyunmuş veya hasat talimatı göstermez, bu nedenle bağlama eğrisi aşamasında alıkoyulan ücretler başlatma mezun olana kadar erişilemez durumda kaldı. Çekme tarafını mint oluşturmada yazmak, bunları ilk işlemden itibaren talep edilebilir hale getirir — bkz. changelog girişi. Planlama için değer olan iki sonuç:
  • Alanı başlatmadan sonra değil, başlatmadan önce ayarlayın. transfer_fee_extension_auth Pubkey::default() iken oluşturulan bir başlatma, authority PDA’yı çekme tarafına koyar. Alanı daha sonra ayarlamak hala çalışır — mezuniyet PDA’yı yerinde bulur ve yetkileri teslim eder — ancak bu arada hiçbir şey alıkoyulan bakiyeyi çekemez.
  • Alanı başlatma ortasında döndürmek iki yetkiliye ayırır. Başlatmanın oluşturulması ile mezuniyeti arasında transfer_fee_extension_auth’u değiştirin ve mint’in çekme-alıkoyunmuş yetkilisi oluşturmada yapılandırılan anahtarda kalır (PDA artık tutmaz, bu nedenle geçiş bu teslimi atlar) ücret-config yetkilisi yeni anahtara gider. Başlatmalar arasında döndürün veya iki anahtarı Token-2022 aracılığıyla doğrudan uzlaştırmayı planlayın.
Alanı başlatmanın tüm yaşamı boyunca Pubkey::default()’da bırakan bir platform her iki yetkiliye de authority PDA’da kalıcı olarak tutar: ücret oranı asla değiştirilemez ve alıkoyulan bakiye asla çekilemez. Bir başlatmaya transfer ücreti ekleyin ancak ve ancak platform bu anahtarları tutmayı amaçlıyorsa.

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

Bir başlatma CPMM’ye mezun olduğunda, geçiş talimatı CPMM::InitializeWithPermission tarafından basılan 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, yükseltme öncesi davranışını değiştirir ve ayrı platform ve creator Fee Key’leri oluştururdu. 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 creator ücretlerinden ayrıdır. Yakma dilimi doğrudan yakılır, bu nedenle hiçbir hesap bunu çekemez veya bu payın temsil ettiği LP ücretlerini talep edemez. migrate_type = 0 depolanan mevcut başlatmalar hala eski AMM v4 yolunu kullanabilir. Yeni başlatma bu geçiş türünü reddeder.

Başlatma parametresi kuralları

restrict_curve_param anahtardır. 0’da program kuralları hiç okumaz. 1’de, bu platform üzerinden yönlendirilen her başlatma, seçtiği GlobalConfig’in PlatformCurveRule hesabını karşılamalı ve başlatma oluşturucu bu hesabı remaining_accounts’a eklemelidir.
Bir kural, izin verilen başlatma şekillerinin bir menüsüdür: bir kontrol grubu içindeki kısıtlamalar AND’lenmiş, gruplar OR’lanmış ve her kısıtlama Eq, Gte, Lte ve Neq’i destekleyen bir (field, op, value) üçlüsüdür. Bu değer bantlarını, alternatif seviyeleri, mezuniyet değerleme kapakları, geçiş tabanları, token türü kapılarını ve zaman kutusu gruplarını kapsar — tam model, alan tablosu ve dokuz çalışılmış oyun kitabı products/launchlab/curve-rules’da bulunur. Burada o sayfada değil, iki şey ait:
  • curve_rule_manager bir devir, transfer değil. UpdatePlatformConfig::CurveRuleManager aracılığıyla ayarlayın ve bu cüzdan admin anahtarı olmadan bu platform’un kural hesaplarını oluşturabilir, güncelleyebilir, kaldırabilir ve kapatabilir. Platform admin paralel olarak aynı güce sahip kalır, bu nedenle alanı döndürmek veya temizlemek kontrolü geri alır. Pubkey::default() yalnızca admin’in kuralları yönetebileceği anlamına gelir. restrict_curve_param’ı çeviremez, bu admin’e özel bir çağrı kalır.
  • Kurallar GlobalConfig yerine, üzerine uygulanır. Kural kontrolü config’in kendi sınırlarından önce çalışır ve bunları yalnızca daraltabilir.
Bu, eski curve_params: Vec<PlatformCurveParam> izin listesinin yerini alır; bu yalnızca tam eşitliği test edebilir, tüm config’ler arasında en fazla 10 giriş tutabilir ve PlatformConfig hesabının kendisini büyütebilir. Bunu kullanan platformlar protokol tarafından tek seferlik bir geçişte geçirildi; eski alan, iki talimatı ve MAX_CURVE_PARAMS gitti.

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 admin, CreatePlatformAllowConfig ve ClosePlatformAllowConfig aracılığıyla izin verilen her çift başına bir hesap oluşturur veya kapatır. Kısıtlama 1 olduğunda, başlatma remaining_accounts’da beklenen PDA’yı arar ve eksik hesabı NotEnoughRemainingAccounts ile reddeder. Kısıtlama 0 olduğunda, izin hesabı gerekli değildir. Eski protokol-admin tarafından yönetilen PlatformGlobalAccess hesabı ve oluştur/kapat talimatları emekli oldu. 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 döndürmeleri (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 gönderim tablosunu okuyun.

Yaygın tuzaklar

  • restrict_curve_param oluşturucu güncellendiğinde etkinleştirildi. 1 olduğunda kural PDA’sı her başlatmada remaining_accounts’da olmalı, kural hesabı olmayan bir config için bile — eksik hesap NotEnoughRemainingAccounts’tır, geçiş değil. Oluşturucu değişikliğini önce gönderin, sonra bayrağı çevirin.
  • restrict_curve_param boş bir kuralla etkinleştirildi. Sıfır grup tutan veya sıfır kısıtlama tutan bir grup her şeye izin verir. Bayrağı etkinleştirmek kendi başına bir kısıtlama değildir; önce grupları yazın, SDK kontrolü ile doğrulayın ve tüm diziyi devnet’te prova yapın.
  • NFT-bölüşüm yuvarlama. Üç ölçek tam olarak 1_000_000’e toplanmalıdır. CreatePlatformConfig’te bir hata geri döner; çalışma zamanında bir hata ekstra bir LP birimi basacak veya yakacak, 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’u çağırmalıdır; unutursa, bu pay tahsis edilmemiş ve sonsuza kadar uyuşuk 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 pool’unun pool_creator’ı olarak kaydedilir; gerçek bir anahtara ayarlandığında, bu anahtar kaydedilir. Bu, mezuniyet sonrası CPMM creator ü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.
  • transfer_fee_extension_auth geç ayarlandı veya döndürüldü. Alan Token-2022 başlatması başına iki kez okunur — mint oluşturmada withdraw_withheld_authority için bir kez, mezuniyette transfer_fee_config_authority için bir kez — bu nedenle bu iki an arasında değişen bir değer iki yetkiliye farklı anahtarlarda bırakır. Bkz. Token-2022 transfer-fee yetkileri.
  • İzin hesabı olmadan kısıtlama. restrict_global_config’i etkinleştirmeden önce gerekli PlatformAllowConfig’i oluşturmak, bu config’i seçen yeni başlatmaları engeller.

İşaretçiler

Kaynaklar:
  • raydium-launch/programs/launchpad/src/states/platform_config.rsPlatformConfig, PlatformParams, MigrateNftInfo, is_curve_rule_manager, is_platform_admin.
  • raydium-launch/programs/launchpad/src/states/platform_curve_rule.rsPlatformCurveRule, CurveRuleGroup, ParamConstraint.
  • raydium-launch/programs/launchpad/src/states/platform_allow_config.rsPlatformAllowConfig.
  • raydium-launch/programs/launchpad/src/instructions/platform/update_platform_config.rsPlatformConfigParam gönderimi ve güncelleme zamanı ücret sınırlarını uygulayan alan başına ayarlayıcılar.
  • raydium-launch/programs/launchpad/src/lib.rs — platform config ve allow-config giriş noktaları.
  • raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rstransfer_fee_extension_auth’un yeni mint’in TransferFeeConfig’ine yazıldığı yer.
  • raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs — mezuniyet zamanı yetki teslimi ve get_withdraw_withheld_authority koruması.