このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
バージョン情報。 すべてのコード例は
@raydium-io/raydium-sdk-v2@0.2.42-alpha を対象としており、Solana mainnet-beta で動作確認されています(2026 年 4 月時点)。SDK は内部的にファームのプログラム所有者に基づいて v3 / v5 / v6 をディスパッチします。以下の例は v6 ファームを想定しています。reference/program-addresses で 3 つのプログラム ID を確認してください。セットアップ
このセクションのコード例はraydium-sdk-V2-demo/src/farm のファイルを反映しています。ブートストラップは デモリポジトリの config.ts.template に従います:
ID でファームを取得
getFarmById は FarmState をオンチェーンから取得し、プログラムバージョンに応じてデコードして、固定小数点の発行レートを 1 秒あたりの純粋な Decimal に正規化します。
LP トークンをステーク
ソース:src/farm/stake.ts
報酬の請求のみ(ハーベスト)
ソース:src/farm/harvest.ts
harvestAllRewards はリストを受け付けます。ポートフォリオビューを表示する UI の場合、呼び出しをバッチ処理してください。各ファームは 1 つのトランザクション内で個別の命令で請求されます(1232 バイトの制限に従うため、6 個を超えるファームの場合は複数のトランザクションに分割してください)。
v6 の単一ファームでは、明示的な Harvest パスも使用できます:
amount: 0 のイディオムが必須です。SDK は正しくディスパッチします。
ステークを解除
ソース:src/farm/unstake.ts
v6 ファームを作成
ソース:src/farm/createAmmFarm.ts および editAmmFarm.ts
perSecondは 1 秒あたりの整数発行レートです。SDK はこれを Q64.64 にパックして送信します。小数レートの場合、スケーリングして期間を調整してください。- 完全な予算(
perSecond × duration)は報酬 ATA に存在する必要があります。createはこれをアトミックに報酬ボールトに移動させます。 - 1 つの
create呼び出しで最大 5 つの報酬をシードできます。アカウントリストは追加ストリームごとに(reward_mint, reward_vault, sender_ata, token_program)だけ増加します。1232 バイトのトランザクションサイズ制限に注意してください。4 個以上の報酬の場合は、1~2 個で作成し、後続のトランザクションでAddRewardを使用してください。
既存の報酬ストリームを補充
setRewards は end_time を延長し、差額の予算を転送します。この命令はストリームを短縮することはできず、ライブストリームで per_second を低下させることはできず、報酬ミントを変更することはできません。ミントを交換するには、end_time まで待機して、解放されたスロット(存在する場合)で AddReward を使用するか、新しいファームを作成してください。
終了したストリームを再開
reward_state == 2(終了)の場合にのみ有効です。呼び出し元はスロットの reward_sender(v6)またはファーム所有者(v5)である必要があります。
Rust CPI
AMM v4 とは異なり、v6 ファームプログラムは Anchor クレート(raydium_farm_v6)を同梱して出荷され、フロントエンドおよび SDK ソースと共に公開されています。最小限の Deposit スケッチ:
remaining_accounts スライスはファームのアクティブな報酬スロットと 1 対 1 で一致する必要があります(reward_vault_i、user_reward_ata_i のペアをインデックス順で)。これらを省略またはミスオーダーすると、サイレント会計誤りが発生します。プログラムは間違った金額を転送します。
よくある落とし穴
- 引き出す前に請求することを忘れる。 無害です。
Withdrawは保留中の報酬を最初に決済します。ただし、UI で「請求」を「引き出す」とは別に表示する場合、ユーザーはWithdrawの後にまだ請求するものがあると思うかもしれません。ありません。その時点までに発生したすべては支払われています。 - 発行中に
total_staked = 0。 何もステークされていない間に発生した発行は失われます(reward_per_share更新式は 0 で除算し、プログラムは更新をスキップします)。スケジュールされたopen_timeを持つプログラムの場合、open_time で「シード ステーク」を実行してこれを回避してください。 - Token-2022 転送手数料。 v6 ファームで Token-2022 報酬ミントの場合、転送手数料は発行時に適用されます(ボールト → ユーザー)。これを APR 見積もりに組み入れてください。
- v5 での小さい
per_second。 v5 のu64レートはper_second < 1トークン単位/秒(小数点以上 9 桁のミントでは、これが望ましいレートであることが多い)が表現できないことを意味します。ストリームレートは 0 に丸められ、ファームは何も発行しません。v6 を使用してください。
次のステップ
products/farm-staking/instructions— 基盤となる命令リファレンス。products/clmm/fees— CLMM のネイティブ報酬ストリームと比較。user-flows/migrate-amm-v4-to-cpmm— 新しい CPMM ファームの立ち上げに関連していることが多い。
- Raydium SDK v2
- Farm v6 IDL は
raydium-io/raydium-sdk-V2にsrc/raydium/farm/の下に含まれています。

