理解哈希,就是理解區塊鏈所必須的,所謂哈希就是計算機可以對任意內容,計算出一個長度相同的特征值。
區塊鏈的哈希長度是256位,就是說不管原始內容是什么,最后都會計算出一個256位的二進制數字,它可以是一個笑臉、一個語音、一段話或者一個視頻。
而且可以保證,只要原始內容不同,對應的哈希一定是不同的:
舉例來說,字符串123的哈希是這個,轉換成二進制就是256位,而且只有123能夠得到這個哈希,理論上其它字符創也有可能得到這個哈希,但是概率是極低的,可以近似認為是不可能發生,因此就有了兩個重要推論。
1.每個區塊的哈希都是不一樣的,可以通過哈希識別區塊。
2.如果區塊的內容改變了,它的哈希一定會改變,區塊以哈希是一一對應的,每個區塊的哈希都是針對區塊頭計算的,也就是說,把區塊頭的各項特征值按照順序連接在一起,組成一個很長的字符串,再對這個字符串計算哈希,Hash=SHA256(區塊頭)這個就是區塊哈希的計算公式。
SHA256區塊鏈的哈希算法,注意這個公式里面只包含了區塊頭,不包含區塊體,也就是說,哈希是由區塊頭唯一決定的。
區塊鏈的發明者中本聰故意讓添加新區塊化變得困難,它的設計是平均每十分鐘全網才能產生一個新的區塊,一小時也只產生六個而已,這種產出速度不是通過命令達成的,而是故意設置了海量的計算。
也就是說只有通過這些大量的計算,才能得到當前區塊的有效哈希,從而把新區快添加到區塊鏈,由于計算量太大,所以快不起來,這個過程叫做采礦,也叫做挖礦。
因為計算有效哈希的難度,好比在全世界的沙子里面找到一粒符合條件的沙子,計算哈希的機器叫做礦機。
操作礦機的人叫做礦工,讀到這里你可能還會有一個疑問,人們都說采礦好困難,可是采礦不就是用計算機,來計算出一個個哈希嗎,這正是計算機的強項啊,怎么會變得困難呢。遲遲算不出開,原來不是任意一個哈希都可以,只有滿足條件的哈希才會被區塊鏈所接納,這個條件特別的苛刻,使得絕大部分哈希都不能夠滿足要求,必須重算。
原來,哈希頭包含一個難度系數,這個值決定了計算哈希的難度,舉例來說,第十萬個區塊的難度系數是14000,區塊鏈協議規定,使用一個常量除以難度系數,可以得到目標值。
顯然,難度系數越大,目標值越小,哈希的有效性跟目標值密切相關,只有小于目標值的哈希才是有效的,否則哈希無效,必須重算,由于目標值非常小,哈希小于該值的機會極其渺茫,可能計算十億次才能中一次,這就是采礦如此之慢的原因……
聯系人:張道谷
手 機:136 0044 5188
郵 箱:szmicrocad@vip.163.com
公 司:深圳市興美科電腦設計有限公司
地 址:深圳市龍崗區橫崗鎮東??萍脊I園10棟