Skip to main content
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
本条目涵盖即将推出的 LaunchLab 程序更新。在部署前已针对本地发布分支进行验证。在生产环境中启用新路径前,请确认已部署的程序和已发布的 IDL。
此版本允许使用 Token-2022 代币对启动进行报价。在此之前,报价端被硬连接到旧版 SPL Token 程序,因此只有基础代币可以是 Token-2022。现在,触及报价代币的每个地方——GlobalConfig 创建、池初始化、四个交换指令、所有费用领取和 CPMM 迁移——都接受任一代币程序,交换指令会考虑报价代币的转账费用。

集成商速览

  • 报价代币可以是 Token-2022。 CreateConfig 接受 Token-2022 quote_token_mintInitializeV2 / InitializeWithToken2022 在报价程序槽中接受任一代币程序。账户顺序不变——你在该槽中传入的值会改变。
  • 已弃用的 Initialize 仍仅限旧版。 其报价程序账户仍然被类型化为 SPL Token,因此报价代币为 Token-2022 的配置只能通过 InitializeV2InitializeWithToken2022 启动。
  • 滑点边界移至支付方实际支付和接收的金额。 minimum_amount_outmaximum_amount_in 现在与报价代币转账费用净额进行比较,而不是与金库移动的金额进行比较。在费用承担的报价代币上,现有报价逻辑会低估成本并高估收益。
  • PoolState.token_program_flag 第1位变得有意义。 当报价代币仅为旧版时,它始终为 0。将整个字节与 0 进行比较的客户端现在会在报价代币为 Token-2022 时将旧版基础代币读取为 Token-2022。这是此版本中最可能的无声破坏。
  • MigrateToCpswap 重命名其两个代币程序账户。 base_token_program / quote_token_program 变为 token_program / token_program_2022。两者始终都是必需的,程序根据代币选择正确的。
  • 代币/程序对现在已验证。 两个交换代币都获得了 mint::token_program 约束,ClaimPlatformFee 的报价代币也是如此,因此不匹配的对会还原而不是被忽略。
  • 新错误 6023 CalculateOverflow 代码 60006022 保持不变。6023 由上一版本空出,现在被重新使用。
  • 费用金库跟随报价代币。 创建者和平台费用金库,以及分享费用接收者的代币账户,位于拥有报价代币的任何程序上。

哪些账户改变了类型

这些都不改变其账户列表中的位置。只有允许的值改变。 Initialize(已弃用的 V1 路径)故意不在此表中。其报价程序账户保持类型化为 SPL Token。 其中几个也收紧了代币约束,因此不匹配的代币/程序对现在会还原,而之前是被接受或未检查的:
  • 四个交换指令将 base_token_mintquote_token_mint 都约束到在匹配槽中传入的程序。之前都没有该约束,因此错误的基础程序被无声接受。
  • ClaimPlatformFeequote_mint 上添加相同约束。
  • ClaimPlatformFeeFromVault 将其约束从代币账户形式更正为代币账户上的代币形式。

报价端转账费用会计

这是改变数字而不是账户列表的部分。在没有 TransferFeeConfig 的报价代币上,下面的每个公式都会折叠为之前的行为,因此旧版池和无费用 Token-2022 池在位级别上保持不变。 两个值得明确说明的后果:
  • 从等效无费用池计算的边界不再可接受。使用无费用成本作为 maximum_amount_inBuyExactOut 现在以 ExceededSlippage 还原,SellExactIn 使用无费用收益作为 minimum_amount_out 也是如此。这是预期行为——旧的比较让支付方在已同意的边界之上被扣除转账费用。
  • 池只记录到达金库的内容。在 5% 报价代币上进行 amount_inBuyExactIn 后,real_quote 前进 amount_in × 0.95,而不是 amount_in
get_transfer_inverse_fee 也删除了其对 100% 费用代币的特殊情况:现在当无法计算反向费用时返回新的 CalculateOverflow 错误,而不是回退到 maximum_fee。因此 10000 基点的报价代币会导致精确输出路径失败,而不是在费用上限处无声交易。

token_program_flag 第1位

PoolState.token_program_flag 是一个位字段,一直都是:
该字段、位位置和写入两个位的代码都早于此版本。改变的是第1位现在实际上可以是 1,因为报价代币现在可以是 Token-2022 代币。四个值是: 使用 (token_program_flag >> bit) & 1 读取每个代币的程序。任何将字节视为基础代币布尔值的客户端——flag === 0 ? Token : Token-2022——会将值 2 解析为 Token-2022 基础代币,并将针对错误的程序构建基础端代币账户和转账。没有账户大小或字段偏移改变,因此索引器不需要存储迁移,只需要解码修复。

