我最近一直在研究共识协议,这个问题浮现在脑海:提供拜占庭容错(BFT)和提供拜占庭协议(BA)的共识协议的正式定义是什么?
我发现了BFT和BA之间差异的两个答案。 The first one说:
拜占庭协议和BFT有什么区别?
前者是一个分布式计算问题,通常被称为 作为共识。后者是协议的属性。
而latter说:
回答关于拜占庭协议与 拜占庭容错。大致上,这些标题是指相同的 协议问题。但是,更具体地说,BA用于指代 关于就某项决定达成共识的具体问题 拜占庭设置;而BFT是指设计任何通用协议 (不一定需要达成协议),例如拜占庭 将军协议,用于解决拜占庭式故障下的问题,即 恶意的错误。
因此,对我来说,BFT协议是具有容错拜占庭式错误特性的任何协议,而BA协议是通过交换消息以达到特定目的而容忍拜占庭式故障的协议协议,如Lamport在Byzantine Generals Problem中最初提出的那样。这意味着BA协议是BFT协议的子集。因此,例如,工作量证明将是BFT,而不是BA,但是PBFT,Casper FFG和Tendermint都是BFT和BA。
但是,“ BA协议”的这种定义对我来说仍然不确定,没有一个答案提供可以帮助澄清它的正式定义或参考。我想根据可能的定义对不同的共识协议进行分类。
先谢谢了。