當前位置:
首頁 > 最新 > 從微觀到宏觀理解區塊鏈

從微觀到宏觀理解區塊鏈

原創文章,轉載請註明:轉載自Keegan小鋼寫於2018-02-24專欄地址:https://xiaozhuanlan.com/fullstack最近區塊鏈異常火爆,而且就只是在這一兩個月內的事情,無疑,今年應該會成為區塊鏈爆發元年,相應地,對區塊鏈技術人員的需求將會大幅度增加,為了讓大家早日入門區塊鏈開發領域,以取得先發優勢,從而在這場區塊鏈革命浪潮中立於不敗之地,因此,我決定提前編寫系列文章,跟大家聊聊區塊鏈技術。

微觀區塊鏈

相信不少人都聽到說區塊鏈是分散式賬本、分散式資料庫、去中心化的等等,有了一些大概的認知,但也只是一些碎片化的認知,還無法形成體系,所以也還不能理解區塊鏈的本質。下面,我將從微觀到宏觀簡單講解區塊鏈,力求讓大夥更容易理解區塊鏈的真正本質。那麼,從微觀上理解區塊鏈,就要從理解區塊鏈最底層的數據結構開始。區塊鏈(Blockchain),簡單來說就是按時間順序將數據區塊通過哈希指針的方式連接起來的一個鏈表。哈希指針是區塊鏈里最常用的數據結構,其實就是一串數據的哈希值,我們知道,一串數據的哈希值就是這串數據的指紋/摘要,因此就可以用這個哈希值來指向這串數據,如下圖:

區塊鏈里的每一個區塊都有對應本區塊的哈希指針,而除了創世區塊(即第一個區塊)之外,其他每個區塊都存儲了前一個區塊的哈希指針,從而形成如下所示的一個鏈條,即區塊鏈:

這樣的數據結構可以保證數據無法篡改,因為一旦篡改了任何區塊的數據,對應的哈希指針就會出錯,因此一旦有惡意篡改就能校驗到。數據的無法篡改也是區塊鏈本質上最核心的一個特性。

接著,再來看看區塊鏈的基本單元——區塊(block),以比特幣為例,每個區塊的數據結構大致如下:

其中,Tx0 ~ Tx3表示每一筆交易數據,Hash0則是Tx0這筆交易數據的哈希指針,Hash01則是Hash0 + Hash1的哈希指針,這樣層層疊加上去,得到最後的Root Hash。從圖中也可以看出,從Hash0 到 Root Hash 是一個三層的二叉樹,由於這顆樹的所有節點都是 Hash 值,所以也稱為 Hash Tree,但更專業的名稱叫Merkle Tree。不過 Merkle Tree 不一定是二叉樹,也可以是多叉樹。Merkle Tree 的葉子節點(即Hash0 ~ Hash3)是數據塊的 Hash 值,而非葉子節點的 value 則是根據下面的葉子節點的 Hash 值串聯起來後再計算 Hash 得出的。通過 Merkle Tree 結構,底層的每一筆交易也都無法篡改,一旦篡改,Root Hash 就會不一致。

另外,該結構也簡化了支付校驗,比如,我們要校驗 Tx3 這筆交易的有效性,那隻要校驗從 Tx3 到 Root Hash 的分支 Hash 值即可,如下圖所示,計算 Tx3 的 Hash值得到 Hash3,再結合 Hash2,計算出 Hash23,再拼上 Hash01 計算出 Merkle Root,只要計算出來的 Merkle Root 和實際存儲的 Root Hash 一致,則表明該該筆交易是有效的。Root Hash 會保存在區塊頭裡,區塊頭裡一般會保存有以下信息:

Block Hash:當前區塊的 Hash 值

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Keegan小鋼 的精彩文章:

TAG:Keegan小鋼 |