CPMM 迁移账户重命名

MigrateToCpswap 之前为每个代币取一个代币程序,调用者决定哪个是哪个。现在它无条件地取两个程序并从代币本身派生映射: 两个位置保持不变,因此这是值改变,而不是布局改变——但值几乎是反向的,构建者继续传入其旧对将在任一代币是 Token-2022 代币时在需要旧版程序的地方传入 Token-2022。 旧版程序仍然无条件地始终需要,无论任一代币如何,因为 CPMM LP 代币和锁定流动性费用密钥 NFT 始终位于其上。来自 2026-08-17 版本remaining_accounts 布局保持不变。

报价代币仅由管理员自由裁量接纳

与 CPMM 和 CLMM 不同,LaunchLab 对报价代币运行扩展允许列表。CreateConfig 按原样接受代币账户,因此唯一的门是管理员将哪些代币绑定到 GlobalConfig。程序的 NoSupportExtension 检查仅适用于 LaunchLab 自己创建的 Token-2022 基础代币,其中仅允许 MetadataPointerTransferFeeConfig 将 Token-2022 报价代币绑定视为高信任操作,理由与 reference/token-2022-support 中的 CPMM/CLMM 静态白名单相同。TransferHookPermanentDelegate 报价代币将在配置创建时被接纳,然后将在以其报价的每个池上运行或能够扫除。

amm_creator_fee_on 时间戳门

InitializeV2 删除了时间戳门,该门在升级时间戳之前拒绝任何 amm_creator_fee_on 而不是 BothToken。等效门仍然存在于 InitializeWithToken2022 中。实际上,两条路径在 mainnet-beta 上今天都接受任一值,因为该时间戳(1755522000,2025-08-18 13:00 UTC)早已过去——这是清理,而不是当前调用者的行为改变。

错误和 IDL 影响

代码 60006022 保持不变,包括 6022 InvalidPlatformAllowConfig 上一版本停用了旧的 6023 并将其留空;此版本重新使用该数字。不要使用来自任一早期版本的 IDL 解码 6023 在传入 Token-2022 报价程序、解码 token_program_flag 第1位或构建重命名的 MigrateToCpswap 账户列表前刷新 LaunchLab IDL。

SDK 影响

SDK 的启动板模块的报价端在程序所在的相同位置被硬编码为 TOKEN_PROGRAM_ID。伴随此版本的分支改为解析报价代币的所有者,将其线程化通过代币账户创建、分享费用接收者的 ATA 和指令的报价程序槽,并向四个 Curve 方法添加可选的 transferFeeConfigB,以便报价反映上述公式。Curve 结果获得 transferFeeB 字段;amountB 保持其含义——支付方花费或卖方接收的内容——因此无费用报价代币产生与之前相同的数字。 这些 SDK 更改未发布。本文档集中代码演示页面上的规范引脚保持不变;在依赖新参数前检查已发布的版本。

参考实现

新演示通过 Yellowstone gRPC 订阅 LaunchLab 程序,并为每个 GlobalConfigPoolState 更新记录每个代币是 Token 还是 Token-2022 代币: raydium-sdk-V2-demo/src/grpc/launchpadPoolInfo.ts 这是此版本使必要的两件事的紧凑参考。池直接从 token_program_flag 分类,解码两个位而无需任何代币获取——这是上述第1位破坏的修复。配置无法以这种方式分类,因为 GlobalConfig 仅存储其报价代币的地址而没有程序标志,因此演示读取代币账户的所有者一次并按代币缓存。并排看到两条路径是检查你自己的解码器的最快方式。 参见 products/launchlab/code-demos 了解演练。

更新的页面

  • products/launchlab/accounts — 报价代币程序、token_program_flag 位布局和金库所有权。
  • products/launchlab/instructions — 报价程序账户、交换滑点语义和重命名的迁移账户。
  • products/launchlab/global-configquote_mint 可能是 Token-2022 代币,什么会和不会限制它。
  • products/launchlab/code-demos — gRPC 配置/池观察者。
  • reference/token-2022-support — LaunchLab 行和报价代币部分。
  • reference/error-codes6023 CalculateOverflow