Skip to main content
Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Banner versi.Tetapkan versi SDK di package.json Anda. Antarmuka kurva bonding telah berkembang di antara rilis minor.

Setup

Demo di sini mencerminkan file di raydium-sdk-V2-demo/src/launchpad. Bootstrap mengikuti config.ts.template repo demo:

Buat peluncuran

Sumber: src/launchpad/createMint.ts (dan createBonkMintApi.ts untuk varian Bonk yang didorong API) Sebagian besar ekonomi peluncuran bukan argumen — mereka berasal dari GlobalConfig yang Anda ikat melalui configId, dan SDK mengisi sisanya dari parameter default API. Anda meneruskan identitas mint, konfigurasi untuk diikat, dan (opsional) pembelian pertama:
Catatan:
  • Tidak ada argumen curveType, graduationFractionBps, initialK, quoteMint, openTime, fees, atau postGraduationLpPolicy. Bentuk kurva dan quote mint adalah properti GlobalConfig yang Anda ikat; tingkat biaya hidup di GlobalConfig dan PlatformConfig; pembuangan LP saat lulus adalah pengaturan PlatformConfig. Lihat products/launchlab/instructions untuk mengetahui dengan tepat apa yang diterima InitializeV2.
  • symbol lebih panjang dari 10 karakter dan uri kosong keduanya ditolak sisi klien sebelum RPC apa pun.
  • Melewatkan transferFeeExtensionParams mengalihkan builder ke InitializeWithToken2022 dan memaksa migrateType menjadi "cpmm".
  • Builder mengembalikan array transactions; createOnly: false menambahkan transaksi pembelian pertama. Selalu execute({ sequentially: true }) — mint harus ada sebelum pembelian mendarat.

Ambil status peluncuran

Sumber: src/launchpad/poolInfo.ts Tidak ada getLaunchById. ID pool adalah PDA dari (programId, mintA, mintB), dan getRpcPoolInfo mengembalikan PoolState yang didekodekan dengan configInfo terikatnya:
getRpcPoolsInfo({ poolIdList }) adalah bentuk batch dan mengembalikan poolInfoMap yang dikunci berdasarkan ID pool — gunakan untuk tampilan portofolio alih-alih looping. Jika Anda ingin mendekodekan akun mentah sendiri, LaunchpadPool.decode dan LaunchpadConfig.decode diekspor.

Beli — quote tepat masuk

Sumber: src/launchpad/buy.ts Pembantu kutipan off-chain adalah Curve.buyExactIn, metode statis pada kelas Curve yang diekspor — bukan metode pada raydium.launchpad. Builder transaksi adalah buyToken. Keduanya memerlukan tingkat biaya platform, yang hidup di akun PlatformConfig terpisah:
Anda dapat meneruskan minMintAAmount secara eksplisit alih-alih slippage; hilangkan keduanya dan SDK menghitung batas dari data RPC langsung. shareFeeRate tidak boleh melebihi poolInfo.configInfo.maxShareFeeRate, dan hanya berlaku saat Anda juga meneruskan shareFeeReceiver.

Beli — base tepat keluar

Builder adalah buyTokenExactOut, dan argumen jumlah adalah outAmount (base yang Anda inginkan) dan maxBuyAmount (quote yang akan Anda belanjakan paling banyak). Curve.buyExactOut({ poolInfo, amountA, ... }) adalah pratinjau off-chain yang cocok.
Berguna untuk UI “beli tepat X token”. Builder menolak outAmount nol sisi klien, dan program kembali jika kurva telah bergerak cukup sehingga persyaratan kutipan melebihi maxBuyAmount.

Jual

Sumber: src/launchpad/sell.ts Builder adalah sellToken (sellTokenExactOut untuk varian exact-quote-out), dengan sellAmount dan minAmountB opsional. Curve.sellExactIn({ poolInfo, amountA, ... }) mempratinjauinya.
Jalur jual kurva simetris dengan jalur beli: mengurangi real_a sebesar sellAmount mengembalikan quote_out sama dengan area terintegrasi di bawah kurva antara real_a − sellAmount dan real_a, dikurangi biaya jual. sellAmount harus lebih besar dari nol — builder menolak nol sebelum RPC apa pun.

Kelulusan

Kelulusan bukan sesuatu yang dapat dipicu oleh integrator. Tidak ada raydium.launchpad.graduate, tidak ada flag autoGraduate pada builder beli, dan tidak ada field willGraduate pada nilai kembalian mereka. On-chain, kelulusan adalah MigrateToCpswap (atau MigrateToAmm warisan), dan kedua instruksi membatasi penanda tangan mereka ke dompet yang dicatat pada GlobalConfig pengikatan — migrate_to_cpswap_wallet dan migrate_to_amm_wallet masing-masing. Panggilan dari penanda tangan lain gagal dengan InvalidOwner. Ini bukan tanpa izin, dan tidak ada bot MEV yang dapat berlomba dengannya.
Dompet tersebut dioperasikan oleh crank kelulusan Raydium, jadi dalam praktik migrasi mendarat dalam hitungan detik setelah ambang batas terlampaui terlepas dari siapa yang melakukan pembelian terakhir. Dari sisi integrator, satu-satunya hal yang harus dilakukan adalah memperlakukan transisi status sebagai peristiwa cepat: polling getRpcPoolInfo (atau berlangganan melalui gRPC, di bawah) dan alihkan UI Anda dari kurva ke pool CPMM yang dihasilkan saat status berubah. Lihat products/launchlab/instructions untuk daftar akun, biaya migrasi, dan bagaimana LP dibagi saat kelulusan.

