時(shí)間:2023-06-15|瀏覽:270
一個區(qū)塊頭由以下字段組成:版本號,前一個區(qū)塊哈希,Merkle根(由區(qū)塊中所有交易組成的Merkle樹的哈希值),時(shí)間戳,難度目標(biāo)和Nonce(挖礦隨機(jī)數(shù))等。當(dāng)曠工填寫好這些信息后,會生成一個區(qū)塊頭,但是該區(qū)塊頭暫時(shí)不被比特幣系統(tǒng)認(rèn)可。曠工需要找到本區(qū)塊的哈希值,然后廣播給全網(wǎng),獲得全網(wǎng)認(rèn)可后,把該區(qū)塊鏈接到當(dāng)前的區(qū)塊鏈上,形成一個+1區(qū)塊鏈。重復(fù)這個過程就叫做挖礦。
一個曠工可以填寫該信息,但此時(shí)每個曠工填寫的區(qū)塊都是“假區(qū)塊”。一旦有某個曠工找到了該區(qū)塊的哈希值,它的“假區(qū)塊”就變成了真區(qū)塊,被比特幣系統(tǒng)認(rèn)可,然后獲得比特幣獎勵。所以,挖礦的本質(zhì)就是找到本區(qū)塊的哈希值,找到該哈希值的曠工會獲得比特幣獎勵。
曠工要如何找到該區(qū)塊的哈希值呢?其實(shí)找哈希值的過程靠猜。工作量證明算法的難度目標(biāo)是固定的,需要猜的是這個隨機(jī)數(shù)Nonce。區(qū)塊的哈希值就是Nonce哈希運(yùn)算后得出的哈希值。為了猜到正確的Nonce,應(yīng)不斷地嘗試,這個過程叫做哈希碰撞。
最終,曠工找到正確的Nonce后,就需要把它填入?yún)^(qū)塊頭,然后把區(qū)塊接入?yún)^(qū)塊鏈中,接著廣播給其他節(jié)點(diǎn)驗(yàn)證是否小于目標(biāo)值,其他節(jié)點(diǎn)驗(yàn)證驗(yàn)通過,把該區(qū)塊加入?yún)^(qū)塊鏈中。驗(yàn)證過程很簡單,需要把得出的Nonce套進(jìn)公式,然后與目標(biāo)哈希值進(jìn)行比較。只有同一個輸入才能得到同一個輸出。比特幣的挖礦需要進(jìn)行N億次計(jì)算,驗(yàn)證答案是否正確只需要1次計(jì)算即可。
這就是比特幣的挖礦過程。曠工不斷地嘗試將Nonce套進(jìn)公式,直到找到符合條件的Nonce。然后通過哈希運(yùn)算,把哈希值填入?yún)^(qū)塊,廣播給全網(wǎng)認(rèn)證,認(rèn)證通過獲得比特幣獎勵。