一、區塊
區塊作為區塊鏈的基本結構單元,由包含元數據的區塊頭和包含交易數據的區塊主體構成。
區塊頭包含三組元數據:
1. 用於連接前面的區塊、索引自父區塊哈希值的數據;
2. 挖礦難度、Nonce(隨機數,用於工作量證明算法的計數器)、時間戳;
3. 能夠總結並快速歸納校驗區塊中所有交易數據的Merkle(默克爾)樹根數據。
區塊鏈系統大約每10分鐘會創建一個區塊,其中包含了這段時間裡全網範圍內發生的所有交易。每個區塊中也包含了前一個區塊的ID(識別碼),這使得每個區塊都能找到其前一個節點,這樣一直倒推就形成了一條完整的交易鏈條。從誕生之初到運行至今,全網隨之形成了一條唯一的主區塊鏈。
二、哈希算法
哈希算法是區塊鏈中保證交易信息不被篡改的單向密碼機制。哈希算法接收一段明文後,以一種不可逆的方式將其轉化為一段長度較短、位數固定的散列數據。
它有兩個特點:
1. 加密過程不可逆,意味著我們無法通過輸出的散列數據倒推原本的明文是什麼;
2. 輸入的明文與輸出的散列數據一一對應,任何一個輸入信息的變化,都必將導致最終輸出的散列數據的變化。
在區塊鏈中,通常使用SHA–256(安全散列算法)進行區塊加密,這種算法的輸入長度為256位,輸出的是一串長度為32位元組的隨機散列數據。
區塊鏈通過哈希算法對一個交易區塊中的交易信息進行加密,並把信息壓縮成由一串數字和字母組成的散列字符串。區塊鏈的哈希值能夠唯一而準確地標識一個區塊,區塊鏈中任意節點通過簡單的哈希計算都可以獲得這個區塊的哈希值,計算出的哈希值沒有變化也就意味著區塊中的信息沒有被篡改。
三、公鑰和私鑰
在區塊鏈的話題中,我們還經常聽到這樣的詞彙——公鑰和私鑰。這就是俗稱的不對稱加密方式,是對以前的對稱加密方式(使用用戶名與密碼)的提高。
我們用電子郵件加密的模型來簡單介紹一下:公鑰就是給大家用的,你可以通過電子郵件發布,可以通過網站讓別人下載,公鑰其實是用來加密/驗章的。私鑰就是自己的,必須非常小心保存,最好加上密碼,私鑰用來解密/籤章,私鑰由個人擁有。
在區塊鏈中,使用公鑰和私鑰來標識身份,我們假設區塊鏈中有兩個人,分別為小白和小黑,小白想向小黑證明自己是真實的小白,那麼小白只需要使用私鑰對文件進行籤名並發送給小黑,小黑使用小白的公鑰對文件進行籤名驗證,如果驗證成功,那麼就證明這個文件一定是小白用私鑰加密過的。由於小白的私鑰只有小白才能持有,那麼,就可以驗證小白確實是小白。
在區塊鏈系統中,公鑰和私鑰還可以保證分布式網絡點對點信息傳遞的安全。在區塊鏈信息傳遞中,信息傳遞雙方的公鑰和私鑰的加密與解密往往是不成對出現的。
信息發送者:用私鑰對信息進行籤名,使用信息接收方的公鑰對信息加密。
信息接收方:用信息發送者的公鑰驗證信息發送者的身份,使用私鑰對加密信息解密。
四、時間戳
區塊鏈中的時間戳從區塊生成的一刻起就存在於區塊之中,它對應的是每一次交易記錄的認證,證明交易記錄的真實性。
時間戳是直接寫在區塊鏈中的,而區塊鏈中已經生成的區塊不可篡改,因為一旦篡改,生成的哈希值就會變化,從而變成一個無效的數據。每一個時間戳會將前一個時間戳也納入其隨機哈希值中,這一過程不斷重複,依次相連,最後會生成一個完整的鏈條。
五、Merkle樹結構
區塊鏈利用Merkle樹的數據結構存放所有葉子節點的值,並以此為基礎生成一個統一的哈希值。Merkle樹的葉子節點存儲的是數據信息的哈希值,非葉子的節點存儲的是對其下面所有葉子節點的組合進行哈希計算後得出的哈希值。
同樣地,區塊中任意一個數據的變更都會導致Merkle樹結構發生變化,在交易信息驗證比對的過程中,Merkle樹結構能夠大大減少數據的計算量,畢竟,我們只需驗證Merkle樹結構生成的統一哈希值就可以了。挖礦家SLF201812
本文來源: 金色財經 / 作者:致富小精靈