本页内容由 AI 自动翻译,所有内容以英文版本为准。查看英文版 →
版本信息
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - 集群:Solana
mainnet-beta - 程序 ID:见
reference/program-addresses - 最后验证:2026-09-09,针对 SDK
0.2.64-alpha源代码、raydium-sdk-V2-demo/src/launchpad和raydium-launch程序源代码
package.json 中固定 SDK 版本。绑定曲线接口在小版本之间有所变化。设置
此处的示例镜像raydium-sdk-V2-demo/src/launchpad 中的文件。引导程序遵循演示仓库的 config.ts.template:
创建启动
源代码:src/launchpad/createMint.ts(以及 createBonkMintApi.ts 用于 API 驱动的 Bonk 变体)
启动的大部分经济学参数不是参数——它们来自你通过 configId 绑定的 GlobalConfig,SDK 从 API 的默认参数填充其余部分。你传递代币的身份、要绑定的配置,以及(可选)首次购买:
- 没有
curveType、graduationFractionBps、initialK、quoteMint、openTime、fees或postGraduationLpPolicy参数。曲线形状和报价代币是你绑定的GlobalConfig的属性;费率存在于GlobalConfig和PlatformConfig上;毕业时的 LP 处置是PlatformConfig设置。有关InitializeV2接受的内容,请参阅products/launchlab/instructions。 - 长于 10 个字符的
symbol和空uri都在任何 RPC 之前被客户端拒绝。 - 传递
transferFeeExtensionParams会将构建器切换到InitializeWithToken2022并强制migrateType为"cpmm"。 - 构建器返回
transactions数组;createOnly: false添加首次购买交易。始终execute({ sequentially: true })——代币必须在购买到达之前存在。
获取启动状态
源代码:src/launchpad/poolInfo.ts
没有 getLaunchById。池 ID 是 (programId, mintA, mintB) 的 PDA,getRpcPoolInfo 返回解码的 PoolState 及其绑定的 configInfo:
getRpcPoolsInfo({ poolIdList }) 是批处理形式,返回按池 ID 键入的 poolInfoMap ——用于投资组合视图而不是循环。如果你想自己解码原始账户,LaunchpadPool.decode 和 LaunchpadConfig.decode 已导出。
购买——精确报价输入
源代码:src/launchpad/buy.ts
离链报价助手是 Curve.buyExactIn,是导出的 Curve 类上的静态方法——不是 raydium.launchpad 上的方法。交易构建器是 buyToken。两者都需要平台的费率,这些费率存在于单独的 PlatformConfig 账户上:
minMintAAmount 而不是 slippage;省略两者,SDK 从实时 RPC 数据计算界限。shareFeeRate 不得超过 poolInfo.configInfo.maxShareFeeRate,仅当你也传递 shareFeeReceiver 时才适用。
购买——精确基础输出
构建器是buyTokenExactOut,金额参数是 outAmount(你想要的基础)和 maxBuyAmount(你最多花费的报价)。Curve.buyExactOut({ poolInfo, amountA, ... }) 是匹配的离链预览。
outAmount,如果曲线移动足够使报价要求超过 maxBuyAmount,程序会还原。
出售
源代码:src/launchpad/sell.ts
构建器是 sellToken(精确报价输出变体为 sellTokenExactOut),带有 sellAmount 和可选的 minAmountB。Curve.sellExactIn({ poolInfo, amountA, ... }) 预览它。
real_a 减少 sellAmount 返回 quote_out 等于曲线下在 real_a − sellAmount 和 real_a 之间的积分面积,减去出售费用。sellAmount 必须大于零——构建器在任何 RPC 之前在客户端拒绝零。
毕业
这些钱包由 Raydium 的毕业 crank 操作,所以实际上无论谁进行最后购买,迁移都会在阈值被超过后的几秒内进行。从集成商的角度来看,唯一要做的是将状态转换视为快速事件:轮询getRpcPoolInfo(或通过下面的 gRPC 订阅)并在 status 更改时将你的 UI 从曲线切换到生成的 CPMM 池。
有关账户列表、迁移费用以及毕业时 LP 如何分割,请参阅 products/launchlab/instructions。
收取创建者费用
源代码:src/launchpad/claimCreatorFee.ts(单个代币)和 collectAllCreatorFees.ts(批处理)
方法是 claimCreatorFee(批处理形式为 claimMultipleCreatorFee)。它由报价代币键入,而不是由启动——一个调用会扫除签署者在该代币中跨其启动的累积创建者费用:
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee 构建器。
跟踪启动的整个生命周期
综合起来,监控脚本可能看起来像:getRpcPoolInfo 对于单个启动是可以的。对于索引器,改用下面的 gRPC 订阅——getRpcPoolsInfo({ poolIdList }) 批处理,但轮询数百个池仍然会为无益处而消耗 RPC 信用。
通过 gRPC 监视配置和池
源代码:src/grpc/launchpadPoolInfo.ts
通过 Yellowstone gRPC 订阅 LaunchLab 程序,并记录每个 GlobalConfig 和 PoolState 更新及其各自代币的代币程序。一个 accounts 订阅上的两个 datasize 过滤器分离两种账户类型,因此单个流涵盖两者。
演示是对启动代币进行分类的最短正确参考,Token-2022 报价代币发布使其成为必要:
- 池直接从
PoolState.token_program_flag分类,为基础代币解码 bit0,为报价代币解码 bit1,完全不获取代币。测试整个字节是否为0——在报价代币仅为旧版时足够——当报价代币为 Token-2022 时,会误读旧版基础代币为 Token-2022。 - 配置不能以这种方式分类:
GlobalConfig存储其报价代币的地址且没有程序标志,所以演示读取代币账户的所有者一次并按代币缓存它。
create 与 update 是从演示自己的缓存推断的,在启动时从 getProgramAccounts 播种;禁用该播种后,将”create”读作”首次在此流上看到”。
gRPC 访问不是公共 RPC 表面的一部分——见演示仓库的 src/grpc/README.md。
Rust CPI
从你自己的 Anchor 程序调用 LaunchLab 很少见(大多数启动集成仅是 TS 端)。如果你这样做:- crate 是
raydium-launchpad(lib 名称raydium_launchpad),版本0.2.0,它确实公开了cpi功能。没有raydium_launchlab。 - 它未在 crates.io 上发布——通过 git 修订依赖它,与其他 Raydium 程序 crate 相同。
- CPI 入口点以链上指令命名,而不是以 SDK 的 TypeScript 方法命名:
buy_exact_in、buy_exact_out、sell_exact_in、sell_exact_out、claim_creator_fee、create_vesting_account、claim_vested_token。migrate_to_amm/migrate_to_cpswap对绑定GlobalConfig迁移钱包的签署者进行门控,不可从集成商程序调用。
sdk-api/rust-cpi ——特别是 Anchor 版本分割,它决定一个 crate 是否可以 CPI 到 LaunchLab 和 CLMM 两者。
陷阱
- 混淆链上指令名称与 SDK 方法名称。 程序有
buy_exact_in/sell_exact_in;SDK 有buyToken/sellToken。buyExactIn和sellExactIn仅作为Curve上的静态方法存在,它们计算报价——它们不构建交易。 - 忘记
extraSigners。createLaunchpad从你生成的密钥对创建基础代币,所以该密钥对必须签署。省略extraSigners: [pair]交易会失败签名验证。 - 不选择报价代币。 你不传递一个。报价代币是你通过
configId绑定的GlobalConfig的属性——getPdaLaunchpadConfigId(programId, quoteMint, curveType, index)。要针对不同的报价代币启动,绑定不同的配置;raydium.api.fetchLaunchConfigs()列出可用的配置及其默认参数。 - 元数据大小。 长
uri字符串会将 Metaplex CPI 推过预算。保持uri在约 200 个字符以下——大多数 CDN 托管的 JSON 元数据轻松适配。symbol硬上限为 10 个字符。 - 将毕业视为你可以进入的竞争。 它不是——见上面的警告。你的 UI 仍应将
status转换视为快速事件,因为 Raydium 的 crank 在阈值被超过后的几秒内进行迁移。
接下来去哪里
products/launchlab/bonding-curve——曲线数学。products/cpmm/code-demos——如何处理生成的池。user-flows/launch-token-launchlab——端到端启动代币指南,包括链下步骤。
- Raydium SDK v2
- Raydium LaunchLab 程序源代码

