このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
ファーム命令はバージョンに固有です。v6 の
Deposit は v5 ファームでは呼び出せません。逆も同じです。SDK はファームのプログラム所有者を読むことでディスパッチします。オンチェーン CPI の場合は、事前に正しいプログラム ID を選択する必要があります。命令一覧
v3 と v5 では、ステークを変更せずに報酬をクレームする標準的な方法は、
amount = 0 で Deposit を呼び出すことです。プログラムはこれを純粋なセットルメントとして扱います。v6 では明示的な Harvest が導入され、わかりやすくなりました。
SDK はこれらすべてを raydium.farm.deposit({ ... }) などの背後に抽象化しています。以下のセクションでは、手動で命令を構築する必要があるインテグレータ(アグリゲータ、監視ツール、SDK 拡張)向けの基礎となるアカウントリストを文書化しています。
CreateFarm (v6)
新しい v6 ファームをスピンアップします。
引数
reward_info_count = 1 の場合)
前提条件
open_time > now、end_time > open_time。creatorATA は少なくともemission_per_second_x64 × (end_time − open_time) / 2^64の報酬ミントを保有。staking_mintはフリーズ権限がない、またはフリーズ権限が無効。
FarmStateが初期化され、total_staked = 0。- 報酬ボールト(ボールト)は完全なストリーム予算で充当。
- クリエイターの報酬 ATA がその金額分排出。
Deposit (v6)
ステーキングミントの amount をステーキングします。
引数
user_ledger が存在しない場合、SDK は CreateAccount スタイルの命令を前置します。v6 プログラムはシステムプログラムアカウントを指定されれば遅延作成も可能です。残りのアカウントパターン:各アクティブ報酬に対して (reward_vault, user_reward_ata) を追加して、セットルメントがペイアウトできるようにします。
効果
- 各アクティブ報酬ストリームの
reward_per_share_x64[i]を遅延更新フォーミュラを使って更新。 pending_i = user_ledger.deposited × reward_per_share_x64[i] / 2^64 − user_ledger.reward_debts[i]を計算。reward_vault_{i}からuser_reward_ata_{i}にpending_iを転送。user_staking_ataからstaking_vaultにステーキングミントamountを転送。user_ledger.deposited += amountを更新し、reward_debts[i]を再スナップショット。farm_state.total_staked += amountを更新。
- 真のステーキングについて
amount > 0(v6 はamount = 0を禁止 — クレーム限定はHarvestを使用)。 user_staking_ataは少なくともamountを保有。- 各アクティブ報酬ボールトはこのユーザーに支払うべき保留分を少なくとも保有。
Withdraw (v6)
amount をアンステーキングします。
引数
Deposit と同一。
効果 — Deposit と同じセットルメント後、ステーキングミントをユーザーに戻す:staking_vault → user_staking_ata。total_staked と user_ledger.deposited の両方が減少。
前提条件
amount ≤ user_ledger.deposited。- ファームは一時停止されていない。
Harvest (v6)
ステークを変更せずに保留報酬をクレームします。
引数 — なし。
アカウント — Deposit と同一、ステーキング側の移動なし。
効果 — reward_per_share_x64[i] を更新、pending_i をペイアウト、reward_debts[i] を再スナップショット。total_staked または deposited に変更なし。
AddReward (v5/v6)
未使用スロットを持つ既存ファームに新しい報酬ストリームを追加します。
引数
- 空きスロットが存在(v6 の場合
reward_info_count < 5、v5 の場合< 2)。 open_time ≥ now(将来の場合あり)またはopen_time < nowはプログラムバージョンが許可する場合のみ — v6 は許可、v5 は許可しません。
- 新しいストリームがインデックス
reward_info_countで初期化され、reward_info_count++。 - 報酬ボールトは呼び出し元の ATA からの完全なストリーム予算でクレジット。
RewardAlreadyExists。
SetRewards (v5/v6)
既存報酬ストリームを拡張またはトップアップします。ミントを変更することはできません。end_time を短縮することはできません。emission_per_second_x64 を実行中に削減することはできません。
引数
- ストリームがまだ実行中(
reward_state == 1)。 new_end_time ≥ current end_time。- 追加で必要な予算
(new_emission × new_duration − already_emissioned)が送信元の ATA に存在し、命令により報酬ボールトに転送。
SetRewards で、より小さい引数セット(ライブストリーム上での秒単位の変更なし)。
RestartRewards (v5/v6)
end_time が経過した後、ストリームを再開します。概念的には、既にスロットを持つミントの AddReward と同じです。
引数 — そのインデックスで AddReward と同一の形状。
前提条件
reward_state == 2(終了)。- 呼び出し元はスロットの
reward_sender(v6)またはファームowner(v5)。
WithdrawReward (v5/v6)
ストリーム終了後およびすべてのステーカーがハーベストするチャンスを持った後の、クレームされていない報酬ボールト残高のAdmin スイープ。
引数
- ストリーム終了(
reward_state == 2)。 reward_total_emissioned == reward_claimed + vault_balance(現在何も支払うべきものなし)。
reward_sender_ata に移動。プログラムはステーカーがまだ保留クレームを持っているときの引き出しを防ぎません。管理者は最初に遅延ステーカーの代わりにハーベストするか、彼らにハーベストさせることが想定されます。早期に掃除すると、ユーザーはクレームされていない報酬へのアクセスを失います。これを早期に呼び出さないでください。
v5 の変更点
Deposit/Withdrawは v6 と同じ形状ですが、最大 2 つの報酬スロットを使用し、reward_per_shareはu128(異なる基数の固定小数点)。CreateAssociatedLedgerは最初のDeposit前に必須の個別呼び出し。v6 はこれをマージ。AddRewardは利用可能、Harvestは不可(Deposit 0を使用)。
v3 の変更点
- 単一報酬ストリーム。
AddRewardなし、2 番目のスロットなし。 Deposit 0がクレームの唯一の方法。CreateUserLedgerは最初のDepositの前に呼び出される必要があります。
状態変更マトリックス
次のステップ
products/farm-staking/code-demos— TypeScript の例。products/farm-staking/accounts—FarmState/UserLedger/UserStakeレイアウト。reference/error-codes— ファームエラー列挙。
- Raydium SDK v2
Farmモジュール - Raydium ファームプログラムソース(v3 / v5 / v6)

