區塊鏈共識協議指南
已經有很多公有區塊鏈在試圖改變世界,但是要在全球範圍內運行,共享公有賬本需要一個可行、高效和安全的共識機制。
一種共識機制,向比特幣的工作量證明(Proof of Work),有兩個作用:確保區塊鏈中的下一個區塊是唯一且真實的那一個,保護系統安全防止分叉。
在工作量證明機制中,礦工通過解決極其困難的密碼學難題互相競爭來將下一個區塊(一系列交易)添加到區塊鏈中。第一個解決難題的礦工將會獲得獎勵,該礦工會獲得12.5個新產生的比特幣以及少量的交易費。
盡管比特幣的工作量證明機制本身是開創性的,但並非完美的。
常見的批評包括它需要大量的算力資源,無法很好地擴展(交易確認需要10-60分鐘),而且大多數的挖礦集中在全球電費便宜的地區。
比特幣的發明者中本聰喚醒了我們對區塊鏈潛力的認知,但是這並不意味著我們無法探索更快、更去中心化和更節能的共識機制。
以下是一些常見的替代共識機制:
權益證明(Proof of stake)
在這種類型的共識機制中,驗證者無需投入大量昂貴的算力設備來挖礦區塊,相反它們需要的是系統的代幣。
註意這個用詞‘驗證者’。因為在權益證明機制中,不會創建新的幣。相反,所有的幣在第一天就出現了,驗證者(也成為股東,因為它們持有系統的股份)只能獲得交易費。
在權益證明系統中,創建下一個區塊的機會取決於你所擁有的系統幣的比例。擁有300個幣的驗證者驗證區塊的機會大概是擁有100個幣的3倍。
一旦驗證者創建了一個區塊,區塊仍然需要寫入到區塊鏈中。不同的權益證明系統在處理時會不盡相同。例如,在Tendermint中,系統中所有的節點停止廣播活動,直到實現大多數的投票,而在其它系統中,會隨機選擇簽名者。
現在的問題是:怎麽能阻止驗證者創建兩個區塊以及廣播兩套交易費呢?以及如何阻止驗證者在這兩個區塊上簽名呢?這就是所謂的‘Nothing -at-stake’問題。參與者進行破壞行為時沒有損失。
在迅速發展的密碼學經濟領域,區塊鏈工程師們一直在探索解決這一問題的方法。一種方法就是要求驗證者將它們的貨幣鎖定在某個類型的虛擬器中。
如果驗證者試圖雙重簽名或者分叉系統,它們就會被扣除。
Peercoin是第一個實施權益證明的,緊接著是blackcoin和NXT。以太坊現在是工作量證明機制,但是正在計劃於2018年初轉向權益證明。
活動證明(Proof of activity)
為了避免惡性通貨膨脹,比特幣最終將只有2100個幣。這意味著,在某個時間點,比特幣區塊獎勵將會停止,比特幣的礦工只能獲得交易費。
一些人認為這會導致嚴重的問題,人們的行為會是利己主義,而且會破壞系統。因此,(Proof of activity)作為比特幣的一種替代激勵結構而出現了。活動證明是一種結合了工作量證明和權益證明的混合方法。
在活動證明中,挖礦是以傳統的工作量證明形式進行的,礦工互相競爭來解決密碼學難題。挖礦產生的區塊(它們更像是模板)不包含任何交易,因此獲勝的區塊只含有頭部和礦工獎勵地址。
這個時候,系統切換到權益證明。基於頭部信息,選擇隨機的驗證者來簽名新的區塊。驗證者擁有的系統種的代幣越多,它就越有可能被選擇。只要所有的驗證者都對其簽名,模板就成為成熟的區塊。
如果被選中的某些驗證者沒有完成區塊,那麽就會選擇下一個獲勝的區塊,然後選擇一群新的驗證者,以此類推,直到區塊獲得正確數量的簽名。交易費分發給了礦工和所有簽名區塊的驗證者。
活動證明的弊端在於既存在工作量證明的弊端(需要很多的能量來挖礦區塊),也存在權益證明的弊端(無法檢測雙重簽名的驗證者)。
Decred是目前唯一使用活動證明的幣種。
銷毀證明(Proof of burn)
在銷毀證明中,不需要昂貴的計算設備,而是通過將幣發送至一個地址來銷毀它們,而且這是不可復原的。通過將你的幣發送至想象中的地址,根據隨機選擇過程你獲得了在系統中進行永久挖礦的權利。
根據銷毀證明實施的不同,礦工可能會銷毀原生代幣或其它鏈的代幣,例如比特幣。你銷毀的幣越多,你獲得挖礦下一個區塊鏈的機會就越大。
隨著時間的進行,你在系統中的股份會降低,因此最終你將會銷毀更多的幣來增加你挖礦區塊的概率。(這有點類似比特幣的挖礦過程,你需要持續不斷地投入更先進的算力設備來維持算力。)
盡管銷毀證明是一個有趣的替代方案,但它仍然需要浪費能源。另外一個問題是,算力流向了那些願意銷毀更多資金的人。
容量證明(Proof of capacity)
正如上述所提到的,絕大部分的替代協議都使用了某些類型的付費參與的模式。容量證明也無例外,但是你需要支付的是硬盤空間。你擁有的硬盤容量越多,那麽你挖礦下一個區塊並獲得區塊獎勵的概率就越大。
在容量證明系統中挖礦之前,該機制會產生大量的‘plots’數據,將會存儲在你的硬件中。你擁有的plots越多,你發現下一個區塊的概率就越大。
通過投入大量的硬盤空間,你可以創建復制區塊,並分叉系統。因此仍然存在無啊識別nothing at stake的問題。
容量證明的變種高快存儲證明和。
運行時間證明(Proof of elapsed time)
芯片制造商因特爾發布了自己的共識協議運行時間證明。該系統的工作原理類似於工作量證明系統,但能量消耗很少。
而且,參與者無需解決密碼學難題,相反該機制使用了可信執行環境(TEE) – 例如SGX – 來確保區塊是以隨機方式產生的,但是無需工作量。
因特爾的方法是基於TEE提供的保證等待時間的。根據因特爾的說法,該機制可以擴展至上千個節點,而且可以有效地運行在任何支持SGX的因特爾處理器中。
該協議存在的一個問題是需要你信任因特爾 – 如果要信任第三方的話,我們豈不是又在遠離公有區塊鏈嗎?
區塊鏈共識協議指南