Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
LaunchLab mengekspos set instruksi yang ketat: enam panggilan yang menghadap pengguna ditambah beberapa primitif admin. SDK membungkus semuanya; halaman ini mendokumentasikan permukaan mentah untuk agregator, alat pemantauan, dan program yang memerlukan CPI.
Inventaris instruksi
Pemisahan “ExactIn/ExactOut” mencerminkan
SwapBaseInput / SwapBaseOutput CPMM — di rantai mereka adalah diskriminator instruksi terpisah dengan pembulatan yang sedikit berbeda.
Pemilihan jalur kelulusan. Setiap panggilan Initialize, InitializeV2, dan InitializeWithToken2022 yang baru harus menetapkan migrate_type = 1 (CPSWAP). Setiap upaya untuk menginisialisasi pool yang terikat AMM v4 baru mengembalikan MigrateTypeNotMatch. amm_creator_fee_on hanya memilih apakah biaya pembuat CPMM yang dihasilkan berlaku untuk token kutipan atau kedua token; itu tidak memilih program target.
MigrateToAmm tetap dapat dipanggil untuk PoolState yang ada yang diinisialisasi dengan migrate_type = 0 sebelum pembatasan ini. Rilis tidak menulis ulang status pool yang ada atau menghapus instruksi warisan.
Program token sisi kutipan. Mint kutipan dapat dimiliki oleh program SPL Token atau Token-2022. Setiap instruksi yang menyentuhnya — CreateConfig, InitializeV2, InitializeWithToken2022, keempat instruksi perdagangan, CollectFee, CollectMigrateFee, ClaimCreatorFee, ClaimPlatformFee, dan ClaimPlatformFeeFromVault — mengambil program pemilik di slot akun quote-program-nya. Posisi akun tidak berubah; hanya nilai yang diterima yang berubah. Lewatkan program yang benar-benar memiliki GlobalConfig.quote_mint, yang dapat Anda baca dari bit1 PoolState.token_program_flag untuk peluncuran yang ada (lihat accounts) atau dari pemilik akun mint sebaliknya.
Initialize yang sudah usang adalah pengecualian: akun quote-program-nya masih diketik ke SPL Token, jadi konfigurasi yang mint kutipannya adalah Token-2022 harus diluncurkan melalui InitializeV2 atau InitializeWithToken2022.
MigrateToCpswap adalah pengecualian lainnya, dalam arah yang berlawanan — ia mengambil kedua program tanpa syarat daripada satu per mint. Lihat akun migrasi di bawah.
Initialize
Buat peluncuran baru.
Argumen
Kondisi awal
quote_mint ∈ launch_config.allowed_quote_mints.base_supply_graduation ≤ base_supply_max.- Parameter biaya lulus pemeriksaan
launch_config.max_*_fee_rate. open_time ≥ now − slop(SDK memberlakukan≥ now; program mentoleransi backdating ringan).curve_typedikenali.
base_mintmemilikisupply = base_supply_max, semuanya dibase_vault.base_mint.mint_authority = launch_authority,freeze_authority = None.LaunchStatediinisialisasi denganstatus = Active,base_sold = 0,quote_reserve_real = 0.quote_reserve_targetdihitung dari parameter kurva +base_supply_graduation+buy_numerator(kira-kira).- Untuk
InitializeWithToken2022denganTransferFeeConfigterlampir:transfer_fee_config_authority = launch_authority, danwithdraw_withheld_authority = PlatformConfig.transfer_fee_extension_authketika bidang itu diatur, jika tidaklaunch_authority. Sisi penarikan ditulis pada pembuatan mint tepatnya sehingga platform dapat menyapu biaya yang ditahan sebelum kelulusan. Lihatplatform-config.
InvalidQuoteMint, FeeRateTooHigh, InvalidCurveParams, MathOverflow.
Buy (varian kanonik: BuyExactIn)
Pengguna menyediakan quote_in tetap; kurva menghitung base_out.
Argumen
Kondisi awal
launch_state.status == Active.now ≥ open_time.user_quote_ata.balance ≥ quote_in.quote_in > 0.
- Pisahkan
quote_inmenjadiquote_in_after_feedan bagian biaya. - Newton-selesaikan kurva untuk
base_outyang diberikan post-fee quote. require(base_out ≥ minimum_base_out)jika tidak kembalikanExceededSlippage.- Pindahkan
quote_inpengguna → vault. Pindahkanbase_outvault → pengguna. - Perbarui
base_sold += base_out,quote_reserve_real += quote_in_after_fee × (lp_share / total_share). - Perbarui penghitung biaya (
protocol_fees_quote,creator_fees_quote). state_data.num_buys += 1.- Jika
quote_reserve_real ≥ quote_reserve_targetsetelah pembaruan, SDK biasanya merantai instruksiGraduatedalam transaksi yang sama. Program tidak auto-graduate di dalamBuy—Graduateberikutnya diperlukan.
BuyExactOut
Pengguna menentukan base_out yang tepat; program menghitung quote_in.
Argumen
BuyExactIn. Menggunakan integral kuadrat bentuk tertutup (atau CPMM terbalik, untuk curve_type 1) daripada iterasi Newton.
Sell / SellExactIn / SellExactOut
Cerminan dari Buy. Pengguna mengembalikan base_in ke kurva dan menerima quote_out. Biaya dikurangkan dari quote_out, jadi pengguna menerima lebih sedikit daripada hasil terintegrasi mentah.
Kondisi awal —
user_base_ata.balance ≥ base_in.- Penjualan tidak dapat mendorong
base_solddi bawah 0 (berlebihan dengan di atas mengingat akuntansi konsisten). - Peluncuran adalah
Active.
Buy. base_sold berkurang, quote_reserve_real berkurang. Biaya masih terkumpul.
Biaya transfer sisi kutipan
Ketika mint kutipan membawaTransferFeeConfig, jumlah yang dipindahkan vault dan jumlah yang dibayar atau dikreditkan pembayar berbeda, dan batas slippage diperiksa terhadap sisi pembayar. Pada mint kutipan tanpa ekstensi setiap kasus di bawah identik dengan mint warisan biasa.
Dua konsekuensi untuk kutipan:
- Batas yang dihitung seolah-olah mint bebas biaya ditolak. Melewatkan biaya-bebas cost sebagai
maximum_amount_in, atau hasil bebas-biaya sebagaiminimum_amount_out, kembali denganExceededSlippage. real_quotemaju hanya dengan apa yang mencapai vault.BuyExactIndariamount_inpada mint kutipan 5% memindahkanreal_quotesebesaramount_in × 0.95.
10000 basis poin) tidak dapat dibalik dan kembali dengan CalculateOverflow pada jalur exact-out.
Kedua mint sisi perdagangan juga dibatasi pada program yang dilewatkan di slot pencocokan mereka, jadi base_token_program yang tidak cocok sekarang gagal daripada diabaikan. Lihat algorithms/token-2022-transfer-fees untuk matematika biaya yang mendasar.
MigrateToAmm / MigrateToCpswap
Lulus peluncuran ke pool yang dapat diperdagangkan setelah kurva mencapai total_quote_fund_raising. Peluncuran baru hanya CPMM. MigrateToAmm dipertahankan untuk pool yang ada yang disimpan migrate_type adalah 0.
Siapa yang menandatangani
MigrateToAmm—migrate_to_amm_walletyang dicatat padaGlobalConfigpengikatan.MigrateToCpswap—migrate_to_cpswap_walletyang dicatat padaGlobalConfigpengikatan.
MigrateToAmm mengambil tiga (terutama parameter pasar OpenBook yang program teruskan ke AMM v4):
MigrateToCpswap tidak mengambil apa pun.
Efek (umum untuk keduanya)
- Verifikasi
pool_state.status == Migrate(yaitu,quote_reserve_targettelah tercapai). Jika tidak kembalikan denganPoolMigrated(status sudahMigrated) atauPoolFunding(masih dalam pendanaan). - Verifikasi
pool_state.migrate_typecocok dengan instruksi (0untuk AMM,1untuk CPMM). Jika tidak kembalikan denganMigrateTypeNotMatch. - Hitung cadangan pasca-kelulusan:
base_amount_out = base_vault.amount − vesting_schedule.total_locked_amountquote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
- CPI ke program target (
AMM v4 Initialize2atauCPMM InitializeWithPermission) dengan cadangan tersebut untuk membuat pool pasca-kelulusan. - Untuk migrasi CPMM yang dieksekusi setelah upgrade 2026-08-17, gabungkan
platform_scale + creator_scalemenjadi satu saham LP terkunci milik platform dan mint paling banyak satu Fee Key NFT keplatform_nft_wallet. Bakar sisaburn_scale. Sebelum upgrade,creator_scaledikunci secara terpisah dan Fee Key-nya pergi ke pembuat token. Migrasi historis yang selesai tidak dimodifikasi. Untuk kelulusan AMM v4 warisan, disposisi LP mengikuti aliran yang ada dari instruksi itu. - Cabut
base_mint.mint_authority(atur keNone). - Balik
pool_state.status = Migrated, aturvesting_schedule.start_time = block_time + cliff_period.
TransferFeeConfig dan PlatformConfig.transfer_fee_extension_auth bukan default, migrasi juga menetapkan ulang otoritas ekstensi itu ke kunci platform:
transfer_fee_config_authorityselalu ditetapkan ulang. PDAauthoritypeluncuran memegangnya untuk seluruh fase pra-kelulusan, jadi selalu ada sesuatu untuk dipindahkan.WithheldWithdrawditetapkan ulang hanya ketika PDAauthoritymasih memegangnya. Peluncuran yang dibuat dari 2026-08-27 ke depan sudah membawatransfer_fee_extension_authpada otoritas itu dari pembuatan mint, jadi langkah itu dilewati. Penjaga adalah apa yang membuat migrasi tidak kembali pada mint tersebut — PDA tidak dapat menandatangani otoritas yang tidak lagi dipegang.
transfer_fee_extension_auth adalah Pubkey::default() pada waktu migrasi, tidak ada otoritas yang bergerak dan keduanya tetap dengan PDA authority secara permanen. Lihat platform-config.
Kondisi akhir — BuyExactIn, BuyExactOut, SellExactIn, SellExactOut akan menolak dari titik ini dengan PoolMigrated. Pool AMM yang dihasilkan adalah kanonik dan berdagang seperti pool AMM v4 / CPMM lainnya.
Kesalahan umum — PoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.
Akun sisa migrasi CPMM
Klien yang membangunMigrateToCpswap harus menggunakan indeks remaining_accounts tetap ini:
Instruksi memerlukan setidaknya sepuluh akun sisa pada jalur yang ditingkatkan. Akun support-mint adalah input CPI read-only. Turunkan kedua alamat bahkan ketika mint tidak memiliki catatan dukungan yang diinisialisasi. Pembangun yang lebih lama yang masih menambahkan akun creator-lock atau menghilangkan indeks 8–9 harus diperbarui.
Program token migrasi CPMM
MigrateToCpswap mengambil kedua program token tanpa syarat dan mengetahui program mana yang memiliki setiap mint. Dua akun program token-nya dinamai ulang sesuai:
Mereka menggantikan
base_token_program (program apa pun yang memiliki mint dasar) dan quote_token_program (selalu warisan) sebelumnya. Posisi tidak berubah, jadi ini adalah perubahan nilai daripada perubahan tata letak — tetapi dua nilai hampir terbalik, dan pembangun yang terus melewatkan pasangan lamanya akan memasok Token-2022 di mana program warisan diperlukan segera setelah mint apa pun adalah mint Token-2022.
Program warisan diperlukan bahkan ketika tidak ada mint yang menggunakannya, karena mint LP CPMM dan Fee Key NFT likuiditas terkunci selalu hidup di atasnya.
Daftar putih GlobalConfig platform
PlatformConfig.restrict_global_config mengontrol pemeriksaan:
0: platform menerimaGlobalConfigapa pun yang valid; tidak ada akun allow yang diperlukan.1:Initialize,InitializeV2, danInitializeWithToken2022harus menyertakanPlatformAllowConfigyang cocok di mana saja diremaining_accounts.
CreatePlatformAllowConfig dan ClosePlatformAllowConfig. Bijinya adalah [b"platform_allow_config", platform_config, global_config]. Instruksi PlatformGlobalAccess yang dikelola admin sebelumnya dan PDA pensiun.
Aturan parameter peluncuran platform
Empat instruksi mengelola satu akunPlatformCurveRule. Keempat ditandatangani oleh PlatformConfig.curve_rule_manager atau oleh admin platform — program menerima admin dengan menurunkan ulang PDA PlatformConfig dari penandatangan, jadi tidak ada akun terpisah yang membuktikannya. Penandatangan yang bukan keduanya mengembalikan InvalidCurveRuleAuthority.
platform_curve_rule adalah PDA di [b"platform_curve_rule", platform_config, global_config].
Createmengalokasikan akun yang tidak memegang grup. Status itu tidak membatasi apa pun.Updateupsert grup dengangroup_iditu, menggantinya sepenuhnya jika ada. Ini mengubah ukuran akun agar sesuai, jadi penandatangan menambah sewa yang tumbuh dan menerima kembali sewa yang menyusut. Grup baru di luar kesepuluh mengembalikanCurveRuleGroupsExceeded; lebih dari 25 batasan, bidang yang tidak dikenal atau operator, atau pasangan(field, op)yang sama dua kali dalam satu grup mengembalikanInvalidCurveRuleConstraint; empat bidang yang diturunkanTotalSellApada konfigurasi non-constant-product mengembalikanCurveRuleFieldNotSupportedByCurve.Removemenjatuhkan satu grup berdasarkan id, menyusutkan akun dan mengembalikan perbedaannya. Id yang tidak dikenal mengembalikanCurveRuleGroupNotExist.Closemengembalikan seluruh sewa ke penandatangan. Konfigurasi kemudian tidak dibatasi lagi bahkan sementararestrict_curve_paramtetap1.
UpdatePlatformConfig::RestrictCurveParam(0 | 1), yang hanya dapat dipanggil admin platform.
Pada jalur peluncuran. Sementara restrict_curve_param adalah 1, InitializeV2 dan InitializeWithToken2022 memerlukan PDA aturan di remaining_accounts — termasuk ketika itu tidak ada, sehingga menghilangkannya tidak dapat melewati pemeriksaan. Akun yang hilang adalah NotEnoughRemainingAccounts; peluncuran yang tidak memenuhi grup apa pun adalah CurveParamNotMatchPlatformRule. Pemeriksaan berjalan sebelum batas GlobalConfig sendiri dan hanya dapat mempersempit mereka. Model dan playbook: products/launchlab/curve-rules. Kedua kesalahan dapat dihindari sisi klien — SDK mencerminkan pemeriksaan ini sebagai fungsi murni, lihat Periksa sebelum Anda mengirim.
CollectFee
Penyapuan admin biaya perdagangan yang terkumpul protokol pada satu peluncuran.
Argumen — tidak ada.
Akun
Efek — transfer
pool_state.quote_protocol_fee dari quote_vault ke recipient_token_account, kemudian nolkan penghitung. Dapat dipanggil kapan saja setelah pembelian pertama.
CollectMigrateFee
Penyapuan admin biaya migrasi yang terkumpul pada kelulusan. Bentuk akun yang sama seperti CollectFee dengan migrate_fee_owner sebagai penandatangan (bukan protocol_fee_owner) dan pool_state.migrate_fee sebagai penghitung yang dikuras.
ClaimCreatorFee
Penyapuan per-pembuat biaya pembuat yang terkumpul di setiap peluncuran yang dimiliki pembuat yang menggunakan mint kutipan yang sama. Menguras vault biaya per-pembuat, bukan per-pool.
Argumen — tidak ada.
Akun
Efek — transfer seluruh saldo
creator_fee_vault ke recipient_token_account. Kembali dengan pemeriksaan require-greater-than-zero jika vault kosong.
ClaimPlatformFee
Penyapuan per-platform yang menguras vault kutipan peluncuran secara langsung. Gunakan ini ketika platform ingin mengklaim potongannya untuk satu peluncuran spesifik tanpa melalui vault platform agregat.
Argumen — tidak ada.
Akun
Efek — transfer
pool_state.platform_fee dari quote_vault ke recipient_token_account, nolkan penghitung.
ClaimPlatformFeeFromVault
Penyapuan agregat per-platform. Menguras vault biaya per-mint-kutipan platform yang mengumpulkan biaya dari setiap peluncuran yang dirutekan melalui platform.
Argumen — tidak ada.
Akun
Efek — transfer saldo penuh
platform_fee_vault ke recipient_token_account. Kembali jika vault kosong.
Instruksi vesting dan platform-config
Ini didokumentasikan di halaman khusus karena masing-masing memiliki model status sendiri:CreateVestingAccount,CreatePlatformVestingAccount,ClaimVestedTokenCreatePlatformConfig,UpdatePlatformConfig,CreatePlatformAllowConfig,ClosePlatformAllowConfigCreatePlatformCurveRule,UpdatePlatformCurveRule,RemovePlatformCurveRule,ClosePlatformCurveRuleCreateConfig,UpdateConfig
Matriks perubahan status
Ke mana selanjutnya
products/launchlab/code-demos— contoh TypeScript untuk setiap instruksi.products/launchlab/accounts— bentuk status penuh.reference/error-codes— enum kesalahan LaunchLab.
- Modul Raydium SDK v2
LaunchLab - Sumber program Raydium LaunchLab

