一個區塊的結構如下:
要理解工作量證明,就需要理解幾個簡單的概念。
難度值:
難度值(difficulty)是礦工們在挖礦時候的重要參考指標,它決定了礦工大約需要經過多少次雜湊運算才能產生一個合法的區塊。比特幣的區塊大約每10分鐘生成一個,隨著礦工數量的增加或者減少,需要動態調整難度值,維持比特幣的出塊速度。
目標值:
目標值 = 最大目標值 / 難度值
其中最大目標值為一個恆定值: 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
雜湊計算:
將上面區塊中區塊頭部分作為工作量證明的輸入,透過變更其中的nonce欄位,不斷進行雙重SHA256計算,即SHA256(SHA256(Block_Header)),將得到的結果值與上面計算出的目標值進行比較,如果小於目標值,則工作量證明完成。
進行得計算沒有捷徑,只能透過不斷的重複計算來驗證,因此你所使用的計算裝置的計算能力越強,那麼你算出最終解的可能性就越大。當你擁有全網n%的算力時,你就有n/100的機率找到最終合理解。
從數學角度來考慮,你的算力決定你挖到比特幣的機率。但是也存在如中彩票一樣的好運氣,即你的算力很低也挖到比特幣。但是從大量資料的角度考慮,你挖比特幣的機率最終會收縮到你的算力/全網算力這個標準。
一個區塊的結構如下:
要理解工作量證明,就需要理解幾個簡單的概念。
難度值:
難度值(difficulty)是礦工們在挖礦時候的重要參考指標,它決定了礦工大約需要經過多少次雜湊運算才能產生一個合法的區塊。比特幣的區塊大約每10分鐘生成一個,隨著礦工數量的增加或者減少,需要動態調整難度值,維持比特幣的出塊速度。
目標值:
目標值 = 最大目標值 / 難度值
其中最大目標值為一個恆定值: 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
雜湊計算:
將上面區塊中區塊頭部分作為工作量證明的輸入,透過變更其中的nonce欄位,不斷進行雙重SHA256計算,即SHA256(SHA256(Block_Header)),將得到的結果值與上面計算出的目標值進行比較,如果小於目標值,則工作量證明完成。
進行得計算沒有捷徑,只能透過不斷的重複計算來驗證,因此你所使用的計算裝置的計算能力越強,那麼你算出最終解的可能性就越大。當你擁有全網n%的算力時,你就有n/100的機率找到最終合理解。
從數學角度來考慮,你的算力決定你挖到比特幣的機率。但是也存在如中彩票一樣的好運氣,即你的算力很低也挖到比特幣。但是從大量資料的角度考慮,你挖比特幣的機率最終會收縮到你的算力/全網算力這個標準。