Skip to main content
本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
版本信息
  • SDK:@raydium-io/raydium-sdk-v2@0.2.42-alpha
  • 集群:Solana mainnet-beta
  • 程序 ID:见 reference/program-addresses
  • 最后验证:2026-04
package.json 中固定 SDK 版本。联动曲线接口在小版本之间有所变化。

设置

此处的示例镜像 raydium-sdk-V2-demo/src/launchpad 中的文件。引导程序遵循演示仓库的 config.ts.template

创建启动

源代码:src/launchpad/createMint.ts(以及 createBonkMintApi.ts 用于 API 驱动的 Bonk 变体)
注意:
  • initialK 是二次曲线的缩放因子。调整它以在毕业时针对特定的开盘 CPMM 价格。详见 products/launchlab/bonding-curve 的推导。
  • SDK 在单个交易中处理创建基础 mint、元数据 PDA 和两个金库。如果元数据 URI 很长,可能超过 1232 字节;在这种情况下,SDK 会分成两个交易。
  • Initialize 之后,启动在 openTime 之前不可交易。将 openTime 设置在未来一两分钟,以减少抢先交易者抢占第一笔买入的机会。

获取启动状态

getLaunchById 返回解码后的 LaunchState 以及计算的”毕业进度”分数作为 Decimal

买入 — 精确报价输入

源代码:src/launchpad/buy.ts
computeBuyBase 镜像链上 Newton 求解器(二次曲线)或闭式 CPMM 反函数(curve_type 1)。用它来填充”你将收到”UI 字段。

买入 — 精确基础输出

适用于”精确购买 X 个代币”的 UI。如果曲线移动足够大,使得报价要求现在超过 maximumQuoteIn,则以 ExceededSlippage 拒绝。

卖出

源代码:src/launchpad/sell.ts
曲线的卖出路径与买入路径对称:将 base_sold 减少 baseIn 返回 quote_out,等于曲线下在 base_sold − baseInbase_sold 之间的积分面积,减去卖出费用。

在阈值交叉买入时自动毕业

当 SDK 检测到买入后状态将跨越阈值时,它会在 buy* 交易内链接 Graduate 指令:
因为 Graduate 是无权限的,任何人(包括 MEV 机器人)都可以在阈值交叉后竞速登陆第一个 Graduate — 通常在几秒内,而不是几分钟。第一个登陆者只需支付 CPMM 池账户的租金;他们没有其他好处。

手动 Graduate

如果 autoGraduate 关闭或阈值交叉交易失败,你可以单独触发毕业:
如果在提交时 quote_reserve_real < quote_reserve_target,则以 NotAtThreshold 回滚。重试安全 — 成功后的第二次 Graduate 尝试以 NotActive 回滚。

收取创建者费用

源代码:src/launchpad/claimCreatorFee.ts(单个 mint)和 collectAllCreatorFees.ts(批量)
将累积的创建者费用计数器报价金额转移到创建者在报价 mint 上的 ATA。可在毕业前或毕业后调用;定期使用它而不是等待巨大的余额累积。

跟踪启动的整个生命周期

综合起来,监控脚本可能看起来像:

通过 gRPC 监视配置和池

源代码:src/grpc/launchpadPoolInfo.ts 通过 Yellowstone gRPC 订阅 LaunchLab 程序,并记录每个 mint 的 token 程序的每个 GlobalConfigPoolState 更新。一个 accounts 订阅上的两个 datasize 过滤器分离两种账户类型,因此单个流涵盖两者。 该演示是分类启动 mint 的最短正确参考,Token-2022 报价 mint 发布 使其成为必要:
  • 直接从 PoolState.token_program_flag 分类,为基础 mint 解码 bit0,为报价 mint 解码 bit1,完全不获取 mint。测试整个字节是否为 0 — 在报价 mint 仅为旧版时足够 — 当报价 mint 是 Token-2022 时,会误读旧版基础 mint 为 Token-2022。
  • 配置 不能以这种方式分类:GlobalConfig 存储其报价 mint 的地址且没有程序标志,因此演示读取 mint 账户的所有者一次并按 mint 缓存。
它还相互交叉检查,这是在你自己的索引器中保持的有用断言。注意 createupdate 是从演示自己的缓存推断的,在启动时从 getProgramAccounts 播种;禁用该播种后,将”create”读作”首次在此流上看到”。 gRPC 访问不是公共 RPC 表面的一部分 — 见演示仓库的 src/grpc/README.md

Rust CPI

从你自己的 Anchor 程序调用 LaunchLab 很少见(大多数启动集成仅在 TS 端)。如果你这样做,程序附带 Anchor crate raydium_launchlab,包含 cpi::accounts::Buycpi::accounts::Sell 等 — 模式镜像 CPMM / CLMM CPI 示例。一旦此站点被填充,见 sdk-api/rust-cpi 获取通用模板。

陷阱

  • 费用分割算术差一。 如果 total_share 不完全等于 lp_share + creator_share + protocol_shareInitializeInvalidFeeShares 回滚。将 totalShare 设置为等于总和。
  • 使用不允许的报价 mint。 launch_config.allowed_quote_mints 是固定列表;传递任何其他 mint 会回滚。首先用 raydium.launchpad.getConfig() 检查。
  • 元数据大小。uri 字符串会将 Metaplex CPI 推过预算。保持 uri 在约 200 个字符以下 — 大多数 CDN 托管的 JSON 元数据轻松适配。
  • 毕业竞速。 自动化机器人监视 quote_reserve_real 并在阈值交叉后的一两个 slot 内抢先 Graduate。这是良性的 — 它只花费他们租金 — 但这意味着你的 UI 应该将 status 转换视为快速事件。

接下来去哪里

来源: