區塊鏈的技術基石主要有:
SHA256 Hash
公鑰加密技術
工作量證明機制
(1)SHA256 Hash
區塊鏈使用的核心哈希算法是 SHA256,計算後的值不能被解密回原始內容,它是單向的,而且不管原始內容有多少,其結果的長度都是固定的,例如:
可以看到,即使原始內容的差異非常小,其結果的差異卻是極大的。
SHA256 可以實現免碰撞,即不會出現輸入x≠y,但是H(x)=H(y) SHA256 會有2^256種輸出,如果我們進行2^256+1次輸入,那麼必然會產生一次碰撞,我們可以計算一下,假設一臺計算機以每秒10000次的速度進行哈希運算,要經過10^27年才能完成2^128次哈希,所以碰撞的幾率是極其小的。
(2)公鑰加密技術
這個加密技術幫助用戶創建一個公鑰和一個私鑰,公鑰是可以分享給他人的,私鑰是需要自己秘密保管的。
如果 Chandler 給 Joey 轉一些比特幣,這筆交易中會包含3部分信息:
Joey 的比特幣地址(Joey 的公鑰)
交易的比特幣數量
Chandler 的比特幣地址(Chandler 的公鑰)
所有這些數據以及加密數字簽名都會通過網絡發送進行驗證。數字簽名是Chandler的比特幣地址和他向joey發送的數量的組合的哈希值,這個數字簽名是通過私鑰加密的。
當礦工收到這個數據後,他會進行驗證,會同時做兩項工作:
把所有非加密數據(交易金額、兩個人的公鑰)放入哈希算法中,得到一個哈希值(例如為 Hash1)
使用 Chandler 的公鑰對數字簽名進行解密,得到一個哈希值(例如為 Hash2)
如果 Hash1 與 Hash2 相同,那麼它就是一個合法的交易。
(3)工作量證明
區塊鏈中每個人都平等的擁有賬本,那麼誰來向區塊鏈添加區塊?如何信任這個人呢?
為此,有了工作量證明 POW這個概念,可以理解為解一道複雜的題,需要付出大量的計算,做這個工作的人被稱為“礦工”。這些礦工的工作就是驗證交易並解決與創建塊相關的複雜數學難題。
每個區塊都有一個哈希值,是幾項數據的組合,包括:
前一個區塊的哈希值
交易數據的哈希值
nonce
最終的哈希值必須以指定數量的0 開頭才行。
舉個例子,給定的一個基本的字符串 Hello, world!,我們給出的工作量要求是:可以在這個字符串後面添加一個叫做nonce的整數值,對變更後的字符串進行SHA256哈希運算,如果得到的哈希結果(以16進制的形式表示)是以"0000"開頭的,則驗證通過。
為了達到這個工作量證明的目標。我們需要不停的遞增nonce值,對得到的新字符串進行SHA256哈希運算。按照這個規則,我們需要經過4251次計算才能找到恰好前4位為0的哈希散列。
誰先找到這個 nonce 誰就是獲勝的礦工,可以添加他的區塊到區塊鏈中,所有人都可以進行驗證,如果正確就更新他們的區塊鏈,繼續計算下一個區塊。
閱讀更多 性能與架構 的文章