由於所有事務都有時間戳,我們需要在對等網絡上實現分布式時間戳伺服器。這需要一些額外的實現,這是我現在將要描述的工作的證明。現在,我們在每個塊中再添加一個名爲Nonce的項,如下圖所示−
Nonce是一個數字,使得塊的散列滿足某個條件。這個標準可以是生成的散列的前導四位數必須爲零。
因此,生成的散列看起來像是00001001010xxx。通常,miner從Nonce值0開始並不斷遞增,直到生成的散列滿足指定的條件。
請注意,散列生成是隨機的,並且超出了您的控制範圍—也就是說,您不能強制散列函數生成特定的散列。因此,可能需要多次疊代,直到生成包含四個前導零的所需散列。比特幣系統中生成塊的預期時間爲10分鐘。一旦礦工成功地開採了這個區塊,他就會在系統中釋放這個區塊,使之成爲這個鏈中的最後一個區塊。
請注意,有多個礦商競相生成合法區塊。比特幣系統通過給第一個成功的礦工一些比特幣來獎勵他。一般來說,擁有更多計算能力的礦工可能是早期的贏家。這會導致擁有巨大處理能力的人對整個系統進行攻擊。在本教程結束時,我將描述這些攻擊以及如何減輕這些攻擊。