Skip to main content
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.
Đây là bản phát hành nơi LaunchLab dừng mang theo các giàn giáo chuyển tiếp của nó. Ba cơ chế riêng biệt tồn tại để làm cho các bản nâng cấp trước đó hạ cánh mềm mạ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, SellExactOut giố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ới NotApproved (6000), trước khi đọc bất kỳ tài khoản nào. Sử dụng InitializeV2. 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.
  • MigrateToAmm là 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_accounts giao dịch giờ được yêu cầu vô điều kiện, và slot system_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ới NotEnoughRemainingAccounts (6018) thay vì chỉ sau ngày cắt ngang.
  • Một lệnh được thêm: CollectExcessLamports. Chỉ dành cho admin. Xem products/launchlab/instructions.
  • Một mã lỗi được thêm: 6031 LamportsCalculateError. Các mã 60006030 khô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ành RequireKeysEqViolated (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!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 localdevnet 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 SyncNativeUnwrapLamports 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. InitializeV2InitializeWithToken2022 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:
Yêu cầu là giống hệt — cả ba phải vẫn khớp với các giá trị được lưu trữ trên 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 60006030, bao gồm 6020 đượ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 MigrateToCpswap và 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/instructionsCollectExcessLamports đượ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ủa MigrateToAmm đượ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 tra system_program; ghi chú MigrateToCpswap trê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àng CollectExcessLamports được thêm.
  • reference/error-codes6031 đượ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.