Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
版本資訊。在你的 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 設定。見 products/launchlab/instructions 了解 InitializeV2 確切接受的內容。
  • 超過 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, ... }) 是匹配的離線預覽。
適用於「精確購買 X 個代幣」UI。建構器在客戶端拒絕零 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.launchpad.graduate、購買建構器上沒有 autoGraduate 標誌,其返回值上也沒有 willGraduate 欄位。在鏈上,畢業是 MigrateToCpswap(或舊版 MigrateToAmm),兩個指令都將其簽署者限制為綁定 GlobalConfig 上記錄的錢包——migrate_to_cpswap_wallet 和 migrate_to_amm_wallet 分別。來自任何其他簽署者的呼叫失敗並出現 InvalidOwner。它不是無許可的,沒有 MEV 機器人可以搶先它。
這些錢包由 Raydium 的畢業 crank 操作,所以實際上無論誰進行最後購買,遷移都會在閾值被超越後的幾秒內進行。從整合者的角度來看,唯一要做的是將狀態轉換視為快速事件:輪詢 getRpcPoolInfo(或透過 gRPC 訂閱,見下文)並在 status 變更時將你的 UI 從曲線切換到結果 CPMM 池。 見 products/launchlab/instructions 了解帳戶列表、遷移費用以及畢業時 LP 如何分割。

收取創作者費用

來源:src/launchpad/claimCreatorFee.ts(單一代幣)和 collectAllCreatorFees.ts(批量) 方法是 claimCreatorFee(批量形式為 claimMultipleCreatorFee)。它由報價代幣鍵入,而不是由發行鍵入——一次呼叫會掃除簽署者在該代幣中跨其發行的累積創作者費用:
將累積的創作者費用計數器轉移到創作者在報價代幣上的 ATA。可在畢業前或後呼叫;定期使用它而不是等待巨大餘額累積。平台運營商有平行的 claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee 建構器。

透過其生命週期追蹤發行

綜合起來,監控指令碼可能看起來像:
在 10 秒計時器上輪詢 getRpcPoolInfo 對單一發行來說很好。對於索引器,改用下面的 gRPC 訂閱——getRpcPoolsInfo({ poolIdList }) 批量,但輪詢數百個池仍然會為無益處而燃燒 RPC 信用。

透過 gRPC 監視設定和池

來源:src/grpc/launchpadPoolInfo.ts 透過 Yellowstone gRPC 訂閱 LaunchLab 程式,並記錄每個 GlobalConfig 和 PoolState 更新及每個代幣的代幣程式。一個 accounts 訂閱上的兩個 datasize 篩選器分離兩種帳戶類型,所以單一流涵蓋兩者。 示例是分類發行代幣的最短正確參考,Token-2022 報價代幣發行使其成為必要:
  • 池直接從 PoolState.token_program_flag 分類,解碼位 0 用於基礎代幣,位 1 用於報價代幣,完全不進行代幣提取。測試整個位元組對 0 ——在報價代幣僅為舊版時足夠——當報價代幣為 Token-2022 時誤讀舊版基礎代幣。
  • 設定不能以這種方式分類:GlobalConfig 儲存其報價代幣的地址且沒有程式標誌,所以示例讀取代幣帳戶的擁有者一次並按代幣快取它。
它也相互交叉檢查,這是在你自己的索引器中保持的有用斷言。注意 create 對 update 是從示例自己的快取推斷的,在啟動時從 getProgramAccounts 播種;禁用該播種後,讀取「create」為「首次在此流上看到」。 gRPC 存取不是公共 RPC 表面的一部分——見示例儲存庫的 src/grpc/README.md。

Rust CPI

從你自己的 Anchor 程式呼叫 LaunchLab 很少見(大多數發行整合僅為 TS 端)。如果你這樣做:
  • 箱子是 raydium-launchpad(lib 名稱 raydium_launchpad),版本 0.2.0,它確實公開了 cpi 功能。沒有 raydium_launchlab。
  • 它未在 crates.io 上發佈——透過 git 修訂依賴它,與其他 Raydium 程式箱子相同的方式。
  • 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 版本分割,它決定一個箱子是否可以 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 在閾值被超越後的幾秒內進行遷移。

接下來去哪裡

來源: