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. Jika GlobalConfig mendefinisikan aturan protokol-lebar (“biaya perdagangan adalah 1%, pasokan minimal 10M, hanya dompet ini yang dapat lulus”), PlatformConfig adalah yang digunakan setiap platform peluncuran — pump.fun, UI Raydium sendiri, launchpad pihak ketiga — untuk menambahkan biaya mereka, mengklaim bagian LP pasca-kelulusan, membatasi parameter peluncuran yang dapat dipilih peluncuran mereka, dan menampilkan branding mereka (nama, situs web, gambar) di rantai.

Apa itu

Akun PlatformConfig mengelola lima kepentingan lintas-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 500 bps (50000) pada jalur pembuatan dan pembaruan, dinaikkan dari 100 bps (10000) pada 2026-08-26 — lihat Batas tarif.
  3. Pembagian migrasi LP — tiga bilangan bulat tersimpan (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. Aturan parameter peluncuran — pembatasan opt-in (restrict_curve_param) yang memerlukan peluncuran untuk memenuhi akun PlatformCurveRule dari GlobalConfig yang dipilih. Aturan mendukung pita nilai, tingkat alternatif, dan gating tipe token; mereka tinggal di akun mereka sendiri, bukan di PlatformConfig.
  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

Akun ini berukuran tetap 944 byte. Akun ini menyimpan Vec<PlatformCurveParam> trailing hingga rilis 2026-08-31 memindahkan parameter peluncuran ke akun PlatformCurveRule; restrict_curve_param, curve_rule_manager, dan 4 byte yang ditempati awalan panjang vec semuanya keluar dari padding, jadi jumlah byte dan setiap offset field sebelumnya tidak berubah. Lihat entri changelog untuk apa yang harus diubah decoder. 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 mint NFT. Peluncuran “tanpa insider” yang ketat.

Bidang branding

name, web, dan img adalah larik byte inline yang diisi dengan nol hingga konstanta ukuran mereka. Untuk membacanya sebagai string, iris hingga \0 pertama:
Konstanta sengaja murah hati (name: 64, web: 256, img: 256) sehingga platform dapat menyertakan cukup metadata 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 ke 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).

Batas tarif

Kedua tarif dinyatakan dalam 1/1_000_000, jadi 5000 adalah 50 bps dan 50000 adalah 500 bps. Dua titik penegakan untuk fee_rate adalah panggilan require! terpisah di file berbeda, jadi mereka membawa kode kesalahan berbeda, tetapi menerapkan batas yang sama. Platform yang dibuat pada tarif apa pun yang diizinkan dapat diedit nanti, termasuk melalui varian AllInfo massal yang menulis ulang setiap field sekaligus. Kedua batas fee_rate awalnya 100 bps (10000). Batas pembaruan bergerak ke 25000 (250 bps) pada 2026-01-27; pada 2026-08-26 keduanya bergerak ke 50000 (500 bps) — lihat entri changelog. GlobalConfig.max_share_fee_rate tidak membatasi salah satu tarif. Ini membatasi argumen share_fee_rate per-transaksi yang diambil empat instruksi swap — biaya rujukan — dan tidak ada yang lain. Lihat global-config.

Otoritas transfer-fee Token-2022

transfer_fee_extension_auth menamai kunci platform yang akhirnya memegang otoritas TransferFeeConfig mint dasar ketika peluncuran dibuat melalui InitializeWithToken2022 dengan biaya transfer yang terlampir. Ekstensi membawa dua otoritas, dan mereka diserahkan pada titik berbeda dalam siklus hidup peluncuran: Sebelum 2026-08-27 mint dibuat dengan PDA authority pada kedua otoritas, dan keduanya bergerak ke platform saat kelulusan. Program tidak mengekspos instruksi withdraw-withheld atau harvest, jadi biaya yang ditahan selama fase kurva ikatan tidak dapat diakses hingga peluncuran lulus. Menulis sisi withdraw saat pembuatan mint membuatnya dapat diklaim dari perdagangan pertama — lihat entri changelog. Dua konsekuensi yang patut direncanakan:
  • Atur field sebelum Anda meluncurkan, bukan sesudahnya. Peluncuran yang dibuat saat transfer_fee_extension_auth adalah Pubkey::default() menempatkan PDA authority di sisi withdraw. Mengatur field nanti masih berfungsi — kelulusan menemukan PDA di tempat dan menyerahkan otoritas — tetapi tidak ada yang dapat menarik saldo yang ditahan sementara itu.
  • Memutar field mid-launch membagi dua otoritas. Ubah transfer_fee_extension_auth antara pembuatan peluncuran dan kelulusannya dan otoritas withdraw-withheld mint tetap dengan kunci yang dikonfigurasi saat pembuatan (PDA tidak lagi memegangnya, jadi migrasi melewati penyerahan itu) sementara otoritas fee-config pergi ke kunci baru. Putar antar peluncuran, atau rencanakan untuk merekonsiliasi dua kunci sendiri melalui Token-2022 secara langsung.
