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ột mint cơ sở Token-2022 được tạo bởi InitializeWithToken2022 có thể mang TransferFeeConfig. Extension này có hai quyền: transfer_fee_config_authority, thay đổi tỷ lệ phí và phí tối đa, và withdraw_withheld_authority, rút các khoản phí mà Token-2022 giữ lại trên các tài khoản token. Cho đến phiên bản này, chương trình đặt launch authority PDA trên cả hai quyền khi tạo mint và chuyển cả hai cho PlatformConfig.transfer_fee_extension_auth khi graduation. Chương trình launchpad không có instruction withdraw-withheld hay harvest, vì vậy trong toàn bộ giai đoạn bonding-curve, không ai có thể rút số dư bị giữ lại — khóa duy nhất có thể làm được là PDA mà không có instruction để ký với nó. Phiên bản này ghi transfer_fee_extension_auth trực tiếp vào withdraw_withheld_authority khi tạo mint, để nền tảng có thể thu hồi phí bị giữ lại từ giao dịch đầu tiên. MigrateToCpswap có thêm một guard để chỉ gán lại quyền đó khi PDA vẫn là người giữ nó, điều này giữ cho graduation hoạt động cho mint từ cả hai thế hệ. Không có gì khác thay đổi. Không tài khoản nào phát triển hay co lại, không instruction nào mất hoặc nhận tài khoản, không đối số nào thay đổi, và không mã lỗi nào di chuyển.

TL;DR cho các nhà tích hợp

  • Phí chuyển bị giữ lại có thể rút được trong quá trình launch. Trên một launch Token-2022 mới có nền tảng đặt transfer_fee_extension_auth, khóa đó là withdraw_withheld_authority của mint từ lúc tạo. Gọi trực tiếp WithdrawWithheldTokensFromAccounts / WithdrawWithheldTokensFromMint của Token-2022; LaunchLab không có instruction cho việc này và chưa bao giờ có.
  • Thời gian transfer_fee_config_authority không thay đổi. Nó vẫn là launch authority PDA cho đến graduation, và vẫn chuyển sang transfer_fee_extension_auth trong MigrateToCpswap. Tỷ lệ phí không thể thay đổi giữa launch.
  • Đặt transfer_fee_extension_auth trước khi launch. Khi nó là Pubkey::default() khi tạo mint, quyền rút sẽ quay trở lại authority PDA — hành vi cũ. Đặt trường này sau vẫn khôi phục quyền khi graduation, nhưng số dư bị giữ lại sẽ bị mắc kẹt cho đến lúc đó.
  • Không xoay trường giữa launch. Hai quyền được đọc tại hai thời điểm khác nhau, vì vậy giá trị thay đổi giữa chúng sẽ để chúng trên các khóa khác nhau. Chi tiết trong Rotation splits the two authorities.
  • MigrateToCpswap không thay đổi cho người gọi. Cùng tài khoản, cùng đối số, cùng lỗi. Guard mới là nội bộ; nếu không có nó, migration của mint thế hệ mới sẽ revert bên trong Token-2022 vì PDA không còn có thể ký để từ bỏ quyền mà nó không giữ.
  • Các launch hiện có không bị ảnh hưởng. Mint đã trên chuỗi giữ PDA trên cả hai quyền và vẫn nhận cả hai khi graduation.
  • Không cần làm mới IDL. Không layout, tài khoản, đối số hay mã lỗi nào thay đổi.

Ai giữ cái gì, và khi nào

Cả hai bàn giao vẫn nằm phía sau cùng một điều kiện bên ngoài mà chúng luôn có: mint cơ sở phải mang TransferFeeConfig transfer_fee_extension_auth phải không phải mặc định. Nền tảng không bao giờ đặt trường này giữ cả hai quyền trên authority PDA mãi mãi — tỷ lệ phí không bao giờ có thể thay đổi và số dư bị giữ lại không bao giờ có thể rút được.

Rotation chia tách hai quyền

transfer_fee_extension_auth được đọc hai lần mỗi launch, tại hai thời điểm có thể cách nhau nhiều ngày:
  1. Tại InitializeWithToken2022, cho withdraw_withheld_authority.
  2. Tại MigrateToCpswap, cho transfer_fee_config_authority — và cho withdraw_withheld_authority chỉ khi PDA vẫn giữ nó.
Xoay trường thông qua UpdatePlatformConfig giữa chúng và hai quyền sẽ nằm trên các khóa khác nhau: phía rút giữ khóa được cấu hình khi tạo, vì PDA không còn giữ nó và migration bỏ qua bàn giao đó, trong khi phía cấu hình phí đi đến khóa mới. Cả hai lệnh gọi không thất bại; sự chia tách là im lặng. Xoay giữa các launch, hoặc hòa giải các khóa sau đó trực tiếp thông qua Token-2022 với khóa cũ ký.

Tại sao guard là cần thiết, không chỉ là phòng chống

SetAuthority của Token-2022 yêu cầu quyền hiện tại phải ký. Theo quy tắc tạo mới, launch authority PDA không phải là withdraw-withheld authority trên mint mới, vì vậy CPI vô điều kiện mà chương trình từng thực hiện sẽ thất bại — và vì nó nằm bên trong MigrateToCpswap, thất bại đó sẽ chặn graduation cho mọi Token-2022 launch có phí chuyển trên nền tảng đã cấu hình trường. Hai thay đổi chỉ hoạt động như một cặp.

Cái gì không thay đổi

  • Toán học và kế toán phí chuyển. MAX_TRANSFER_FEE_RATE vẫn là 500 (5%, mẫu số 10_000), phí vẫn được định giá vào curve cùng cách, và số dư bị giữ lại vẫn tích lũy trên các tài khoản token mà Token-2022 đặt nó.
  • Giao diện của MigrateToCpswap. Cùng danh sách tài khoản, cùng chỉ số remaining_accounts, cùng hai chương trình token, không đối số.
  • Giao diện của InitializeWithToken2022. Cùng tài khoản, cùng TransferFeeExtensionParams, cùng từ chối NoSupportExtension cho bất cứ thứ gì ngoài MetadataPointerTransferFeeConfig.
  • Xử lý Token-2022 phía quote. Không thay đổi từ 2026-08-24.
  • Mã lỗi. 60006023 không thay đổi; phiên bản này không thêm cái nào.
  • Layout tài khoản và IDL. Không thay đổi. PlatformConfig.transfer_fee_extension_auth giữ offset và kiểu của nó; chỉ khi chương trình đọc nó thay đổi.

Trang được cập nhật

  • products/launchlab/platform-config — phần “Token-2022 transfer-fee authorities” mới bao gồm cả hai quyền, cả hai điểm bàn giao, và bẫy rotation; bình luận layout và danh sách pitfalls được sửa.
  • products/launchlab/instructionsMigrateToCpswap có thêm khối “Token-2022 transfer-fee authority handover”; postconditions của Initialize ghi lại các quyền tạo mint mới.
  • products/launchlab/accounts — danh sách vai trò authority-PDA và phần mint cơ sở ghi chú PDA thực sự giữ quyền transfer-fee nào.
  • reference/token-2022-support — mục mint cơ sở LaunchLab nêu ai giữ các quyền transfer-fee và khi nào.