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 →
Bir eğri kuralı, platformun “hangi başlatmaları barındırmaya istekliyim?” sorusunun cevabıdır.
GlobalConfig protokol tabanını belirler — en az 10M arz, arzın en az %20’si eğride satılır, vb. — ve bu tabanlar kasıtlı olarak geniştir, böylece her tür platform bunların altına sığar. Eğri kuralı, platformunuzun bunları ürününüzün gerçekten desteklediği şekle daraltmasıdır.Kurallar kendi PlatformCurveRule hesabında yaşar, her (platform, GlobalConfig) çifti için bir tane. Yapılandırmanın zaten izin verdiği şeyi yalnızca daraltabilirler; bir kural asla bir protokol limitini genişletemez.Zihinsel model
Dışarıdan içeriye doğru üç seviye:- Bir grup içindeki kısıtlamalar VE’lenmiştir. Hepsi geçerli olmalıdır.
- Bir kural içindeki gruplar VEYA’lanmıştır. Bir başlatma herhangi bir grup karşılandığı anda izin verilir.
Bir kural yalnızca
PlatformConfig.restrict_curve_param 1 iken yürürlüğe girer. 0 olduğunda program kuralları hiç okumaz; bu aynı zamanda bir kuralı kullanıma sunmak ve geri almak için kullandığınız anahtardır.
Kısıtlamalar
Bir kısıtlama bir(alan, operatör, değer) üçlüsüdür. Başka hiçbir şey — ifade yok, iç içe geçme yok.
Gte ve tavan için bir Lte. Aynı (alan, operatör) çifti bir grup içinde iki kez görünemez; bu, çelişkili iki minimum yazmanızı engeller.
Alanlar
Alan kimlikleri kalıcıdır. Yeni alanlar yalnızca eklenir, bu nedenle bir kimlik bir kural hesabı tuttuğu andan itibaren anlamı asla değişmez.
Türetilmiş alanlar kuralları taşınabilir kılan alanlardır.
Supply ve TotalFundRaisingB’yi tam sayılara sabitleme bir başlatma şeklini düzeltir; FundRaisingRateB’yi kısıtlama aralarındaki ilişkiyi düzeltir ve yaratıcının bunu koruyan herhangi bir arz seçmesine izin verir.
Dokuz oyun kitabı
Aşağıdaki her oyun kitabı bir kuraldır. Kısıtlamalar(alan, operatör, değer) olarak yazılır.
1. Bir standart katman
En basit kural ve emekli eğri-parametre beyaz listesinin sunduğu tam davranış: bir şekil, sabitlenmiş.
Üçünden herhangi birinde sapan herhangi bir başlatma
CurveParamNotMatchPlatformRule ile reddedilir.
2. Bir sayı yerine bir bant
Bantların var olmasının nedeni: bir yaratıcı sizin rahat olduğunuz bir fon toplama hedefi seçer, siz her değeri numaralandırmadan.
Bir grup, dört kısıtlama ve yaratıcının 50–200 SOL koridoru vardır. Eski beyaz liste altında bu izin verilen her değer için bir giriş gerektiriyordu ve on girişin sınırı bunu imkânsız kılıyordu.
3. Katmanlar yan yana
Gruplar VEYA’lanır, bu nedenle her katman bir gruptur.
Sıra semantik için değil, hesaplama için önemlidir: değerlendirme eşleşen ilk grupta durur, bu nedenle en çok kullanılan katmanınızı ilk koyun.
4. Bir mezuniyet-değerleme bandı
FundRaisingRateB milyonluk cinsinden TotalFundRaisingB / Supply’dir. Bunu kısıtlama, yaratıcının seçtiği arzdan bağımsız olarak bir tokenin ne kadar zenginlikle mezun olabileceğini kapaklar.
1e12 arzı ve 9 ondalak alıntı mintine sahip,
85e9 / 1e12 × 1e6 = 85_000 bu bant içinde oturur. Arzı iki katına çıkaran bir yaratıcı içinde kalmak için hedefi kabaca iki katına çıkarmalıdır — bu noktadır. İki kısıtlama, aksi takdirde (arz, hedef) çiftlerinin bir tablosu olacak şeyi değiştirir.
5. Bir göç tabanı
MigrateRateA mezuniyette CPMM havuzuna gerçekten inen arzın payıdır: Supply − TotalSellA − TotalLockedAmount, arz üzerinden. Mezun havuzun derinliğidir ve kurallardan önce platform tarafında eşdeğeri olmayan tek protokol düğümüdür.
En az arzın %15’i havuza ulaşır. Bir yaratıcı eğride %95 satamaz ve arkasında sığ bir kitap bırakamaz.
Parametreler toplanmazsa — eğri satışından sonra kalan şeyden daha büyük kilitli bir miktar — türetilmiş değer hesaplanamaz ve kısıtlama kapalı başarısız olur, bu nedenle başlatma sessizce izin verilmek yerine reddedilir.
6. Gerçekten uyguladığınız hak kazanma
GlobalConfig.max_lock_rate hak kazmayı yukarıdan kapaklar. Bir kural altına bir taban koyabilir ve gerçek bir uçurum gerektirebilir.
Arzın %5 ile %20’si arasında hak kazanmış, en az 30 günlük bir uçurumla. “Anında kilit açma başlatması yok” konusu olan bir platform için yararlıdır.
7. Token-tipi kapıları
BaseTokenProgram ve TransferFeeEnabled bağımsızdır, bu önemlidir: TransferFeeConfig olmayan bir Token-2022 mint, SPL Token mint gibi TransferFeeEnabled = 0 bildirir.
8. Koşullu bir transfer-ücreti kapağı
“Eğer” operatörü yoktur ve hiçbiri gerekli değildir — iki grup koşulu ifade eder.
Sıfır oranı
TransferFeeConfig grup 0’dan kaymaz: uzantı mevcut, bu nedenle TransferFeeEnabled 1 ve yalnızca grup 1 bunu kabul edebilir.
9. Zaman sınırlı bir promo, önceden planlanmış
UnixTimestamp başlatmanın blok zamanıdır, bu nedenle bir grup kendi geçerlilik penceresini taşıyabilir. Her iki grubu bugün yazarsınız ve geçiş kendi başına gerçekleşir.
Sınırda işlem gerekmez. Maliyet bir yerine iki grup yuvası.
Eğri-tipi kısıtlamaları
Dört alanTotalSellA’yı okur: TotalSellA, SellRateA, MigrateAmountA ve MigrateRateA. Sabit-ürün yapılandırmasında yaratıcı bu sayıyı sağlar. Sabit-fiyat veya doğrusal-fiyat yapılandırmasında eğri bunun yerine türetir ve program karşılaştırdığı değer 0’dır; bu her başlatmayı reddeder.
Kendi yapılandırmanızı sessizce engelleyen bir kural yazmanıza izin vermek yerine, program yazma zamanında sabit olmayan bir yapılandırmada bu dört alanı reddeder, CurveRuleFieldNotSupportedByCurve ile. Bugün yalnızca sabit-ürün yapılandırmaları vardır, bu nedenle pratikte bu hatayı karşılaşmayacaksınız.
Göndermeden önce kontrol edin
Zincir üstü kontrolün her iki yönü de zincir dışında mevcuttur, bu nedenle ne bir yaratıcı ne de bir platform işlemleri geri almayı izleyerek bir kuralı öğrenmek zorunda değildir.Sürüm başlığı.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alphabu sitenin diğer her kod demosunun sabitlendiği sürümdür. Aşağıdaki iki yardımcı eğri-kural desteğini gönderen SDK sürümüyle gelir; o zamana kadar, bunları programınplatform_curve_rule.rs’den taşıyın veya programı çağırın ve hata kodunu okuyun. - Küme: önce Solana
devnet’te test edin — bkz. Devnet’te ilk test edin. - Program Kimliği: bkz.
reference/program-addresses
Bir başlatmadan önce: bu parametreler geçer mi?
checkLaunchAgainstCurveRule programın başlatma zamanı kontrolünü tam olarak yansıtır, kapalı başarısız davranışı da dahil. Bunu başlatma formunuzda çalıştırın ve yaratıcının geri alınan bir işlem için ödeme yapmasına izin vermek yerine gönder düğmesini bir nedenle devre dışı bırakabilirsiniz.
- Eksik bir kural hesabı ve hiçbir grubu olmayan bir kural her ikisi de geçer. Hiçbir kısıtlaması olmayan bir grup da öyle. Mevcut olmayan bir hesap için
rule: undefinedgeçin; bunu bir reddetme olarak işlemeyin. - Hesaplanamayan değerler kapalı başarısız olur. Sıfır arzın oranları yoktur ve eğri satışından sonra kalan şeyden daha büyük kilitli bir miktar göç miktarı yoktur.
actualundefinedgeri gelir ve kısıtlama unsatisfied sayılır, tam olarak zincir üstü gibi. - Tüm başarısız kısıtlamalar raporlanır, yalnızca ilki değil. Program yalnızca bir karar gerektiği için kısa devre yapar; yardımcı her şeyi toplar, böylece formunuz bir kerede her sorunu listeleyebilir.
UnixTimestamp’i bir sınırın yakınında kullanırsa, bir geçişi geçici olarak değerlendirin.
Bir kural yazmadan önce: bu grup yazılabilir mi?
checkCurveRuleGroupWritable UpdatePlatformCurveRule’nin yazma zamanı doğrulamasını yansıtır — kısıtlama kimlikleri, yinelenen (alan, operatör) kuralı, her iki sayı sınırı ve eğri-tipi kısıtlaması. Bunu imzalamadan önce platform yönetici aracınızda çalıştırın.
Bu kontrolü geçmek, işlemin hatalı biçimlendirilmesi nedeniyle reddedilmeyeceği anlamına gelir. Kuralın ne demek istediğiniz olup olmadığı hakkında hiçbir şey söylemez — bir grup mükemmel şekilde geçerli olabilir ve yine de UI’nizin üretebileceği her başlatmayı reddedebilir. Yukarıdaki başlatma tarafı kontrolü bunun için: bir grup yazdıktan sonra, ürününüzün sunabileceği her şekli
checkLaunchAgainstCurveRule aracılığıyla çalıştırın ve her birinin hala bir grup bulduğunu doğrulayın.Devnet’te ilk test edin
Mainnet’terestrict_curve_param’ı etkinleştirmek yaratıcılarınızın yapabileceklerini hemen, her başlatma için değiştirir. Mainnet’e dokunmadan önce tüm diziyi devnet’te prova yapın:
- Devnet’te bir platform yapılandırması ve kuralı oluşturun ve göndermek istediğiniz aynı grupları yazın.
- UI’nizin üretebileceği her başlatma şeklini
checkLaunchAgainstCurveRulearacılığıyla çalıştırın ve kararların beklediğiniz olanlar olduğunu doğrulayın — hem geçmesi gereken şekiller hem de reddedilmesi gereken şekiller. restrict_curve_param’ı etkinleştirin, sonra geçmesi gereken bir token ve reddedilmesi gereken bir token gerçekten başlatın. İkincisiCurveParamNotMatchPlatformRule(6025) ile başarısız olmalıdır,NotEnoughRemainingAccounts(6018) ile değil — ikincisi oluşturucunuzun kural PDA’sını eklemediği ve kontrolün gerçekten uygulanmadığı anlamına gelir.- Yalnızca o zaman mainnet’te aynı sırayla tekrarlayın.
Bir kuralı işletme
Devredilen yönetici
Kuralları düzenlemek rutin iştir; bir platform yönetici anahtarı genellikle bir multisig’dir.PlatformConfig.curve_rule_manager tam olarak bunun için vardır: bunu bir kez UpdatePlatformConfig::CurveRuleManager aracılığıyla ayarlayın ve bu sıcak cüzdan kendi başına kural hesaplarını oluşturabilir, güncelleyebilir, kaldırabilir ve kapatabilir. Platform yöneticisi paralel olarak aynı gücü tutar, bu nedenle kayıp bir yönetici anahtarı kurtarılabilir — başka bir yönetici çağrısıyla döndürün.
Tehlikeye atılan yönetici anahtarının kapsamı: parametre kurallarınızı gevşetebilir veya silebilir ve bir kural hesabının kirasını geri talep edebilir. Ücret cüzdanlarına, hak kazmaya, CPMM yapılandırmasına dokunmaz, restrict_curve_param’ı çeviremez ve GlobalConfig limitini kıramaz. Bunu bir hazine anahtarı değil, bir yapılandırma anahtarı olarak değerlendirin.
Kira içeriği takip eder
Bir kural hesabı hiçbir grup tutmadan oluşturulur ve her değişiklikte yeniden boyutlandırılır, bu nedenle gerçekten yazdığınız kurallar için ödeme yaparsınız. Bir grubu kaldırmak farkı imzalayan kişiye geri verir.Kullanıma sunma sırası
- Tüm diziyi devnet’te prova yapın — bkz. Devnet’te ilk test edin.
- Kural hesabını oluşturun ve gruplarını yazın. Henüz hiçbir şey değişmez —
restrict_curve_paramhala0iken program bunları okumaz. - Kuralı zincir dışında
checkLaunchAgainstCurveRuleile kontrol edin: UI’nizin üretebileceği her başlatma şekli için, bir grubun bunu kabul ettiğini doğrulayın. restrict_curve_param’ı1olarak ayarlayın. O andan itibaren yaratıcılarınızın başlatmaları kontrol edilir.- Geri almak için bunu
0olarak ayarlayın. Kural hesabı bozulmadan bırakılır.
Başlatma zamanında maliyet
Kontrol etkinken her başlatmada çalışır, bu nedenle hesaplama maliyeti başına başlatma vergisidir. Uçtan uca ölçülen — PDA türetme,remaining_accounts taraması, seri durumdan çıkarma ve değerlendirme:
“Ucuz”
Supply gibi doğrudan bir alan okumasıdır; “türetilmiş” MigrateRateA gibi hesaplanan birdir; bu, kısıtlama başına yaklaşık 223 CU’ya karşı yaklaşık 48 CU’ya mal olur. Türetilmiş kısıtlamaların tamamen yüklü bir kuralı bile varsayılan 200 000 CU başına talimat bütçesinin üçte birinin altında kalır ve gerçekçi bir üç grup kuralı 6 000’in altındadır. Gruplar eşleşen birine kadar değerlendirilir, bu nedenle yaygın katmanınızı ilk sırada koymak ücretsiz tasarrufdur.
Sonra nereye gidilir
products/launchlab/platform-config— kuralları kapı ve devredenPlatformConfigalanları.products/launchlab/global-config— bir kuralın daraltması gereken protokol tabanları.products/launchlab/instructions— dört kural talimatı ve hesapları.products/launchlab/accounts— hesap envanterindePlatformCurveRule.sdk-api/typescript-sdk— iki kontrol yardımcısının yaşadığı SDK yüzeyi.reference/changelog/2026-08-31-launchlab-platform-curve-rules— eğri-parametre beyaz listesini değiştiren ve dekoderler değiştirmesi gereken şey.
raydium-launch/programs/launchpad/src/states/platform_curve_rule.rs—PlatformCurveRule,CurveRuleGroup,ParamConstraint, alan ve operatör kimlik alanları veCurveRuleContext::value_of.raydium-launch/programs/launchpad/src/utils/platform_curve_rule.rs— başlatma zamanı kontrolü.raydium-launch/programs/launchpad/src/instructions/platform/—create,update,removeveclose_platform_curve_rule.

