以太坊合並正在進行,但權益證明(PoS)機製的啟動時間已經被一次又一次的推遲。
以太坊合並是指將現有的工作量證明(PoW)共識機製轉換成權益證明(PoS)共識機製,挖礦的獎勵將由參與者質押及數字資產的多少來決定,而不再是電力和資源密集型的算力決定。為了保證以太坊順利合並,礦工轉而使用權益證明,以太坊決定增加炸彈難度機製確保以太坊合並更加順暢。
難度炸彈機製設置之後,PoW 網絡的挖礦難度將隨著時間的推移呈指數級增長,從而減少礦工的 ETH 獎勵,最後 PoW 網絡停止生產區塊,所有礦工只能切換到 PoS 網絡。
下圖中的每一個波峰都代表難度炸彈對挖礦難度的沖擊。由於難度炸彈在合並過程中不斷被推遲,這種波動已經消失了相當一段時間了。
來源:Etherscan
長期以來,以太坊高昂的 Gas 費和緩慢的網絡交易速度被用戶所詬病,而 PoW 共識機製可以幫助以太坊解決這些問題。
本文將解釋 PoS 共識機製的歷史以及以太坊合並中遇到的困難。
快速了解新的共識機製
每一個區塊鏈網絡上存在很多節點,共識機製作用協調這些節點,讓不同的節點之間對產生的新區塊達成共識。共識機製是分布式網絡能夠順利自運轉的關鍵所在。
共識機製通常很復雜,要想快速了解一種新的共識機製,只需要回答:
- 新的區塊由誰提出?
- 區塊鏈如果出現分叉,決定誰是主鏈的要素是什麽?
PoW 共識機製概述
在 PoW 共識機製中,礦工反復嘗試求解一種基於哈希算法的數學難題。首先解出的礦工就會獲得記賬權,從而提出新的區塊。如果區塊鏈出現分叉,最長的分叉鏈將成為主鏈。如果有人想要操縱區塊鏈,攻擊者至少要達到 51% 的算力。PoW 網絡挖礦需要電力資源,同時對硬件的要求很高,有一定的成本門檻。挖礦所獲得的獎勵與其計算能力成正比。
與 PoS 相比,PoW 相對簡單。因為 PoW 不需要涉及隨機數等問題,而 PoS 需要使用隨機數來隨機選擇區塊提議者。
PoS 共識機製詳解
以太坊合並過程中,以去中心化的方式鼓勵更多的節點加入網絡,因此需要更加復雜的協議來支持數千個節點的點對點通信,保障網絡的正常運行。
PoS 共識機製即權益證明機製,節點需要在網絡上質押原生代幣。質押代幣越多,節點越有可能產生區塊。PoS 共識機製對硬件要求不高,但是需要資金完成質押。如果節點出現作弊情況,網絡將立即削減節點所質押的代幣。由於節點不需要花費電力資源和使用高端硬件設備,PoS 網絡具有可持續性、更高效的反應機製、更高的 TPS 和安全性,因此大多數網絡都會采用 PoS 共識機製。
PoS 的兩個階段
PoS 經歷了兩個階段的發展,PoS 1.0 是基於區塊鏈的共識機製,而 PoS 2.0 是基於 BFT(拜占庭錯容)的共識機製。
- PoS 1.0 共識機製: PeerCoin、NextCoin、BlackCoin 和 Ethereum Serenity。
- PoS 2.0 共識機製:Ethereum 2.0、Tendermint 和 Cosmos 等項目。
PoS 1.0
在 PoS 1.0 階段,大多數 PoS 機製:
- 節點質押代幣
- 隨機選擇一個節點產生新的區塊,節點產生新區塊的概率與質押代幣的數量成正比
在這個過程最重要的是隨機數的生產,如果隨機數的生成是基於時間戳和哈希算法,那麽節點有可能會通過影響隨機數生產的方式來增加自己再次被選為區塊提議者的概率,從而產生新的區塊。
攻擊向量
黑客可以通過攻擊向量訪問計算機或網絡服務器,以傳遞有效負載或惡意結果。攻擊向量使黑客能夠利用系統漏洞,可能導致資產被盜。常見的攻擊向量有:
- Staking grinding:區塊提議者執行一些計算或采用其他步驟來試圖將隨機性偏向於他們自己,以此來獲得更多生成區塊的機會。
- Nothing at stake:在 PoS 網路中,節點不需要額外的機會成本進行挖礦,所以會在每一個競爭分支上進行挖礦以最大化他們的獎勵。但這對網絡的穩定性是有害的。
- Long-range attack:早期礦工可能追溯早期版本的區塊鏈,容易造成分叉。
PoS 2.0
PoS 2.0 采用的是 BFT,其目標是在不同節點之間達成共識。
在所有節點中,通過隨機算法選出主節點,可以提出提案和通訊。其他節點中存在惡意節點,即拜占庭節點。拜占庭節點為了阻撓真實信息的傳遞及共識的達成,會向各個節點發送前後不一致的信息,通常以這種方式作弊:
- 未返回結果
- 以錯誤的結果回應
- 以故意誤導的結果回應
- 以不一致的信息回應
除了拜占庭節點外其余節點均為誠實節點,還有一種最困難的場景主節點是拜占庭節點。
BFT 還有其他限製:
- 節點只能對等通信
- 節點保存已發送信息的日誌
點對點通信導致不同的節點會有不同的視圖,節點沒有在全局同步狀態,例如節點 A 找到 3 個新區塊的同時,節點 B 只能看見 1 個新區塊。
BFT 的主要目的是主節點提案之後,除了拜占庭節點之外的每一個節點都可以達成協議,次要目標是發現拜占庭節點。
BFT 算法介紹
現在 BFT 算法通常采用多輪投票來確保每個節點都知道提案是否被超過三分之二的節點批準。
每一輪投票都有四個步驟:
- 客戶端向主節點發送請求
- 主節點向所有節點傳遞請求
- 節點返回執行結果回應主節點
- 得到超過三分之二節點相同的結果後,主節點再把結果反饋到客戶端
下圖顯示了執行過程的 5 個節點。其中 C 是客戶端,0 是主節點,3 是拜占庭節點。
在準備和提交階段,需要確保不同節點之間的同步進行。
Tendermint 有一下幾個限製:
- 點對點通信時網絡節點不能超過 100 個
- 點對點通信需要復雜設計
- 執行延遲。節點首先決定新區塊,然後再執行新區塊的所有信息。雖然單個交易執行可以正常工作,但一次執行所有交易可能會導致雙花問題。
編者註:Tendermint 是用於在多個節點上安全且一直地復製應用程序的軟件。即使多大三分之一的節點以任意方式發生故障,Tendermint 也能正常工作。Tendermint 被設計為易於使用、易於理解、高性能且適用於各種分布式應用程序。
目前的 BFT 算法可以在以下條件中達成一致:
- 4 個節點中最多有 1 個是拜占庭節點
- 25 個節點中最多有 8 個是拜占庭節點
- 100 個節點中最多有 33 個拜占庭節點
網絡運行狀態可分為一下集中情況。假設 f 是拜占庭節點的個數,網絡匯總共有 3k+1 個節點,k 是隨機整數。
- f ≤ k,網絡穩定
- k < f < 2k+1,部分節點可能無法達成共識。區塊鏈暫停
- f ≥ 2k+1,存在安全隱患
Ouroboros 算法機製
與 BFT 算法相比,Ouroboros 能夠支持更多的節點,同時支持節點隨時進出。Ouroboros 比 BFT 更加去中心化和靈活,但是反應時間更長。使用 Ouroboros 算法機製的有 Cardano and Mina。
Ouroboros 算法機製將時間劃分為不同的時段,在每個時隙之中使用 VRF(可驗證隨機函數)生成隨機數,並用生成的隨機數來決定新的區塊提議者。質押更多的節點更有可能成為區塊提議者。
當出現分叉時,Ouroboros 將使用預定義的選擇規則確定主鏈。例如它可能會選擇最「密集」的鏈為主鏈,同時預定義選擇規則是可以通過投票來協商的。
展望未來
區塊鏈網絡在去中心化和性能之間做出平衡,從 PoW 切換到 PoS 表明區塊鏈對 TPS、去中心化、代幣經濟學和交易速度有更高的追求。圍繞這四個特征,未來將出現更多的創新。
GameFi 和 DeFi 應用中的代幣經濟學創新可以在共識機製應用。當前的質押機製簡單且過時,例如許多 DeFi 項目普遍使用 Ve 代幣,以提高質押比例並降低流通量。用戶需要將項目代幣質押一點時間後可以獲得 VE 代幣代幣,質押的時間越長,獲取的 Ve 代幣就越多,通過這種方式可以提高質押率。雙代幣模式也是很好的創新方向,獎勵代幣和治理代幣分開可以獲得更多的價值,許多成功的項目通過雙代幣模式減少市場拋售壓力。
應用程序的叠代速度遠比底層協議(如共識機製)快的多,因此應用程序的創新很難應用到底層協議上。雖然模塊化可以解決這個問題,但存在一定風險。
參考文獻
https://www.geeksforgeeks.org/practical-byzantine-fault-tolerancepbft/
http://muratbuffalo.blogspot.com/2020/01/practical-byzantine-fault-tolerance.html
https://medium.com/@carloslopezdelara/whats-ouroboros-the-cardano-proof-of-stake-protocol-ad4b958e152e
https://minaprotocol.com/blog/how-ouroboros-samasika-upholds-minas-goals-of-decentralization
https://iohk.io/en/research/library/papers/ouroboros-a-provably-secure-proof-of-stake-blockchain-protocol/
https://arxiv.org/pdf/1807.04938.pdf
http://www.cs.cmu.edu/~dga/15-712/F13/papers//castro99.pdf
http://muratbuffalo.blogspot.com/2020/01/practical-byzantine-fault-tolerance.html