區塊鏈的每一個區塊的第一個值是前一個區塊的Hash值。
所謂Hash值就是一個函數,輸入任何內容,都輸出一個固定長度的字符串(即Hash值);輸入內容不變,輸出結果不變,即將輸入內容固化;輸入內容一旦發生變化,比如修改一個符號,輸出的Hash值都會發生變化。
比特幣的Hash值是256位二進制數,代表2的256次方個可能性或者狀態。如果給宇宙中所有的原子一個不重復的數字作為其狀態,仍然用不完。
Hash值重復(即Hash碰撞)的可能性很低,我們可能忽略。
因此,我們可以得出結論:往Hash函數中輸入任意兩個不同數字,最后得到的Hash值一定不一樣,一定不會重復(即不會發生碰撞)。
每個區塊首先引用前一個區塊的Hash值,像指針一樣,形成前后序列的關系;通過互相引用,就會形成一個區塊的鏈條。
然后默克爾樹(Merkle Tree)將每一個交易都取Hash值,兩個Hash值之間再取Hash值。
比如原來的8筆交易會變成4個Hash值,再合并成2個Hash值,然后再合并成1個Hash值,最后將這個Hash值寫入區塊中,這樣就把所有交易的內容都固化下來。
此外,還有一個區塊用來存放交易的原文。
生成Hash值時非常快(大概幾十毫秒),而我們通常所說的比特幣挖礦要消耗很多電能,要做很大的運算,這到底為什么呢?
要想獲得比特幣,除了滿足它是前一個區塊內容的數據指紋之外,還得滿足256位二進制數的前N位為0。
比特幣運營初期時,只要生成一個Hash值,就很快生成一個新區塊,即沒有任何難度。
每個區塊里都有一個時間戳,當兩個區塊的生成間隔小于10分鐘時,難度就會增大,開始要求Hash值的前多少位為零,這樣運算量就會增加;當兩個區塊的生成間隔大于10分鐘時,難度就會降低。
由于比特幣價格在上漲,所以比特幣的運算難度不斷增大。正是因為持續不斷地調整難度,才使區塊的平均生成時間保持在10分鐘。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。