笑來老師在github寫了一篇文章《INBlockchain 的開源區塊鏈 ICO 投資原則 》,區塊鏈定義是:
區塊鏈指的是一種公開的,由去中心化網絡共同維護的賬務系統,提供開放的、不可篡改的底層數據服務。
看到這句話想:要學習區塊鏈有什么指導意義呢?想了半天不知道如何理解這句話。
后面在看《精通比特幣》一書時,在第七章看到對區塊鏈定義是:
區塊鏈是由包含交易信息的區塊從后向前有序鏈接起來的數據結構。
看到這句話時找出關鍵詞:區塊、有序鏈接。如果能把這些關鍵詞搞明白了,也算跨過入門區塊鏈的門檻。
1.區塊
區塊是一種被包含在公開賬簿(區塊鏈)里的聚合了交易信息的容器數據結構。
關鍵詞:交易,數據結構
對交易定義使用比特幣來說明,定義:
把比特幣從一個地址轉到另一個地址。
交易定義是很容易理解,如果理解有困難的話,用日常生活熟悉的網銀轉賬來理解,把錢從A賬號轉到B賬號,這就構成一筆交易。
而數據結構是計算機存儲、組織數據的方式。可以理解通過某種方式把數據有效組織起來。
區塊結構:
大小 | 字段 | 描述 |
---|---|---|
4字節 | 區塊大小 | 用字節表示區塊大小 |
80字節 | 區塊頭 | 區塊頭信息,包含6個字段 |
1-9字節 | 交易數量 | 交易信息的個數 |
可變 | 交易列表 | 記錄在區塊里的交易信息列表 |
沒有學過計算機編程,看到區塊結構感到很抽象。下面通過結構圖來表示:
結構圖更加形象表示區塊組成結構。
如果說區塊鏈是公開賬簿,那么區塊就是賬簿其中一頁。賬簿每一頁包含區塊大小,區塊頭,交易數量,交易列表。
那如何把一頁頁鏈接起來變成有序賬簿呢?
是通過區塊頭的父區塊哈希值鏈接起來
下面展示區塊頭結構:
大小 | 字段 | 描述 |
---|---|---|
4字節 | 版本 | 版本號,用于跟蹤軟件/協議的更新 |
32字節 | 父區塊哈希值 | 引用區塊鏈父區塊的哈希值 |
32字節 | Merkle根 | 該區塊中交易的merkle樹根的哈希值 |
4字節 | 時間戳 | 該區塊產生的時間(精確到秒的Unix時間戳) |
4字節 | 難度目標 | 該區塊工作量證明算法的難度 |
4字節 | Nonce | 用于工作量證明算法的計數器 |
區塊頭結構的字段和描述涉及計算機專業術語,暫時先忽略。先把區塊頭的結構理解后。區塊頭的結構圖如下:
一個完整區塊組成結構圖如下:
2.區塊標識符
每個區塊都有一個區塊標識符,區塊標識符包含區塊頭哈希值(區塊主標識符)和區塊高度,區塊頭哈希值是唯一、能明確標識一個區塊。
當一個節點從網絡接收傳入的區塊時,它會驗證這些區塊信息,然后鏈接到現有的區塊鏈上。為了建立鏈接,一個節點將檢查傳入的區塊頭的“父區塊哈希值”,該區塊的“父區塊哈希值”與現有區塊鏈的最后一個區塊的區塊標識符的頭哈希值相等,然后使用鏈條方式鏈接起來,如下圖:
成功地把區塊寫入到區塊鏈中,類似往賬簿寫入一頁賬本信息。對區塊鏈的形成做了大致說明,現在再看看《精通比特幣》對區塊鏈定義,相信大家都有初步認識和理解。
現在再看回文章第一個的區塊鏈定義:
區塊鏈指的是一種公開的,由去中心化網絡共同維護的賬務系統,提供開放的、不可篡改的底層數據服務。
主要關鍵詞:去中心化、財務系統。
3.去中心化
在了解去中心化前,先說說P2P網絡。在P2P網絡中,多個計算機或節點共同組成一個網絡,而不需要中心服務器來協調各個計算機。P2P網絡如下圖:
P2P網絡中,每臺計算機是服務提供者也是服務使用者。在傳統的B/C(服務端/客戶端)應用,服務端其通常為客戶端提供服務,客戶端是服務端使用者。
在去中心化網絡中,任何擁有算力的用戶都可以競爭參與記賬,無須集約化的機構來壟斷和管理賬簿。
是通過什么能做到不依賴中心機構管理賬簿呢?
用戶在區塊鏈成功寫入區塊時獲得獎勵
獎勵包括創建新區塊的新幣獎勵和區塊所含交易的交易費,促使用戶通過算力競爭進行記賬。不依賴任何用戶來記賬實現去中心化的目的。
同時,獲得創建新區塊的新幣獎勵也是挖礦過程。
4.財務系統
理解成賬簿,記錄所有交易信息。
總結,區塊鏈由一個個區塊組成,區塊是由一筆筆交易組成,通過鏈條把區塊鏈接起來,形成公開賬簿。通過使用算力競爭寫入區塊獲得獎勵實現去中心化。