拜占庭将军问题(The Byzantine Generals Problem)是一个分散式对等网络通信容错问题,如今被广泛应用于区块链等领域。然而,为何取名叫拜占庭将军?为什么不是英国将军或中国将军?让深入研究拜占庭历史的资深学者为您分析。
拜占庭帝国指的是395年分家以后的东罗马帝国,首都位于新罗马,又称为君士坦丁堡。它的国祚长达1061年,一直到1453年才被奥斯曼帝国(Ottoman Empire)灭亡。为何现在多数人不以东罗马称呼这个帝国呢?因为西罗马在476年就灭亡,其疆域由蛮族王国继承发展。800年时,一统中西欧的查理大帝(或译查理曼)由教皇加冕为皇帝,虽然帝国一百年后就分裂,实际被许多大大小小的封建领主分治,但以中欧德奥为主的这个松散的政治联盟就被称为神圣罗马帝国。1557年,神圣罗马历史学家赫罗尼姆斯·沃尔夫为了区分神圣罗马与东罗马,就取东罗马首都的古称拜占庭,来代替东罗马。
395年狄奥多西大帝去世时,将罗马帝国分给两子。东帝国分长子阿卡狄奥斯,首都新罗马(又称君士坦丁堡、拜占庭);西帝国分次子霍诺留,首都罗马。[图片来源:Ancient History Encyclopedia] 拜占庭帝国这个名称则到18世纪开始普及,西方是英、法、普、奥、西等基督教民族国家,东方则是由异教徒奥斯曼帝国所占据。当时西方学者以孟德斯鸠为首正热衷于启蒙运动,认为东方保守落后,西方才是罗马帝国的传人。于是形成一种打压东方的意识,并附和沃尔夫的主张,将东罗马改称拜占庭,以便将东罗马与原本的罗马帝国切割。
1700年时的欧洲,红线为神圣罗马帝国范围。由图可见异教徒Ottoman与东罗马的疆域几乎重合,可能因此引来西方的贬意。[图片来源:维基百科] 拜占庭帝国从四世纪末以来,由于富庶地理位置重要,不断面临各种新兴势力入侵,大体上还能维持罗马帝国半壁江山的规模。不过636年被新兴的阿拉伯人在叙利亚击败以后,陆续丢失了中东、埃及、以及整个北非。因应防御上的压力,从641年的大胡子君士坦斯二世皇帝开始,逐渐在领土上建立一个个塞马州(Theme)。每个州就是一个军区,每个军区的军政、行政、司法都由将军管理。兵士平时耕种,自给自足,有点类似屯田制。若有需要,中央就会征召部分塞马州的军队与君士坦丁堡的禁卫军组成联军,与敌人战斗。这个制度有效地让拜占庭的局势稳定下来,一次次击退南方的阿拉伯人与北方的保加利亚人等入侵。
然而,这个制度也留下了隐患。由于罗马—拜占庭并没有明确的继承制度,皇帝的任何一个儿子或军头都有机会,因此塞马州的将军经常独立叛变或是在作战时叛变。例如741年皇子君士坦丁五世继位。在742年新皇帝穿越小亚细亚迎战阿拉伯人时,身兼亚美尼亚(Armeniacs)与奥普西金军区(Opsikion)将军的国舅阿尔塔瓦兹德叛变,袭击新皇帝。君士坦丁五世被迫逃到阿摩利阿姆。可以说,拜占庭帝国史几乎就是一本叛变史,据蔡老师推测,这应是Leslie Lamport在其1982年的论文将这个问题取名为拜占庭将军的原因。(相对拜占庭来说,西欧的封建层层相属较为稳定)
接下来蔡老师来说明拜占庭将军问题本身。假设有一次敌人来犯,帝国征召了10支驻扎在不同地点的塞马州军队去迎击敌人,至少要有6支军队同时袭击才能战胜。每位将军要如何保证至少有6支军队同时发起进攻?在古代,将军们必须透过信使来互通讯息。
那为何今世的区块链也会扯到古代的拜占庭将军问题呢?因为区块链想解决的也是一样概念的问题:
各节点(将军)送讯给所有节点(将军),各节点(将军)根据收到的所有消息决策,如何避免恶意节点(叛徒)影响共识的达成?
在过程中,若节点故意拒绝合作(恶意节点)或根本没有说任何事情(错误节点),就是叛徒。因此,在比特币的区块链网络设计中,中本聪藉由密码学与工作量证明机制(Proof of Work,PoW)等方法来制约这些叛徒。透过PoW,节点必须付出大量的工作量(算力)去证明自己的忠诚,之后才能打包交易,送讯给其他节点。最长链机制则是各节点都沿着已知的最长链进行。所以即使恶意节点试图破坏,也会付出很大的代价(付出超过整体系统一半的算力)。在各节点都想最大化自己利益的情况下,PoW的确有效抑制了叛徒作恶的动机,进而解决了拜占庭将军问题。
原创文章,作者:惊蛰财经,如若转载,请注明出处:http://www.xmlm.net/bi/31820.html