區塊鏈 - 工作量證明



由於所有交易都帶有時間戳,我們需要在點對點網路上實現一個分散式時間戳伺服器。這需要一些額外的實現,那就是我將要描述的工作量證明。對於每個區塊,我們現在新增一個名為**隨機數(Nonce)**的專案,如下面的圖所示:

Proof of Work

隨機數(Nonce)是一個數字,使得區塊的雜湊值滿足某個特定條件。這個條件可能是生成的雜湊值的前四位必須為零。

因此,生成的雜湊值將類似於 000010101010xxx。通常,礦工從隨機數(Nonce)值為 0 開始,並不斷遞增它,直到生成的雜湊值滿足指定的條件。

請注意,雜湊生成是隨機的,並且不受您的控制 - 也就是說,您無法強制雜湊函式生成特定的雜湊值。因此,可能需要多次迭代才能生成具有四個前導零的所需雜湊值。比特幣系統中生成一個區塊的預期時間為 10 分鐘。一旦礦工成功挖到區塊,他就會將其釋出到系統中,使其成為鏈中的最後一個區塊。

請注意,有多個礦工在競爭生成合法的區塊。比特幣系統會獎勵第一個成功挖到區塊的礦工,給他一些比特幣。一般來說,擁有更多計算能力的礦工可能是早期贏家。這可能會導致那些擁有巨大處理能力的人對整個系統發起攻擊。我將在本教程的最後部分描述這些攻擊以及如何緩解這些攻擊。

廣告