我最愛的 Ethereum 馬上就要 the Merge 啦。 🎉 proof-of-stake 即將到來!這個時間點不妨懷念一下 PoW。
PoW 想必大家都聽的多,但究竟他的原理是什麼? 這篇短文就嘗試快速閒聊一下這個知識點。
PoW 即工作量證明,是一種由 BitCoin 開始採用的共識機制。用最簡單的語言描述,就是一堆礦工利用自己的算力,嘗試用一種類似暴力破解的方式解決一個區塊鏈網路給出的數學問題,最快找到答案的礦工,贏得勝利,獲得新區塊打包權,取得獎勵。
再深入一點介紹,我們知道每一個 block 都有一堆交易信息,這堆交易資料會得出一個固定的 Hash A,這個固定 Hash A 再加上一個無意義 nonce , 則可以再得到另外一個 Hash B,
好,如果我說, 我需要計算得出 Hash B 的結果必須是 0000 四個零開頭的數字,換句話說就是要小過一個給定的值, 那麼因為 Hash A 已經固定,則必須透過不斷更改 nonce, 從而得到滿足要求的結果。這其實就是一個類似暴力運算過程,不斷循環遞歸 nonce 數值,得到不同的 Hash B,直至 Hash B 滿足網路給出的要求為止。 這裡所說的「網路給出的要求」也就是 「區塊難度」的概念。 這個 「區塊難度」,正如其名就是定義了這個數學問題的「難度」,難度越低,取得答案所需要的時間越短,需要的算力越低。說白了就是定義了為了找到正確的 Hash B,大約需要做出多少次 Hash 運算。用以太坊為例, 「區塊難度」會隨著上一個區塊的「解題時間」而動態變化,如果礦工得到結果太快,則難度會提升,反之難度則會下降。
其實大概已經解釋完了。。。 理論其實很簡單。
如果想要有一個更直觀的理解,誠意推薦大家看看這個史詩級的 Video。
若想再具體一點,用以太坊為例,目前採用的 mining 算法是 ETHASH,具體可以參考官網的解釋。下圖是引用 researchgate.net 上的圖表解釋 Ethash 的運算過程。