区块链: 技术驱动金融 - 第2章 比特币如何做到去中心化 (2)

    上述方法和比特币有些相似之处,但有几个技术问题:第一,达成共识一般是一个难题,因为有些节点会死机、离线或根本就是恶意节点;第二,上述方法要求所有节点之间两两相连(即全连接网络),而比特币网络是点对点网络,是不完美的,要执行一个所有节点参与的共识协议好像并不现实;第三,由于交易信息分布在整个互联网上,信息传递会有严重的延迟。

延迟与全球时间

    比特币协议达成共识时必须直面两大障碍:

不完美网络,如信息延迟和节点死机。

恶意节点

    严重网络延迟导致的一个后果是,节点之间没有一个统一的全球时间概念。那么,共识协议的一些指令,如“在第一步里发了第一个消息的节点必须在第二步里执行X”,就无法执行,因为所有节点对于谁在第一步中发出第一个消息有不同的看法。

不可能性结论

    在全球时间上的不统一,给共识协议算法带来了很多限制。事实上,由于这些限制,许多关于分布式共识的文献都对是否能够达成共识持悲观态度,有许多达成共识具备不可能性的结论已经被证实,如“拜占庭将军问题”、“Fischer-Lynch-Paterson不可能结果”。尽管如此,还是有一些文献提出了一些分布式共识协议,其中比较著名的是Paxos算法。Paxos算法做了一些妥协,一方面,它能够做到不产生不一致的结果,另一方面,该算法所做的妥协是,在一定条件下(虽然不太可能出现),该协议会死机卡住,从而无法继续运行。

打破传统上的假设

    这些“不可能性结论”是针对分布式数据库的研究,都是在一些特定的模式下才成立的,并不能完全套用到比特币身上,毕竟比特币本身就已经打破了很多原来分布式数据库所做的假设。

    第一,比特币引进了奖励的理念,这对分布式共识协议来说是一个全新的理念。在这个情况下,人们自然地会为了奖励而变得诚实起来。所以,比特币并没有真正解决分布式共识问题,只是在特定货币系统下解决了这个问题。

    第二,比特币体系包含随机性这个概念。此外,它不再纠结于规定共识的起点和终点,相反,共识是通过一段较长的时间而达成的,在实际系统中,达成共识大约需要一个小时左右。但即使在一个小时以后,节点们也还是无法确定哪个区块应该进入总账本。但随着时间的流逝,我们对某一个区块的认识(即这个区块是否应该进入总账)与最终总体共识相吻合的概率将越来越大,观点出现分歧的概率按指数级下降

2.3 使用区块链达成没有身份的共识

    在传统的分布式共识中,要求节点实名制,或者节点的身份是明确的,这样可以使设计更容易。比如,有了真实身份,我们就可以用这样的指令“编号最小的节点开始做某些动作”。

    在比特币系统中,没有强迫用户使用真实身份来加入,这是比特币的重要特性,也是比特币系统的核心理念。缺少真实身份,给比特币的共识协议带来很多难点。我们可以做两个较弱的理论假设:

随意节点选择:假设我们可以在系统中随意选择一个节点,由这个节点来决定区块链的下一个区块。

节点不会受到女巫攻击。乱造节点就是所谓的女巫攻击(sybil attack)现象,即多个节点看似不同的身份,实际上是一个人在操纵。

隐性共识

    随意节点选择的假设可以让隐性共识(inplicit consensus)成为可能。

    我们的共识协议有多个回合,每一个回合对应区块链中的一个区块。在每个回合中,一个随机节点会被选中,由它来提议区块链的下一个区块。注意,在比特币网络中,每个节点会将交易广播给其他节点,因此随机选中的节点可以将这些交易打包进区块中

    这里没有共识算法,也没有任何投票过程来决定哪些交易会被选中,随机选择的节点会直接决定区块链的下一个区块,但万一这个节点是恶意的,在区块中打包一些非法的交易,或者是自私节点,只打包那些有利于自己的交易。针对这个问题,可以采用隐性共识的方法。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpyjx.html