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 不会通知农场;用户必须先主动从农场中
提取。同样,从池中提取不会从农场中提取。 - 按用户、按奖励的账本。 每个质押者在每个农场上都有一个
用户质押(或”账本”)账户,追踪他们质押的金额以及他们对农场每个奖励流的奖励-每份额计数器的快照。 - 多奖励。 农场 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快照。它不是用户欠的债务;它是用于计算未来应计的偏移量。- 在
存入和提取时,农场首先结算待定奖励(记入user.pending_reward或直接发送到用户的 ATA,取决于版本),然后将user.reward_debt更新为当前计数器。 - 在
收获时,农场支付pending_reward并再次快照reward_debt。
存入、提取、收获、管理员更新)。没有活动的农场会积累越来越大的间隙,该间隙在下一次交互时关闭。
质押代币 vs 奖励代币
质押代币被托管,而不是被销毁。 当用户质押 100 LP 时,农场将 100 LP 从用户的 ATA 移动到农场的质押金库。在提取时,农场将 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 持有者从农场中获不到任何东西。
- 不可互换。 每个
用户质押账户都绑定到一个(农场,用户)对。在不先取消质押的情况下,你无法将你的质押转移到另一个钱包。 - 与 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— 何时使用每个农场版本。
- 农场 v6 IDL 捆绑在 SDK 中:
raydium-io/raydium-sdk-V2在src/raydium/farm/下。 - Raydium SDK v2
Farm模块


