Proof-of-Work
黃皮書中的挖礦“動態調整目標”是如何表述的?
上述列表中存在的一個在其他系統中沒有的有效性條件是對“工作量證明”的要求。精確的條件是每個塊的雙 SHA-256 雜湊值(被視為 256 位數字)必須小於動態調整的目標值,截至撰寫本文時,目標值約為****2187。
乙太坊白皮書- §比特幣和現有概念簡介 - 挖礦
黃皮書中**動態調整的目標是如何表達的?我的意思是,黃皮書中的數學術語是什麼?它與 H d相關嗎?
difficulty
是的,在乙太坊區塊鏈中,難度和動態調整的目標是相關的(難度是用來計算一個目標的。)。基本上為了保持乙太坊網路按預期執行,它需要保持平均出塊時間(大約 14 秒)。
由於節點的數量不斷變化,並且尋找有效雜湊的策略是列舉找到它的時間完全隨機的可能性,因此平均區塊時間由 Ethash 算法控制,使其難以生成如果在比平時更短的時間內找到最後一個塊,則阻止,如果在更短的時間內找到它,則更容易。
通過動態調整下一個塊的雜湊值應小於該目標的目標來完成使塊生成變得困難或容易的過程。該目標也以該塊生成時間的難度表示。
根據這裡的 Github Ethereum wiki 中解釋的 Ethash 算法,
礦業
探勘算法定義如下:
def mine(full_size, dataset, header, difficulty): target = zpad(encode_int(2**256 // difficulty), 64)[::-1] from random import randint nonce = randint(0, 2**64) while hashimoto_full(full_size, dataset, header, nonce) > target: nonce = (nonce + 1) % 2**64 return nonce
動態調整的Target是根據目前的難度計算的,在探勘過程中不斷尋找一個nonce,同時產生一個小於目標的hash。