1. 程式人生 > >POW 與 POS 的本質和優劣

POW 與 POS 的本質和優劣

在這裡插入圖片描述

本質上,POW 和 POS 都是一種隨機選擇下一個區塊上傳者的方式。然而,建立一個每個人被選中機率相等的演算法其實是非常難的事情,同時,這種演算法只是聽上去很美,而在現實中這種演算法卻稱不上公平——因為你怎麼在虛擬世界裡確定一個人的身份?你怎麼知道一個 ID 背後的是真實的使用者還是女巫攻擊的指令碼?

所以說,與其耐心去驗證每一個人的身份,不如干脆根據某種無法偽造的東西進行隨機,於是才有了工作證明和權益證明,以及許許多多的其他證明。

POW 就是根據計算能力隨機,POS 根據擁有財產隨機,這就是這兩個共識機制的本質。

但是,另一個問題是,POW 是一個在比特幣出現之前就有了的東西,而因為比特幣的成功,POW 基本上特指比特幣的 POW。但相反,POS 是個新東西,目前並沒有成熟的 POS 應用,所以,當提到 POS 的時候,並不是指某一個演算法,而是一類,而且,這類演算法目前各有優劣。並且,目前為止,沒有一個演算法的可靠性通過了實踐的檢驗。所以,要對比 POW 和 POS 的優劣,我只能以 POS 這一大類為例。以上基本上所有其他的答案,其實都在說 PPCoin 的 POS,也就是最早的 POS,那個東西是有根本缺陷的,例如什麼是幣齡攻擊(save-up attack),都僅僅是對 PPC 適用,而並不是 POS 的問題。

下面說一下優劣:

POW 機制:

優勢:可靠(或者叫安全,我不喜歡用安全這個詞),這就是它最大的優點,因為它是目前唯一接受了實踐檢驗的公有鏈演算法。

劣勢:浪費算力,對於 51% 攻擊有潛在隱患——攻擊者並不需要擁有比特幣,所以如果要做 51% 攻擊,所需要的花費跟挖礦難度相關而不是直接跟比特幣價格相關(雖然說挖礦難度會和比特幣價格相關),所以,如果挖礦公司的市值不如比特幣的價格的話,比特幣面臨 51% 攻擊的風險就會變大。

POS 機制:

優勢:不需要浪費算力,同時,進行 51% 攻擊的代價更高,因為想要進行 51% 攻擊的話,你得擁有 51% 的貨幣。也就是說,這東西越值錢,攻擊的成本就越高。

劣勢:

1,權益粉碎攻擊(nothing-at-the-stake attack),上面有人說 POS 是社會主義,我是不贊同的。我覺得 POS 就是完全的資本主義——你錢越多,你擁有的權力就越大。當然,這個也並不是沒有道理,因為在其中利益越多的人,就更願意去維護這個幣的系統,於是他們手中的幣才能更有價值。因此,他們並不願意去進行惡意攻擊,因為那樣實際上他們手中的幣也會受害,這就是 POS 能夠更有效地防禦 51% 攻擊的原因。換句話說,錢越多責任越大。

但反過來講,錢越少責任越小。假設你只有 1% 的錢,你成功的概率只有 1%,但是你儘可以去嘗試分叉,因為這並不消耗任何資源。也就是你在最長鏈上挖礦的同時,也去創造一個只在自己的區塊上挖礦的分支。放在 POW 裡,建立這個分支完全得不償失因為你浪費了大量的算力。然而在 POS 裡,如果這個分支不被接收,實際上你什麼都沒損失。於是,即便是誠實的礦工也可能回去偷偷地進行這種分叉嘗試。儘管他們知道這種嘗試會造成整個幣的價值降低,但是他們的錢很少,他們並不在乎,這就是所謂的平凡人悲劇(tragedy of the commons)。

對於這種攻擊,基本上所有的新的 POS 演算法都有應對的機制,例如以太坊的 casper 裡的slasher,基本概念就是如果有人嘗試了這種攻擊,其他人發現了可以公佈證據然後對這個人進行懲罰。

2,理性分叉。很多地方把這個合在權益粉碎攻擊裡了,但我覺得必須要分出來說。權益粉碎攻擊是主動的,而這個是被動的——假設有人做了權益粉碎攻擊進行了分叉嘗試,誠實節點理應不予理會,因為他們能看到這種分叉被接受的機率小。對於 POW 來說,你不會在被接收機率小的分叉(例如不是最長鏈的分叉)上挖礦,因為那樣浪費算力。但對於POS 來說,在那上面挖礦沒任何損失,反而是不在那上面挖礦,萬一這條鏈被接收了,你就會受到損失。

於是,即便是誠實節點,如果它足夠理性,那麼它也會在所有它收到的鏈上同時挖礦。POW 裡,沒人挖的分支很快就會變成孤塊被丟棄,但在 POS 裡,如果整個網路足夠理性,會出現的情況反而是每條分支都會永遠存在因為理性的礦工會同時在所有分支上挖礦。這是我覺得 POS 最大的缺陷,就是如果只用最長鏈共識的話,POS 本身是沒法應對分叉的,必須通過懲罰。而這種懲罰不光是基於作惡,而是違反節點逐利本性的。

放在真實社會中的話,1 就好比是搶劫,抓了判刑沒有任何問題。可是 2 就像是投資,把他們也抓了判刑,這就有點過了。