1. 程式人生 > >從零開始學習區塊鏈(1)

從零開始學習區塊鏈(1)

定義1:區塊鏈(Blockchain)技術是維護一個不斷增長的資料記錄的分散式資料庫,這些資料通過密碼學的技術和之前被寫入的所有資料關聯,使得第三方甚至是節點的擁有者難以篡改。區塊(Block)包含有資料庫中實際需要儲存的資料,這些資料通過區塊組織起來被寫入資料庫。

定義2:Hash演算法:雜湊演算法將任意長度的二進位制值對映為較短的固定長度的二進位制值,這個小的二進位制值稱為雜湊值。雜湊值是一段資料唯一且極其緊湊的數值表示形式。如果雜湊一段明文而且哪怕只更改該段落的一個字母,隨後的雜湊都將產生不同的值。要找到雜湊為同一個值的兩個不同的輸入,在計算上是不可能的,所以資料的雜湊值可以檢驗資料的完整性。一般用於快速查詢和加密演算法。

雜湊表是根據設定的雜湊函式H(key)和處理衝突方法將一組關鍵字對映到一個有限的地址區間上,並以關鍵字在地址區間中的象作為記錄在表中的儲存位置,這種表稱為雜湊表或雜湊,所得儲存位置稱為雜湊地址或雜湊地址。作為線性資料結構與表格和佇列等相比,雜湊表無疑是查詢速度比較快的一種。

通過將單向數學函式(有時稱為“雜湊演算法”)應用到任意數量的資料所得到的固定大小的結果。如果輸入資料中有變化,則雜湊也會發生變化。雜湊可用於許多操作,包括身份驗證和數字簽名,也稱為“訊息摘要”。

簡單解釋:雜湊(Hash)演算法,即雜湊函式。它是一種單向密碼體制,即它是一個從明文到密文的不可逆對映,只有加密過程,沒有解密過程。同時,雜湊函式可以將任意長度的輸入經過變化以後得到固定長度的輸出。雜湊函式的這種單向特徵和輸出資料長度固定的特徵使得它可以生成訊息或者資料。

舉個例子,如果你輸入一篇論文對並對其使用雜湊函式運算得到一串固定長度的雜湊值(計算結果),一旦別人抄襲或更改計算結果都會變化。而且雜湊函式是不可逆的,這和普通函式有很大不同。

定義3:merkel樹,

Merkle Tree是一種資料結構中所說的樹,網上大都稱為Merkle Hash Tree,這是因為它所構造的Merkle Tree的所有節點都是Hash值。

Merkle Tree具有以下特點:

1. 它是一種樹,可以是二叉樹,也可以多叉樹。無論是幾叉樹,它都具有樹結構的所有特點;

2. Merkle樹的葉子節點上的Value,是由你指定的,這主要看你的設計了,如Merkle Hash Tree會將資料的Hash值作為葉子節點的值;

3. 非葉子節點的Value是根據它下面所有的葉子節點值按照一定的演算法計算得出的。如Merkle Hash Tree的非葉子節點Value的計算方法是將該節點的所有子節點進行組合,然後對組合結果進行Hash計算所得出的Hash Value。

例如,下圖就是一個Merkle Hash Tree形狀,如果它是Merkle Hash Tree,則節點7的hash value必須是通過節點15、16上的value計算而得到。

 

目前在計算機領域,Merkle Tree大多用來進行比對以及驗證處理。在處理比對或驗證的應用場景中特別是在分散式環境下進行比對或驗證時,Merkle Tree會大大減少資料的傳輸量以及計算的複雜度。例如,就拿上圖舉例,假如是 15,16.......30是一個個資料塊的hash值,我把這些資料從A傳輸到B,並且在資料傳輸到B後,我想驗證下傳輸到B上的資料的有效性型(驗證資料是否在傳輸過程中發生變化),我只需要驗證A和B上所構造的Merkle Tree的Root節點值是否一致即可。如果一致,表示資料是有效的,傳輸過程中沒有發生改變。假如在傳輸過程中,15對應的資料被人篡改,通過Merkle Tree很容易定位找到(因為此時,節點0、1、3、7、15對應的Hash值都發生了變化),定位的時間複雜度為O(log(n))。

