Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Sebuah curve rule adalah jawaban platform terhadap “peluncuran mana yang bersedia saya host?”.
GlobalConfig menetapkan lantai protokol — suplai minimal 10M, minimal 20% suplai terjual di kurva, dan seterusnya — dan lantai tersebut sengaja lebar sehingga setiap jenis platform sesuai di bawahnya. Curve rule adalah tempat platform Anda mempersempit mereka ke bentuk yang benar-benar didukung produk Anda.Aturan hidup di akun PlatformCurveRule mereka sendiri, satu per pasangan (platform, GlobalConfig). Mereka hanya dapat mempersempit apa yang sudah diizinkan konfigurasi; aturan tidak pernah dapat memperluas batas protokol.Model mental
Tiga tingkat, dari luar ke dalam:- Kendala di dalam satu grup di-AND. Semuanya harus berlaku.
- Grup di dalam satu aturan di-OR. Peluncuran diizinkan segera setelah memenuhi grup mana pun.
Aturan berlaku hanya saat
PlatformConfig.restrict_curve_param adalah 1. Pada 0 program tidak membaca aturan sama sekali, yang juga merupakan sakelar yang Anda gunakan untuk meluncurkan aturan dan untuk memutar kembali.
Kendala
Kendala adalah triple(field, op, value). Tidak ada yang lain — tidak ada ekspresi, tidak ada nesting.
Gte untuk lantai dan Lte untuk batas. Pasangan (field, op) yang sama tidak boleh muncul dua kali dalam satu grup, yang mencegah Anda menulis dua minimum yang bertentangan.
Field
ID field bersifat permanen. Field baru hanya ditambahkan, jadi ID tidak pernah mengubah makna setelah akun aturan memegangnya.
Field turunan adalah yang membuat aturan portabel. Menentukan
Supply dan TotalFundRaisingB ke angka pasti memperbaiki satu bentuk peluncuran; membatasi FundRaisingRateB memperbaiki hubungan di antara mereka dan memungkinkan kreator memilih suplai apa pun yang mempertahankannya.
Sembilan playbook
Setiap playbook di bawah adalah satu aturan. Kendala ditulis sebagai(field, op, value).
1. Satu tingkat standar
Aturan paling sederhana, dan perilaku tepat yang ditawarkan daftar putih parameter kurva yang sudah pensiun: satu bentuk, diperbaiki.
Setiap peluncuran yang menyimpang dalam salah satu dari ketiganya ditolak dengan
CurveParamNotMatchPlatformRule.
2. Pita bukan angka
Alasan pita ada: kreator memilih target penggalangan dana yang Anda nyaman, tanpa Anda menghitung setiap nilai.
Satu grup, empat kendala, dan kreator memiliki koridor 50–200 SOL. Di bawah daftar putih lama ini membutuhkan satu entri per nilai yang diizinkan, dan batas sepuluh entri membuatnya tidak mungkin.
3. Tingkat berdampingan
Grup di-OR, jadi setiap tingkat adalah grup.
Urutan penting untuk komputasi, bukan semantik: evaluasi berhenti di grup pertama yang cocok, jadi letakkan tingkat yang paling sering digunakan terlebih dahulu.
4. Pita valuasi kelulusan
FundRaisingRateB adalah TotalFundRaisingB / Supply dalam jutaan. Membatasinya membatasi seberapa kaya token dapat lulus terlepas dari suplai yang dipilih kreator.
Dengan suplai 1e12 dan mint kutipan 9-desimal,
85e9 / 1e12 × 1e6 = 85_000 berada di dalam pita itu. Kreator yang menggandakan suplai harus kira-kira menggandakan target untuk tetap di dalamnya — itulah intinya. Dua kendala menggantikan apa yang sebaliknya akan menjadi tabel pasangan (supply, target).
5. Lantai migrasi
MigrateRateA adalah bagian suplai yang benar-benar mendarat di pool CPMM saat kelulusan: Supply − TotalSellA − TotalLockedAmount, atas suplai. Ini adalah kedalaman pool yang lulus, dan ini adalah satu-satunya tombol protokol tanpa padanan sisi platform sebelum aturan ada.
Minimal 15% suplai mencapai pool. Kreator tidak dapat menjual 95% di kurva dan meninggalkan buku yang dangkal.
Jika parameter tidak bertambah — jumlah terkunci lebih besar dari apa yang tersisa setelah penjualan kurva — nilai turunan tidak dapat dihitung dan kendala gagal tertutup, jadi peluncuran ditolak daripada diam-diam diizinkan.
6. Vesting yang benar-benar Anda paksakan
GlobalConfig.max_lock_rate membatasi vesting dari atas. Aturan dapat meletakkan lantai di bawahnya, dan memerlukan tebing nyata.
Antara 5% dan 20% suplai terkunci, dengan minimal tebing 30 hari. Berguna untuk platform yang pitchnya adalah “tidak ada peluncuran pembukuan instan”.
7. Gating tipe token
BaseTokenProgram dan TransferFeeEnabled independen, yang penting: mint Token-2022 tanpa TransferFeeConfig melaporkan TransferFeeEnabled = 0 sama seperti mint SPL Token.
8. Batas biaya transfer bersyarat
Tidak ada operator “if”, dan tidak ada yang diperlukan — dua grup mengekspresikan kondisi.TransferFeeConfig dengan tingkat nol tidak tergelincir melalui grup 0: ekstensi ada, jadi TransferFeeEnabled adalah 1 dan hanya grup 1 yang dapat menerimanya.
9. Promosi terikat waktu, dijadwalkan di muka
UnixTimestamp adalah waktu blok peluncuran, jadi grup dapat membawa jendela validitasnya sendiri. Anda menulis kedua grup hari ini dan peralihan terjadi dengan sendirinya.
Tidak ada transaksi yang diperlukan di batas. Biayanya adalah dua slot grup bukan satu.
Pembatasan tipe kurva
Empat field membacaTotalSellA: TotalSellA, SellRateA, MigrateAmountA, dan MigrateRateA. Pada konfigurasi constant-product kreator memasok angka itu. Pada konfigurasi fixed-price atau linear-price kurva menurunkannya sebagai gantinya, dan nilai yang dibandingkan program adalah 0, yang akan menolak setiap peluncuran.
Daripada membiarkan Anda menulis aturan yang diam-diam memblokir konfigurasi Anda sendiri, program menolak keempat field itu pada waktu tulis pada konfigurasi non-constant-product, dengan CurveRuleFieldNotSupportedByCurve. Hanya konfigurasi constant-product yang ada hari ini, jadi dalam praktik Anda tidak akan bertemu kesalahan ini.
Periksa sebelum Anda mengirim
Kedua arah pemeriksaan on-chain tersedia off-chain, jadi baik kreator maupun platform tidak perlu mempelajari aturan dengan menonton transaksi kembali.Spanduk versi.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.42-alphaadalah versi yang setiap demo kode lain di situs ini disematkan. Dua pembantu di bawah tiba dengan rilis SDK yang mengirimkan dukungan curve-rule; sampai saat itu, portkan dariplatform_curve_rule.rsprogram atau panggil program dan baca kode kesalahan. - Cluster: uji di Solana
devnetterlebih dahulu — lihat Uji di devnet terlebih dahulu. - Program ID: lihat
reference/program-addresses
Sebelum peluncuran: apakah parameter ini akan lulus?
checkLaunchAgainstCurveRule mencerminkan pemeriksaan waktu peluncuran program dengan tepat, termasuk perilaku gagal tertutupnya. Jalankan di formulir peluncuran Anda dan Anda dapat menonaktifkan tombol kirim dengan alasan daripada membiarkan kreator membayar transaksi yang dikembalikan.
- Akun aturan yang hilang, dan aturan tanpa grup, keduanya lulus. Begitu juga grup tanpa kendala. Lewati
rule: undefineduntuk akun yang tidak ada; jangan perlakukan sebagai penolakan. - Nilai yang tidak dapat dihitung gagal tertutup. Suplai nol tidak memiliki tingkat, dan jumlah terkunci lebih besar dari apa yang tersisa penjualan kurva tidak memiliki jumlah migrasi.
actualkembaliundefineddan kendala dihitung sebagai tidak puas, persis seperti on-chain. - Semua kendala gagal dilaporkan, bukan hanya yang pertama. Program short-circuit karena hanya membutuhkan putusan; pembantu mengumpulkan semuanya sehingga formulir Anda dapat mencantumkan setiap masalah sekaligus.
UnixTimestamp dekat batas, perlakukan lulus sebagai sementara.
Sebelum menulis aturan: apakah grup ini valid?
checkCurveRuleGroupWritable mencerminkan validasi waktu tulis UpdatePlatformCurveRule — id kendala, aturan duplikat (field, op), batas hitungan keduanya, dan pembatasan tipe kurva. Jalankan di alat admin platform Anda sebelum menandatangani.
Melewati pemeriksaan ini berarti transaksi tidak akan ditolak karena salah bentuk. Ini tidak mengatakan apa pun tentang apakah aturan adalah apa yang Anda maksudkan — grup dapat sempurna valid dan masih menolak setiap peluncuran yang dapat dihasilkan UI Anda. Itulah yang dimaksudkan pemeriksaan sisi peluncuran di atas: setelah menulis grup, jalankan setiap bentuk yang dapat dihasilkan produk Anda melalui
checkLaunchAgainstCurveRule dan konfirmasi masing-masing masih menemukan grup.Uji di devnet terlebih dahulu
Mengaktifkanrestrict_curve_param di mainnet mengubah apa yang dapat dilakukan kreator Anda, segera, untuk setiap peluncuran. Latih seluruh urutan di devnet sebelum Anda menyentuh mainnet:
- Buat konfigurasi platform dan aturan di devnet, dan tulis grup yang sama yang Anda maksudkan untuk dikirim.
- Jalankan setiap bentuk peluncuran yang dapat dihasilkan UI Anda melalui
checkLaunchAgainstCurveRule, dan konfirmasi putusan adalah yang Anda harapkan — baik bentuk yang harus lulus maupun bentuk yang harus ditolak. - Aktifkan
restrict_curve_param, kemudian benar-benar luncurkan token yang harus lulus dan satu yang harus ditolak. Yang kedua harus gagal denganCurveParamNotMatchPlatformRule(6025), bukan denganNotEnoughRemainingAccounts(6018) — yang terakhir berarti pembangun Anda tidak menambahkan PDA aturan dan pemeriksaan tidak benar-benar dijalankan. - Hanya kemudian ulangi di mainnet, dalam urutan yang sama.
cluster: "devnet" ketika Anda memuatnya, dan ambil ID program devnet dari reference/program-addresses.
Langkah 3 adalah yang layak didesak. Pembantu off-chain dan program on-chain adalah dua implementasi aturan yang sama, dan peluncuran devnet adalah apa yang membuktikan mereka setuju untuk aturan Anda — termasuk bahwa pembangun peluncuran Anda melewati akun sama sekali.
Mengoperasikan aturan
Manajer yang didelegasikan
Mengedit aturan adalah pekerjaan rutin; kunci admin platform biasanya multisig.PlatformConfig.curve_rule_manager ada untuk tepat itu: atur sekali melalui UpdatePlatformConfig::CurveRuleManager, dan dompet panas itu kemudian dapat membuat, memperbarui, menghapus, dan menutup akun aturan sendiri. Admin platform mempertahankan kekuatan yang sama secara paralel, jadi kunci manajer yang hilang dapat dipulihkan — rotasi dengan panggilan admin lain.
Cakupan kunci manajer yang dikompromikan: dapat melonggarkan atau menghapus aturan parameter Anda, dan dapat mengklaim sewa akun aturan. Tidak dapat menyentuh dompet biaya, vesting, konfigurasi CPMM, tidak dapat membalik restrict_curve_param, dan tidak dapat melanggar batas GlobalConfig. Perlakukan sebagai kunci konfigurasi, bukan kunci perbendaharaan.
Sewa mengikuti konten
Akun aturan dibuat tanpa grup dan diubah ukurannya pada setiap perubahan, jadi Anda membayar aturan yang benar-benar Anda tulis. Menghapus grup mengembalikan perbedaan ke penandatangan.Urutan peluncuran
- Latih seluruh urutan di devnet — lihat Uji di devnet terlebih dahulu.
- Buat akun aturan dan tulis grupnya. Tidak ada yang berubah — dengan
restrict_curve_parammasih0program tidak membacanya. - Periksa aturan off-chain dengan
checkLaunchAgainstCurveRule: untuk setiap bentuk peluncuran yang dapat dihasilkan UI Anda, konfirmasi beberapa grup menerimanya. - Atur
restrict_curve_paramke1. Dari saat itu peluncuran kreator Anda diperiksa. - Untuk memutar kembali, atur ke
0lagi. Akun aturan dibiarkan utuh.
Biaya pada waktu peluncuran
Pemeriksaan berjalan pada setiap peluncuran saat diaktifkan, jadi biaya komputasinya adalah pajak per-peluncuran. Diukur end-to-end — derivasi PDA, pemindaianremaining_accounts, deserialisasi, dan evaluasi:
“Murah” adalah pembacaan field langsung seperti
Supply; “turunan” adalah yang dihitung seperti MigrateRateA, yang biaya sekitar 223 CU per kendala terhadap sekitar 48. Bahkan aturan yang sepenuhnya dimuat dari kendala turunan tetap di dalam sepertiga dari anggaran default 200 000 CU per-instruksi, dan aturan tiga-grup yang realistis di bawah 6 000. Grup dievaluasi sampai satu cocok, jadi memesan tingkat umum Anda terlebih dahulu adalah penghematan gratis.
Ke mana selanjutnya
products/launchlab/platform-config— fieldPlatformConfigyang gerbang dan mendelegasikan aturan.products/launchlab/global-config— lantai protokol yang dipersempit aturan.products/launchlab/instructions— empat instruksi aturan dan akun mereka.products/launchlab/accounts—PlatformCurveRuledalam inventaris akun.sdk-api/typescript-sdk— permukaan SDK tempat dua pembantu pemeriksaan hidup.reference/changelog/2026-08-31-launchlab-platform-curve-rules— apa yang menggantikan daftar putih parameter kurva, dan apa yang harus diubah decoder.
raydium-launch/programs/launchpad/src/states/platform_curve_rule.rs—PlatformCurveRule,CurveRuleGroup,ParamConstraint, ruang id field dan op, danCurveRuleContext::value_of.raydium-launch/programs/launchpad/src/utils/platform_curve_rule.rs— pemeriksaan waktu peluncuran.raydium-launch/programs/launchpad/src/instructions/platform/—create,update,remove, danclose_platform_curve_rule.

