メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.raydium.io/llms.txt

Use this file to discover all available pages before exploring further.

このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
ファーム命令はバージョンに固有です。v6 の Deposit は v5 ファームでは呼び出せません。逆も同じです。SDK はファームのプログラム所有者を読むことでディスパッチします。オンチェーン CPI の場合は、事前に正しいプログラム ID を選択する必要があります。

命令一覧

用途v3v5v6
ファームを作成CreateFarmCreateFarmCreateFarm
ユーザー台帳を追加(暗黙的な場合あり)CreateUserLedgerCreateAssociatedLedgerDeposit 内で暗黙
ステーキングDepositDepositDeposit
ステーキング解除WithdrawWithdrawWithdraw
報酬のみをクレームN/A (Deposit 0 を使用)N/A (Deposit 0 を使用)Harvest
作成後に報酬ストリームを追加N/AAddRewardAddReward
既存報酬ストリームを編集N/ASetRewardsSetRewards
end_time 後に報酬を再開N/ARestartRewardsRestartRewards
クレームされていない報酬予算を引き出し(管理者)N/AWithdrawRewardWithdrawReward
v3 と v5 では、ステークを変更せずに報酬をクレームする標準的な方法は、amount = 0Deposit を呼び出すことです。プログラムはこれを純粋なセットルメントとして扱います。v6 では明示的な Harvest が導入され、わかりやすくなりました。 SDK はこれらすべてを raydium.farm.deposit({ ... }) などの背後に抽象化しています。以下のセクションでは、手動で命令を構築する必要があるインテグレータ(アグリゲータ、監視ツール、SDK 拡張)向けの基礎となるアカウントリストを文書化しています。

CreateFarm (v6)

新しい v6 ファームをスピンアップします。 引数
reward_info_count: u8               // 作成時の報酬ストリーム数 (1..=5)
reward_infos: [
  {
    open_time:            u64,
    end_time:             u64,
    emission_per_second_x64: u128,   // Q64.64
    mint:                 Pubkey,    // 報酬ミント
    token_program:        Pubkey,    // SPL または Token-2022
  }
]
アカウント(簡略版、reward_info_count = 1 の場合)
#名前WS備考
1creatorWSレント支払、ファーム所有。
2farm_stateW新しい FarmState アカウント。
3farm_authorityPDA [farm_id]
4staking_mint
5staking_vaultWオーソリティの ATA または PDA ボールトとして作成。
6staking_token_program
7reward_mint
8reward_vaultW初期予算を受け取ります。
9reward_token_program
10reward_sender_ataWクリエイターの報酬ミント ATA。この命令で排出。
11system_program
12token_program
13associated_token_program
14rent
前提条件
  • open_time > nowend_time > open_time
  • creator ATA は少なくとも emission_per_second_x64 × (end_time − open_time) / 2^64 の報酬ミントを保有。
  • staking_mint はフリーズ権限がない、またはフリーズ権限が無効。
事後条件
  • FarmState が初期化され、total_staked = 0
  • 報酬ボールト(ボールト)は完全なストリーム予算で充当。
  • クリエイターの報酬 ATA がその金額分排出。

Deposit (v6)

ステーキングミントの amount をステーキングします。 引数
amount: u64
アカウント
#名前WS
1userWS
2user_ledgerW
3farm_stateW
4farm_authority
5staking_vaultW
6user_staking_ataW
7..(7+n)reward_vault_{i}W
user_reward_ata_{i}W
last−2system_program
last−1token_program
lastassociated_token_program
user_ledger が存在しない場合、SDK は CreateAccount スタイルの命令を前置します。v6 プログラムはシステムプログラムアカウントを指定されれば遅延作成も可能です。残りのアカウントパターン:各アクティブ報酬に対して (reward_vault, user_reward_ata) を追加して、セットルメントがペイアウトできるようにします。 効果
  1. 各アクティブ報酬ストリームの reward_per_share_x64[i] を遅延更新フォーミュラを使って更新。
  2. pending_i = user_ledger.deposited × reward_per_share_x64[i] / 2^64 − user_ledger.reward_debts[i] を計算。
  3. reward_vault_{i} から user_reward_ata_{i}pending_i を転送。
  4. user_staking_ata から staking_vault にステーキングミント amount を転送。
  5. user_ledger.deposited += amount を更新し、reward_debts[i] を再スナップショット。
  6. farm_state.total_staked += amount を更新。
