gaobenpeng.eth

Posted on Dec 28, 2021Read on Mirror.xyz

小白如何快速了解區塊鏈基本技術

這份文件包含了許多入門級別的區塊鏈KeyTerms,對每個KeyTerm都有簡單的簡介,能讓小白快速了解基本概念,小編打算未來翻譯成中文版。如果對於其中感興趣想要深入了解或不明白的,可以先Google。

KeyTerm中的其中一個例子,如拜占庭問題,就是區塊鏈重點之一:

拜占庭問題(Byzantine Generals’ Problem)是如何存在少數節點作惡下的情況,如何達成共識。

拜占庭容錯(Byzantine Fault Tolerant)討論的是容忍拜占庭錯誤的共識算法。

Byzantine Generals’ Problem

The Byzantine General Problem is also known as a “Coordinated Attack Problem”, and it refers to the problems involved in coordinating the actions of multiple parties communicating over an unreliable link. In Bitcoin, this involves the fact that a malicious participant could attempt to add a fraudulent block of

transactions to the blockchain. This problem is solved by the use of “Proof of Work” and the Blockchain keeping track of every single block of transactions previously added to the blockchain.

拜占庭守衛邊境的多個將軍(可以考慮成Bitcoin中的多個節點), 需要通過信使來傳遞消息,達成共識。

但將軍中可能存在叛徒(系統中節點出錯),叛徒將向不同的將軍發送不同的消息,以阻礙共識的達成。與我們分佈式系統中多個節點,達成共識的問題一樣,都有作惡的可能性。

圖靈獎得獎者Leslie Lamport、Robert Shostak、和Marshall Pease等人,在《Reaching agreement in the presence of faults》論文中提出,假設節點為N,故障節點為F,當N >= 3F + 1 問題才有解,如果超過1/3(拜占庭容錯) 故障則問題無解。

考慮Base Case: N = 3, F = 1 的情況下,

若節點提案是善意的,收到故障的節點可以說收到相反的提案,第三個節點則收到兩個相反的信息,造成第三人最終無法判斷的局面

若節點提案是惡意的,第二個沒有故障的節點對惡意的提案做出反對,第三個節點還是收到兩個相反的信息,造成第三人最終無法判斷的局面。

區塊鏈技術是如何解決這個問題的呢?

方法一

拜占庭將軍版:限制一段時間內提案的數目,這段時間內有權限的將軍可以發出消息。

比特幣挖礦版:限制一段時間出塊數目(十分鐘),只有挖礦挖到了正確隨機散列數的答案才能得到權限。

方法二

拜占庭將軍版:將軍A簽名並記錄時間,用將軍B的公共鑰匙來加密,消息傳到將軍B用私用鑰匙來解密獲得信息,將軍B再簽名並再傳給其他將軍。其他將軍就可以用這個簽名和將軍B的公共鑰匙來驗證這段消息是否屬於將軍B了。

比特幣挖礦版:

  1. 交易發起人把交易資料,時間戳(Timestamp)和用私鑰對資料進行簽名後的檔案廣播全網
  2. 交易放在UTXO池子當中,檢查發起人是否有未花費交易輸出,礦工由私鑰推算出公鑰是否正確,如果正確則交易則無誤。
  3. 礦工交易驗證完後,礦工會根據利益最大化的原理,優先處理手續費較高的交易,再進行打包處理。
  4. 最後礦工會將打包好的交易記錄,掛在比特幣的區塊鏈上,等待其他礦工驗證。

Recommended Reading