Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
PlatformConfig adalah overlay tingkat platform yang berada di atas GlobalConfig. Sementara GlobalConfig mendefinisikan aturan protokol-lebar (“biaya perdagangan adalah 1%, pasokan harus minimal 10M, hanya dompet ini yang dapat lulus”), PlatformConfig adalah apa yang digunakan setiap platform peluncuran — pump.fun, UI Raydium sendiri, launchpad pihak ketiga — untuk menambahkan biaya mereka, mengklaim bagian LP pasca-kelulusan, membatasi bentuk kurva mana yang dapat dipilih peluncuran mereka, dan menampilkan branding mereka (nama, situs web, gambar) di rantai.

Apa itu

Akun PlatformConfig mengelola lima kepentingan lintas-platform untuk sebuah platform:
  1. Branding — nama, situs web, tautan gambar, semuanya disimpan inline sehingga penjelajah atau agregator apa pun dapat menampilkan platform yang meluncurkan token.
  2. Biaya platform — biaya perdagangan tambahan (fee_rate) di atas trade_fee_rate protokol. Terkumpul di platform_fee_wallet platform. Dibatasi pada 100 bps oleh GlobalConfig.max_share_fee_rate.
  3. Pembagian migrasi LP — tiga bilangan bulat yang disimpan (platform_scale, creator_scale, burn_scale) yang berjumlah 1_000_000. Sebelum upgrade 2026-08-17, skala kreator menghasilkan Fee Key kreator terpisah. Migrasi yang dijalankan setelah upgrade menggabungkan dua yang pertama menjadi satu bagian LP terkunci milik platform; sisanya dibakar.
  4. Daftar putih parameter kurvaVec<PlatformCurveParam> yang mencantumkan kombinasi (supply, total_base_sell, total_quote_fund_raising, migrate_type, migrate_cpmm_fee_on, vesting_params...) mana yang diizinkan di platform ini. Jika vektor kosong atau semua entri tidak valid, kombinasi apa pun diizinkan; jika tidak, peluncuran harus cocok dengan salah satu entri secara tepat.
  5. Daftar izin konfigurasi global — pembatasan opt-in yang memerlukan PlatformAllowConfig yang dibuat platform untuk GlobalConfig yang dipilih.
Derivasi PDA:
(Lihat create_platform_config dalam sumber untuk daftar seed kanonik.)

Tata letak

platform_scale + creator_scale + burn_scale harus sama dengan 1_000_000. Sebelum upgrade 2026-08-17, creator_scale dikunci secara terpisah dan Fee Key-nya pergi ke kreator token. Untuk migrasi yang dijalankan setelah upgrade, ditambahkan ke platform_scale dan hak LP terkunci-nya pergi ke platform. Contoh hasil di bawah logika yang diperbarui:
  • (0, 100_000, 900_000) — 90% LP dibakar, 10% terkunci ke platform.
  • (50_000, 100_000, 850_000) — 85% dibakar, 15% terkunci ke platform.
  • (0, 0, 1_000_000) — pembakaran penuh, tidak ada NFT yang dicetak. Peluncuran “tanpa orang dalam” yang ketat.

Bidang branding

name, web, dan img adalah larik byte inline yang diisi dengan nol hingga konstanta ukuran mereka. Untuk membacanya sebagai string, potong hingga \0 pertama:
Konstanta sengaja murah hati (name: 64, web: 256, img: 256) sehingga platform dapat menyertakan metadata yang cukup untuk penjelajah dan agregator tanpa menyentuh penyimpanan off-chain. Apa pun yang melebihi ukuran ini akan dikembalikan di CreatePlatformConfig dengan InvalidInput.

Mekanika biaya

Swap pada kurva yang terikat pada PlatformConfig mengenakan tiga biaya berlapis:
  • trade_fee terkumpul ke protocol_fee_owner protokol (diklaim melalui CollectFee).
  • platform_fee terkumpul ke vault per-platform (diklaim melalui ClaimPlatformFee atau ClaimPlatformFeeFromVault; lihat instructions).
  • creator_fee terkumpul ke vault per-kreator yang dikunci oleh pubkey kreator + quote mint (diklaim melalui ClaimCreatorFee).
creator_fee_rate dibatasi oleh MAX_CREATOR_FEE_RATE = 5000 (50 bps). fee_rate (biaya platform) dibatasi pada 10000 (100 bps) oleh GlobalConfig.max_share_fee_rate.

Pembagian migrasi NFT (CPMM-only)

Ketika peluncuran lulus ke CPMM, instruksi migrasi membagi token LP yang dicetak oleh CPMM::InitializeWithPermission dua cara:
Jika lp_to_platform bukan nol, program LP-Lock membungkusnya menjadi satu Fee Key NFT yang dimiliki oleh platform_nft_wallet. Ini menggantikan perilaku pra-upgrade yang membuat Fee Key platform dan kreator terpisah. Fee Key yang dibuat oleh migrasi yang diselesaikan sebelum upgrade tetap tidak berubah. Hak fee LP ini terpisah dari biaya kreator CPMM yang dikendalikan oleh platform_cp_creator. Bagian burn dibakar langsung, jadi tidak ada akun yang dapat menariknya atau mengklaim biaya LP yang diwakili oleh bagian itu. Peluncuran yang ada dengan migrate_type = 0 yang disimpan masih dapat menggunakan jalur AMM v4 warisan. Inisialisasi baru menolak tipe migrasi itu.

Daftar putih parameter kurva

