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 →
Bu giriş, yaklaşan bir LaunchLab program güncellemesini kapsamaktadır. Dağıtımdan önce yerel sürüm dalına karşı doğrulanmıştır. Yeni hesapları veya talimatları kullanmadan önce dağıtılan programı doğrulayın.
PlatformConfig.curve_params aracılığıyla yaratıcılarının seçebileceği launch şekillerini zaten kısıtlayabiliyordu. Bu mekanizma yalnızca tam eşitliği test etti: bir giriş bir alanı bir değere sabitledi veya bir sentinel ile joker karakteri kullandı. Ayrıca bir platformun desteklediği her GlobalConfig genelinde en fazla 10 giriş tuttu ve PlatformConfig hesabının kendisinde yaşadı, her giriş için 491 bayt büyüttü.
Bu üç özellik protokol konfigürasyonlar eklediğinde çatıştı. “50 ile 200 SOL arasında bir fon toplama hedefi” ifade etmek, izin verilen her değer için bir giriş gerektiriyordu ve bu nedenle imkânsızdı. GlobalConfig’in kendi tabanları bu arada açılmıştı — 1 bps oranları, 99999 arz sınırları — tam olarak her platform bunların altına sığsın diye, bu da platformları bunları daraltmak için hiçbir yolla bıraktı.
Bu sürüm whitelist’i curve rules ile değiştirir: (platform, config) çifti başına bir PlatformCurveRule hesabı, 10 adede kadar kontrol grubu tutarak, her biri 19 launch parametresi üzerinde 25 adede kadar (field, op, value) kısıtlaması tutarak, Eq, Gte, Lte ve Neq ile. Bir grup içindeki kısıtlamalar AND’lenmiş, gruplar OR’lanmıştır. Bir aralık, aynı alan üzerinde bir Gte artı bir Lte’dir.
Tam model ve dokuz çalışan oyun kitabı yeni sayfada yer almaktadır: products/launchlab/curve-rules.
Entegratörler için TL;DR
PlatformConfigboyutunu ve her mevcut alan ofsetini korur. Sabit 944 bayttır.curve_paramsgitti;restrict_curve_param(u8),curve_rule_manager(Pubkey) ve vec’in uzunluk önekinin işgal ettiği 4 bayt hepsi padding’den çıkar, bu da 107’den 78’e küçülür.- Dekoderler sondaki vec’i bırakmalıdır. Padding’den sonra hala
Vec<PlatformCurveParam>bekleyen bir dekoder, iki yeni alanı vec baytları olarak okuyacaktır. Padding’den önceki her şey etkilenmez, bu nedenle yalnızca ücret cüzdanlarını ve oranları okuyan bir dekoder değişmeden çalışmaya devam eder. - Launch oluşturucuları bayrak açıkken bir hesap daha gerektirir.
restrict_curve_param1iken,InitializeV2veInitializeWithToken2022kural PDA’sınıremaining_accounts’ta gerektirir — hesap mevcut olmadığında bile, böylece onu atlamak kontrolü atlayamaz. Türetme:[b"platform_curve_rule", platform_config, global_config]. - Hiçbir platform varsayılan olarak kısıtlanmaz.
restrict_curve_paramher mevcut hesapta0’dır ve0program kuralları hiç okumaz anlamına gelir. - İki talimat kaldırılır:
UpdatePlatformCurveParamveRemovePlatformCurveParam. Dört eklenir:CreatePlatformCurveRule,UpdatePlatformCurveRule,RemovePlatformCurveRule,ClosePlatformCurveRule. UpdatePlatformConfigiki varyant kazanır: dispatch indeksi 13’teRestrictCurveParam(u64)ve 14’teCurveRuleManager(Pubkey). Mevcut indeksler 0–12 değişmez.- Yedi hata kodu eklenir,
6024–6030.6020CurveParamIsNotExistson çağıranı gitti olsa da yer tutucu olarak tutulur, bu nedenle ondan sonra hiçbir şey kaymaz. Bkz.reference/error-codes. - Bir IDL yenilemesi gereklidir. Yeni hesap türü, dört yeni talimat, iki kaldırılan, iki yeni dispatch varyantı, yedi yeni hata kodu.
- Herhangi bir şey göndermeden kuralları zincir dışında kontrol edin. SDK,
checkLaunchAgainstCurveRule(launch-time kontrolünü yansıtır, fail-closed davranışı dahil) vecheckCurveRuleGroupWritable(yazma-time doğrulamasını yansıtır) ortaya çıkarır. Her ikisi de saf fonksiyondur. Bkz. Göndermeden önce kontrol edin. - Mainnet’te etkinleştirmeden önce devnet’te prova yapın.
restrict_curve_param’ı açmak, yaratıcılarınızın hemen yapabileceklerini değiştirir. Önerilen sıra — reddedilmesi gereken bir token başlatmayı da içerir, oluşturucunuzun gerçekten kural hesabını geçtiğini kanıtlamak için — Önce devnet’te test edin bölümündedir.
Bir kuralın whitelist’in yapamadığını ifade edebilecekleri
19 alan, dört türetilmiş oranı içerir —
SellRateA, LockRate, MigrateRateA, FundRaisingRateB — bu da bir kuralı bir arz yerine taşınabilir kılar.
Delegeli yönetim
PlatformConfig.curve_rule_manager, bu platformun kural hesaplarını oluşturabilen, güncelleyebilen, kaldırabilen ve kapatabilecek sıcak bir cüzdandır. Kuralları düzenlemek rutin bir işlemdir ve bir platform yöneticisi anahtarı genellikle bir multisig’dir; bu, multisig’i döngüden çıkaran alandır. UpdatePlatformConfig::CurveRuleManager aracılığıyla bir kez ayarlayın.
Platform yöneticisi paralel olarak aynı gücü korur — program signer’dan PlatformConfig PDA’sını yeniden türeterek bunu kabul eder — bu nedenle kayıp bir yönetici anahtarı alanı döndürerek kurtarılabilir. Pubkey::default() yalnızca yönetici anlamına gelir.
Tehlikeye atılmış bir yönetici anahtarı, parametre kurallarını gevşetebilir veya silebilir ve bir kural hesabının kirasını geri talep edebilir. restrict_curve_param’ı çeviremez, herhangi bir ücret cüzdanına, vesting alanına veya CPMM konfigürasyonuna dokunmaz veya bir GlobalConfig sınırını kıramaz.
Kira ve boyut
Bir kural hesabı hiçbir grup tutmadan oluşturulur ve her değişiklikte yeniden boyutlandırılır, bu nedenle bir platform gerçekten yazdığı kurallar için ödeme yapar ve bir grubu kaldırmak farkı signer’a geri öder.
Boyut dinamik olduğundan, dekoderler bir sabiti varsaymak yerine hesabın gerçek uzunluğunu okumalıdır.
Launch’ta hesaplama maliyeti
Kontrol, etkinken her launch’ta çalışır. Uçtan uca ölçüldü — PDA türetme,remaining_accounts taraması, deserialization, değerlendirme:
Türetilmiş bir kısıtlama, doğrudan alan okuması için yaklaşık 48’e karşı yaklaşık 223 CU’ya mal olur. Tam yüklü bir kural bile varsayılan 200 000 CU per-instruction bütçesinin üçte birinin içinde kalır. Gruplar bir eşleşene kadar değerlendirilir, bu nedenle en çok kullanılan katman ilk gelir.
Tek seferlik geçiş
Whitelist’i kullanan platformlar, bayrak kullanılabilir olmadan önce protokol tarafından tek bir geçişte geçirildi. Adanmış bir otorite, adlandırdığı konfigürasyonun kural hesabının kontrol gruplarına her eski girişi çeviren, girdileriPlatformConfig’ten temizleyen ve bu hesabı 944 bayta geri küçülten platform başına bir işlem çalıştırdı.
Çeviri eski semantiği tam olarak korudu: her giriş bir grup oldu, her non-sentinel alan bir Eq kısıtlaması oldu ve bir all-sentinel girişi — her launch’u eşleştiren — hiçbir kısıtlaması olmayan bir grup oldu, bu da her launch’u eşleştirir.
Geçiş kurallar yazdı ancak bunları etkinleştirmedi. Geçirilen bir platform, restrict_curve_param’ı kendisi 1’e ayarlayana kadar kısıtlanmamış kaldı. Geçiş talimatı, geçiş tamamlandığından beri programdan kaldırıldı, okuduğu eski alan ile birlikte.
Değişmeyen şeyler
GlobalConfig. Aynı düzen, aynı sınırlar, aynı talimatlar. Kurallar bu sınırları daraltır ve onlarla birlikte kontrol edilir; hiçbir zaman birini genişletemezler.- Launch talimatlarının hesap listeleri ve argümanları.
InitializeV2veInitializeWithToken2022aynı sabit hesapları ve aynı argümanları alır. Yalnızcaremaining_accountsbir giriş kazanır ve yalnızca bayrak açıkken. - Trade, graduation, ücret ve vesting yolları. Dokunulmamış.
PlatformAllowConfig. Değişmemiş ve ilgisiz: bir platformun launch’larının hangi konfigürasyonları kullanabileceğine karar verirken, bir kural bir konfigürasyon içinde hangi parametreleri karar verir. İki bayrak bağımsızdır.- Hata kodları
6000–6023. Değişmemiş,6020dahil. PlatformConfig’in boyutu ve padding öncesi ofsetleri. Değişmemiş, bu nedenle mevcut hesaplar kendi geçişlerine ihtiyaç duymaz.
Güncellenen sayfalar
products/launchlab/curve-rules— yeni sayfa. Üç seviyeli model, 19-alan ve 4-operatör tabloları, dokuz oyun kitabı, curve-type kısıtlaması, iki zincir dışı kontrol yardımcısı, devnet prova sırası, delegeli yönetim, kira, dağıtım sırası ve hesaplama maliyeti.products/launchlab/platform-config— “Curve-parameter whitelist” “Launch-parameter rules” ile değiştirildi;restrict_curve_param,curve_rule_managerve 78-bayt padding için düzen güncellendi; güncelleme-yolu tablosu, okuma-yolu snippet’i ve tuzaklar yeniden yazıldı.products/launchlab/instructions— dört talimatı, hesaplarını, argümanlarını ve hatalarını kapsayan yeni “Platform launch-parameter rules” bölümü; envanter satırı değiştirildi.products/launchlab/accounts—PlatformCurveRuleenvantere eklendi ve tam düzen ve değişken-boyut uyarısı ile kendi bölümü verildi.reference/error-codes—6024–6030belgelendi;6018ve6020açıklandı.

