給六歲小孩講區塊鏈
歷史回顧
2008年10月31日,一位所謂名叫中本聰人發表了一份白皮書,構造了一種能夠直接將電子現金從傳送人支付給接收人的新方法,這種新方法不需要任何金融中介機構參與。這篇論文給這個概念起了個名字——比特幣。由於比特幣使用了一些密碼學的技術,這種新的貨幣交換方式被稱為加密貨幣。
比特幣的唯一目標是用於交易支付,但研究人員意識到,它的底層技術可以被用來構建其他安全可靠的應用,從而徹底改變當前系統的工作方式。“區塊鏈”就是這個底層技術的名字。這麼多專業詞彙?讓我們簡化一下!
什麼是區塊鏈?——以停車為例
假設你住的城市有一個很大的中央停車場,一次可以停放200輛車(假設這個停車場只有一層)。停車場有一個大門,大門是鎖著的,只有當汽車進出時才會開啟。現在讓我們從不同的角度來分析這個停車場:
-
價格: 這個停車場是由某個公司修建,而且所有的維護費用都由這個公司承擔,所以停車費會很高。
-
安全: 如果小偷進入停車場,他們會很容易接近所有汽車(拿走輪胎,偷走燃料,損壞剎車,幹任何壞事!)
-
限制: 如果你所在城市的汽車從200輛增加到300輛呢?停車場無法容納所有汽車,其他公司將不得不修建一個新的停車場。
-
信任: 車主相信停車場,運營停車場的公司負責保障車輛的安全。
-
中心化:由於所有汽車都停在一箇中央停車場內,我們可以認為這是一種中心化的停車方式。
現在,讓我們改變一下當前的場景。假設在你的城市裡有200座房子,每座房子都有兩個車庫。簡單起見,我們假設每個房主有且只有一輛車。據此,每座房子的兩個車庫中都有一個空車庫。
現在,假設這個城市的人們決定把額外的車庫出租給任何需要停車的人。這種提供停車位的模式可以解決200輛或者200多輛車的停車問題(人們會不斷進城出城),而不需要為整個城市建立任何大的中央停車場。讓我們分析這個新的場景——
-
價格: 人們的第二個車庫並不是專門為了出租而建,維護成本很低。跟中心化的停車方式比,停車費較低。
-
安全: 每輛車都被鎖在不同的車庫裡,小偷要接觸到全部汽車必須撬開所有車庫,因而這種停車方式相對安全。(區塊鏈安全性有點不同,但為了簡單起見,讓我們暫時這樣考慮!)
-
限制:隨著房子數量的增加,假設每座新房子都有額外的車庫,那麼整個車庫租賃系統就會隨之擴容。
-
去信任化:由於沒有中心化的權威機構來控制這些分散式停車庫,我們認為,所有車庫出租者會聯合制定出一定的停車規則。
-
分散化: 如前所述,這些停車庫分佈在城市的各個角落,我們可以將其視為分散式停車系統。
上述類比是理解區塊鏈技術的基礎。
從停車模型到技術模型
以上停車模型用現實中的例子展示了區塊鏈的基本理念。現在,讓我們嘗試將停車模型的組成部分與實際的技術模型進行匹配——
等等!我們漏掉了一些東西。
並非所有的去中心化系統都是區塊鏈!!是的,區塊鏈是一種特殊的去中心化系統,具有獨特屬性。什麼屬性呢?我們來談談。
區塊鏈由“區塊”組成
回顧一下我們的分散式停車系統,並做一個小小的更改。假設當一輛車停入車庫時,車庫就生成一個特定的鎖-鑰匙對。 (假設同一輛車每天停在同一個車庫)。另外,假設我們按順序對所有分散式車庫進行編號。50號車庫的鎖-鑰匙對,是基於49號車庫的鎖-鑰匙對和50號車庫中汽車的特性(如顏色、重量、發動機號等)共同生成,這個過程從1號車庫開始,直到200號車庫甚至更多。
每個車庫的鎖-鑰匙對,由車庫中汽車的特性和前面車庫的鎖-鑰匙對共同決定。
因此,如果一個小偷試圖進入49號車庫並修改車的任何特性,例如車的顏色或註冊號,這意味著49號車庫將生成新的鎖-鑰匙對。而50號車庫的鎖-鑰匙對取決於49號車庫的鎖-鑰匙對,因此 50號車庫的鎖-鑰匙對也會隨之改變。以此類推。
現在,讓我們做最後一個假設,計算一個鎖-鑰匙對需要花費大量的計算資源。這意味著,如果必須重新計算這些鎖-鑰匙對,實際上幾乎是不可行的。從而具有防任何小偷修改任何車庫中汽車的特性。
鎖-鑰匙對被更改了怎麼辦?
還記得我們說過,所有的車庫主人都遵守一些規則嗎?其中一個規則就是核實車庫的有效性。如果一個車庫的鎖-鑰匙對是有效的,則認為車庫是有效的。如果任何鎖-鑰匙對被更改,那麼後面所有車庫的鎖-鑰匙對將失效,因為每一個鎖-鑰匙對都是基於前一個鎖-鑰匙對生成。(與生成鎖-鑰匙對相比,驗證特定車庫的鎖-鑰匙對非常迅速)。
基於上一個鎖-鑰匙對,生成下一個鎖-鑰匙對,不斷重複就形成了一條車庫鏈。在技術界,這些車庫就是“區塊”,因此得名——區塊鏈(由區塊組成的鏈)。
區塊鏈中的區塊通過雜湊值連線到下一個區塊,就像我們示例中的鎖-鑰匙對一樣。與車庫模型類似,如果更改了一個區塊中的資料,那麼需要重新計算後面所有區塊的雜湊值。由於計算雜湊值是一項非常耗費資源的操作,實際上難以實施,因此整個系統排除了無效區塊。雜湊值的計算過程被稱為“挖礦”,我們將在本系列的下一篇文章對此進行討論。
如何修復區塊?
區塊鏈網路上的所有計算機都保留一份完整的區塊鏈副本。如果某臺或多臺計算機上的一個區塊或整條區塊鏈被更改,所有網路節點就會將其與自己的完整的區塊鏈副本進行比較。
如果網路上大多數節點(或計算機)發現更改後的鏈無效,則用其他節點的有效鏈替換更改後的鏈。這使得區塊鏈容易受到51%的攻擊。簡單地說,如果網路上超過50%的節點是惡意的(或者說是有一條被更改的鏈),那麼整個網路就會妥協,接受更改後的區塊鏈。