Skip to main content
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.

Initialize

Buat peluncuran baru. Argumen
Akun (ringkas) 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_type dikenali.
Kondisi akhir
  • base_mint memiliki supply = base_supply_max, semuanya di base_vault.
  • base_mint.mint_authority = launch_authority, freeze_authority = None.
  • LaunchState diinisialisasi dengan status = Active, base_sold = 0, quote_reserve_real = 0.
  • quote_reserve_target dihitung dari parameter kurva + base_supply_graduation + buy_numerator (kira-kira).
Kesalahan umumInvalidQuoteMint, FeeRateTooHigh, InvalidCurveParams, MathOverflow.

Buy (varian kanonik: BuyExactIn)

Pengguna menyediakan quote_in tetap; kurva menghitung base_out. Argumen
Akun Kondisi awal
  • launch_state.status == Active.
  • now ≥ open_time.
  • user_quote_ata.balance ≥ quote_in.
  • quote_in > 0.
Efek
  1. Pisahkan quote_in menjadi quote_in_after_fee dan bagian biaya.
  2. Newton-selesaikan kurva untuk base_out yang diberikan post-fee quote.
  3. require(base_out ≥ minimum_base_out) jika tidak balik ExceededSlippage.
  4. Pindahkan quote_in pengguna → vault. Pindahkan base_out vault → pengguna.
  5. Perbarui base_sold += base_out, quote_reserve_real += quote_in_after_fee × (lp_share / total_share).
  6. Perbarui penghitung biaya (protocol_fees_quote, creator_fees_quote).
  7. state_data.num_buys += 1.
  8. Jika quote_reserve_real ≥ quote_reserve_target setelah pembaruan, SDK biasanya merantai ix Graduate dalam transaksi yang sama. Program tidak auto-graduate di dalam BuyGraduate berikutnya diperlukan.

BuyExactOut

Pengguna menentukan base_out yang tepat; program menghitung quote_in. Argumen
Akun yang sama seperti 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_sold di bawah 0 (redundan dengan di atas mengingat akuntansi konsisten).
  • Peluncuran adalah Active.
Efek — simetris dengan Buy. base_sold berkurang, quote_reserve_real berkurang. Biaya masih terkumpul.

MigrateToAmm / MigrateToCpswap

Lulus peluncuran ke pool yang dapat diperdagangkan setelah kurva mencapai total_quote_fund_raising. Peluncuran baru adalah CPMM-only. MigrateToAmm dipertahankan untuk pool yang ada yang migrate_type tersimpannya adalah 0. Siapa yang menandatangani
  • MigrateToAmmmigrate_to_amm_wallet yang dicatat pada GlobalConfig pengikatan.
  • MigrateToCpswapmigrate_to_cpswap_wallet yang dicatat pada GlobalConfig pengikatan.
Dompet ini biasanya dipegang oleh crank kelulusan yang dioperasikan Raydium; dalam praktik kelulusan mendarat beberapa detik setelah ambang batas terlampaui, terlepas dari siapa yang memicu pembelian terakhir. Argumen MigrateToAmm mengambil tiga (terutama parameter pasar OpenBook yang program teruskan ke AMM v4):
MigrateToCpswap tidak mengambil apa pun. Efek (umum untuk keduanya)
  1. Verifikasi pool_state.status == Migrate (yaitu, quote_reserve_target telah tercapai). Jika tidak, balik dengan PoolMigrated (status sudah Migrated) atau PoolFunding (masih dalam pendanaan).
  2. Verifikasi pool_state.migrate_type cocok dengan instruksi (0 untuk AMM, 1 untuk CPMM). Jika tidak, balik dengan MigrateTypeNotMatch.
  3. Hitung cadangan pasca-kelulusan:
    • base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount
    • quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
  4. CPI ke program target (AMM v4 Initialize2 atau CPMM InitializeWithPermission) dengan cadangan tersebut untuk membuat pool pasca-kelulusan.
  5. Untuk migrasi CPMM yang dieksekusi setelah upgrade 2026-08-17, gabungkan platform_scale + creator_scale menjadi satu saham LP terkunci milik platform dan mint paling banyak satu Fee Key NFT ke platform_nft_wallet. Bakar sisa burn_scale. Sebelum upgrade, creator_scale dikunci secara terpisah dan Fee Key-nya pergi ke pembuat token. Migrasi historis yang selesai tidak dimodifikasi. Untuk kelulusan AMM v4 warisan, disposisi LP mengikuti alur yang ada dari instruksi itu.
  6. Cabut base_mint.mint_authority (atur ke None).
  7. Balik pool_state.status = Migrated, atur vesting_schedule.start_time = block_time + cliff_period.
Kondisi akhirBuyExactIn, 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 umumPoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.

Akun sisa migrasi CPMM

Klien yang membangun MigrateToCpswap 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.

Daftar allowlist GlobalConfig platform

PlatformConfig.restrict_global_config mengontrol pemeriksaan:
  • 0: platform menerima GlobalConfig yang valid; tidak ada akun allow yang diperlukan.
  • 1: Initialize, InitializeV2, dan InitializeWithToken2022 harus menyertakan PlatformAllowConfig yang cocok di mana saja di remaining_accounts.
Admin platform membuat atau menutup PDA dengan CreatePlatformAllowConfig dan ClosePlatformAllowConfig. Bijinya adalah [b"platform_allow_config", platform_config, global_config]. Instruksi PlatformGlobalAccess yang dikelola admin sebelumnya dan PDA sudah pensiun.

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 nol 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 quote mint 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. Balik 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, nol penghitung.

ClaimPlatformFeeFromVault

Penyapuan agregat per-platform. Menguras vault biaya per-quote-mint 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. Balik jika vault kosong.

Instruksi vesting dan konfigurasi platform

Ini didokumentasikan di halaman khusus karena masing-masing memiliki model statusnya sendiri:

Matriks perubahan status

Ke mana selanjutnya

Sumber: