> ## Documentation Index
> Fetch the complete documentation index at: https://docs.monad.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 质押

> Monad 质押系统的工作原理

Monad 使用质押来确定 [MonadBFT](/zh/monad-arch/consensus/monad-bft) 中的验证者投票权重和每个 epoch 的领导者调度。验证者必须至少质押最低金额,其他人可以委托给他们。

有关与质押预编译合约交互的面向开发者的指南,请参阅文档[概述](/zh/reference/staking/overview)和 [API](/zh/reference/staking/api)。

## 验证者集合

要成为活跃验证者集合的一部分,验证者必须满足以下所有条件:

* **自委托:** 验证者的 `authAddress` 必须至少自委托 `MIN_AUTH_ADDRESS_STAKE`(100,000 MON)
* **总质押:** 验证者必须至少有 `ACTIVE_VALIDATOR_STAKE`(10,000,000 MON)的总委托
* **排名:** 验证者必须按质押权重进入前 `ACTIVE_VALSET_SIZE`(200)名验证者之列

低于这些阈值的验证者将在下一个 epoch 边界时从活跃集合中被移除。

## 奖励和佣金

当一个区块被产生时,产生它的领导者从两个来源获得区块奖励:

1. **通胀奖励** — 每个区块固定的 `REWARD` 为 18 MON,由协议铸造
2. **优先费** — 区块中所有交易的优先费

### 佣金

每个验证者设置一个佣金率(0%–100%),决定他们在将剩余部分分配给委托人之前保留通胀区块奖励的多少比例。

剩余部分按质押权重 **按比例** 分配。作为委托人,您在区块奖励中的份额与您的质押相对于验证者总质押的比例成正比。

**示例:** 假设您已委托给一个验证者,占该验证者总质押的 20%。通胀区块奖励为 10 MON,佣金为 10%。您获得:

> 10 MON × 90% × 20% = **1.8 MON**

### 优先费

目前,优先费仅归验证者所有。验证者可以选择通过调用质押预编译合约上的 [`externalReward`](/zh/reference/staking/api#externalreward) 方法将优先费与委托人(包括自己)分享。外部奖励 **不** 扣除佣金。

### 领取和复投

每个委托随着时间累积奖励。委托人可以选择:

* **领取** 奖励 — 立即提取到委托人的账户
* **复投** 奖励 — 添加到委托中,增加质押权重(遵循下面描述的标准 epoch 时间规则)

## Epoch 和边界

**Epoch** 在整个持续时间内使用一组委托和领导者验证者。

每 50,000 个区块(`BOUNDARY_BLOCK_PERIOD`)是一个 **边界区块**,提交即将到来的质押变更和下一个 epoch 使用的验证者集合。边界区块大约每 4 小时 12 分钟发生一次。下一个 epoch 不会在边界区块立即开始,而是在延迟 5,000 轮 (`EPOCH_DELAY_ROUNDS`) 后开始,以便所有节点更新其 epoch 信息。

<img src="https://mintcdn.com/monadfoundation-40611fb6/c3ZcPFY7YVeS_v57/static/img/developer-essentials/staking/staking-timeline.png?fit=max&auto=format&n=c3ZcPFY7YVeS_v57&q=85&s=0ee7ed2436b3407c56687f1764dccf9a" alt="timeline showing the placement of boundary blocks within an epoch" width="2983" height="647" data-path="static/img/developer-essentials/staking/staking-timeline.png" />

### 质押操作的时机

大多数质押操作在边界区块中提交并进入下一个 epoch 后才生效。例外情况是 `claimRewards()` 和 `externalReward()`,它们立即生效。

例如,考虑在 epoch #4 期间的 `delegate()`:

* 如果 `delegate()` 发生在 epoch #5 的边界区块之前,质押将被包含在 epoch #5 中。
* 如果 `delegate()` 交易在边界区块本身中,它将不会被包含在 epoch #5 中(快照是在区块开始时,在用户交易之前拍摄的)。该委托将在 epoch #6 的边界区块中被采纳。
* 如果 `delegate()` 交易在边界区块之后但在 epoch #4 结束之前,该委托将在 epoch #6 中生效。

<Note>
  `BOUNDARY_BLOCK_PERIOD` 以 **区块** 计,而 `EPOCH_DELAY_ROUNDS` 以 **轮次** 计。如果达到完美共识,它们以相同的速度递增。然而,当块提案失败(例如超时)时,轮次递增而区块不递增。
</Note>

## 执行、快照和共识视图

质押系统维护质押状态经过的三种视图:

1. **执行视图** — 实时状态。当添加验证者、委托变更或发生任何质押交易时,执行视图会立即更新。

2. **快照视图** — 在每个边界区块开始时,将当前执行视图复制到快照视图。此后任何交易变更都不会影响下一个 epoch。快照现在匹配下一个 epoch 的样子。

3. **共识视图** — 从边界区块起经过 `EPOCH_DELAY_ROUNDS`(5,000 轮)后,新的 epoch 开始,快照视图被复制到共识视图。共识视图保存了共识系统在 epoch 剩余期间使用的验证者和投票质押权重。

## 罚没

健全的日志记录为恶意的、可罚没的行为提供了问责机制。然而,目前尚未实现协议内自动罚没。

## 常量

| 常量                       | 含义                        | 值              |
| ------------------------ | ------------------------- | -------------- |
| `BOUNDARY_BLOCK_PERIOD`  | 从边界区块到边界区块的区块数            | 50,000 区块      |
| `EPOCH_DELAY_ROUNDS`     | 边界区块与每个 epoch 开始之间的轮次数    | 5,000 轮        |
| `WITHDRAWAL_DELAY`       | 未质押代币可以提取之前的 epoch 数      | 1 epoch        |
| `MIN_AUTH_ADDRESS_STAKE` | 验证者自委托以有资格进入活跃集合的最低 MON 数 | 100,000 MON    |
| `ACTIVE_VALIDATOR_STAKE` | 验证者进入活跃集合的最低总质押 MON       | 10,000,000 MON |
| `ACTIVE_VALSET_SIZE`     | 活跃集合中的验证者数量               | 200            |
| `REWARD`                 | 每个区块的 MON 奖励              | 18 MON         |
