什麽是區塊鏈?
區塊鏈,英文區塊鏈,本質上是壹個去中心化的分布式數據庫。只要架設好自己的服務器,接入區塊鏈網絡,任何人都可以成為這個龐大網絡的壹個節點。
既然區塊鏈本質上是壹個數據庫,那麽其中存儲了什麽呢?我們來看看區塊鏈的基本單位:塊。
壹個區塊分為兩部分:
1.塊標題
塊頭存儲了塊的頭信息,包括前壹個塊的預哈希,塊體的哈希,時間戳等等。
2.分程序體
塊體存儲這個塊的詳細數據,包含幾行記錄,可以是交易信息,也可以是其他壹些信息。
剛才提到的哈希值是什麽意思?
大家壹定聽說過MD5,這是壹種典型的哈希算法。它可以將任意長度的明文字符串轉換成固定長度的字符串(128bit),這個字符串就是哈希值。
在我們的區塊鏈中,采用了壹種更復雜的哈希算法SHA256。經過壹系列復雜的計算,最新的數據信息(如交易記錄)最終會被這個哈希算法轉換成壹個長度為256bit的哈希字符串,也就是塊頭中的哈希。格式如下:
a8fdc 205 a9f 19cc 1c 7507 a 60 C4 f 01b 13d 11d7fd 0
Block和Hash是壹壹對應的,Hash可以看作block的唯壹標識符。
不同的區塊是如何關聯的?依靠哈希和預哈希來關聯。每個塊的預散列值等於前壹個塊的散列值。
為什麽要計算塊的哈希值?
由於區塊鏈是壹個鏈式結構,所以該鏈必須有壹個頭節點(第壹個塊)和壹個尾節點(最後壹個塊)。壹旦有人計算出區塊鏈最新數據信息的哈希值,就相當於把最新的交易記錄打包,會創建壹個新的塊,連接到區塊鏈的末端。
新塊頭的Hash就是剛剛計算的Hash值,PreHash等於前壹塊的Hash。塊體的數據存儲的是打包前的交易記錄,這部分數據信息已經變得不可修改。
計算哈希值和創建新塊的過程稱為挖掘。
用於海量計算的服務器叫做礦機。
操作計算的工人被稱為礦工。
哈希值的計算難度在哪裏?先做個粗淺的解釋。計算哈希值的公式如下:
Hash = SHA-256(最後壹個塊的hash+新塊的基本信息+交易記錄信息+隨機數)
其中,交易記錄信息也是壹串哈希值,其計算涉及壹個數據結構Merkle樹。感興趣的朋友可以咨詢相關資料,我們暫時不做介紹。
這裏關鍵的計算難點在於隨機數的生成。為了增加Hash的計算難度,猥瑣的區塊鏈發明家要求Hash結果的前72位必須全部為0,這實在是太小了。
因為(最後壹個塊的Hash+新塊的基本信息+交易記錄信息)是固定的,所以能否得到符合要求的Hash完全取決於隨機數的取值。挖掘者必須經過海量計算,反復生成隨機數,進行壹般的“撞大運”嘗試,才能得到正確的Hash,從而挖掘成功。
同時,塊頭還包含壹個動態難度系數。當世界上硬件的計算能力越來越快時,區塊鏈的難度系數也會上升,使得全網平均每10分鐘產生壹個新塊。
朋友們知道我有多難嗎?需要補充的是,不同的區塊鏈應用在細節上是不同的。這裏描述的挖掘規則以比特幣為例。
區塊鏈的應用
比特幣的概念最早是由中本聰在2008年提出的,隨後根據這壹想法設計並發布了開源軟件和建立在其上的P2P網絡。比特幣是壹種P2P數字貨幣。點對點傳輸意味著壹個分散的支付系統。
什麽是P2P網絡?
傳統貨幣由央行發行,個人所有儲蓄也由銀行管理。這是典型的中央集權制。
比特幣部署在由世界各地許多對等節點組成的去中心化網絡上。每個節點都有資格記錄和發布這種數字貨幣。
至於比特幣底層的數據存儲,是基於區塊鏈技術的。比特幣的每壹筆交易對應塊數據中的壹行,簡單表示如下:
交易記錄的每壹行都包含時間戳、交易細節和數字簽名。
表格只是為了方便理解。實際存儲的交易細節是匿名的,只記錄付款人和收款人的錢包地址。
關於數字簽名,可以理解為每壹單交易的防偽標識都是通過非對稱加密算法生成的。
接下來,我們來說說比特幣礦工的獎勵:
根據比特幣協議,挖掘新區塊的礦工將獲得獎勵,從2008年開始是50個比特幣,然後每四年減半。目前是2018的12.5比特幣。流通中的新比特幣就是這樣誕生的,難怪大家對挖礦比特幣的工作如此渴望!
區塊鏈的優勢和劣勢
區塊鏈的優勢:
1.分散
區塊鏈不依賴於壹個中心節點,整個系統的數據由全網所有對等節點維護,數據可以存儲和查看。這樣,除非攻擊者黑掉全網壹半以上的節點,否則整個系統不會被破壞。
2.信息不能被篡改。
塊中的數據不能被篡改。壹旦數據被篡改哪怕是壹點點,整個塊對應的hash值也會隨之改變,不再是有效的hash值,後面鏈接的塊也會斷裂。
區塊鏈的缺點:
1.過度的能源消耗
為了生成壹個新的塊,必須使用大量的服務器資源進行大量不必要的試探性計算,嚴重耗電。
2.信息的網絡延遲
以比特幣為例,任何交易數據都需要同步到其他所有節點,同步過程必然會受到網絡傳輸延遲的影響,耗時較長。
壹些補充:
1.此漫畫部分參考了阮壹峰的博客《區塊鏈入門》,感謝這位大神的科普。
2.由於篇幅有限,關於Merkle樹和非對稱加密的知識暫時沒有闡述,有興趣的朋友可以查閱資料進壹步學習。