1月18日晚,Trias携手CSDN 推出了线上公开课。此次公开课的主题为“深入浅出全面理解共识算法”。
本次课程的主讲嘉宾为Trias高级算法工程师胡志琳博士。胡博士深入浅出,为学员讲解了共识算法。针对课程内容,学员纷纷提出问题,胡博士也作了解答。
今天的文章,我们将输出这些答疑内容,帮助大家更好的消化此次直播内容。
问题一:FLP是什么?英文怎么展开?
1985年,Fischer、Lynch和Patterson提出了FLP不可能原理,所以FLP这三个字母是三位作者姓名的首字母缩写。
该原理是指:在网络可靠,但允许节点失效(即便只有一个)的最小化异步模型系统中,不存在一个可以解决一致性问题的确定性共识算法。
问题二: BFT是确定性算法,POW是概率性算法?
BFT是区块链系统中常用的共识算法,它分为两类:一类是以PBFT(Practical Byzantine Fault Tolerance)为代表的确定性系列算法,另一类是以PoW(工作量证明)为代表的概率算法。
其中,对于确定性算法来说,一旦达成对某个结果的共识就不可逆转,即共识是最终结果;而对于概率性算法,共识结果则是临时的,随着时间推移或某种强化,共识结果被推翻的概率越来越小,成为事实上的最终结果。
问题三:Paxos就是Raft共识么?
Paxos和 Raft是两种不同的共识,但是它们都是为了解决非拜占庭将军问题。
我们可以根据要解决的问题是普通错误还是拜占庭将军问题,将共识算法分为CFT(Crash Fault Tolerance)和BFT(Byzantine Fault Tolerance)。
针对CFT,已有一些经典的解决算法,包括Paxos、Raft及其它变种等。
也就是说,在很多分布式系统场景下,并不需要解决拜占庭将军问题,也就是说,在这些发分布式系统的实用场景下,其假设条件不需要考虑拜占庭故障,而只是处理一般的死机故障。在这种情况下,采用Paxos会更加高效。
但是由于Paxos非常复杂,比较难以理解,因此后来出现了各种不同的实现和变种。Raft就是其中一种,为了避免Paxos的复杂性而专门设计成易于理解的分布式一致性算法。
问题四:请问pow的挖矿难度和哈希值前面几个零有关系,这个是什么意思?
挖矿难度,指的是寻找nonce以生成符合条件的hash的难易程度。前导零的个数就是这个条件。
也就说,哈希值前面的零越多,哈希值就越小,挖矿难度就越大。
拿比特币工作量证明的过程来说,就是通过不停地变换区块头(即尝试不同的随机值)作为输入进行SHA256哈希运算,找出一个特定格式哈希值的过程(即要求有一定数量的前导0)。而要求的前导0的个数越多,代表难度越大。