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 自動翻譯,所有內容以英文版本為準。查看英文版 →
什麼是農場
農場是一個獨立的鏈上程式,向質押質押代幣的賬戶分配一個或多個獎勵代幣。質押代幣幾乎總是由 CPMM、AMM v4 或舊版配對池發行的 LP 代幣,但也支持單資產農場(直接質押 SOL、RAY 或項目代幣),少數長期運行的計劃會使用這類農場。 主要特性:- 基於發放,而非基於費用。 與 CLMM 的內置獎勵流不同,農場獎勵與交換量或池活動無關。農場的預算由創建者提前存入,並以恆定的每秒速率發放,直到耗盡。
- 獨立於流動性池。 流動性池不知道農場存在。在錢包之間轉移 LP 不會通知農場;用戶必須先主動從農場提取。同樣,從池中提取不會從農場中提取。
- 按用戶、按獎勵帳本。 每個質押者在每個農場上都有一個
UserStake(或「帳本」)賬戶,追蹤其質押金額以及農場每個獎勵流的獎勵-份額計數器快照。 - 多獎勵。 農場 v5 最多支持 2 個獎勵;v6 最多支持 5 個。每個獎勵都有自己的金庫、每秒速率、開始時間和結束時間。
三個現行版本
Raydium 已推出三個農場程式版本。全部處於活躍狀態,每個都有自己的 PDA 方案和指令集。集成商應將它們視為三個不同的程式,共享一個概念模型。| 版本 | 程式 ID 位置 | 最多獎勵 | 主要差異 |
|---|---|---|---|
| v3 | 參見 reference/program-addresses | 1 | 最早的架構。最舊的農場(RAY-USDC、SOL-USDC)仍通過此版本運行。 |
| v5 | 參見 reference/program-addresses | 2 | 添加了第二個獎勵槽位和 AddReward 風格的頂部補充。 |
| v6 | 參見 reference/program-addresses | 5 | 現行版本。槽位擴展、更清潔的管理、支持通過 v6 特定適配器進行 CLMM 頭寸農場化(實踐中罕見)。 |
raydium.farm 公開為單一外觀 — 版本從農場賬戶的所有者推斷。在構建鏈上集成時,你必須手動分派。
獎勵-份額記帳
農場計劃使用在 DeFi 收益合約中常見的標準「主廚」模式:reward_per_share在農場賬戶上存儲為定點計數器(v5+ 中為 Q64.64,v3 中為 Q56.8)。它只會增加。user.reward_debt是用戶上次交互時reward_per_share的快照。這不是用戶欠下的債務;這是用於計算未來應計的偏移量。- 在
Deposit和Withdraw上,農場首先結算待處理獎勵(記入user.pending_reward或直接發送到用戶的 ATA,取決於版本),然後將user.reward_debt更新為當前計數器。 - 在
Harvest上,農場支出pending_reward並再次快照reward_debt。
Deposit、Withdraw、Harvest、管理更新)。沒有活動的農場會累積一個不斷增長的間隙,該間隙在下一次交互時關閉。
質押代幣 vs 獎勵代幣
質押代幣由託管保管,不是燃燒。 當用戶質押 100 LP 時,農場將 100 LP 從用戶的 ATA 移動到農場的質押金庫。在Withdraw 時,農場將 100 LP 移回。農場從不調用池。
獎勵代幣從由創建者預先注資的金庫中支出。 當創建者建立農場時,他們將完整的獎勵預算(例如 1,000,000 RAY + 500,000 USDC)存入兩個獎勵金庫。農場計劃不鑄造新代幣;它只是在流的期間內分配金庫中的內容。如果金庫在 end_time 前耗盡,發放停止。
發放時間表
每個獎勵流有三個時間參數:start_time— 發放開始的 UNIX 時間戳。在此之前,沒有應計。end_time— 發放停止的時間戳。在此之後,reward_per_share不再從此流增加。per_second— 在start_time ≤ now < end_time時的發放速率。
AddReward/SetRewards 擴展獎勵(將 end_time 向前推進,頂部補充金庫)。可以通過 RestartRewards 在 end_time 後重新啟動。在沒有管理員協助的情況下不能縮短。
農場不是什麼
- 不是費用分配器。 CPMM 和 CLMM 將交易費直接收集到池狀態中。農場不觸及池費。從池費到代幣持有者的唯一路徑是 LP 贖回或 CLMM 的
CollectFee。 - 不是自動的。 LP 必須明確質押以賺取農場獎勵。將代幣留在錢包中的 LP 持有者從農場中獲不到任何收益。
- 不可互換。 每個
UserStake賬戶與一個(farm, user)對綁定。你不能在不解除質押的情況下將你的質押轉移到另一個錢包。 - 不直接與 CLMM 頭寸兼容。 農場 v6 引入了 CLMM 適配器,但在實踐中 CLMM 池使用它們自己的內置獎勵流(參見
products/clmm/fees),而不是農場發放。
何時使用農場
當你想要以下情況時使用農場:- 用外部代幣(你的項目代幣、合作夥伴的代幣等)激勵你項目 CPMM 或 AMM v4 池之一的 LP。
- 在單資產代幣上運行質押計劃(經典的「質押 RAY,賺取 RAY」),而無需部署自己的合約。
- 在現有池之上分層額外獎勵,無需對該池的管理員訪問權限。
章節內容
accounts— 每個版本的完整鏈上狀態佈局。instructions— 每個農場指令及其賬戶列表和前置/後置條件。code-demos— 用於質押、收割和創建新農場的 TypeScript 示例。
接下來去哪裡
products/clmm/fees— 比較農場發放與 CLMM 的內置獎勵模型。reference/program-addresses— 三個農場計劃 ID。protocol-overview/versions-and-migration— 何時使用每個農場版本。
- Farm v6 IDL 捆綁在 SDK 中:
raydium-io/raydium-sdk-V2,在src/raydium/farm/下。 - Raydium SDK v2
Farm模組


