挖礦就是計算機進行每個區(qū)塊的哈希值計算关拒,不是任意一個 Hash 都可以着绊,只有滿足條件的 Hash 才會被區(qū)塊鏈接受熟尉。區(qū)塊頭包含一個難度系數(shù)(difficulty),這個值決定了計算 Hash 的難度剧包。
區(qū)塊鏈協(xié)議規(guī)定恐锦,使用一個常量除以難度系數(shù)一铅,可以得到目標值(target)堕油。顯然,難度系數(shù)越大卜录,目標值就越小眶明。
Hash 的有效性跟目標值密切相關(guān),只有小于目標值的 Hash 才是有效的搜囱,否則 Hash 無效,必須重算嗦篱。由于目標值非常小幌缝,Hash 小于該值的機會極其渺茫,可能計算10億次浴栽,才算中一次。這就是采礦如此之慢的根本原因典鸡。
區(qū)塊頭里面還有一個 Nonce 值坏晦,記錄了 Hash 重算的次數(shù)。第 100000 個區(qū)塊的 Nonce 值是274148111球碉,即計算了 2.74 億次仓蛆,才得到了一個有效的 Hash,該區(qū)塊才能加入?yún)^(qū)塊鏈豆拨。
為了將產(chǎn)出速率恒定在十分鐘,中本聰還設(shè)計了難度系數(shù)的動態(tài)調(diào)節(jié)機制施禾。他規(guī)定,難度系數(shù)每兩周(2016個區(qū)塊)調(diào)整一次拾积。如果這兩周里面拓巧,區(qū)塊的平均生成速度是9分鐘一死,就意味著比法定速度快了10%,因此難度系數(shù)就要調(diào)高10%承耿;如果平均生成速度是11分鐘伪煤,就意味著比法定速度慢了10%,因此難度系數(shù)就要調(diào)低10%抱既。
難度系數(shù)越調(diào)越高(目標值越來越小)蚀之,導(dǎo)致了采礦越來越難捷泞。