簡介
難度目標是使整個網路的計算力大致每 10 分鐘產生一個區塊所需要的難度數值。難度目標由區塊鏈網路根據過去兩周的計算結果,自動重新計算未來兩周的難度目標。難度目標由區塊中的 SHA 256 Hash 值所決定,通過控制區塊標頭(Block Header)SHA 256 Hash 值應恰好落在可控範圍目標區間之內來增加或減少難度目標。
區塊中的難度目標
區塊的格式如圖所示:
這是區塊鏈技術基本都具有的一些頭部信息,包括4位元組的版本號、32位元組的上一個區塊的哈希值、32位元組的Merkle根、4位元組的時間戳(當前時間)、4位元組的難度目標以及4位元組的隨機數。
在工作量證明中的套用
PoW: Proof of Work,工作量證明。這個是比特幣、萊特幣等貨幣型區塊鏈使用的共識機制。類似於現實中的畢業證、駕照等,來證明你具有某種能力。可以認為PoW徹底解決了分散式一致性的問題。其過程以比特幣為例,如下:
這個思路犧牲了一部分一致性來保證區塊鏈的健壯性,即使只有一個結點,區塊鏈系統依舊可以運行。同時也保證了區塊鏈的安全性,除非51%的結點被控制。但一方面如果想要控制這么多節點,不僅要具有很強的算力,還得相當於重構一個區塊鏈網路,另一方面區塊鏈會給予實現工作量證明的節點以獎勵。權衡收益和破壞的成本,基本可以杜絕這種51%攻擊(博弈學的使用)。
此外,還需要提到區塊頭中的難度目標這個值,此值與計算耗時是反比的,即此值越大,那么計算越容易。以比特幣為例,為了控制每十分鐘產生一個區塊的速率,需要根據統計數據動態調整難度目標從而可以寶成區塊的生產速率。
PoW雖然很好的解決了分散式一致性問題,但其非常的耗費計算力,浪費電。