楊凱:初步認識區塊鏈架構及其運作機制

導讀:區塊鏈一直很火爆,是因為區塊鏈既是全新的技術方案、交易模式和商業邏輯,同時也是一種全新的制度機制。今天通過一篇文章幫助大家初步認識一下區塊鏈。

1、什麼是區塊鏈

區塊鏈技術起源於化名為“中本聰”(Satoshi Nakamoto)的學者在2008年發表的奠基性論文《比特幣: 一種點對點電子現金系統》。狹義來講, 區塊鏈是一種按照時間順序將數據區塊以順序相連的方式組合成的一種鏈式數據結構, 並以密碼學方式保證的不可篡改和不可偽造的分佈式賬本。廣義來講,區塊鏈技術是利用塊鏈式數據結構來驗證與存儲數據、利用分佈式節點共識算法來生成和更新數據、利用密碼學的方式保證數據傳輸和訪問的安全、利用由自動化腳本代碼組成的智能合約來編程和操作數據的一種全新的分佈式基礎架構與計算範式。

目前,區塊鏈技術被很多大型機構稱為是徹底改變業務乃至機構運作方式的重大突破性技術。同時,就像雲計算、大數據、物聯網等新一代信息技術一樣,區塊鏈技術並不是單一信息技術,而是依託於現有技術,加以獨創性的組合及創新,從而實現以前未實現的功能。至今為止,區塊鏈技術大致經歷了3個發展階段。

楊凱:初步認識區塊鏈架構及其運作機制

不要把區塊鏈想象的非常神秘,區塊鏈的本質上是一個去中心化的分佈式賬本,其本身是一系列使用密碼學而產生的互相關聯的數據塊,每一個數據塊中包含了多條經比特幣的網絡交易有效確認的信息。按照類型分為:公有鏈、聯盟鏈和私人區塊鏈。

公有鏈

世界上所有人都可以閱讀和發送交易。如果他們合法都有希望看到自己被包括在內。世界上任何人都能參與到共識形成過程——決定在鏈條上添加什麼區塊以及現狀是怎樣的。作為中心化或準中心化信任的替代品,公有鏈受加密經濟的保護,加密經濟是經濟激勵和加密圖形驗證的結合,用類似工作量證明或權益證明的機制,遵循的總原則是人們影響共識形成的程度和他們能夠影響的經濟資源數量成正比。這類區塊鏈通常被認為是"完全去中心化"。

聯盟鏈

共識形成過程由預先選擇的一系列的節點所掌控,例如,設想一個有15個金融機構的團體,每個機構都操作一個節點,為了使區塊生效,其中的10個必須簽署那個區塊。閱讀區塊鏈的權利可能是公開的,或僅限於參與者,也有混合的路徑,比如區塊的根散表和應用程序編程接口一起公開,使公共成員可以進行一定量的查詢,重獲一部分區塊鏈狀態的加密圖形證明。這類區塊鏈被認為是"部分去中心化"。

私人區塊鏈

書寫許可對一個組織保持中心化。閱讀許可可能是公開的或者限制在任意程度。應用很可能包含對單個公司內部的數據庫管理,審查等,因此公共的可讀性在很多情況下根本不必要,但在另一些情況下人們又想要公共可讀性。

2、區塊鏈的技術架構

楊凱:初步認識區塊鏈架構及其運作機制

由於區塊鏈技術目前還不是非常成熟,架構還存在爭議,但從目前市場上面的應用來看,數據層、網絡層、共識層是構建區塊鏈技術的必要元素,缺少任何一層都將不能稱之為真正意義上的區塊鏈技術。激勵層、合約層和應用層不是每個區塊鏈應用的必要因素,一些區塊鏈應用並不完整的包含後三層結構。

數據層

楊凱:初步認識區塊鏈架構及其運作機制

區塊鏈從字面上理解它肯定是一個鏈式結構,在這個鏈上包括非常多的區塊,每一個區塊上的0、1、2、3……代表的是區塊的高度,中間通過hash指針(Privous hash)進行連接和指向,其實就是子區塊存儲它的父區塊所有數據的hash值,這樣每個區塊通過指針或者說每個區塊的唯一數據進行綁定,連成一個鏈式結構。數據層封裝了底層數據區塊的鏈式結構,以及相關的非對稱公私鑰數據加密技術和時間戳等技術,這是整個區塊鏈技術中最底層的數據結構。

通過鏈式結構,我們可以看出區塊鏈就有以下幾個特點:

1、數據不可篡改:如果存在篡改某個區塊的數據,就會導致被篡改區塊數據對應的hash值發生變化,以至於沒有關聯區塊了,該區塊就會在鏈式結構中斷裂,除非篡改所有區塊中的數據。

2、全備份:以比特幣、以太坊為代表的傳統主流區塊鏈均採用全備份模式,如果區塊鏈有10個節點,就會有10份數據,若黑客攻擊的情況下,至少需要修改51%以上的區塊數據才能修改成功,攻擊的成本就非常高,這樣就從機制上保障了數據的安全。另外,這也就帶來了新的問題,很多的應用單元實際上是不希望將自己的數據公開的,或者被其他應用單元共享的。所以在非傳統區塊鏈Fabric裡面有一個channel的設計,它的目的是讓這些數據僅限於在channel上具有可驗證成員資格的peer間傳播。通過信道隔離peer和賬本數據,允許需要私有和機密事務的網絡成員與同一個塊鏈網絡上的業務競爭對手和其他受限制的成員共存。還有一個問題就是成本會非常高,存儲設備要求高,網絡帶寬要求也很高。但從摩爾定律上來看,也不是非常大的問題。

3、完全平等:節點之間是完全平等的,數據是一致的,權限是一致的,代碼是一致的。

網絡層

網絡層主要是通過P2P協議實現數據通訊,大家應該都用過迅雷和電驢,P2P協議有個特點就是上傳數據的同時也在下載數據,這樣就給區塊鏈帶來了一個好處,節點數量越多,上傳下載的速度就越快,這也就意味著區塊鏈自己具有自動組網的能力。

共識層

共識層中是區塊產生和數據寫入區塊的規則,這裡有一個誤區:不是交易雙方達成的交易共識。共識層封裝了網絡節點的各類共識機制算法。共識機制算法是區塊鏈的核心技術,因為這決定了到底是誰來進行記賬,而記賬決定方式將會影響整個系統的安全性和可靠性。常見的共識算法包括:POW、POS和DPOS等。

POW:Proof of Work,工作證明

比特幣在Block的生成過程中使用了POW機制,一個符合要求的Block Hash由N個前導零構成,零的個數取決於網絡的難度值。要得到合理的Block Hash需要經過大量嘗試計算,計算時間取決於機器的哈希運算速度。當某個節點提供出一個合理的Block Hash值,說明該節點確實經過了大量的嘗試計算,當然,並不能得出計算次數的絕對值,因為尋找合理hash是一個概率事件。當節點擁有佔全網n%的算力時,該節點即有n/100的概率找到Block Hash。

POS:Proof of Stake,股權證明

POS類似於財產儲存在銀行,這種模式會根據你持有數字貨幣的量和時間,分配給你相應的利息。簡單來說,就是一個根據你持有貨幣的量和時間,給你發利息的一個制度,在股權證明POS模式下,有一個名詞叫幣齡,每個幣每天產生1幣齡,比如你持有100個幣,總共持有了30天,那麼,此時你的幣齡就為3000,這個時候,如果你發現了一個POS區塊,你的幣齡就會被清空為0。你每被清空365幣齡,你將會從區塊中獲得0.05個幣的利息(假定利息可理解為年利率5%),那麼在這個案例中,利息 = 3000 * 5% / 365 = 0.41個幣,這下就很有意思了,持幣有利息。

DPOS:Delegated Proof of Stake,委任權益證明

從時間上來看,這個順序也是按該共識算法從誕生到熱門的順序來定。對於POW,直接讓比特幣成為了現實,並投入使用。而POS的存在主要是從經濟學上的考慮和創新。而最終由於專業礦工和礦機的存在,讓社區對這個標榜去中心化的算法有了實質性的中心化擔憂,即傳聞60%~70%的算力集中在中國。因此後來又出現DPOS,這種不需要消耗太多額外的算力來進行礦池產出物的分配權益方式。但要說能起到替代作用,DPOS來單獨替代POW,POS或者POW+POS也不太可能,畢竟存在即合理。每種算法都在特定的時間段中有各自的考慮和意義,無論是技術上,還是業務上。

激勵層

像比特幣、以太坊都會給參與者(挖礦的人)一定的獎勵,另外還有交易費。激勵層對公有鏈特別重要,在公有鏈中必須激勵遵守規則參與記賬的節點,並且懲罰不遵守規則的節點,才能讓整個系統朝著良性循環的方向發展,它能夠保障這個鏈穩定健康發展的基礎。但是,對於私有鏈或者聯盟鏈來說,企業做這個鏈是有某種獨立目的,不會隨意讓個人參與這個鏈系統,一般就很少有激勵層。

