# 共识系列（3）- 目前的公链常见共识

By [github](https://paragraph.com/@github) · 2022-02-21

---

介绍
--

*   可扩展：PBFT、DAG
    
*   无限扩展：链下、分片
    

**BTC共识：共识-传输-验证-共识**

**PBFT（实用拜占庭容错）：共识-验证-传输 同时进行**

> 把共识和交易（区块内容）脱钩。交易的输出不再受限于POW，而只受限于BFT的输出。而无论是在做BFT还是做完BFT把交易广播到全网的时间里，都不影响POW继续进行下一轮共识。

可扩展
---

目前常见的共识算法多数是PBFT共识算法，先选取委员会再进行BFT和先选取区块发布者的这种思路。

*   GHOST：允许节点接受深度为1的孤块，深度为2，深度为3——>DAG（定序、重复交易问题）
    

> 可扩展的两种思路——领袖选择和DAG，以及可扩展BFT的思路同时详细分析了HotStuff BFT的三阶段共识。殊途同归地达到了O(N)的消息复杂度。

**Hotstuff BFT**

*   Hotstuff BFT采用一种非常精妙的方法，用门限签名和链式结构，把节点轮换，区块链出块，以及拜占庭共识本身给揉在了一起，使得无论是出块，拜占庭共识，还是区块轮换都有了一个非常简洁，并且完全一致的形式。Hotstuff本身非常接近中本聪共识的结构，十分简洁地统一了区块链和BFT，同时达到了近乎最优的性能。
    

**Algorand**中不是一个BFT算法，而只是拜占庭共识（BA）的一种优化版。在Algorand之中，采用的是VRF+同步假设的出块节点轮换机制。相比于Hotstuff，不仅在表现上不如，而且实现上也远没有那么简洁优雅。

**Avalanche**来自于和Hotstuff相同的作者，采用了“随机抽样BFT”和DAG代替链式结构来降低在大网络中的通信复杂度。

链下技术
----

链下方案实际上只是用更复杂的方案实现了一个依赖于可信第三方的认证或者仲裁系统而已。

Rollup的OR、ZR，仍旧是一个基于抵押的链下方案。Rollup又是这么一个已经被公众接受，技术上可行，而且不那么“中心化”的中心化方案。

*   OR：所有rollup交易有个锁定期，例如两周，其他节点可以去侧链验证，如果发现rollup的节点作恶了，可以回滚交易。这种方法的好处是对于任何交易类型都通用，缺点是想要验证的节点必须下载整条侧链。
    
*   ZR：rollup在上传到主链上时，除了状态改变，还要加一个关于这个状态改变是真实的“零知识证明”，然后主链上的所有节点需要验证这个证明。好处在于节点不需要去下载整条侧链来验证侧链上的交易。
    

> 两者都是在尽量不改变区块链原有结构和规则的基础上，把区块中最“大”，最占用输出的部分给挪到链外，同时，保证链本身的自洽性。

分片
--

分片就是如何让每个节点不需要接收每一笔交易，都要做出安全性或者去中心化上牺牲。

1.根据网络分片；

2.随机分片；

3.新的分片：在实际中经常被使用的“经济学”保证。

**NEAR**：让分片固定，而随机选取每个分片的验证者，并定期进行轮换。而一个更好的思路是——这些验证者不仅是随机的，还是隐藏的，即可以采用可验证随机数（VRF）的机制，让攻击者没法知道一个分片的当前验证者是谁，直到他们完成验证并且对结果签名之后。这样，既保证分片对交易分割的有效性，又能够保证每个分片的安全性。

> 以太坊2.，Polkadots，顺理成章地采用Hotstuff中的三阶段共识来解释和证明——这点得益于Hotstuff本身非常接近中本聪共识的结构。

**参考**
======

[突破区块链不可能三角](https://learnblockchain.cn/article/370)

---

*Originally published on [github](https://paragraph.com/@github/3)*