Platform yang meninggalkan field di Pubkey::default() untuk seluruh kehidupan peluncuran menyimpan kedua otoritas pada PDA authority secara permanen: tarif biaya tidak pernah dapat diubah dan saldo yang ditahan tidak pernah dapat ditarik. Hanya lampirkan biaya transfer ke peluncuran jika platform bermaksud memegang kunci ini.

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 NFT Fee Key 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 tersimpan masih dapat menggunakan jalur AMM v4 warisan. Inisialisasi baru menolak tipe migrasi itu.

Aturan parameter peluncuran

restrict_curve_param adalah saklar. Pada 0 program tidak membaca aturan sama sekali. Pada 1, setiap peluncuran yang dirutekan melalui platform ini harus memenuhi akun PlatformCurveRule dari GlobalConfig yang dipilih, dan pembangun peluncuran harus menambahkan akun itu ke remaining_accounts.
Aturan adalah menu bentuk peluncuran yang diizinkan: batasan dalam satu grup pemeriksaan adalah AND, grup adalah OR, dan setiap batasan adalah triple (field, op, value) yang mendukung Eq, Gte, Lte, dan Neq. Itu mencakup pita nilai, tingkat alternatif, batas valuasi kelulusan, lantai migrasi, gating tipe token, dan grup terikat waktu — model lengkap, tabel field, dan sembilan playbook yang dikerjakan ada di products/launchlab/curve-rules. Dua hal milik di sini daripada di halaman itu:
  • curve_rule_manager adalah delegasi, bukan transfer. Atur melalui UpdatePlatformConfig::CurveRuleManager dan dompet itu dapat membuat, memperbarui, menghapus, dan menutup akun aturan platform ini tanpa kunci admin. Admin platform mempertahankan kekuatan yang sama secara paralel, jadi memutar atau menghapus field memulihkan kontrol. Pubkey::default() berarti hanya admin yang dapat mengelola aturan. Tidak dapat membalik restrict_curve_param, yang tetap panggilan admin-only.
  • Aturan diterapkan di atas GlobalConfig, tidak pernah sebagai gantinya. Pemeriksaan aturan berjalan sebelum batas config sendiri dan hanya dapat mempersempit mereka.
Ini menggantikan daftar putih curve_params: Vec<PlatformCurveParam> sebelumnya, yang hanya dapat menguji kesetaraan eksak, menahan paling banyak 10 entri di semua config, dan menumbuhkan akun PlatformConfig itu sendiri. Platform yang menggunakannya dimigrasikan oleh protokol dalam satu pass sekali; field warisan, dua instruksinya, dan MAX_CURVE_PARAMS hilang.

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 pensiun. Ukuran PlatformConfig dan GlobalConfig yang ada tidak berubah, tetapi decoder harus mengganti flag global lama dengan flag platform baru. PDA akses lama tidak dikonsumsi oleh pemeriksaan baru.

Jalur baca

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

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

  • restrict_curve_param diaktifkan sebelum pembangun diperbarui. Saat itu 1 PDA aturan harus berada di remaining_accounts pada setiap peluncuran, bahkan untuk config tanpa akun aturan — akun yang hilang adalah NotEnoughRemainingAccounts, bukan lulus. Kirim perubahan pembangun terlebih dahulu, kemudian balik flag.
  • restrict_curve_param diaktifkan dengan aturan kosong. Aturan yang menyimpan nol grup, atau grup yang menyimpan nol batasan, memungkinkan semuanya. Mengaktifkan flag bukan dengan sendirinya pembatasan; tulis grup terlebih dahulu, verifikasi dengan pemeriksaan SDK, dan latih seluruh urutan di devnet.
  • 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, yang merupakan apa yang pemeriksaan kesetaraan ketat di sana untuk mencegah.
  • 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.
  • transfer_fee_extension_auth diatur terlambat atau diputar. Field dibaca dua kali per peluncuran Token-2022 — sekali saat pembuatan mint untuk withdraw_withheld_authority, sekali saat kelulusan untuk transfer_fee_config_authority — jadi nilai yang berubah antara dua momen itu meninggalkan dua otoritas pada kunci berbeda. Lihat Otoritas transfer-fee Token-2022.
  • Pembatasan tanpa akun izin. Mengaktifkan restrict_global_config sebelum membuat PlatformAllowConfig yang diperlukan memblokir peluncuran baru yang memilih config itu.

Penunjuk

Sumber:
  • 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.rs — pengiriman PlatformConfigParam dan setter per-field yang menegakkan batas tarif waktu pembaruan.
  • raydium-launch/programs/launchpad/src/lib.rs — entrypoint konfigurasi platform dan allow-config.
  • raydium-launch/programs/launchpad/src/instructions/initialize_with_token_2022.rs — di mana transfer_fee_extension_auth ditulis ke TransferFeeConfig mint baru.
  • raydium-launch/programs/launchpad/src/instructions/admin/migrate_to_cpswap.rs — penyerahan otoritas waktu kelulusan dan penjaga get_withdraw_withheld_authority-nya.