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.

Inventori instruksi

Pembagian “ExactIn/ExactOut” mencerminkan SwapBaseInput / SwapBaseOutput CPMM — di chain mereka adalah diskriminator instruksi terpisah dengan pembulatan yang sedikit berbeda. Pemilihan jalur kelulusan. migrate_type dicatat pada PoolState saat Initialize{V2,WithToken2022} dan menentukan instruksi kelulusan mana yang dapat berjalan. Peluncuran Token-2022 selalu bermigrasi ke CPMM. Peluncuran SPL Token bermigrasi ke AMM v4 atau CPMM tergantung pada pengaturan amm_creator_fee_on:
  • BothTokenMigrateToAmm → pool AMM v4 (biaya kreator dapat dikumpulkan dari kedua sisi; AMM v4 tidak memiliki bidang biaya kreator asli, jadi biaya kreator diambil melalui mekanisme kunci LP NFT sebagai gantinya).
  • QuoteTokenMigrateToCpswap → pool CPMM dengan creator_fee_on = OnlyQuoteToken (kreator terus mendapatkan biaya dari pool CPMM melalui NFT LaunchLab Fee Key — lihat products/launchlab/creator-fees).
Catatan tentang nama enum AmmCreatorFeeOn. Sumber Rust menyebut enum ini AmmCreatorFeeOn dengan varian QuoteToken dan BothToken. Namanya menyesatkan: dalam praktik operasional saat ini varian tidak hanya mengontrol sisi mana biaya kreator dikumpulkan dari pool CPMM pasca-kelulusan — varian juga memilih program target kelulusan target program (AMM v4 vs CPMM) dan berpasangan dengan migrate_type pada PoolState peluncuran. Perlakukan bidang ini sebagai “target migrasi + sisi biaya kreator pasca-kelulusan” digabungkan menjadi satu. Nama enum on-chain belum difaktorisasi ulang, tetapi penalaran tentangnya sebagai MigrationTarget cocok dengan kenyataan lebih dekat.

Initialize

Buat peluncuran baru. Argumen
Akun (ringkas) Kondisi sebelumnya
  • 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 kecil).
  • curve_type dikenali.
Kondisi sesudahnya
  • 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 sebelumnya
  • 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-solve kurva untuk base_out yang diberikan quote pasca-biaya.
  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 menggabungkan Graduate ix dalam transaksi yang sama. Program tidak secara otomatis kelulusan 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 invers CPMM, untuk curve_type 1) daripada iterasi Newton.

Sell / SellExactIn / SellExactOut

Cerminan Buy. Pengguna mengembalikan base_in ke kurva dan menerima quote_out. Biaya dikurangkan dari quote_out, sehingga pengguna menerima lebih sedikit daripada hasil integral mentah. Kondisi sebelumnya
  • user_base_ata.balance ≥ base_in.
  • Menjual tidak dapat mendorong base_sold di bawah 0 (redundan dengan di atas mengingat akuntansi konsisten).
  • Peluncuran adalah Active.
Efek — simetris ke Buy. base_sold berkurang, quote_reserve_real berkurang. Biaya masih terakumulasi.

MigrateToAmm / MigrateToCpswap

Keluluskan peluncuran menjadi pool AMM yang dapat diperdagangkan setelah kurva mencapai total_quote_fund_raising. Kedua instruksi sesuai dengan dua target kelulusan — AMM v4 dan CPMM — dan hanya salah satu yang valid untuk peluncuran tertentu, ditentukan oleh pool_state.migrate_type (diatur saat waktu Initialize). 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 detik setelah ambang batas terlampaui, terlepas dari siapa yang memicu pembelian akhir. Argumen MigrateToAmm mengambil tiga (terutama parameter pasar OpenBook yang program teruskan ke AMM v4):
MigrateToCpswap tidak mengambil yang mana 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. Bagikan LP hasil per pengikatan PlatformConfig.{platform_scale, creator_scale, burn_scale} (CPMM saja) — satu bagian dicetak ke platform_nft_wallet, satu ke NFT kreator dibungkus oleh program LP-Lock, satu dibakar melalui Burn & Earn. Untuk kelulusan AMM v4, disposisi LP diatur oleh parameter inisialisasi AMM v4 sendiri.
  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 sesudahnyaBuyExactIn, BuyExactOut, SellExactIn, SellExactOut akan menolak sejak saat ini dengan PoolMigrated. Pool AMM yang dihasilkan adalah kanonik dan berdagang seperti pool AMM v4 / CPMM lainnya. Kesalahan umumPoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.

CollectFee

Penyapu admin dari biaya perdagangan terakumulasi protokol pada peluncuran tunggal. Argumen — tidak ada. Akun Efek — transfer pool_state.quote_protocol_fee dari quote_vault ke recipient_token_account, kemudian kosongkan penghitung. Dapat dipanggil kapan saja setelah pembelian pertama.

CollectMigrateFee

Penyapu admin dari biaya migrasi yang terakumulasi saat 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 dikosongkan.

ClaimCreatorFee

Penyapu per-kreator dari biaya kreator terakumulasi di setiap peluncuran yang dimiliki kreator yang menggunakan mint quote yang sama. Mengosongkan vault biaya per-kreator, bukan vault 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

Penyapu per-platform yang mengosongkan vault quote peluncuran secara langsung. Gunakan ini ketika platform ingin mengklaim bagiannya 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, kosongkan penghitung.

ClaimPlatformFeeFromVault

Penyapu agregat per-platform. Mengosongkan vault biaya per-quote-mint platform yang mengakumulasi 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 konfigurasi platform

Instruksi ini didokumentasikan di halaman tersendiri karena masing-masing memiliki model state sendiri:

Matriks perubahan state

Ke mana selanjutnya

Sumber: