共识机制:拜占庭容错算法、工作量证明、权益证明 (简述拜占庭共识算法)

2023-03-04 19:30:02 views

节点之间数据传输问题解决后,数据存储问题接踵而至。在中心化存储系统中,中心机构负责数据存储的完整性和准确性,而在分布式存储系统中,各节点记录、储存数据可能会出现以下问题:1)信息在记录和存储时被恶意篡改;2)信息无效、损坏或丢失,比如,由于通信网络无法正常工作,导致部分节点没有收到信息;3)信息传送延迟,由于各节点的地理位置、网络状况不同,不同节点对某一条信息收到的时间不同。


这些情况的存在,导致各节点对信息的记录和存储无法达成一致。解决方案是各节点向其他所有节点传递将要储存的信息内容,各节点根据收到的消息采用少数服从多数的原则来确定数据存储的一致性,但这一过程仍可能存在恶意节点向其他节点传输错误节点以破坏一致性,这就是著名的“拜占庭将军问题”。


“拜占庭将军问题”是分布式系统达成一致性的重要难题,由Leslie Lamport等科学家于1982年提出。基本思想如下:拜占庭帝国各军队分别驻扎在相隔很远的营地,只能靠信使传递消息,由于至少一半以上的军队同时攻击才能能够攻下帝国,将军们需要就是否攻击敌军达成共识。军队中可能存在叛徒,叛徒可能擅自变更进攻意向或进攻时间,以破坏将军之间的共识。


例如,共有11名将军,其中有一名反叛者,如果5名将军选择“进攻”,另外5名选择“撤退”,反叛者在收到这些消息后,向选择进攻的将军发送“进攻”消息,向选择撤退的将军发送“撤退”消息。由于反叛者的存在使得将军无法形成共识,5名将军选择“进攻”,5名将军选择“撤退”,结果必然是失败。


对标到分布式存储系统中,各营地驻扎的军队即是各个节点,节点之间要对某一信息达成共识,需要向其他节点传送自己记录的信息,达到半数以上认可的信息即可作为统一的储存信息。但在此过程中,可能存在恶意破坏一致性的节点。例如,某个节点,向网络中一半节点发送“A”信息的同时,向另一半节点发送“B”信息,使得尽管只有一个恶意节点,系统也无法形成统一的数据库。因此,需要一种机制以保证即使存在恶意节点,其他节点依然能够达成一致结果。


因此,共识机制是区块链技术的核心问题。目前,主流区块链的共识机制主要有三种,分别为拜占庭容错机制、工作量证明、权益证明。