合約層

合約層實際是運行在區塊鏈上的程序,封裝各類腳本、算法和智能合約,是區塊鏈可編程特性的基礎。最典型的就是以太坊提出的智能合約的概念。合約細分就分為兩種:

圖靈完備:一個能計算出每個圖靈可計算函數(Turing-computable function)的計算系統被稱為圖靈完備的。(非常抽象的概念)程序員應該都知道for循環、遞歸循環、while循環,這些基本上都可以實現無線循環,它就可能具有圖靈完備的能力,可以計算一切可計算的系統或者應用。例如:以太坊的智能合約。

非圖靈完備:這部分的計算是有限的,例如:比特幣的腳本。比特幣腳本存在的意義是讓每筆交易合法化,這個合法化不是人工審核而是有腳本自動執行校驗的。

應用層

運行在區塊鏈系統的程序,如果你調用的是區塊鏈系統的某個接口,獲取相關信息,這是應用層。如果你調用的是某個區塊的某個數據或者在某個區塊寫數據,那就是智能合約,也就是合約層。目前應用層典型的應用包括:

楊凱:初步認識區塊鏈架構及其運作機制

錢包:如果你在火幣網上下載一個錢包,這個不能算是區塊鏈應用。嚴格上來說,你連接的是火幣網的服務器,也就是你連接了一箇中心化的應用。那典型的區塊鏈錢包比如說是:imToken。區塊鏈錢包可以保障自己的虛擬貨幣只要系統存在,就會一直存在。

楊凱:初步認識區塊鏈架構及其運作機制

楊凱:初步認識區塊鏈架構及其運作機制

3、挖礦到底是什麼

區塊鏈,特別是公有鏈中有一個事情叫“挖礦”,並且挖礦結束之後會有一定的獎勵。挖礦其實是要計算出系統要求的一個hash值,這裡的計算常用的Hash函數(SHA),這也是目前使用最為廣泛的Hash函數。SHA由美國標準與技術研究所(NIST)設計並於1993年發表,該版本稱為SHA-0,由於很快被發現存在安全隱患,1995年發佈了SHA-1。2002年,NIST分別發佈了SHA-256、SHA-384、SHA-512,這些算法統稱SHA-2。2008年又新增了SHA-224。由於SHA-1已經不太安全,目前SHA-2各版本已成為主流。

例如:通過sha256()函數計算系統要求的一個前面5位均是0的hash值,獎勵22.5個比特幣。

那麼整個挖礦的過程就是:

nonce是存在與區塊頭中挖礦時使用的隨機數。

第一次計算:假定nonce = 100,sha256(nonce)

得出000XXXXXXXXXXXXXXXXXXXXXXXX

第二次計算:假定nonce = 104,sha256(nonce)

得出00XXXXXXXXXXXXXXXXXXXXXXXXX

第三次計算:假定nonce = 130,sha256(nonce)

得出0000XXXXXXXXXXXXXXXXXXXXXXX

……

第一萬次計算:假定nonce = 1009002,sha256(nonce)

得出00000XXXXXXXXXXXXXXXXXXXXXX

此時,就得出了系統所要求的hash值,就給該礦工獎勵22.5個比特幣。這就是一個典型的挖礦過程。這個過程對每個人都是公平的,對於計算快的人就會得到獎勵,計算慢的人就得不到獎勵。這樣就引出了另外一個概念,就是節點。區塊鏈的節點其實就是參與區塊鏈系統的計算機。

4、舉例說明區塊鏈的交易過程

楊凱:初步認識區塊鏈架構及其運作機制

舉例:張三需要給李四轉2個比特幣,那麼區塊鏈系統的運作機制如下:

1、數據層存儲交易記錄:張三-->李四 2

2、網絡層傳輸數據,進行數據廣播

3、共識層通過具體的算法驗證決定交易記錄是否寫入區塊鏈中

4、激勵層讓礦工在挖礦的同時可以參與到交易記錄的驗證中,這裡涉及挖礦的獎勵和額外驗證的交易費

楊凱:初步認識區塊鏈架構及其運作機制

由於比特幣的存量是有限的,所以,交易費是由交易方出的,也就是說張三轉給李四的2個比特幣,最終李四收到的是小於2個比特幣的,因為平臺減掉了交易費,將交易費分配給了幫助驗證的礦工。

到此相信大家已經基本明確區塊鏈的運作機制和相關信息,歡迎大家留言討論。


分享到:


相關文章: