Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
Mục này bao gồm một bản cập nhật chương trình LaunchLab sắp tới. Nó đã được xác minh so với nhánh phát hành cục bộ trước khi triển khai. Hãy xác nhận chương trình được triển khai trước khi dựa vào lệnh mới hoặc bố cục
MigrateToAmm đã thay đổi.get_upgrade_timestamp, một ngày cắt ngang được mã hóa cứng mà một số kiểm tra so sánh clock với; một Initialize không dùng nữa giữ hoạt động trong ba ngày sau ngày đó; và đường ống OpenBook của MigrateToAmm, không có gì để nói chuyện sau khi AMM v4 loại bỏ phụ thuộc OpenBook của riêng nó vào tháng 7. Cả ba đều biến mất. Trên mainnet, ngày cắt ngang đã qua nhiều tháng, vì vậy hiệu ứng hành vi là không có — nhưng các chế độ lỗi đã thay đổi, và một danh sách tài khoản đã thay đổi rất nhiều.
Framework cũng chuyển động cùng lúc: Anchor 0.32.1 sang =1.0.2, Agave 2.3.0 sang 3.1.10. Và, giống như trên AMM v4 và CPMM, có một lệnh admin mới để thu hồi rent.
Giao dịch, phí, vesting, quy tắc đường cong và cấu hình nền tảng không thay đổi.
TL;DR cho các nhà tích hợp
- Không có lệnh giao dịch nào thay đổi tài khoản, tham số hoặc toán học của nó.
BuyExactIn,BuyExactOut,SellExactIn,SellExactOutgiống hệt nhau từng byte. Không có bố cục tài khoản nào thay đổi. Initialize(cái không dùng nữa) giờ luôn thất bại vớiNotApproved(6000), trước khi đọc bất kỳ tài khoản nào. Sử dụngInitializeV2. Các lần phát hành đã được tạo thông qua nó giao dịch và tốt nghiệp bình thường.MigrateToAmmlà sự phá vỡ cứng cho ví di chuyển. Nó mất cả ba tham số (base_lot_size,quote_lot_size,market_vault_signer_nonce) và chín tài khoản. Xem bên dưới.- Ba
remaining_accountsgiao dịch giờ được yêu cầu vô điều kiện, và slotsystem_programđược xác thực. Một trình xây dựng bỏ qua chúng giờ luôn thất bại vớiNotEnoughRemainingAccounts(6018) thay vì chỉ sau ngày cắt ngang. - Một lệnh được thêm:
CollectExcessLamports. Chỉ dành cho admin. Xemproducts/launchlab/instructions. - Một mã lỗi được thêm:
6031LamportsCalculateError. Các mã6000–6030không thay đổi. - Ba ràng buộc địa chỉ
MigrateToCpswapđược chuyển vào phần thân lệnh, thay đổi lỗi của chúng từConstraintAddress(2012) thànhRequireKeysEqViolated(2502). - Cần làm mới IDL. Một lệnh mới, một bộ tham số bị xóa, chín tài khoản bị xóa, một biến thể lỗi mới.
MigrateToAmm mất nửa OpenBook của nó
Đây là thay đổi có khả năng phá vỡ điều gì đó nhất. Dữ liệu lệnh cũ mang 17 byte tham số sau discriminator; dữ liệu mới là discriminator trần. Danh sách tài khoản cũ mang chín tài khoản không còn tồn tại trong struct, vì vậy mọi thứ sau lần loại bỏ đầu tiên không được căn chỉnh.
Tham số bị xóa: base_lot_size: u64, quote_lot_size: u64, market_vault_signer_nonce: u8. Cả ba chỉ tồn tại để cấu hình thị trường OpenBook mà chương trình từng khởi tạo bằng CPI. CPI đó — initialize_openbook_market — đã biến mất, cùng với kiểm tra gen_vault_signer_key xác thực nonce.
Tài khoản bị xóa: openbook_program, request_queue, event_queue, bids, asks, market_vault_signer, market_base_vault, market_quote_vault, và amm_open_orders. Cái cuối cùng biến mất vì Initialize2 của AMM v4 không còn lấy nó.
Tài khoản market vẫn ở lại, ở vị trí ban đầu của nó. AMM v4 vẫn ghi lại thị trường dưới dạng trường tham chiếu trên AmmInfo, vì vậy LaunchLab vẫn chuyển tiếp nó. Hai điều về nó đã thay đổi: chương trình không còn khởi tạo nó, và nó giờ hoàn toàn không được xác thực — khai báo của nó là một #[account(mut)] trần không có ràng buộc chủ sở hữu, địa chỉ hoặc seed, vì owner = openbook_program.key() đã được loại bỏ cùng với tài khoản openbook_program và không có gì thay thế nó. Bất kỳ tài khoản nào mà ví di chuyển chuyển tiếp đó được chuyển tiếp trực tiếp vào CPI Initialize2 của AMM v4 và được ghi lại trên pool mới. Một người gọi muốn một thị trường được khởi tạo thực sự đằng sau trường đó phải tạo nó trước đó, và chương trình sẽ không cho nó biết ngược lại.
Danh sách 23 tài khoản kết quả được ghi lại đầy đủ trên products/launchlab/instructions.
MigrateToCpswap không bị ảnh hưởng — nó không bao giờ có tham số, và danh sách tài khoản của nó không thay đổi.
Initialize không dùng nữa luôn thất bại
initialize trước đây chạy một khấu hao mềm: nó hoạt động cho đến get_upgrade_timestamp() + 3 days, sau đó trả về NotApproved. Với trình trợ giúp timestamp bị xóa, lỗi là vô điều kiện — trình xử lý giờ là một msg! và err!(NotApproved) và không có gì khác.
Một chi tiết nếu bạn đang đọc nhật ký: struct Accounts không thay đổi và vẫn mang bốn ràng buộc init, vì vậy phần mở đầu xác thực tài khoản do Anchor tạo ra chạy — và tạo những tài khoản đó — trước khi trình xử lý trả về. Giao dịch hoàn nguyên dù sao, vì vậy không có gì thực sự được tạo, nhưng lỗi xuất hiện sau xác thực tài khoản thay vì trước nó.
Lệnh được giữ lại thay vì bị xóa để discriminator của nó vẫn bị chiếm dụng và IDL giữ một hình dạng ổn định. Các định nghĩa tham số và tài khoản của nó vẫn đáng có để ghi lại để giải mã các giao dịch lịch sử, và trang giữ chúng phía sau một cảnh báo.
Cổng get_upgrade_timestamp đã biến mất
Trình trợ giúp trả về 0 dưới các tính năng local và devnet và timestamp mainnet được mã hóa cứng 1755522000 (2025-08-18 13:00 UTC) ngoài ra. Bốn lệnh so sánh clock với nó, trên năm tham chiếu trong nguồn. Mỗi cái trở thành nhánh sau cắt ngang vô điều kiện:
Timestamp mainnet đã qua hơn một năm, vì vậy một trình xây dựng chính xác, cập nhật thấy không có thay đổi hành vi. Những gì đã thay đổi là một trình xây dựng lỗi thời giờ thất bại một cách xác định thay vì dường như hoạt động chống lại bản dựng devnet. Xác thực
system_program mới là thực sự mới: slot đó trước đây chấp nhận bất kỳ tài khoản nào.
CollectExcessLamports
Bước 1 của SIMD-0437 hạ cánh trên mainnet vào ngày 3 tháng 9 năm 2026, cắt mức tối thiểu miễn phí rent xuống 9% với bốn bước nữa sắp tới. Mỗi vault pool LaunchLab, vault phí và PDA sở hữu chương trình được tạo trước một bước giờ được tài trợ quá mức.
Lệnh lấy bốn tài khoản cố định — ví người ký/đích, một PDA quyền vault, và cả hai chương trình token — sau đó bất kỳ số lượng tài khoản nguồn nào trong remaining_accounts.
Slot authority là phần đáng đọc cẩn thận. LaunchLab có ba PDA quyền vault (vault_auth_seed, platform_fee_vault_auth_seed, creator_fee_vault_auth_seed), và lệnh giải quyết cái bạn chuyển bằng cách lấy lại tất cả ba và khớp; một khóa không khớp bất kỳ cái nào thất bại với InvalidOwner (6001). Vì một lệnh mang một quyền và chương trình token yêu cầu chủ sở hữu thực tế của mỗi tài khoản ký, tài khoản nguồn phải được nhóm theo quyền — vault pool, vault phí nền tảng và vault phí người tạo quét trong các giao dịch riêng biệt. PDA sở hữu chương trình được ghi nợ trực tiếp và có thể đi cùng với bất kỳ quyền nào.
Wrapped SOL theo cùng một chuỗi SyncNative → UnwrapLamports có kích thước delta → assert-unchanged mà CPMM và AMM v4 sử dụng, với LamportsCalculateError (6031) nếu vòng lặp không lưới bằng không. Một lần phát hành được trích dẫn SOL giữ toàn bộ dự trữ trích dẫn của nó.
Các mint cơ sở không thể được quét. InitializeV2 và InitializeWithToken2022 thu hồi MintTokens trong cùng một lệnh khởi tạo cung cấp, vì vậy không có khóa nào có thể ký WithdrawExcessLamports cho một mint cơ sở. Rent của nó bị mắc kẹt bằng thiết kế.
Người ký có thể là admin chương trình được chia sẻ hoặc ví thu thập lamports chuyên dụng; địa chỉ nằm trong reference/program-addresses.
Chuyển vị trí ràng buộc MigrateToCpswap
Ba ràng buộc tài khoản được chuyển ra khỏi struct Accounts và vào phần thân lệnh:
PoolState. Chỉ bề mặt lỗi khác: RequireKeysEqViolated (2502) chung của Anchor, được báo cáo mà không có tên tài khoản, thay vì ConstraintAddress (2012) đặt tên tài khoản vi phạm. Cập nhật bất kỳ xử lý lỗi nào khớp với 2012 cho ba tài khoản này.
Thay đổi toolchain và phụ thuộc
Hai thay đổi trang web gọi của Anchor 1.0 cũng áp dụng ở đây:
Context sụp đổ từ bốn tham số vòng đời thành một, và CpiContext::new lấy Pubkey của chương trình thay vì AccountInfo của nó. Xem sdk-api/rust-cpi.
Hai chi tiết hệ thống xây dựng không có hiệu ứng trên chuỗi: tính năng local được thay thế bằng localnet, biên dịch ví cục bộ như admin từ biến môi trường LAUNCHPAD_LOCALNET_ADMIN (yarn test:local-admin kết nối nó), và khối [profile.release] trùng lặp trong programs/launchpad/Cargo.toml đã bị xóa — Cargo bỏ qua [profile] bên ngoài gốc không gian làm việc, vì vậy khối gốc đã là cái đang có hiệu lực, bao gồm cả thực tế là panic = "abort" của khối cấp chương trình không bao giờ được áp dụng.
Những gì không thay đổi
- Mọi bố cục tài khoản.
PoolState,GlobalConfig,PlatformConfig,PlatformCurveRule,PlatformAllowConfig, bản ghi vesting — cùng kích thước, cùng offset. - Mã lỗi
6000–6030, bao gồm6020được giữ lại cố ý. - Toán học đường cong, tỷ lệ phí, tích lũy phí, lịch trình vesting, và phân chia LP tốt nghiệp.
- Quy tắc đường cong nền tảng và danh sách cho phép
GlobalConfig. Cùng lệnh, cùng tài khoản, cùng ngữ nghĩa; chỉ cổng clock xung quanh kiểm tra quy tắc đường cong đã biến mất. - Danh sách tài khoản
MigrateToCpswapvà chỉ sốremaining_accounts. - Bàn giao quyền chuyển Token-2022 tại tốt nghiệp.
- ID chương trình. Không thay đổi.
Trang được cập nhật
products/launchlab/instructions—CollectExcessLamportsđược thêm với danh sách tài khoản, bảng giải quyết quyền và cảnh báo nhóm; loại bỏ tham số và tài khoản củaMigrateToAmmđược ghi lại với danh sách mới đầy đủ;Initializeđược đặt trước với cảnh báo luôn thất bại; phần “Trade remaining accounts” mới bao gồm ba tài khoản giờ vô điều kiện và kiểm trasystem_program; ghi chúMigrateToCpswaptrên đường dẫn chỉ được phép và các ràng buộc được chuyển vị trí; hàng danh mục và ma trận thay đổi trạng thái.products/launchlab/overview— biểu ngữ phát hành; các bất biến “chỉ CPMM” và mint cơ sở được sửa chữa.products/launchlab/accounts— thời gian thu hồi quyền mint được sửa chữa để tạo lần phát hành (nó được ghi lại tại tốt nghiệp); hàngCollectExcessLamportsđược thêm.reference/error-codes—6031được ghi lại.reference/program-addresses— phần “Excess-lamports collection wallets” mới.solana-fundamentals/rent-and-reclaimable-rent— phần “What the Raydium programs sweep on their own side” mới.sdk-api/rust-cpi,solana-fundamentals/toolchain— Anchor 1.0 pins và ghi chú di chuyển CPI.

