流動性の預け入れ / 引き出し

LPトークンを受け取るためにトークンをCPMMプールへ預け入れるか、LPトークンをバーンしてプール内の自分の持分を引き出します。


プール情報を取得中

預け入れ操作と引き出し操作の両方にプール情報が必要です。

import {
  ApiV3PoolInfoStandardItemCpmm,
  CpmmKeys,
  CREATE_CPMM_POOL_PROGRAM,
  DEVNET_PROGRAM_ID,
} from '@raydium-io/raydium-sdk-v2'
import { initSdk } from '../config'

const VALID_PROGRAM_ID = new Set([
  CREATE_CPMM_POOL_PROGRAM.toBase58(),
  DEVNET_PROGRAM_ID.CREATE_CPMM_POOL_PROGRAM.toBase58(),
])
const isValidCpmm = (id: string) => VALID_PROGRAM_ID.has(id)

let poolInfo: ApiV3PoolInfoStandardItemCpmm
let poolKeys: CpmmKeys | undefined

const raydium = await initSdk()
const poolId = 'YOUR_POOL_ID'

if (raydium.cluster === 'mainnet') {
  const data = await raydium.api.fetchPoolById({ ids: poolId })
  poolInfo = data[0] as ApiV3PoolInfoStandardItemCpmm
  if (!isValidCpmm(poolInfo.programId)) throw new Error('target pool is not CPMM pool')
} else {
  const data = await raydium.cpmm.getPoolInfoFromRpc(poolId)
  poolInfo = data.poolInfo
  poolKeys = data.poolKeys
}

流動性の預け入れ

使用してください raydium.cpmm.addLiquidity() プールにトークンを預け入れるために使用します。1つのトークン量を指定すると、SDKが現在のプール比率に基づいてもう一方のトークンの必要量を計算します。

対となる金額の計算(任意)

預け入れ前に、UI表示用としてもう一方のトークンの必要量をプレビューできます:

預け入れパラメータ

パラメータ
説明

poolInfo

object

API または RPC から取得したプール情報。

poolKeys

object

プールキー。devnet では必須。mainnet では任意(SDK が導出します)。

inputAmount

BN

base または quote トークンを預け入れる量。最小単位で指定します。

slippage

Percent

スリッページ許容値。 new Percent(1, 100) = 1%.

baseIn

boolean

true の場合 inputAmount は token A 用、 false は token B 用です。

txVersion

TxVersion

トランザクションのバージョン。


流動性の引き出し

使用してください raydium.cpmm.withdrawLiquidity() LPトークンをバーンして、2つのトークンの持分に応じた割合を受け取るために使用します。

引き出しパラメータ

パラメータ
説明

poolInfo

object

API または RPC から取得したプール情報。

poolKeys

object

プールキー。devnet では必須です。

lpAmount

BN

バーンする LP トークンの量。最小単位で指定します。

slippage

Percent

受け取る最小トークン量に対するスリッページ許容値。

txVersion

TxVersion

トランザクションのバージョン。

circle-info

デフォルトでは、SDK が wSOL アカウントを自動的にクローズし、ネイティブ SOL を返します。wSOL アカウントを開いたままにするには、次を渡します closeWsol: false.

最終更新

役に立ちましたか?