在比特幣的區塊鏈中,由誰來記錄區塊資訊非常重要,因為這涉及到區塊的生成,和新比特幣的開採。因為負責記錄的人,會獲得豐厚的獎勵,所以在礦工之間,就必須達成一個共識。
共識問題自古以來就是困擾人類的難題之一。
在計算機學界,存在一個所謂的“中國將軍問題”,也被稱為兩軍問題,它是這麼描述的:兩支駐紮在不同地點的軍隊分別由一名將軍指揮,如果兩個將軍必須通過傳令兵傳遞訊息,才能達成共同進攻或撤退的決定。兩軍合力才可以戰勝敵人,否則只有失敗或撤退。問題出在傳令兵上,一方派往另一方的傳令兵可能永遠到達不了,一種可能是被敵軍捉住,另一種可能是被險惡的地形困住。因此,除非是巧合,這兩位將軍是不可能達成一致的。他們二人只能憑藉對另一人戰略戰術的了解做猜測,才能做出決定。
關於猜測,在劉慈欣的科幻小說《三體》中,大劉也分析了宇宙文明間存在的猜疑鏈。大劉通過主人公羅輯,闡述了宇宙的兩條公理:一、生存是文明的第一需要;二、文明不斷增長和擴張,但宇宙中的物質總量保持不變。然後又道出了宇宙的祕密:宇宙就是一座黑暗森林,每個文明都是潛行於林間的持槍獵人。林中到處是這樣的獵人,如果一個文明發現了另外一個文明,他只有一個選擇,將其消滅。
為什麼宇宙的祕密如此黑暗呢?咱們可以假想一個最基本的模型,假設地球探測到火星內部有一個高度發達的文明,在沒有交流之前,我們是無法判斷火星人是否具有善意。假如人類向這個文明發出了邀請函。收到邀請函的火星文明同樣也會犯難,他們也無法判斷地球人是否真的懷有善意。這樣在兩者之間就形成了猜疑鏈,無法形成信任。
猜疑鏈正是阻擋兩方達成合作共識的罪魁禍首。雙方彼此之間的猜測,是一個典型的博弈過程,雙方都想將自己的利益最大化,結果造成任何一方都會成為獵物。博弈論的創始人是大名鼎鼎的馮·諾依曼,他不僅是博弈論的創始人,也是現代計算機結構的發明人,同時也是一位卓越的數學家,還參與過曼哈頓工程,研究過原子彈。後人在馮諾依曼的理論基礎上開發出了多種模型,其中之一是廣為流傳的“囚徒困境”:兩名犯人接受隔離審問,犯人被告知,如果一人坦白,另一人不坦白,坦白的人就會無罪釋放,不坦白的人就判5年;兩人都坦白,各判3年;兩人都不坦白,各判1年。可以設身處地的從一名囚犯的角度進行考慮:他的判決結果完全取決於另一人是否坦白,如果另一人選擇坦白,他為了避免5年的最大懲罰,最好也選擇坦白;如果另一人不坦白,那麼為了能無罪釋放,最好也選擇坦白。兩名囚犯都這麼思考,結果兩人都輕易坦白了。這就是典型的在存在猜疑的情況下,個人的理性選擇,造成了集體的非理性。
圖靈獎得主萊斯利·蘭伯特受到了“兩軍問題”的啟發,又編了一個“拜占庭將軍問題”的故事:
拜占庭帝國是東羅馬帝國的別稱,因為首都君士坦丁堡位於希臘城邦拜占庭的舊址,所以又被成為拜占庭帝國。帝國後期內亂不斷,一群將軍領兵圍困了一座敵城。與兩軍問題類似,他們也必須靠傳令兵傳遞資訊,才能達成統一的行動:要麼一起進攻,要麼一起撤退。假設傳令兵一定能將資訊送達,但是將軍中可能存在一個或多個叛徒,叛徒會派傳令兵傳送假資訊,從而人為地製造猜疑。叛徒向其他將軍傳送的資訊是不一樣的,有進攻的提議,也有撤退的提議,這時不能達成一致的錯誤,叫做“拜占庭錯誤”。如果叛徒傳送了假資訊,傳令系統仍能達成一致性,則稱該系統具備“拜占庭容錯”。
拜占庭將軍問題在不同條件下,是否存在解決方法,可以破解猜疑和信任的難題呢?
總的說來,拜占庭將軍問題,可以分為口頭通訊和書面通訊。
如果採用口頭通訊,拜占庭將軍問題有解的條件是叛徒將軍的數量不能超過將軍總數的三分之一。因為達成共識的原則是少數服從多數,那麼最小模型的將軍總數是3。假設有3位將軍甲乙丙,三人中有一人是叛徒:當甲發出“進攻”命令時,乙如果是叛徒,他會告訴丙,他收到的是“撤退”的命令。這時丙收到一個“進攻”,一個“撤退“,於是丙無法判斷哪道命令是真的;如果甲是叛徒,他告訴乙“進攻”,告訴丙“撤退”。當丙告訴乙,他收到“撤退”命令時,乙由於從甲收到“進攻”的命令,因此乙是無法判斷該如何行動的。
在符合有解的條件下,每位將軍只要根據收到的口信,根據多數原則做決策就行了。
如果拜占庭帝國的國王給每個將軍發了一個不同的印章,將軍們可以利用印章確定通訊中的將軍身份,將軍可以對其它人的印章進行驗證。有了這些印章,每位將軍分別給其他將軍傳送書信,並在書信上附上自己蓋印;其他將軍收信後,附上自己的印章後再發給所有其他將軍;最終,每位將軍根據收到的書信進行決斷。這樣就能杜絕叛徒給每個人傳送不同資訊。但是對於這種書面資訊,實物的印章是靠不住的,偽造發生的可能性很高;國王的存在實際是一個高度可信的第三方,不符合去中心化的特徵。最好這可以用一個客觀的理論代替印章和國王,實現真正的分散式共識。這個理論具備數學公理般牢不可破的特性,比國王更讓人信任。
這個理論就是中本聰所採用的工作量證明(Proof of Work)。
在前面的課程中,我們知道了區塊鏈的本質是人手一冊的賬本,每隔一段時間,就會有人將這段時間之內發生的交易都記錄下來。比特幣的做法,是讓大家做一道猜數字搶紅包的題目,由猜中的人記錄資訊,其餘的人複製他記錄的資訊。
因此,比特幣的做法是將共識問題轉換成了計算能力的問題,誰的計算能力強,就能做出更多的猜測,從而蒙對正確答案的可能性越高。
在現在的區塊鏈系統中,共識機制除了工作量證明,流行的還有權益證明(Proof of Stake)和權益授權證明(Delegated Proof of Stake)
如果大家對本文有何共鳴點或者不同的見解歡迎多多評論或【私信】探討!我們每週精心調研團隊會免費給出《潛力幣研報》供大家參考學習,私信回覆【潛力幣】 即可免費領取~