验证者集合
要成为活跃验证者集合的一部分,验证者必须满足以下所有条件:- 自委托: 验证者的
authAddress必须至少自委托MIN_AUTH_ADDRESS_STAKE(100,000 MON) - 总质押: 验证者必须至少有
ACTIVE_VALIDATOR_STAKE(10,000,000 MON)的总委托 - 排名: 验证者必须按质押权重进入前
ACTIVE_VALSET_SIZE(200)名验证者之列
奖励和佣金
当一个区块被产生时,产生它的领导者从两个来源获得区块奖励:- 通胀奖励 — 每个区块固定的
REWARD为 18 MON,由协议铸造 - 优先费 — 区块中所有交易的优先费
佣金
每个验证者设置一个佣金率(0%–100%),决定他们在将剩余部分分配给委托人之前保留通胀区块奖励的多少比例。 剩余部分按质押权重 按比例 分配。作为委托人,您在区块奖励中的份额与您的质押相对于验证者总质押的比例成正比。 示例: 假设您已委托给一个验证者,占该验证者总质押的 20%。通胀区块奖励为 10 MON,佣金为 10%。您获得:10 MON × 90% × 20% = 1.8 MON
优先费
目前,优先费仅归验证者所有。验证者可以选择通过调用质押预编译合约上的externalReward 方法将优先费与委托人(包括自己)分享。外部奖励 不 扣除佣金。
领取和复投
每个委托随着时间累积奖励。委托人可以选择:- 领取 奖励 — 立即提取到委托人的账户
- 复投 奖励 — 添加到委托中,增加质押权重(遵循下面描述的标准 epoch 时间规则)
Epoch 和边界
Epoch 在整个持续时间内使用一组委托和领导者验证者。 每 50,000 个区块(BOUNDARY_BLOCK_PERIOD)是一个 边界区块,提交即将到来的质押变更和下一个 epoch 使用的验证者集合。边界区块大约每 4 小时 12 分钟发生一次。下一个 epoch 不会在边界区块立即开始,而是在延迟 5,000 轮 (EPOCH_DELAY_ROUNDS) 后开始,以便所有节点更新其 epoch 信息。

质押操作的时机
大多数质押操作在边界区块中提交并进入下一个 epoch 后才生效。例外情况是claimRewards() 和 externalReward(),它们立即生效。
例如,考虑在 epoch #4 期间的 delegate():
- 如果
delegate()发生在 epoch #5 的边界区块之前,质押将被包含在 epoch #5 中。 - 如果
delegate()交易在边界区块本身中,它将不会被包含在 epoch #5 中(快照是在区块开始时,在用户交易之前拍摄的)。该委托将在 epoch #6 的边界区块中被采纳。 - 如果
delegate()交易在边界区块之后但在 epoch #4 结束之前,该委托将在 epoch #6 中生效。
BOUNDARY_BLOCK_PERIOD 以 区块 计,而 EPOCH_DELAY_ROUNDS 以 轮次 计。如果达到完美共识,它们以相同的速度递增。然而,当块提案失败(例如超时)时,轮次递增而区块不递增。执行、快照和共识视图
质押系统维护质押状态经过的三种视图:- 执行视图 — 实时状态。当添加验证者、委托变更或发生任何质押交易时,执行视图会立即更新。
- 快照视图 — 在每个边界区块开始时,将当前执行视图复制到快照视图。此后任何交易变更都不会影响下一个 epoch。快照现在匹配下一个 epoch 的样子。
-
共识视图 — 从边界区块起经过
EPOCH_DELAY_ROUNDS(5,000 轮)后,新的 epoch 开始,快照视图被复制到共识视图。共识视图保存了共识系统在 epoch 剩余期间使用的验证者和投票质押权重。

