# 权益证明

### 基于权益的权威证明 (Authority Proof Of Staked )

尽管工作量证明（PoW）已被证明为实现去中心化网络的实用方案，但它对环境并不友好，而且还需要大量参与者来维护网络安全。

以太坊及一些其他网络，如 MATIC Bor、TOMOChain、GoChain、xDAI在不同的场景中使用权威证明（PoA）或其变体，包括测试网络和主网。PoA 为 51%的攻击提供了防御，更有效的防止一部分拜占庭节点作恶。 选用PoA作为底层共识是理想的选项之一。

同时，PoA 协议因不如PoW去中心化而被批评，因为验证人，即轮流生成块的节点，拥有极大的权力，并且容易产生腐败和遭受安全攻击。 其他区块链, 如 EOS, 引入了不同类型的委托权益证明（DPoS），允许代币持有者投票选举验证人节点。 它让网络更加去中心化，有利于社区管理。

受以上启发，FSC 将 DPoS 和 PoA 结合以达成共识，采用的方案为：

1\. 区块是由有限数量的验证人生成的

2\. 验证人轮流以 PoA 方式生成区块，类似于以太坊的Clique共识引擎

3\. 验证人集合是基于权益质押的链上治理选出和淘汰

### 验证人节点法定人数

在网络启动的创世块阶段，一些受信任的节点将作为初始验证人集合运行。开始出块后，任何人都可以作为候选人参与竞选验证人，FON智能链再创世区块中对于验证器最大容忍度为99个验证人，当＞99名验证人后将无法加入成为新的验证人。 权益质押状态决定前 21 个权益质押最多的节点成为下一个验证人集合，这样的选举和淘汰每 3小时进行一次。

### FON 是FSC权益质押的通证。

为了保持与以太坊共识协议（包括即将到来的升级）的兼容性，FSC 选择独立的权益质押管理。 在 FSC权益质押的模块。 它将接受FON 持有者的FSC权益质押，并计算出权益质押最多节点集。 每次3小时 时，刷新出块人排名，通知 FSC 更新其验证人集合。

在生成新的区块前，现有的FSC验证人定期检查是否有“ValidatorSetUpdate”消息转发到FSC 。 如果有，它们将在一段高度后（即预定义的区块间隔）之后更新验证人集合。 例如，如果 FSC 每 5 秒生成一个区块且检查周期是 240 个区块，那么当前的验证人集合将在 1200 秒（20 分钟）内检查并更新下一周期的验证人集。

### 安全与最终性

考虑到有超过一半的 ½\*N+1 验证人是诚实可信的，基于 PoA 的网络通常可以安全、正常地工作。 然而在某些情况下，拜占庭验证人仍然可能设法攻击网络， 比如通过“克隆攻击”的方式。 为了保证具FSC安全性，我们鼓励FSC 用户等待到接收的区块被超过⅔\*N+1 不同的验证人所确认，可以容忍少于1/3 \*N 的拜占庭验证人。

对于 21 个验证人，如果区块时间为 5 秒，那么 ⅔\* N + 1 个不同的验证人确认将需要（2/3\*21 + 1）\*5 =75秒的时间。FSC 的任何重要应用程序可能都必须等待⅔\*N + 1，以确保相对安全的最终结果。

### 共识与验证者的人数

基于以上设计原则，FSC的共识协议是为了实现以下目标：

1\. 出块时间应该比以太坊时间短，例如 5 秒甚至更短。

2\. 只需要等待有限的时间就能最终确认交易，例如大约 1 分钟或更短。

3\. 没有通货膨胀，区块链的收益来自手续费，手续费以FON的形式支付。

4\. 尽可能与以太坊兼容。

5\. 配备了基于权益质押的链上治理机制。

### 收益

当前验证人集合中的所有 FSC 验证人都将从以FON 支付的手续费中获得收益。由于 FON 不是一个会通胀的通证，因此不会像比特币和以太坊网络那样产生挖矿收益，手续费是验证人的主要收益。 由于FON 也是其他应用的实用型通证，委托人和验证人仍将获得持有FON 的其他好处。

验证人的收益是从每个区块的交易中收取的手续费获得的。验证人获得总验证区块85%的收益，剩余的15%将进入官方财库用于奖励FON生态用户。 每个验证人将以相同的概率轮流生成区块（如果它们保持 100%在线），因此，从长远来看，所有稳定的验证人都可能获得类似规模的收益。

### 不稳定性

FSC 的可用性依赖于APoS共识中验证人集合中的每个验证人，当轮到其出块时，他们能够及时生成区块。 验证人可能由于一些原因而错过出块时机，特别是由于硬件、软件、配置或网络方面的问题。 这种不稳定运行将损害网络的性能，并给系统带来更多的不确定性。

FSC有一个内部的合约，负责记录每个验证人错过的区块。 一旦该指标超过预定义的阈值，验证人将在当前3小时不再参与出块，从而无法再获得分配的奖励，而是被其他更好的验证人共享。通过这种方式，运行不良的验证人会逐渐退出。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fonscan.io/zh_cn/develop/white-paper/technology-system/proof-of-stake.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
