PoW vs. BFT
写在前面
比特币挖矿对应PoW(工作量证明)、拜占庭容错对应BFT。
PoW和BFT目的都是在去中心化且不可信的分布式环境中达成共识,但两者思路不同,所能达成的共识在效果上存在细微差别,而在性能(吞吐率和可扩展性)上面则呈现两极分化。
PoW
-
PoW可以认为是间接达成共识。它的做法是网络的参与者都在努力解决一个数学难题,该题目很难得到答案(且只能那个用类似穷举的方法来求解),但很容易验证答案是否正确。
-
由于产生的区块可能分叉,比特币网络通常需要等待6个区块才能以很高的概率确认某个交易被网络接受。
-
无须任何身份认证。
-
放宽了对一致性的要求,满足可用性和分区容忍性。(CAP理论)
BFT
-
BFT可认为是直接达成共识。网络的参与者直接通过投票的方式来决定共识的内容。
-
一旦达成一致,新的共识就会被加入到区块链上去。(即共识的不可改变性)
-
需要每个节点的身份以及数字证书(这就是最大的限制,于是才有了后来的FBFT中的SCP)
-
在分区容忍性上做出让步,满足一致性和可用性。(CAP理论)
对比总结
- 性能对比
响应时间 | 吞吐率 | 可扩展性 | |
---|---|---|---|
PoW | ✓ | ||
BFT | ✓ | ✓ |
- CAP理论
一致性 | 可用性 | 分区容忍性 | |
---|---|---|---|
PoW | ✓ | ✓ | |
BFT | ✓ | ✓ |