前提条件
  • 真のステーキングについて amount > 0(v6 は amount = 0 を禁止 — クレーム限定は Harvest を使用)。
  • user_staking_ata は少なくとも amount を保有。
  • 各アクティブ報酬ボールトはこのユーザーに支払うべき保留分を少なくとも保有。

Withdraw (v6)

amount をアンステーキングします。 引数
amount: u64
アカウントDeposit と同一。 効果Deposit と同じセットルメント後、ステーキングミントをユーザーに戻す:staking_vault → user_staking_atatotal_stakeduser_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)

未使用スロットを持つ既存ファームに新しい報酬ストリームを追加します。 引数
reward_info: {
  open_time:            u64,
  end_time:             u64,
  emission_per_second_x64: u128,
  mint:                 Pubkey,
  token_program:        Pubkey,
}
前提条件
  • 空きスロットが存在(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_index:         u8
new_open_time:        u64,
new_end_time:         u64,
new_emission_per_second_x64: u128,
前提条件
  • ストリームがまだ実行中(reward_state == 1)。
  • new_end_time ≥ current end_time
  • 追加で必要な予算 (new_emission × new_duration − already_emissioned) が送信元の ATA に存在し、命令により報酬ボールトに転送。
v5 では、同等の呼び出しは SetRewards で、より小さい引数セット(ライブストリーム上での秒単位の変更なし)。

RestartRewards (v5/v6)

end_time が経過した後、ストリームを再開します。概念的には、既にスロットを持つミントの AddReward と同じです。 引数 — そのインデックスで AddReward と同一の形状。 前提条件
  • reward_state == 2(終了)。
  • 呼び出し元はスロットの reward_sender(v6)またはファーム owner(v5)。

WithdrawReward (v5/v6)

ストリーム終了後およびすべてのステーカーがハーベストするチャンスを持った後の、クレームされていない報酬ボールト残高のAdmin スイープ。 引数
reward_index: u8
前提条件
  • ストリーム終了(reward_state == 2)。
  • reward_total_emissioned == reward_claimed + vault_balance(現在何も支払うべきものなし)。
効果 — 残りを reward_sender_ata に移動。プログラムはステーカーがまだ保留クレームを持っているときの引き出しを防ぎません。管理者は最初に遅延ステーカーの代わりにハーベストするか、彼らにハーベストさせることが想定されます。早期に掃除すると、ユーザーはクレームされていない報酬へのアクセスを失います。これを早期に呼び出さないでください。

v5 の変更点

  • Deposit / Withdraw は v6 と同じ形状ですが、最大 2 つの報酬スロットを使用し、reward_per_shareu128(異なる基数の固定小数点)。
  • CreateAssociatedLedger は最初の Deposit 前に必須の個別呼び出し。v6 はこれをマージ。
  • AddReward は利用可能、Harvest は不可(Deposit 0 を使用)。

v3 の変更点

  • 単一報酬ストリーム。AddReward なし、2 番目のスロットなし。
  • Deposit 0 がクレームの唯一の方法。
  • CreateUserLedger は最初の Deposit の前に呼び出される必要があります。

状態変更マトリックス

命令total_stakeduser.depositedreward_per_share報酬ボールト
CreateFarm00クリエイターにより充当
Deposit(n)+n+n更新済み−保留(ペイアウト)
Withdraw(n)−n−n更新済み−保留
Harvest更新済み−保留
AddReward+新規予算
SetRewards+差分予算
RestartRewards+予算
WithdrawReward−残額

次のステップ

ソース: