拜占庭将军问题的前世与区块链今生
拜占庭将军问题(The Byzantine Generals Problem)是一个分散式对等网络通信容错问题,如今被广泛应用于区块链等领域。然而,为何取名叫拜占庭将军为什么不是英国将军或中国将军让深入研究拜占庭历史的资深学者为您分析。
拜占庭史上第一将军贝利撒留(500–565)
拜占庭帝国指的是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的确有效抑制了叛徒作恶的动机,进而解决了拜占庭将军问题。
声明:本站所提供的资讯信息不代表任何投资暗示, 本站所发布文章仅代表个人观点,仅供参考。