- 區塊鏈與人工智能:數字經濟新時代
- 高航
- 865字
- 2019-11-18 14:44:48
第四節 區塊標識符:區塊頭哈希值和區塊高度
區塊主標識符是它的加密哈希值,是一個通過SHA256算法對區塊頭進行二次哈希計算而得到的數字指紋。產生的32字節哈希值被稱為區塊哈希值,但是更準確的名稱是區塊頭哈希值,因為只有區塊頭被用于計算。例如:000000000019d6689c085ae165831e934ff763ae46a2a6c172 b3f1b60a8ce26f是第一個比特幣區塊的區塊哈希值。區塊哈希值可以唯一、明確地標識一個區塊,并且任何節點通過簡單地對區塊頭進行哈希計算都可以獨立地獲取該區塊哈希值。
請注意,區塊哈希值實際上并不包含在區塊的數據結構里,不管是該區塊在網絡上傳輸時,抑或是它作為區塊鏈的一部分被存儲在某節點的永久性存儲設備上時。相反,區塊哈希值是當該區塊從網絡被接收時由每個節點計算出來的。區塊的哈希值可能會作為區塊元數據的一部分被存儲在一個獨立的數據庫表中,以便于索引和更快地從磁盤檢索區塊。
識別區塊的方式是通過該區塊在區塊鏈中的位置,即“區塊高度(Block Height)”。第一個區塊,其區塊高度為0,和之前哈希值000000000019d6689c085ae 165831e934ff763ae46a2a6c172b3f1b60a8ce26f所引用的區塊為同一個區塊。因此,區塊可以通過兩種方式被識別:區塊哈希值或者區塊高度。每一個隨后被存儲在第一個區塊之上的區塊在區塊鏈中都比前一區塊“高”出一個位置,就像箱子一個接一個堆疊在其他箱子之上。2016年2月25日的區塊高度大約是399900,說明已經有399900個區塊被堆疊在2009年1月創建的第一個區塊之上。
和區塊哈希值不同的是,區塊高度并不是唯一的標識符。雖然一個單一的區塊總是會有一個明確的、固定的區塊高度,但反過來卻并不成立,一個區塊高度并不總是識別一個單一的區塊。兩個或兩個以上的區塊可能有相同的區塊高度,在區塊鏈里爭奪同一位置。區塊高度也不是區塊數據結構的一部分,它并不被存儲在區塊里。當節點接收來自比特幣網絡的區塊時,會動態地識別該區塊在區塊鏈里的位置(區塊高度)。區塊高度也可作為元數據存儲在一個索引數據庫表中以便快速檢索。
一個區塊的區塊哈希值總是能唯一地識別出一個特定區塊。一個區塊也總是有特定的區塊高度。但是,一個特定的區塊高度并不一定總是能唯一地識別出一個特定區塊。更確切地說,兩個或者更多數量的區塊也許會為了區塊中的一個位置而競爭。