最後,我們來了解一下鼎鼎大名的比特幣。著名的中本聰論文《比特幣:一種點對點(Peer-to-Peer)的電子現金系統》中涉及了幾個觀點:

(論文下載地址:https://xueshu.glgoo.net/scholar?cluster=9372423383988544578&hl=zh-CN&as_sdt=0,5)

1. 去中心化、去中介化的可靠交易;

2. 反欺詐;

3. 基於密碼學原理的電子交易憑證管理;

4. 分散式的時間戳伺服器;

5. 足夠的安全能力支援系統。

所以,我們可以把比特幣理解為一個區塊鏈技術的應用場景。

當區塊鏈技術被髮表後,很多人士認為有可能實現DAC。DAC,全稱是Distributed Autonomous

Corporation,中文可以翻譯為分散式自治系統。所謂DAC,就是通過一系列公開公正的規則、可以在無人干預和管理的情況下自主執行的組織系統。DAC的形態非常多,它可能是某種數字貨幣,也可能是一個系統或者實體機構,甚至可能是無人駕駛的汽車。作為企業,它們為客戶提供有價值的服務,這種服務可以是貨幣傳輸(如比特幣)、資產交易、域名服務,或者其他任意一種商業模式。

以下是分散式系統的四個突出特點:

1.沒有強制性的中心控制;

2. 次級單位具有自治的特質;

3. 次級單位之間彼此高度連線;

4. 點對點間的影響通過網路形成了非線性因果關係。

通過以上介紹,我們大概能夠了解區塊鏈技術的概念,而區塊鏈技術現有的應用場景基本如下:

1.存在性證明  :在網際網路金融領域可以用於確權,因為區塊鏈真的可以實現證明你媽是你媽。  

2. 智慧合約:  保證合約的有效性,如電子簽名法所規定的生成、儲存或者傳遞資料電文方法的可靠性;保持內容完整性方法的可靠性;用以鑑別發件人方法的可靠性;其他相關因素。  

3.物聯網  :區塊鏈可以讓物聯網對物體的編碼標準互動介面的問題得以解決。IBM認為區塊鏈將在分散式網路中起到至關重要的作用,每一個裝置都充當一個礦工,在網路上的節點之間傳輸資料。在IBM正在開發的被稱為“Adept”的專案中,區塊鏈在建立一個可行的分散式網路中起到了至關重要的作用。  

4. 身份驗證  :電子簽名法所規定的電子簽名製作資料用於電子簽名時,屬於電子簽名人專有;簽署時電子簽名製作資料僅由電子簽名人控制;簽署後對電子簽名的任何改動能夠被發現;簽署後對資料電文內容和形式的任何改動能夠被發現;當事人也可以選擇使用符合其約定的可靠條件的電子簽名。  

5. 預測市場  :股市預測社群Augur就是一個例子。任何人在世界任何地方都可以訪問和使用的Augur,這可能給市場帶來前所未有的流動性和交易量。  

6. 資產交易  :Nasdaq OMX Group Inc正在測試區塊鏈技術,納斯達克認為該技術有機會讓傳統的金融交易方式變為和比特幣類似的交易方式。  

7. 電子商務  :比特幣的模式直接套用就可以了,電商是不是有可能變成沒有監管但是“和諧”的黑市?  

8. 社交通訊  :Magma VC已經向去中心化社交通訊應用初創專案GetGems(原名Gems)投資了40萬美元。  

9. 檔案儲存  :直接衝擊甚至顛覆傳統的雲端計算架構。  

10. 資料API  :區塊鏈API服務提供商Chain已經獲得由Khosla Ventures領投的950萬美元投資,投資者還包括Pantera Capital、Barry Silbert、RRE Ventures、SV Angel、Thrive Capital和500 Startups。華爾街的金融公司正在投資區塊鏈、搶灘佈局。Visa、納斯達克、花旗風投也投資這家舊金山區塊鏈初創公司Chain,涉及融資金額達到3000萬美元。