了解比特幣的人都或多或少知道 “挖礦”,挖礦是參與維護比特幣網絡的節點,通過協助生成新區塊來獲取一定量新增的比特幣。當用戶發布交易後,需要有人將交易進行確認,寫到區塊鏈中,形成新的區塊。在一個互相不信任的系統中,該由誰來完成這件事情呢?比特幣網絡採用了 “挖礦” 的方式來解決這個問題。目前,每 10 分鐘左右生成一個不超過 1 MB 大小的區塊,串聯到最長的鏈尾部,每個區塊的成功提交者可以得到系統 12.5 個比特幣的獎勵,以及用戶附加到交易上的支付服務費用。
拿比特幣舉例,挖礦的具體過程為:參與者根據上一個區塊的 hash 值,10 分鐘內的驗證過的交易內容,再加上自己猜測的一個隨機數 X,讓新區塊的 hash 值小於比特幣網絡中給定的一個數。這個數越小,計算出來就越難。系統每隔兩週會根據上一周期的挖礦時間來調整挖礦難度,來調節生成區塊的時間穩定在 10 分鐘左右。為了避免震盪,每次調整的最大幅度為 4 倍。
很自然的,有人會想到,如果我有很強大的計算力,所有的塊都是我算出來了,拒不承認別人的交易內容,那是不是就能破壞比特幣網絡。確實如此,拿到 51% 的算力,就可以攻擊整個網絡了。那麼有沒有辦法防護呢?除了盡量避免計算力放到同一個組織手裡,如果覺得一個礦池掌握的算力太多,礦工應該主動換個礦池挖礦,解決這個問題有人提出了 PoS,因為 PoW 機制的安全只能來自於區塊挖礦收益,礦工的激勵來自於避免丟失區塊收益的風險,這樣 PoW 就是依靠一個大量的激勵來保證的巨大算力來運作。PoS 打破這種對稱性,不是依靠收益來保證安全,而是懲罰。礦工必須付出一大筆押金,並少量的得到獎勵,以補償他們的押金被凍結以及運行節點的開銷,但逆轉交易的最大開銷來自於大於收益幾百到上千倍的懲罰(押金被消耗)。PoS 的哲學不是 “安全來自於電力消耗”,而是 “安全來自於押金”。