🎆共识引擎

尽管工作量证明(PoW)已被公认为实现去中心化网络的实用机制,但它对环境不友好,并且需要大量参与者来维护安全性。

以太坊和其他一些区块链网络,如MATIC BorTOMOChainGoChainxDAI,确实在不同的场景中使用权威证明(PoA)或其变体,包括测试网和主网。PoA 为 51% 攻击提供了一些防御,提高了效率和对某些级别的拜占庭玩家(恶意或被黑客攻击)的容忍度。它可以作为选择基础的简单选择。

同时,PoA 协议最受诟病的地方在于它不像 PoW 那样去中心化,因为验证者,即轮流出块的节点,拥有所有权限,容易受到腐败和安全攻击。其他区块链,例如 EOS 和 Lisk,都引入了不同类型的委托权益证明 (DPoS),以允许代币持有者投票并选举验证者集。它增加了权力下放并有利于社区治理。

FSC在此提出将DPoS和PoA结合起来进行共识,这样:

  1. 块由一组有限的验证器生成

  2. 验证者以 PoA 方式轮流出块,类似于以太坊的 Clique共识设计

  3. 验证者集是根据基于抵押的治理选入和选出的

FSC 的共识协议实现了以下目标:

  1. 阻塞时间短,主网上 3 秒。

  2. 确认交易的最终性需要有限的时间,主网大约需要 45 秒。

  3. 原生代币FON不存在通胀,区块奖励从交易手续费中收取,以FON支付。

  4. 它与以太坊系统 100% 兼容。

  5. 它允许现代权益证明区块链网络治理。

验证者法定人数

在创世阶段,一些可信节点将作为初始验证者集运行。封锁开始后,任何人都可以竞争加入成为候选人来选举验证人。质押状态决定前 21 个最受质押的节点成为下一个验证者集,这样的选举将每 3 小时重复一次。

FON 是用于为 FSC 抵押的代币。

为了保持与以太坊的兼容性并可升级到未来要开发的共识协议,FSC 这些规则全部写入了创世合约。FSC上有一个专门用于 Dapp 的质押模块。

帕利亚

共识引擎的实现被命名为Parlia,类似于clique。本文档将更多地关注差异而忽略共同的细节。

轻客户端安全

验证者集更改发生在 (epoch+N/2) 个区块。(N 是 epoch 块之前验证器集的大小)。考虑到轻客户端的安全性,我们延迟 N/2 块让 validatorSet 发生变化。

每一个epoch块,验证器都会从合约中查询验证器集,并将其填充到块头的extra_data字段中。全节点将根据合约中的验证器集对其进行验证。轻客户端将使用它作为下一个 epoch 块的 validatorSet,但是,它不能根据合约验证它,它必须相信 epoch 块的签名者。如果 epoch 块的签名者写入了错误的 extra_data,轻客户端可能会转到错误的链上。如果我们延迟 N/2 个块让 validatorSet 发生变化,错误的 epoch 块将不会得到其他 N/2 个由其他验证器签名的后续块,这样轻客户端就不会受到这种攻击。

系统交易

共识引擎可能会调用系统合约,这样的交易称为系统交易。系统交易由生产区块的验证者签名。对于见证节点,会根据其内在逻辑生成系统交易(不带签名),并与区块中的系统交易进行比对,然后再应用。

强制退避

在 Clique 共识协议中,乱序验证者必须等待一段随机的时间才能封块。它在客户端节点软件中实现,并假设验证器将运行规范版本。然而,考虑到验证者在经济上会受到激励以尽快密封区块,验证者可能会运行节点软件的修改版本来忽略这种延迟。为防止验证者仓促封块,每个轮到的验证者都会获得一个指定的时间段来封块。任何出块时间较早的出块验证者产生的块都将被其他见证节点丢弃。

通过临时审查

如果更新验证器的交易在 epoch 期间被发送到 FSC,那么验证器可能会审查交易并且不更改该 epoch 的验证器集。虽然如果没有其他 n/2 个验证者的帮助,一笔交易不可能永远被审查,但它可以延长当前验证者集的时间并获得一些奖励。一般来说,这个方案的概率可以通过与其他验证者串通来增加。这是一个相对良性的问题,一个块可能大约是 3 秒,一个纪元是 200 个块,即 20 分钟,因此验证器只能再延长 10 分钟。

安全性和最终性

假设有超过 ½ * N+1 个验证者是诚实的,基于 PoA 的网络通常可以安全和正确地工作。然而,在某些情况下,一定数量的拜占庭验证器仍可能设法攻击网络,例如通过克隆攻击。为了与 FC 一样安全,鼓励 FSC 用户等到收到由超过 ⅔*N+1 个不同验证者密封的块。这样,FSC 可以在与 FC 类似的安全级别上受到信任,并且可以容忍少于 ⅓ * N 的拜占庭验证器。有 50 个验证者,如果出块时间为 3 秒,则 ⅔ * N+1 个不同的验证者印章将需要 (⅔ * 21+1) *的时间段3 = 45 秒。FSC 的任何关键应用程序可能必须等待 ⅔ * N+1 以确保相对安全的最终性。然而,除了这样的安排,FSC 确实引入了 Slashing 逻辑来惩罚拜占庭验证者的双重签名或不可用。这种 Slashing 逻辑将在很短的时间内暴露恶意验证者,并使“克隆攻击”非常难以执行或执行起来极其无益。有了这个增强,½ * N+1 甚至更少的块就足以作为大多数交易的确认。

Last updated