標籤:比較 區塊鏈應用 asp 形式 區塊鏈技術 區塊鏈 並且 未來 經濟
上一篇我們講到了PoW共識機制,這一篇我們就來分享另外一種共識機制,PoS共識機制。
PoS全稱是Proof of Stake,中文翻譯為權益證明。這一篇我們會將PoS與PoW對比講解,協助你加深理解。
PoS的由來
PoS最早出現在點點幣的創始人Sunny King的白皮書中,它的目的就是為瞭解決使用PoW挖礦出現大量資源浪費的問題。PoS共識機制一經提出就引起了廣泛關注,Sunny King 也基於PoW的基礎架構實現了第一代PoS區塊鏈:點點幣。
PoW的具體實現有很多版本,但它們大多隻是在挖礦演算法上有所改進,主體邏輯並沒有發生質的變化。PoS包含了多個變種實現,每個變種往往會涉及區塊鏈代幣經濟模型的改動,可以說是牽一髮而動全身。
這些實現有點點幣、黑幣、未來幣、瑞迪幣,它們都推動了PoS機制的發展,PoS研究前沿還有以太坊的 Casper ,以及 Cardano 的Ouroboros。
那到底是什麼樣的機制導致PoS具有這樣的特性呢?讓我們來看一看。
什麼是PoS?
在講PoS之前,我先來講一個叫做幣齡的概念,幣齡這個概念其實很好理解,它的英文是 CoinAge,字面意思就是幣數量乘以天數。
比如你有100個幣,在某個地址上9天沒有動,那麼產生的幣齡就是900,如果你把這個地址上這100幣轉移到任意地址,包括你自己的地址,那麼900個幣齡就在轉移過程中被花費了,你的幣數量雖然還是100個,但是幣齡變更為0。幣齡在資料鏈上就可以取到,任何人都可以驗證。
我們回過頭來看看PoS究竟是什麼,區塊鏈共識機制的第一步就是隨機篩選一個記賬者,PoW是通過計算能力來獲得記賬權,計算能力越強,獲得記賬權的機率越大。
PoS則將此處的計算能力更換為財產證明,就是節點所擁有的幣齡越多,獲得的記賬的機率就越大。這有點像公司的股權結構,股權佔比大的合伙人話語權越重。
以上算是簡述了PoS的概念,實際上,PoS的發展經曆了三個版本,第一個版本是以點點幣為代幣的PoS1.0版本,這個版本中使用的是幣齡;第二個版本為代表的是黑幣(blackcoin),它使用的為PoS2.0版本,對應這個版本使用的是幣數量,相當於是財產證明,後面黑幣又升級到PoS3.0,這個版本又回到了幣齡。
PoW早在比特幣出現之前就已經應用了,而PoS是才是真正意義上為了區塊鏈而創造出來的概念。
PoS的實現原理
好了,現在我們開始講解PoS的具體實現原理吧。這一部分公式較多,如果你在收聽音頻,可以點擊文稿查看。
通過上一篇我們知道PoW挖礦的基本邏輯和步驟,我們先尋求一個nonce小於目標值,這一步用公式可表示為:
Hash (block_header) < Target
從公式中我們可以看到,PoW下所有礦工的目標值是一樣的,只要計算結果雜湊小於目標值即可,簡化來看就是前置0的個數。
而在PoS系統中,這個公式變更為:
Hash (block_header) < Target * CoinAge
我們可以看出多引入了一個變數叫做CoinAge,也就是幣齡,這裡就有意思了。
這個變數為會造成每個礦工看到的目標值不一樣,如果你的幣齡越大,也就意味著你的獲得答案越容易。這裡的Target與PoW一致,與全網難度成反比,用來控制出塊速度的。
例如當前全網的目標是4369,A礦工的輸入的幣齡是15,那麼A礦工的目標值為65535,換算成十六進位就是0xFFFF,完整的雜湊長度假設是8位,也就是0x0000FFFF。
而B礦工比較有錢,他輸入的幣齡是240,那麼B礦工的目標值就是0x000FFFFF。你如果仔細觀察肯定會發現,相比A礦工的目標值,B直接少了一個零。即如下:
- A 礦工 Hash( block_header ) < 0x0000FFFF
- B 礦工 Hash( block_header ) < 0x000FFFFF
所以B礦工獲得記賬權的機率肯定要比A高。
具體程式碼分析這裡就不講解了,這裡需要幣齡作為輸入,如果我們寫範例程式碼也只是一個簡單的參數,PoS需要放到區塊鏈的語境中才能運作。
PoS的相關問題
通過上述的介紹我們知道:PoS似乎完美地解決了PoW挖礦資源浪費的問題,甚至還順帶解決了51%攻擊的問題,這裡可以順便講一下51%攻擊是什麼,它是指PoW礦工如果積累了超過51%的算力,則可以一定程度篡改賬本。
這裡順便科普一下,什麼是51%攻擊呢,我們發現,礦工挖礦的成本不再是物理裝置和電費,而是虛擬代幣,它的邊際成本幾乎為零,本質上PoS讓挖礦者和使用者合二為一了。
這也意味著如果挖礦者發起51%攻擊,就需要擁有全網51%的幣或幣齡,這幾乎不可能辦到,即使你成功地實施了51%攻擊,那麼也意味著作為全網最大的持幣大戶的你,損失也會最大。
PoS看起來相當完美,其實並不然,PoS有很多缺陷。
PoS遇到的第一個問題就是幣發行的問題。一開始的時候,只有創始區塊上有幣,意味著只有這一個節點可以挖礦,所以讓幣分散出去才能讓整個網路壯大,那麼如何分散出去又是另外一個難題了。
所以早期PoS幣種基本都採用了分階段挖礦,有的叫混合挖礦,其實,我並不同意混合挖礦這個說法,混合就意味著同時。很多幣種其實是分了階段的,即第一階段是PoW挖礦,到第二階段才是PoS挖礦。
隨著ERC20類型的標準合約代幣的出現,這個問題被解決了,不再需要第一階段改成PoW,也可以將代幣分散出去。
第二個問題是由於幣齡是與時間掛鈎的,這也意味著使用者可以無限囤積一定的幣,等過了很久再一次性挖礦發起攻擊;所以解決方案是:PoS機制需要引入一個時間上限來控制時間因素的自然增長。
第三個問題是雖然引入了時間上下限,使用者還是傾向於囤積代幣,這會造成幣流通的不充分;基於此,所以瑞迪幣引入了幣齡按時間衰減,構造了權益速度證明,鼓勵使用者流動代幣,而不是傾向於囤積代幣。
第四個問題是離線攻擊,即使引入了時間上下限,時間仍然是自然流動的,也就是可以不需要求挖礦節點長時間線上。挖礦是可以離線的,這簡直是災難,所以任意一個PoS機制的實踐形式都必須避免這個問題,因為網路節點數量的多少直接關係到區塊鏈網路的健壯性。
當然這些問題都不是致命問題,還記得我們一開始提到了PoS經曆了三個版本,而第二個版本PoS 2.0使用的不是幣齡,而直接是幣的數量。
這會造成完全不同的結果,上述第二、三、四問題都不存在了,似乎看起來直接使用幣的數量會更好一些,但卻出現了整個PoS機制的致命問題。
這個問題叫做Nothing at Stake,翻譯過來叫做無成本利益問題。大體的意思在PoS系統中做任何事幾乎沒有成本,比如在PoS系統上挖礦幾乎沒有成本,這也就意味著分叉非常方便。
方便到什麼程度呢,每個誠實礦工在產生孤塊的時候都可以繼續挖下去,反正也沒什麼成本,反正分叉鏈和主鏈都可以同時挖,也就是任何持幣較少的使用者都可以嘗試分叉,並且把分叉鏈廣播出去。
這個時候如果其他誠實礦工看到了,第一反應也是沒有成本,那麼咱們也來挖吧,說不定什麼時候就值錢了,意思就是說任何逐利的礦工並不會使這個系統變得更強壯穩定,而是更加的混亂。
無成本利益問題無論以幣齡還是幣數量作為PoS的參數,都無法避免。
而PoW則沒有這樣的問題,我們回到PoW系統中來看,因為任何的分叉都會造成挖礦成本直接變成負收益,所以這會抵抗分叉的產生,礦工傾向於跟隨“最長”的鏈。
由於以太坊部分採用了PoS共識,它的名字叫做Casper,它必須解決上述無成本利益問題攻擊。所以Casper協議要求PoS礦工需通過抵押保證金的方法對共識結果進行下注,具體實踐結果我們還需要拭目以待。
總結
最後我們來總結一下PoS共識機制,PoS的區塊鏈系統無需外部物理輸入,所以它相比PoW更為環保不費電,並且礦工就是使用者,這會在一定程度上抵禦了51%攻擊,所以基於PoS機制的數字貨幣屬於理想狀態的數字貨幣。
PoS的缺點是缺乏工業級的區塊鏈應用,從邏輯上來看有點迴圈自證明的味道,就是用自己的幣來維護系統的安全,而幣的安全性是由系統保證的,所以現階段PoS共識機制往往不是獨立啟動並執行,而是混合了PoW一起運行,這就可以彌補PoS的缺陷。
PoS共識機制目前也出現了礦池,也可能會出現中心化挖礦的風險。
雖然PoS共識機制未來變數依然很多,但它的可塑性比PoW好,技術上的探索空間大,目前PoS幣種相比較PoW幣種風險也較高。
那麼有哪些區塊鏈項目使用了PoS共識機制呢?你可以給我留言,我們一起討論,感謝你的收聽,我們下期再見。
第13講 | 深入區塊鏈技術(五):PoS共識機制