探寻拜占庭将军问题(The Byzantine Generals Problem)的由来,这不仅仅是一个涉及分散式对等网络通信容错问题的领域,它如今在区块链等众多领域都有着广泛的应用。但为何要称之为“拜占庭将军”而非“英国将军”或“中国将军”呢?让我们跟随一位对拜占庭历史有着深刻研究的资深学者,一探究竟。
拜占庭历史上的第一位杰出将军,贝利撒留(500-565),他的名字或许能够为我们提供一些线索。接下来,我们将探索拜占庭帝国的发展历程。
拜占庭帝国,即395年罗马帝国分裂后的东罗马帝国,其首都是新罗马,也称为君士坦丁堡。这个帝国历时1061年,直到1453年才被奥斯曼帝国所灭亡。那么,为何我们今天不称其为东罗马帝国呢?原因在于西罗马帝国在476年就已灭亡,其疆域被蛮族王国继承。到了800年,查理曼大帝(或称查理曼)在教皇的加冕下,成为中西欧的皇帝,尽管这个帝国很快分裂,实际上被众多封建领主分割统治,但以德奥地区为主的政治联盟被称为神圣罗马帝国。1557年,为了区别神圣罗马与东罗马,历史学家赫罗尼姆斯·沃尔夫将东罗马首都的古称“拜占庭”用来代替“东罗马”。
当狄奥多西大帝于395年去世时,罗马帝国被分给了他的两个儿子,长子阿卡狄奥斯继承了东帝国,首都为新罗马(君士坦丁堡、拜占庭);次子霍诺留继承了西帝国,首都是罗马。这个名称“拜占庭帝国”直到18世纪才开始普及。在那时,西方的基督教民族国家,如英、法、普、奥、西等,与东方的异教徒奥斯曼帝国形成了鲜明的对比。启蒙运动的兴起,使得一些学者,以孟德斯鸠为代表,认为东方保守落后,而西方才是罗马帝国的真正传人。这种观点导致了东方的打压,并接受了沃尔夫的主张,将东罗马改称为拜占庭,以此将东罗马与原来的罗马帝国区别开来。
在1700年的欧洲地图上,神圣罗马帝国的范围以红线标出,可以看到异教徒奥斯曼帝国的疆域几乎与东罗马帝国重合,这或许正是引发西方贬意的根源。[图片来源于维基百科] 自从四世纪末以来,拜占庭帝国因其富饶的地理位置和重要性,不断遭受新兴势力的入侵,但大体上仍维持着罗马帝国一半的规模。然而,在636年被新兴的阿拉伯人在叙利亚击败后,拜占庭帝国陆续失去了中东、埃及以及整个北非。为了应对防御压力,从641年的大胡子君士坦斯二世皇帝开始,逐渐在领土上建立塞马州(Theme),每个州都是一个军区,军政、行政、司法都由将军管理。士兵平时耕种,自给自足,类似于屯田制。在需要时,中央会征召塞马州的军队与君士坦丁堡的禁卫军组成联军。这个制度有效地稳定了拜占庭的局势,多次击退阿拉伯人和保加利亚人的入侵。然而,这个制度也留下了隐患,由于罗马-拜占庭没有明确的继承制度,皇帝的任何儿子或军头都有可能成为叛变的对象。例如,741年,皇子君士坦丁五世继位,在742年迎战阿拉伯人时,身兼亚美尼亚与奥普西金军区将军的国舅阿尔塔瓦兹德叛变,袭击新皇帝。可以说,拜占庭帝国几乎就是一部叛变史。据蔡老师推测,这正是Leslie Lamport在其1982年的论文中将这个问题命名为“拜占庭将军问题”的原因。(与拜占庭相比,西欧的封建制度相对稳定)
接下来,蔡老师将为我们阐述拜占庭将军问题的本质。假设敌人来犯,帝国征召了10支驻扎在不同地点的塞马州军队迎击敌人,至少需要6支军队同时发动攻击才能取胜。每位将军如何确保至少有6支军队同时发起攻击呢?在古代,将军们必须通过信使来互相传递信息。
那么,为何现代的区块链技术也会涉及到古代的拜占庭将军问题呢?因为区块链所解决的核心问题与拜占庭将军问题如出一辙:
各个节点(将军)向所有节点(将军)发送信息,各个节点根据接收到的所有信息做出决策,如何避免恶意节点(叛徒)对共识达成的影响?在这个过程中,如果节点故意拒绝合作(恶意节点)或者根本没有发出任何信息(错误节点),它们就是叛徒。在比特币的区块链网络设计中,中本聪通过密码学和工作量证明机制(Proof of Work,PoW)等方法来限制这些叛徒。通过PoW,节点必须投入大量的工作(算力)来证明自己的忠诚,之后才能打包交易并发送给其他节点。最长链机制则是所有节点都沿着已知的最长链进行。因此,即使恶意节点试图破坏,也会付出巨大的代价(付出超过整个系统一半的算力)。在所有节点都追求最大化自身利益的情况下,PoW有效地抑制了叛徒作恶的动机,从而解决了拜占庭将军问题。
标签: 数字货币