> ## 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.

# 质押农场概览

> Raydium 质押农场程序如何向质押者分配奖励代币——按份额计账、农场版本代系（v3、v5、v6）以及农场与其相邻的 AMM / CLMM 池的关系和区别。

<Info>
  **本页内容由 AI 自动翻译，所有内容以英文版本为准。**

  [查看英文版 →](/products/farm-staking/overview)
</Info>

## 什么是农场

**农场**是一个独立的链上程序，它将一个或多个**奖励代币**分配给质押了**质押代币**的账户。质押代币通常是由 CPMM、AMM v4 或旧版交易对池发行的 LP 代币，但也支持单资产农场（直接质押 SOL、RAY 或项目代币），少量长期运行的程序使用这种模式。

关键特性：

* **基于发放，而非基于费用。** 与 CLMM 的内置奖励流不同，农场奖励不与交换量或池活动相关。农场的预算由创建者提前存入，以恒定的每秒速率发放，直到用尽为止。
* **独立于池。** 池不知道农场的存在。在钱包之间移动 LP 不会通知农场；用户必须先主动从农场中`提取`。同样，从池中`提取`不会从农场中提取。
* **按用户、按奖励的账本。** 每个质押者在每个农场上都有一个`用户质押`（或"账本"）账户，追踪他们质押的金额以及他们对农场每个奖励流的奖励-每份额计数器的快照。
* **多奖励。** 农场 v5 支持最多 2 个奖励；v6 支持最多 5 个。每个奖励都有自己的金库、每秒速率、开始时间和结束时间。

## 三个活跃版本

Raydium 已发布三个农场程序版本。所有版本都在运行中，每个版本都有自己的 PDA 方案和指令集。集成者应将它们视为三个共享概念模型的不同程序。

| 版本     | 程序 ID 位置                                                           | 最大奖励数 | 显著差异                                                  |
| ------ | ------------------------------------------------------------------ | ----- | ----------------------------------------------------- |
| **v3** | 见 [`reference/program-addresses`](/zh/reference/program-addresses) | 1     | 最早的架构。最古老的农场（RAY-USDC、SOL-USDC）仍通过此版本路由。              |
| **v5** | 见 [`reference/program-addresses`](/zh/reference/program-addresses) | 2     | 添加了第二个奖励槽和`AddReward`风格的充值。                           |
| **v6** | 见 [`reference/program-addresses`](/zh/reference/program-addresses) | 5     | 当前版本。扩展了槽位、简化了管理、支持通过 v6 特定适配器进行 CLMM 头寸农场化（实践中很少使用）。 |

SDK 将 `raydium.farm` 作为单一门面暴露——版本是从农场账户的所有者推断的。构建链上集成时，你必须手动分派。

## 奖励-每份额计账

农场程序使用在整个 DeFi 收益合约中常见的标准"主厨"模式：

```
reward_per_share := total_rewards_distributed_by_stream / total_staked
pending(user)    := user.staked × (reward_per_share − user.reward_debt)
```

* **`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`。

每秒发放速率通过懒惰更新进入计账：

```
elapsed        := min(now, reward.end_time) − reward.last_update_time
new_emissions  := reward.per_second × elapsed
if total_staked > 0:
    reward_per_share += new_emissions / total_staked
reward.last_update_time := now
```

懒惰：没有指令每秒发出。计数器在每次有人接触农场时刷新（`存入`、`提取`、`收获`、管理员更新）。没有活动的农场会积累越来越大的间隙，该间隙在下一次交互时关闭。

## 质押代币 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` 时的发放速率。

可以通过 v5 / v6 上的`AddReward` / `SetRewards`扩展奖励（向前推动`end_time`、充值金库）。可以通过`RestartRewards`在`end_time`之后重新启动。在没有管理员配合的情况下无法缩短。

## 农场不是什么

* **不是费用分配器。** CPMM 和 CLMM 直接将交易费收集到池状态中。农场不会接触池费用。从池费用到代币持有者的唯一路径是 LP 赎回或 CLMM 的`CollectFee`。
* **不是自动的。** LP 必须显式质押才能获得农场奖励。将代币留在钱包中的 LP 持有者从农场中获不到任何东西。
* **不可互换。** 每个`用户质押`账户都绑定到一个`(农场，用户)`对。在不先取消质押的情况下，你无法将你的质押转移到另一个钱包。
* **与 CLMM 头寸不直接兼容。** 农场 v6 引入了一个 CLMM 适配器，但在实践中 CLMM 池使用他们自己的内置奖励流（见[`products/clmm/fees`](/zh/products/clmm/fees)）而不是农场发放。

## 何时农场是正确的工具

当你想要以下情况时，使用农场：

* 用外部代币（你的项目代币、合作伙伴的代币等）为你的项目的 CPMM 或 AMM v4 池之一的 LP 提供激励。
* 在单资产代币上运行质押程序（经典的"质押 RAY，赚取 RAY"）而无需部署自己的合约。
* 在现有池之上分层额外奖励，无需访问该池的管理员。

当你的池是 CLMM 时，改用 CLMM 的内置奖励流。它们具有相同的经济学，但参与头寸的费用-增长-内部计账（在范围内的头寸按比例赚取，超出范围的头寸不赚取），不需要用户移动他们的头寸 NFT。

## 章节内容

* [`accounts`](/zh/products/farm-staking/accounts) — 每个版本的完整链上状态布局。
* [`instructions`](/zh/products/farm-staking/instructions) — 每条农场指令及其账户列表和前/后置条件。
* [`code-demos`](/zh/products/farm-staking/code-demos) — 用于质押、收获和创建新农场的 TypeScript 示例。

## 下一步去哪里

* [`products/clmm/fees`](/zh/products/clmm/fees) — 比较农场发放和 CLMM 的内置奖励模型。
* [`reference/program-addresses`](/zh/reference/program-addresses) — 三个农场程序 ID。
* [`protocol-overview/versions-and-migration`](/zh/protocol-overview/versions-and-migration) — 何时使用每个农场版本。

来源：

* 农场 v6 IDL 捆绑在 SDK 中：[`raydium-io/raydium-sdk-V2`](https://github.com/raydium-io/raydium-sdk-V2) 在 `src/raydium/farm/` 下。
* [Raydium SDK v2 `Farm` 模块](https://github.com/raydium-io/raydium-sdk-V2)
