區塊鏈的底盤——資料層
像上一篇文章中已經說過的,區塊鏈的系統最基本、最必要的三層是:資料層、網路層、共識層。而其中最重要的底層就是資料層。在這層中資料是以一個個區塊的封裝打包方式儲存在區塊鏈系統中。每一個區塊就是區塊鏈這個公開賬本中的最小記錄交易信息的單元。每十分鐘打包的一個區塊就是將這一段時間內的交易資訊記錄整理在一起,經過雜湊演算法將該區塊頭與上一個區塊連線到一起,這樣就形成一個具體的區塊鏈系統。
一、基本概念
由此引出來關於區塊的幾個概念:區塊頭、區塊。你可能會好奇的問?作為一個完整的區塊,不是應該有區塊頭、區塊和區塊尾嗎?這裡需要重點說明一些,在單個區塊中,是沒有區塊尾這個概念的,一個完整的區塊只包含區塊頭和區塊。區塊頭就是記錄當前區塊的元資訊,包括其版本號、當前的時間戳、上一個區塊的雜湊值。緊挨著區塊頭的就是區塊本身,也就是打包好的交易資訊記錄,區塊本身包含的是技術資訊、交易資訊等。之所以沒有區塊尾的原因其實就是,當前的區塊就緊接著連線起下一個區塊的區塊頭。區塊鏈的鏈其實就是這個區塊與下一個區塊頭連線的雜湊計算值。正式因為如此,區塊才能連線在一起變成區塊鏈。
在區塊鏈系統的資料層中,其實包含的就是這些區塊,資料層不僅封裝了底層資料區塊的鏈式結構,還有在解密過程中的非對稱加密技術以及時間戳技術。可能這樣抽象的概念你覺得有些燒腦,換個形象的比喻,區塊鏈其實長得像糖葫蘆一樣,每一個糖葫蘆就是一堆交易資訊的集合,區塊頭就相當於糖葫蘆的糖稀,區塊資料本身就像是山楂,而區塊與下一個區塊頭的雜湊連線就像是那根穿起糖葫蘆的小木棍。

image.png

image.png
二、分散式資料庫
區塊鏈資料層使用的資料儲存技術並不是在有區塊鏈這個時代才發明出來的,而是已經在計算機發展的歷史上被髮明出來很多年,也就是分散式資料庫技術的一種衍生或者叫做升級版。
分散式資料庫:是用計算機網路將物理上分散的多個數據庫單元連線起來組成的一個邏輯上統一的資料庫。每個被連線起來的資料庫單元稱為站點或節點。分散式資料庫有一個統一的資料庫管理系統來進行管理,稱為分散式資料庫管理系統。
分散式資料庫與區塊鏈的資料儲存技術雖說是同根但是在一些具體的方面還是有區別。在管理節點上,雖然分散式資料庫的儲存單元是分散在各地,但是其管理介面確實集中化,不像區塊鏈可以有多個同時線上的管理入口;另外分散式資料庫因為是統一管理,所以其可擴充套件性和自治性都是在中心化允許的情況下才可以進行,而區塊鏈資料儲存是真正去中心化,單個節點沒有足夠強大的權力可以對鏈上的資料進行更改,同時單節點作惡的成本也非常高昂,這也是區塊鏈系統安全穩定的一個保障因素。區塊鏈資料儲存系統只是存在理論上被破壞的可能,在BTC這個典型的區塊鏈系統中,具體的表現就是51%攻擊。