Blocks
為什麼乙太坊區塊雜湊中沒有前導零?
塊雜湊必須低於一定的難度,對吧?在比特幣中,這意味著雜湊值中有許多前導零,例如。對於比特幣塊 #402329 雜湊是
000000000000000006efd706f4467e2d7ed6f0fed757ca7d59e2cc8c81a2d9e3
.但對於乙太坊區塊鏈,#1138224 塊的雜湊是
0xa4f80a26aecb5fc975e12a9d3d0f6a7907c60b1d7e6b5205dfb4c984dad7f1ba
.為什麼沒有前導零?
在乙太坊區塊鏈中,難度用於計算目標。
以下是區塊號1257006的 ethminer 日誌:
ℹ 35:02:42.89 ethminer Solution found; Submitting to http://192.168.4.120:8545 ... ℹ 35:02:42.89 ethminer Nonce: ff4136b6b6a244ec ℹ 35:02:42.89 ethminer Mixhash: 47da5e47804594550791c24331163c1f1fde5bc622170e83515843b2b13dbe14 ℹ 35:02:42.89 ethminer Header-hash: f5afa3074287b2b33e975468ae613e023e478112530bc19d4187693c13943445 ℹ 35:02:42.89 ethminer Seedhash: 1730dd810f27fdefcac730fcab75814b7286002ecf541af5cdf7875440203215 ℹ 35:02:42.89 ethminer Target: 00000000000baef6895d630131521d65d984555906990f43f352be4350291f92 ℹ 35:02:42.89 ethminer Ethash: 0000000000095d18875acd4a2c2a5ff476c9acf283b4975d7af8d6c33d119c74 ℹ 35:02:42.89 ethminer B-) Submitted and accepted.
這是一段 Java 程式碼,用於計算目標的難度:
import java.math.BigInteger; public class DifficultyDemo { public static void main(String[] args) { BigInteger numTwoPow256 = new BigInteger("2").pow(256); BigInteger target = new BigInteger("00000000000baef6895d630131521d65d984555906990f43f352be4350291f92", 16); BigInteger difficulty = numTwoPow256.divide(target); System.out.println(difficulty.toString()); } }
並且計算難度
24091770185844
對應於區塊鏈瀏覽器螢幕中的難度。我們可以使用
ethminer --check-pow <headerHash> <seedHash> <difficulty> <nonce>
以下方法檢查工作量證明的有效性:beefee@Rasterbator:~$ ethminer --check-pow f5afa3074287b2b33e975468ae613e023e478112530bc19d4187693c13943445 1730dd810f27fdefcac730fcab75814b7286002ecf541af5cdf7875440203215 24091770185844 ff4136b6b6a244ec VALID :-) 0000000000095d18875acd4a2c2a5ff476c9acf283b4975d7af8d6c33d119c74 < 00000000000baef6895d630131521d65d984555906990f43f352be4350291f93 where 00000000000baef6895d630131521d65d984555906990f43f352be4350291f93 = 2^256 / 24091770185844 and 0000000000095d18875acd4a2c2a5ff476c9acf283b4975d7af8d6c33d119c74 = ethash(f5afa3074287b2b33e975468ae613e023e478112530bc19d4187693c13943445, ff4136b6b6a244ec) with seed as 1730dd810f27fdefcac730fcab75814b7286002ecf541af5cdf7875440203215 (mixHash = 47da5e47804594550791c24331163c1f1fde5bc622170e83515843b2b13dbe14) SHA3( light(seed) ) = 35ded12eecf2ce2e8da2e15c06d463aae9b84cb2530a00b932e4bbc484cde353
礦工的 GPU 將遍歷一系列隨機 Nonce。這個 Nonce,結合 Seedhash 和 Header-hash 使用雜湊函式需要計算一個低於 Target 的數字。如果這個計算的數字低於目標值,礦工已經成功挖出一個區塊,區塊詳情將送出給乙太坊網路節點。
在上面的範例中,計算出的 Ethash 雜湊值大於目標,因此是一個錯誤探勘的塊(在錯誤報告中提到)。
在比特幣中,目標是塊雜湊。隨著難度的增加,您會看到前導零的數量增加。
塊405390有 17 個前導零。區塊40539有 8 個前導零(2010 年開採)。
乙太坊目標有點等同於比特幣區塊雜湊。