「拜占庭將軍問題」是一個用來描述電腦系統在一個或多個部件發生故障時,所面臨的挑戰的術語。這些故障可能導致系統內傳遞錯誤訊息,進而影響其效能。這個名字來自 1982 年的一篇研究論文,該論文將這個問題與歷史軍事場景進行了比較。
設想一下這個場景:拜占庭軍隊的幾個師計劃圍攻敵人的城市,每個師都有一個將軍,而他們之間只能透過信使進行溝通。將軍們必須就一個計劃達成一致,該計劃需滿足兩個要求:1)所有值得信賴的將軍都遵循相同的計劃;2)少數壞人不能讓好人遵循有害的計劃。
主要挑戰是將軍們如何安全地分享資訊並達成一致意見。如果他們不能達成一致,他們的進攻就可能會失敗。如果一個狡猾的將軍故意提供錯誤訊息,將其他人引入險境,這也是一個問題。
在像區塊鏈這樣的分散式電腦網路中,每個參與者(節點)就像是個將軍。為了使系統正常運作,大多數節點必須就相同的指令達成協議並遵循。如果某些節點發生故障或變得惡意,就會發生拜占庭錯誤。儘管存在這些錯誤,仍能正常運作的系統被稱為具有拜占庭容錯性(Byzantine Fault Tolerance,BFT)。
比特幣使用一種名為工作量證明(proof-of-work)的方法來解決這個問題。當每個「將軍」(節點)確定一個計劃時,他們讓電腦處理一個具有挑戰性的問題。預計他們中的一個會在 10 分鐘內找到解決方案。當找到解決方案時,該節點與其他人分享,並附上他們的計劃。然後其他人遵循這個新計劃。
透過檢查工作量證明鏈,每個節點都可以看到使用了多少計算能力,並且大多數計算機都同意該計劃。因此,他們可以信任並遵循具有最長工作量證明鏈的計劃,因為大多數人支持它。