curve_params: Vec<PlatformCurveParam> adalah mekanisme platform untuk membatasi bentuk kurva mana yang dapat dipilih peluncurannya. Jika vektor tidak kosong dan setidaknya satu entri valid, program memberlakukan di Initialize bahwa parameter peluncuran cocok dengan setidaknya satu entri secara tepat.
Setiap bidang memiliki nilai sentinel yang berarti wildcard (nilai apa pun cocok): u64::MAX untuk bidang u64, u8::MAX untuk bidang u8, 0 untuk bidang pasokan / penjualan / penggalangan dana. BondingCurveParam dengan semua sentinel adalah “izinkan apa pun” — setara dengan perilaku daftar putih kosong. Algoritma pencocokan di Initialize:
  1. Filter curve_params ke entri yang global_config-nya cocok dengan GlobalConfig pilihan peluncuran.
  2. Jika daftar yang disaring kosong, izinkan parameter apa pun (platform tidak memasukkan daftar putih apa pun untuk GlobalConfig ini).
  3. Jika setiap entri dalam daftar yang disaring memiliki all_is_invalid() (setiap bidang adalah wildcard), izinkan parameter apa pun.
  4. Jika tidak, ulangi entri; untuk setiap entri, periksa parameter peluncuran terhadap setiap bidang non-wildcard. Jika semua bidang non-wildcard cocok, terima dan kembalikan.
  5. Jika tidak ada entri yang cocok, kembalikan dengan InvalidInput.
Ini memungkinkan platform mengatakan “kami hanya mengizinkan bentuk standar 1B-pasokan / 800M-terjual / 30k-USDC-penggalangan / tanpa-vesting” dengan menulis satu entri dengan nilai konkret untuk empat bidang itu dan wildcard di tempat lain. Atau platform yang lebih ketat mungkin menghitung tiga atau empat bentuk diskrit, satu per tingkat peluncuran yang didukung. MAX_CURVE_PARAMS = 10 membatasi ukuran daftar putih.

PlatformAllowConfig — membatasi platform

Setiap platform memutuskan apakah akan membatasi akun GlobalConfig mana yang dapat digunakan peluncurannya. Atur restrict_global_config dengan UpdatePlatformConfig::RestrictGlobalConfig(0 | 1).
Seed PDA: [b"platform_allow_config", platform_config, global_config]. Admin platform membuat atau menutup satu akun per pasangan yang diizinkan melalui CreatePlatformAllowConfig dan ClosePlatformAllowConfig. Ketika pembatasan adalah 1, inisialisasi mencari remaining_accounts untuk PDA yang diharapkan dan menolak akun yang hilang dengan NotEnoughRemainingAccounts. Ketika pembatasan adalah 0, tidak ada akun izin yang diperlukan. Akun PlatformGlobalAccess yang dikelola admin protokol sebelumnya dan instruksi buat/tutup-nya sudah pensiun. Ukuran PlatformConfig dan GlobalConfig yang ada tidak berubah, tetapi dekoder harus mengganti flag global lama dengan flag platform baru. PDA akses lama tidak dikonsumsi oleh pemeriksaan baru.

Jalur baca

Untuk UI yang menampilkan “dari mana token ini diluncurkan”, PoolState.platform_config menunjuk langsung ke PlatformConfig asal — ambil sekali dan cache branding-nya.

Jalur pembaruan

Rotasi dompet (platform_fee_wallet, platform_nft_wallet, platform_vesting_wallet, platform_cp_creator, transfer_fee_extension_auth, cpswap_config) semuanya melalui UpdatePlatformConfig. Baca tabel pengiriman update_platform_config sumber untuk kode param yang tepat.

Jebakan umum

  • Sentinel daftar putih salah atur. BondingCurveParam dengan total_locked_amount = 0 bukan wildcard — cocok dengan peluncuran yang secara eksplisit menolak vesting. Wildcard untuk bidang itu adalah u64::MAX. Perangkap yang sama ada untuk cliff_period dan unlock_period. Gunakan clear() (yang program paparkan) untuk mengatur sentinel dengan benar.
  • Pembulatan pembagian NFT. Tiga skala harus berjumlah tepat 1_000_000. Kesalahan off-by-one di CreatePlatformConfig dikembalikan; off-by-one saat runtime akan mencetak atau membakar satu unit LP ekstra, itulah yang dicegah oleh pemeriksaan kesetaraan ketat.
  • Alokasi ganda vesting platform. Jika platform_vesting_scale > 0, platform harus memanggil CreatePlatformVestingAccount sekali setelah penggalangan dana peluncuran berakhir; jika lupa, bagian itu tetap tidak dialokasikan dan dorman selamanya (anggaran total_locked_amount peluncuran dikonsumsi tetapi platform tidak pernah mengklaim).
  • Ambiguitas platform_cp_creator. Ketika diatur ke Pubkey::default(), kreator peluncuran dicatat sebagai pool_creator pool CPMM pasca-kelulusan; ketika diatur ke kunci nyata, kunci itu dicatat sebagai gantinya. Ini menentukan penerima biaya kreator CPMM pasca-kelulusan dan siapa yang dapat menandatangani jalur CPMM::CollectCreatorFee asli. Jalur pengumpulan tanpa izin masih membayar ATA kanonik kunci yang dicatat ini. Putuskan pada waktu pembuatan konfigurasi platform model mana yang Anda inginkan.
  • Pembatasan tanpa akun izin. Mengaktifkan restrict_global_config sebelum membuat PlatformAllowConfig yang diperlukan memblokir peluncuran baru yang memilih konfigurasi itu.

Penunjuk

Sumber:
  • 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 — entrypoint konfigurasi platform dan allow-config.