Open Whisker17 opened 3 years ago
我们之所以需要区块链,是因为对于中心化系统最大的担忧不是作恶代价的大小,而恰恰是作恶成本无法估计、无法量化。
作恶的回报并不限于系统内,还可以在系统外。即便是最透明的上市公司,我们也无法获知股东的所有收益来源,因此,也就无法量化他们能够通过作恶在系统外获得多少利益。
无论是 POS 还是 POW,当区块链中「大节点」过于集中的时候,我们将面临和中心化系统一样的问题——我们无法量化系统的安全性,于是,只好把安全性寄托于对于节点的信任,而不是可量化的作恶成本上。
「安全」是指这个系统能够可靠地按照我们的设想,做它该做的事
一个区块链的共识算法的第一标准,是能够可靠地实现它设计的功能。我们必须知道,当我们用算法来代替「信任」的部分,得出的共识一定是可靠的,而且,它的可靠程度是可以量化的。否则,整个区块链就毫无意义,因为它能做到的一切中心化系统也能做到,甚至做得更快更好,然而,我们并不能确定它比中心化系统更可靠。
想要证明算法的绝对安全,我们就只能在假设的实际性上作出牺牲——例如,我们需要假设 50% 以上的算力是诚实的,或者 2/3 以上的节点是诚实的,而无法顾及这种假设背后的现实性,比如,是否有足够的激励让这些节点诚实地去执行算法中的每一个步骤,或者,在应用的场景下,我们是否能做出这样的假设。这种做法的弊端在之前的 POW 算法容易被 51% 攻击的分析中已经很明显了——我们当然可以对于所有的资源都做出「大多数人都诚实的假设」,但是,如果这个假设在现实中并不成立,那么采用这个假设证明了安全性也毫无意义。
共识算法的安全性是与它的应用场景相分离的。对于一个共识算法是否安全,我们要么通过 BFT 证明「它可以达到拜占庭容错」,能够对于所有数据达成一致和活性,要么通过 Bitcoin Backbone Protocol 的模型证明我们可以得到一个增长的,一致的账本。也就是说,前者,我们将区块链视为一个拜占庭容错的分布式数据库,后者,我们将区块链视为某种类似比特币的分布式账本。然而,在此之上区块链的应用却已经远超分布式数据库和账本的范畴了。例如,对于分布式账本,一致性的重要性高于活性(所以可能很多人会认为空块不算是对于比特币安全性的破坏)。
比特币的 POW 算法并不保证交易的活性,而仅仅保证能够被上链的交易的活性,同时用交易费的模型鼓励矿工尽可能地将交易添加上链,即保证「交易费给得足够多」的交易的活性。然而,当将这种共识算法用于其他对于交易活性要求高的应用时就可能会出现严重的问题——例如 FOMO3D 实际上就是受到了针对于以太坊交易活性的攻击,而尽管比特币以及以太坊的模型不保证交易活性这件事对于业内人士都不是秘密,但是不可否认的是,既然以太坊或者其他的区块链具有这样的应用,在共识算法安全性分析的时候把这种情况排除在外,本身也说明了这个模型并不完备。
PoS 还是 PoW?归根结底是选择更安全的共识算法