拜占庭将军问题
有11个国家,其中一国特别强大,其余十国需要将其消灭才能安全生存,但只有在至少6国联军的情况下,才能够将强国击垮。并且10个弱国之间也是劲敌,不可能大家坐在一起开会讨论。他们只愿意通过快马信使讨论这个问题。他们的方案是,比如弱国A写一封信,提议在五天之后的凌晨一点发起攻击,并且盖章署名,然后A国让信使快马送9份这样的信至其余9国,收到信的国家,如果同意这个作战方案,就在信的后面同样盖章署名,再将这封信作9份发至其余国家。如果最后这封信得到了超过5个弱国的盖章署名,则作战方案得到大家同意,该问题得到解决。但问题来了,这10弱国中,各个心怀鬼胎,假设其中的C国,同时收到来自A国和B国的两份内容不同的作战方案,并且都盖章署名进行同意。则最后可能同时存在两份超过6国同意的作战方案,这一问题就陷入了僵局。
可以看出,问题的核心在于,由于任何国家在任何时刻都可以提出作战方案争取认可,并且提出方案成本低廉,没有一份唯一的作战方案,容易引起混乱。
打破这一僵局的新的方案是,提高方案提出的成本,比如你必须找到一个随机数,以满足下面这个SHA-256运算的结果的前十位全为0:
HASH(随机数,作战方案)
假设目前只有A国找到了一个随机数,并且附在作战方案的后面,现在约定,剩下9国对该随机数和HSAH值,进行校验,验证这确实是一个正确的随机数,则认可这份作战提议的有效性,接着才进行同意或否决作战方案的决定。与此同时各国还约定,任何收到有效作战提议的国家,都立即停止手上的运算工作,转而认可当前的作战提议的有效性,并立即进行投票。这样一来就解决了拜占庭将军问题。