區塊鏈共識技術二:pos共識機制
轉自https://www.jianshu.com/p/953558bb5e64
區塊鏈共識技術二:pos共識機制
上一節,我們介紹啦pow共識機制,本章將對區塊鏈另外的一些共識機制做介紹,它就是pos共識機制。
pos全稱為proof of stake,中文翻譯為權益證明,其最早使用在點點幣中,它主要是解決pow中資源浪費的問題。
一. pos的實現原理及公式
要理解pos的實現原理,我認為從pos的實現演算法公式來理解是最為直觀的,其公式為:
hash(block_header) =<target * coinage
幣齡的計算:coinage = 幣的個數*幣的剩餘使用時間
其中,coinage表示幣齡,這將意味著,幣齡越大,越容易得到答案。而其中幣齡的計算是通過挖礦者擁有的幣乘以每個幣的剩下使用時間得到,這也將意味著擁有的幣越多,也越容易得到答案。這樣,pos解決了pow中浪費資源的問題,同時挖礦者不可能擁有全網51%的幣,所以也解決了51%攻擊的問題。
二.pos的缺陷
從pos的實現原理和實現演算法公式上分析,pos很完美的解決了pow的算力以及51%攻擊問題,那麼,pos是不是真的就很完美了呢?
缺陷一:
我們再從
缺陷二:
同樣是從pos的實現演算法公式可以分析到,幣齡其實就是時間,一旦挖礦者囤積一定的幣,很久很久之後發起攻擊,這樣他也將很容易拿到記賬權,所以我們得給每個幣設計一個時間上限。
缺陷三:
設計時間上限後,雖然解決掉了部分挖礦者囤積幣的缺陷,從公式中仍然看到還會面臨一個問題,也就是幣的數量這個因素還是會影響我們拿到記賬權,很多挖礦者還會囤積代幣,給代幣造成流通上的缺陷。目前有些平臺引入幣齡按時間衰弱的方案來解決這一缺陷(例如:瑞迪幣)。
缺陷四:
接下來讓我們來看看pos共識機制還有哪方面的不足,即使上面的各種缺陷都多少有些解決方案,但例如挖礦者挖一段時間後離線,此時,時間將不納入幣齡減弱計算,這樣,挖礦者通過離線時間長來囤積挖礦,同樣面臨災難。
三.pos的發展歷程
由於pos存在以上四大缺陷,所以pos的發展歷程經歷了三個版本,即pos1.0、pos2.0以及pos3.0,其中pos2.0在演算法公式中使用的是幣的數量,這樣,上述缺陷二到四就不再是問題,可這樣以後卻導致了pos共識機制面臨了無成本利益的問題(即 nothing at stake),這也將意味著很容易產生分叉。
四.casper協議
第三章節我們說到pos的發展歷程時,提到其為了解決其中4個缺陷,引出很多版本,也就是使用了pos2.0,也會無法避免的引發無成本利益導致很容易分叉的問題,而以太坊的共識機制就是使用的pos共識機制,那麼我們來看看以太坊是如何解決這個問題的?
1.什麼是無成本利益關係問題
在解決無成本利益關係這個問題前,我們先來看看什麼是無成本利益關係問題,因此,我們可以先模擬下這種場景,如下圖所示:
區塊鏈分叉圖
假設我們處在上面的這種情況下,有一條藍色的主鏈和一條紅色的從主鏈中分出來的鏈條,如何禁止一個惡意的礦工在紅色區塊上挖礦然後推動一次硬分叉(Hard Fork)呢?
在一個工作量證明系統上,這一風險是可以被減輕的。
假設惡意礦工想在紅色鏈上挖礦。即便她投入了她所有的雜湊算力,也不會有任何礦工加入她在新鏈上挖礦。每個其他人都將繼續在藍色鏈上挖礦,因為在最長的鏈上挖礦收益更可觀,而且沒有風險。
記住,工作量證明在資源方面是非常昂貴的。對一個礦工來說,花費許多資源在一個將會被網路拒絕的區塊上是沒有任何意義的。因此,鏈分裂在一個工作量證明系統中是被避免了的,因為攻擊者將不得不付出大量金錢。
但是,當你把這種情形放到到權益證明下的時候,事情看起來就有些不一樣了。如果你是一個驗證者,你可以簡單地把錢投到紅藍兩條鏈上,完全無需擔心間接的不良後果。不管發生什麼事,你都總是可以贏,不會失去任何東西,不管你的行為有多惡意。
這就是所謂的“無成本利益關係(Nothing at Stake)”問題,也是以太坊必須解決的問題。他們需要一種協議,可以實行權益證明,同時減少“無成本利益關係”問題。
2.引入casper協議解決無成本利益關係問題
Csaper是以太坊選擇實行的PoS協議,既然有人惡意去使得我們的區塊鏈產生分叉,那麼我們想方設法去對惡意製造者加以懲罰,這樣不就可以解決我們說的無成本利益關係問題了嗎?Csaper協議正式奔著這樣的做法去實現的,那我們來看看Csaper是如何去做的呢?
i. 驗證者押下一定比例的他們擁有的以太幣作為保證金。
ii.然後,他們將開始驗證區塊。也就是說,當他們發現一個可以他們認為可以被加到鏈上的區塊的時候,他們將以通過押下賭注來驗證它。
iii.如果該區塊被加到鏈上,然後驗證者們將得到一個跟他們的賭注成比例的獎勵。
iV.但是,如果一個驗證者採用一種惡意的方式行動、試圖做“無利害關係”的事,他們將立即遭到懲罰,他們所有的權益都會被砍掉。
正是利用了這樣的對賭協議,幫我們對惡意製造者加以了懲罰,使得我們的區塊鏈儘量保障不會產生分叉。