Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Entri ini mencakup pembaruan program LaunchLab yang akan datang. Entri ini telah diverifikasi terhadap cabang rilis lokal sebelum deployment. Konfirmasi program yang di-deploy sebelum mengandalkan instruksi baru atau layout
MigrateToAmm yang berubah.get_upgrade_timestamp, tanggal cut-over yang dikodekan keras yang beberapa pemeriksaan bandingkan dengan clock; Initialize yang sudah usang yang terus bekerja selama tiga hari melewati tanggal tersebut; dan plumbing OpenBook milik MigrateToAmm, yang tidak ada yang diajak bicara setelah AMM v4 menghapus dependensi OpenBook-nya sendiri pada Juli. Ketiganya sudah hilang. Di mainnet cut-over sudah berbulan-bulan lalu, jadi efek perilaku adalah nol — tetapi mode kegagalan berubah, dan satu daftar akun berubah keras.
Framework berpindah pada saat yang sama: Anchor 0.32.1 ke =1.0.2, Agave 2.3.0 ke 3.1.10. Dan, seperti pada AMM v4 dan CPMM, ada instruksi admin baru untuk mengklaim kembali rent.
Trading, biaya, vesting, aturan kurva dan konfigurasi platform tidak berubah.
TL;DR untuk integrator
- Tidak ada instruksi trade yang mengubah akun, argumen atau matematikanya.
BuyExactIn,BuyExactOut,SellExactIn,SellExactOutidentik byte-for-byte. Tidak ada layout akun yang berubah. Initialize(yang sudah usang) sekarang selalu gagal denganNotApproved(6000), sebelum membaca akun apa pun. GunakanInitializeV2. Peluncuran yang sudah dibuat melaluinya berdagang dan lulus secara normal.MigrateToAmmhard-breaking untuk dompet migrasi. Kehilangan ketiga argumen (base_lot_size,quote_lot_size,market_vault_signer_nonce) dan sembilan akun. Lihat di bawah.- Tiga
remaining_accountstrade sekarang diperlukan tanpa syarat, dan slotsystem_programdivalidasi. Builder yang menghilangkannya sekarang selalu gagal denganNotEnoughRemainingAccounts(6018) alih-alih hanya setelah cut-over. - Satu instruksi ditambahkan:
CollectExcessLamports. Admin-only. Lihatproducts/launchlab/instructions. - Satu kode error ditambahkan:
6031LamportsCalculateError. Kode6000–6030tidak berubah. - Tiga constraint alamat
MigrateToCpswapdipindahkan ke dalam badan instruksi, mengubah error mereka dariConstraintAddress(2012) keRequireKeysEqViolated(2502). - Refresh IDL diperlukan. Satu instruksi baru, satu set argumen dihapus, sembilan akun dihapus, satu varian error baru.
MigrateToAmm kehilangan bagian OpenBook-nya
Ini adalah perubahan yang paling mungkin memecahkan sesuatu. Data instruksi lama membawa 17 byte argumen setelah discriminator; data baru adalah discriminator telanjang. Daftar akun lama membawa sembilan akun yang tidak lagi ada dalam struct, jadi semuanya setelah penghapusan pertama tidak selaras.
Argumen dihapus: base_lot_size: u64, quote_lot_size: u64, market_vault_signer_nonce: u8. Ketiganya hanya ada untuk mengonfigurasi pasar OpenBook yang program gunakan untuk menginisialisasi melalui CPI. CPI itu — initialize_openbook_market — hilang, bersama dengan pemeriksaan gen_vault_signer_key yang memvalidasi nonce.
Akun dihapus: openbook_program, request_queue, event_queue, bids, asks, market_vault_signer, market_base_vault, market_quote_vault, dan amm_open_orders. Yang terakhir hilang karena Initialize2 milik AMM v4 tidak lagi mengambilnya.
Akun market tetap, di posisi aslinya. AMM v4 masih mencatat pasar sebagai bidang referensi pada AmmInfo, jadi LaunchLab masih meneruskannya. Dua hal tentangnya berubah: program tidak lagi menginisialisasinya, dan sekarang sepenuhnya tidak divalidasi — deklarasinya adalah #[account(mut)] telanjang tanpa constraint owner, address atau seeds, karena owner = openbook_program.key() hilang bersama dengan akun openbook_program dan tidak ada yang menggantinya. Apa pun yang dompet migrasi lewatkan di sana diteruskan langsung ke CPI Initialize2 AMM v4 dan dicatat di pool baru. Pemanggil yang menginginkan pasar yang benar-benar diinisialisasi di balik bidang itu harus membuatnya sebelumnya, dan program tidak akan memberitahunya sebaliknya.
Daftar 23-akun yang dihasilkan didokumentasikan sepenuhnya di products/launchlab/instructions.
MigrateToCpswap tidak terpengaruh — tidak pernah memiliki argumen, dan daftar akun-nya tidak berubah.
Initialize yang sudah usang selalu gagal
initialize sebelumnya menjalankan deprecation lunak: ia bekerja sampai get_upgrade_timestamp() + 3 days, kemudian mengembalikan NotApproved. Dengan helper timestamp dihapus, kegagalan tidak bersyarat — handler sekarang adalah msg! dan err!(NotApproved) dan tidak ada lagi.
Satu detail jika Anda membaca log: struct Accounts tidak berubah dan masih membawa empat constraint init, jadi prologue validasi akun yang dihasilkan Anchor berjalan — dan membuat akun-akun itu — sebelum handler kembali. Transaksi kembali baik cara, jadi tidak ada yang benar-benar dibuat, tetapi kegagalan muncul setelah validasi akun daripada sebelumnya.
Instruksi dipertahankan daripada dihapus sehingga discriminator-nya tetap ditempati dan IDL mempertahankan bentuk yang stabil. Definisi argumen dan akun-nya masih layak didokumentasikan untuk mendekode transaksi historis, dan halaman menyimpannya di balik peringatan.
Gate get_upgrade_timestamp hilang
Helper mengembalikan 0 di bawah fitur local dan devnet dan timestamp mainnet yang dikodekan keras 1755522000 (2025-08-18 13:00 UTC) sebaliknya. Empat instruksi membandingkan clock terhadapnya, di seluruh lima referensi dalam sumber. Masing-masing menjadi cabang post-cut-over tanpa syarat:
Timestamp mainnet lebih dari setahun lalu, jadi builder yang benar dan terkini tidak melihat perubahan perilaku. Yang berubah adalah bahwa builder usang sekarang gagal secara deterministik alih-alih tampak bekerja terhadap build devnet. Validasi
system_program baru benar-benar baru: slot itu sebelumnya menerima akun apa pun.
CollectExcessLamports
Langkah 1 dari SIMD-0437 mendarat di mainnet pada 3 September 2026, memotong minimum rent-exempt sebesar 9% dengan empat langkah lagi akan datang. Setiap vault pool LaunchLab, vault biaya dan PDA milik program yang dibuat sebelum langkah sekarang over-funded.
Instruksi mengambil empat akun tetap — dompet signer/destination, satu vault authority PDA, dan kedua program token — kemudian sejumlah akun sumber di remaining_accounts.
Slot authority adalah bagian yang layak dibaca dengan hati-hati. LaunchLab memiliki tiga vault authority PDA (vault_auth_seed, platform_fee_vault_auth_seed, creator_fee_vault_auth_seed), dan instruksi menyelesaikan mana pun yang Anda lewatkan dengan menurunkan ulang ketiganya dan mencocokkan; kunci yang tidak cocok dengan yang mana pun gagal dengan InvalidOwner (6001). Karena satu panggilan membawa satu authority dan program token memerlukan setiap pemilik akun yang sebenarnya untuk menandatangani, akun sumber harus dikelompokkan berdasarkan authority — vault pool, vault biaya platform dan vault biaya creator disapu dalam transaksi terpisah. PDA milik program didebit langsung dan dapat berjalan bersama authority apa pun.
Wrapped SOL mengikuti urutan SyncNative → UnwrapLamports berukuran delta → assert-unchanged yang sama yang digunakan CPMM dan AMM v4, dengan LamportsCalculateError (6031) jika round-trip tidak netto ke nol. Peluncuran yang dikutip SOL menyimpan cadangan kutipan penuhnya.
Base mint tidak dapat disapu. InitializeV2 dan InitializeWithToken2022 mencabut MintTokens dalam instruksi yang sama yang mencetak pasokan, jadi tidak ada kunci yang dapat menandatangani WithdrawExcessLamports untuk base mint. Rentnya terjebak dengan desain.
Signer dapat berupa admin program bersama atau dompet collect-lamports khusus; alamat ada di reference/program-addresses.
Relokasi constraint MigrateToCpswap
Tiga constraint akun dipindahkan keluar dari struct Accounts dan ke dalam badan instruksi:
PoolState. Hanya permukaan error yang berbeda: RequireKeysEqViolated generik Anchor (2502), dilaporkan tanpa nama akun, daripada ConstraintAddress (2012) yang menamai akun yang bermasalah. Perbarui penanganan error apa pun yang cocok dengan 2012 untuk ketiga akun ini.
Perubahan toolchain dan dependensi
Dua perubahan call-site Anchor 1.0 berlaku di sini juga:
Context runtuh dari empat parameter lifetime menjadi satu, dan CpiContext::new mengambil Pubkey program daripada AccountInfo-nya. Lihat sdk-api/rust-cpi.
Dua detail build-system tanpa efek on-chain: fitur local diganti dengan localnet, yang mengompilasi dompet lokal sebagai admin dari variabel lingkungan LAUNCHPAD_LOCALNET_ADMIN (yarn test:local-admin menghubungkannya), dan blok [profile.release] duplikat di programs/launchpad/Cargo.toml dihapus — Cargo mengabaikan [profile] di luar akar workspace, jadi blok akar sudah yang berlaku, termasuk fakta bahwa panic = "abort" blok level program tidak pernah diterapkan.
Apa yang tidak berubah
- Setiap layout akun.
PoolState,GlobalConfig,PlatformConfig,PlatformCurveRule,PlatformAllowConfig, catatan vesting — ukuran yang sama, offset yang sama. - Kode error
6000–6030, termasuk6020yang sengaja dipertahankan. - Matematika kurva, tingkat biaya, akrual biaya, jadwal vesting, dan pemisahan LP kelulusan.
- Aturan kurva platform dan allowlist
GlobalConfig. Instruksi yang sama, akun yang sama, semantik yang sama; hanya gate clock di sekitar pemeriksaan aturan kurva yang hilang. - Daftar akun
MigrateToCpswapdan indeksremaining_accounts. - Penyerahan otoritas transfer-fee Token-2022 pada kelulusan.
- Program ID. Tidak berubah.
Halaman yang diperbarui
products/launchlab/instructions—CollectExcessLamportsditambahkan dengan daftar akun, tabel resolusi authority dan peringatan pengelompokan; penghapusan argumen dan akunMigrateToAmmdidokumentasikan dengan daftar baru lengkap;Initializedihadapkan dengan peringatan always-fails; bagian “Trade remaining accounts” baru mencakup tiga akun yang sekarang tidak bersyarat dan pemeriksaansystem_program;MigrateToCpswapcatatan pada jalur permission-only dan constraint yang dipindahkan; baris inventaris dan matriks perubahan state.products/launchlab/overview— banner rilis; invariant “CPMM-only” dan base-mint dikoreksi.products/launchlab/accounts— waktu pencabutan mint-authority dikoreksi ke pembuatan peluncuran (didokumentasikan pada kelulusan); barisCollectExcessLamportsditambahkan.reference/error-codes—6031didokumentasikan.reference/program-addresses— bagian “Excess-lamports collection wallets” baru.solana-fundamentals/rent-and-reclaimable-rent— bagian “What the Raydium programs sweep on their own side” baru.sdk-api/rust-cpi,solana-fundamentals/toolchain— pin Anchor 1.0 dan catatan migrasi CPI.

