Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
錢包整合 Raydium 通常需要針對每個使用者回答四個問題:該使用者在哪些流動性池中有 LP?他們持有哪些部位(CLMM NFT)?他們質押在哪些農場中?這一切的價值是多少?本頁記錄了每一項。

偵測 Raydium 部位

經典 LP 代幣(CPMM、AMM v4)

這些看起來就像任何其他 SPL Token:使用者的 ATA 持有餘額。錢包預設會將其顯示為另一個代幣。要將其識別為 Raydium LP 部位:
  1. 列舉使用者的代幣帳戶:connection.getParsedTokenAccountsByOwner(user, { programId: TOKEN_PROGRAM_ID })。
  2. 對於每個 mint,檢查 Raydium 的 mint 列表:GET https://api-v3.raydium.io/pools/info/lps?lps=<LP_MINT>,...(每次呼叫最多批次約 50 個 LP mint)。
  3. 對於匹配的 mint,API 會傳回池參考。使用它來計算部位的代幣計價值:
同時顯示 LP 餘額和展開後的金額 — 使用者以基礎代幣而非 LP 單位來思考。

CLMM 部位 NFT

CLMM 部位是 NFT。每個部位的 PersonalPositionState PDA 衍生自 NFT mint。要偵測:
  1. 列舉使用者的 NFT。對於舊版 Metaplex NFT:篩選代幣帳戶以找出供應量為 1 且小數位數為 0 的帳戶。
  2. 對於每個 NFT mint,嘗試衍生 PersonalPositionState PDA:
  1. 使用 raydium.clmm.getOwnerPositionInfo({ programId }) 列舉錢包的部位,並在 nftMint 上進行匹配(沒有 getPositionInfo)。每個條目提供:
    • poolId → 取得池以解析 mint
    • tickLower、tickUpper → 顯示範圍
    • liquidity、tokensOwedA/B → 計算部位價值 + 待領費用
    • rewardInfos → 每個獎勵流的待領獎勵
  2. 對於在 Token-2022 下發行的部位 NFT(OpenPositionWithToken22Nft),NFT mint 的程式是 Token-2022 而非 SPL Token。掃描時列舉兩者。

農場質押

Farm v3 / v5 / v6 各有一個每使用者的帳本 PDA。衍生方式:
對於偏好完全鏈上偵測的錢包:透過使用精選的「可能」農場 ID 列表對使用者進行雜湊,迭代可能的 UserLedger PDA。詳盡列舉所有農場 ID 不切實際(存在數千個);使用 API。

計算部位價值

CPMM / AMM v4 LP

三個模組不共享簽名:liquidity.getPoolInfoFromRpc 接受 { poolId },而 cpmm.getPoolInfoFromRpc 和 clmm.getPoolInfoFromRpc 接受位置 base58 字串。
然後將每個乘以 mint 的美元價格(來自 raydium.token 或價格預言機)。

CLMM 部位

呈現為:
  • 流動性價值(當前價格)
  • 未收取的費用
  • 每個流的待領獎勵
  • 範圍:[tickLower_price, tickUpper_price],帶有視覺條顯示當前價格是否在範圍內

農場質押

對於鏈上計算,鏡像農場的會計:
在計算前確保使用懶惰更新公式刷新 reward_per_share_x64(經過時間 × 發放率 ÷ 總質押)。

交易模擬以進行預覽

在使用者簽署前,錢包通常會預覽餘額變化。使用 simulateTransaction:
accounts 參數要求驗證器為列出的地址傳回模擬後帳戶狀態。比嘗試單獨從指令形狀預測餘額變化準確得多。

模擬陷阱

  • CLMM 交換需要有效的 tick 陣列。 如果使用者的輸入大小會跨越未初始化的 tick 陣列,模擬會還原(與執行相同)。在 UI 中清楚地表面這一點。
  • 優先費用。 模擬執行時不應用計算預算指令。對於會超過預設 200k CU 的大型交易,模擬失敗但使用明確 CU 限制的實際執行成功。也在模擬的交易上設定 CU 限制。
  • 新鮮區塊雜湊。 模擬使用當前區塊雜湊;如果簽署耗時超過 60 秒,交易變為無效。如果使用者猶豫,重新模擬。

Token-2022 顯示

Token-2022 程式下的代幣應在錢包的代幣列表中標記為此,因為它們有不同的風險面:
  • 轉帳費用 mint:在餘額旁邊顯示當前 transferFeeBasisPoints 為「轉帳費用:X%」。接收時警告 — 使用者可能沒有意識到他們將收到少於發送者發送的金額。
  • 轉帳掛鉤 mint:表面掛鉤程式 ID。惡意掛鉤可以阻止出站轉帳;使用者應驗證掛鉤是他們期望的。
  • 不可轉帳 mint:顯示「不可轉帳」並禁用交換/發送。這些通常是靈魂綁定代幣或憑證。
  • 計息 mint:從 TokenAccount.amount 衍生的 UI 餘額不反映應計利息。使用 @solana/spl-token 中的 amountToUiAmount(應用縮放因子)以獲得顯示值。

農場 APR 顯示

向使用者顯示的 APR 應結合所有實時獎勵流,轉換為美元,並年化:
顯示為 APR: X.Y%。如果質押 mint 是 LP 代幣,也計算基礎 LP 的基本費用 APR,並將總和標記為「總 APR」或「APR + 費用」。

指標

來源:
  • Raydium SDK v2 — 部位/農場幫助程式。
  • api-v3.raydium.io 上的使用者部位端點。