Kumpulkan biaya kreator

Sumber: src/launchpad/claimCreatorFee.ts (mint tunggal) dan collectAllCreatorFees.ts (batch) Metodenya adalah claimCreatorFee (dan claimMultipleCreatorFee untuk bentuk batch). Ini dikunci berdasarkan quote mint, bukan oleh peluncuran — satu panggilan menyapu biaya kreator yang terakumulasi penanda tangan di mint itu di seluruh peluncuran mereka:
Mentransfer penghitung biaya kreator yang terakumulasi ke ATA kreator di quote mint. Dapat dipanggil sebelum atau sesudah kelulusan; gunakan secara berkala daripada menunggu saldo besar terakumulasi. Operator platform memiliki builder paralel claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee.

Lacak peluncuran melalui siklus hidupnya

Menyatukannya, skrip pemantauan mungkin terlihat seperti:
Polling getRpcPoolInfo pada timer 10 detik baik-baik saja untuk satu peluncuran. Untuk indexer, gunakan langganan gRPC di bawah sebagai gantinya — getRpcPoolsInfo({ poolIdList }) batch, tetapi polling ratusan pool masih membakar kredit RPC tanpa manfaat.

Pantau konfigurasi dan pool melalui gRPC

Sumber: src/grpc/launchpadPoolInfo.ts Berlangganan program LaunchLab melalui gRPC Yellowstone dan mencatat setiap pembaruan GlobalConfig dan PoolState dengan program token setiap mint. Dua filter datasize pada satu langganan accounts memisahkan dua jenis akun, jadi satu aliran mencakup keduanya. Demo adalah referensi paling singkat yang benar untuk mengklasifikasikan mint peluncuran, yang diperlukan oleh rilis quote-mint Token-2022:
  • Pool diklasifikasikan langsung dari PoolState.token_program_flag, mendekodekan bit0 untuk mint dasar dan bit1 untuk quote mint tanpa pengambilan mint sama sekali. Menguji seluruh byte terhadap 0 — yang cukup saat quote mint hanya warisan — salah membaca mint dasar warisan sebagai Token-2022 kapan pun quote mint adalah Token-2022.
  • Config tidak dapat diklasifikasikan dengan cara itu: GlobalConfig menyimpan alamat quote mint dan tidak ada flag program, jadi demo membaca pemilik akun mint sekali dan menyimpannya per mint.
Ini juga melakukan cross-check keduanya satu sama lain, yang merupakan pernyataan berguna untuk disimpan di indexer Anda sendiri. Perhatikan bahwa create versus update disimpulkan dari cache demo sendiri, ditanam saat startup dari getProgramAccounts; dengan seeding itu dinonaktifkan, baca “create” sebagai “pertama kali terlihat di aliran ini”. Akses gRPC bukan bagian dari permukaan RPC publik — lihat src/grpc/README.md repo demo.

Rust CPI

Memanggil LaunchLab dari program Anchor Anda sendiri jarang terjadi (sebagian besar integrasi peluncuran hanya sisi TS). Jika Anda melakukannya:
  • Crate adalah raydium-launchpad (nama lib raydium_launchpad), versi 0.2.0, dan itu mengekspos fitur cpi. Tidak ada raydium_launchlab.
  • Ini tidak dipublikasikan di crates.io — bergantung padanya dengan revisi git, cara yang sama seperti crate program Raydium lainnya.
  • Titik masuk CPI dinamai setelah instruksi on-chain, bukan setelah metode TypeScript SDK: buy_exact_in, buy_exact_out, sell_exact_in, sell_exact_out, claim_creator_fee, create_vesting_account, claim_vested_token. migrate_to_amm / migrate_to_cpswap adalah gated penanda tangan ke dompet migrasi GlobalConfig dan tidak dapat dipanggil dari program integrator.
Lihat sdk-api/rust-cpi untuk aturan pengikat crate — khususnya pemisahan versi Anchor, yang menentukan apakah satu crate dapat CPI ke dalam LaunchLab dan CLMM.

Jebakan

  • Membingungkan nama instruksi on-chain dengan nama metode SDK. Program memiliki buy_exact_in / sell_exact_in; SDK memiliki buyToken / sellToken. buyExactIn dan sellExactIn hanya ada sebagai metode statis pada Curve, dan mereka menghitung kutipan — mereka tidak membangun transaksi.
  • Lupa extraSigners. createLaunchpad membuat mint dasar dari keypair yang Anda buat, jadi keypair itu harus menandatangani. Hilangkan extraSigners: [pair] dan transaksi gagal verifikasi tanda tangan.
  • Tidak memilih quote mint. Anda tidak meneruskan satu. Quote mint adalah properti GlobalConfig yang Anda ikat melalui configId — getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). Untuk meluncurkan terhadap quote mint yang berbeda, ikat konfigurasi yang berbeda; raydium.api.fetchLaunchConfigs() mencantumkan yang tersedia dengan parameter default mereka.
  • Ukuran metadata. String uri panjang mendorong CPI Metaplex melampaui anggaran. Jaga uri di bawah ~200 karakter — sebagian besar metadata JSON yang dihosting CDN cocok dengan mudah. symbol dibatasi keras pada 10 karakter.
  • Memperlakukan kelulusan sebagai perlombaan yang dapat Anda masuki. Bukan — lihat peringatan di atas. UI Anda masih harus memperlakukan transisi status sebagai peristiwa cepat, karena crank Raydium mendarat migrasi dalam hitungan detik setelah ambang batas terlampaui.

Ke mana selanjutnya

Sumber: