PoS(Proof of Stake)本質上是一種持有一定幣量,而獲得挖礦資格和收益的共識協議,在最初 Proof of Stake 2013年被提出來後, Nothing At Stake (無利害關係)的問題和 Long-Range Attack(遠端攻擊)問題是經常被談論的 Proof of Stake 共識協議的挑戰。想更深入瞭解 PoS?知道是什麼,還需要瞭解為什麼。
今天我們先來看看 Nothing At Stake problem (無利害關係)。
Nothing At Stake, a situation where someone loses nothing when behaving badly, but stands to gain everything.
Nothing At Stake 問題的本質是 「作惡無成本,好處無限多」。具體來講,是當在 PoS 共識系統出現分叉(fork)的情況時 ,出塊節點可以在「不受任何損失」的前提下,同時為多條鏈出塊,從而有可能獲得「所有收益」。
這就好比有個窗口,排隊既可領錢,當只有一個窗口時,大家會乖乖的排隊,每人都有,其樂融融。
但是當第二個窗口出現時。大家知道,最終這兩個窗口有可能只有一個領到的是「真錢」,另外一個的錢會變成廢紙。但排隊的你不知道哪個窗口會是發「 真錢」 的窗口。所以你會怎麼做呢? 你可能會下個跑腿訂單,幫你分身同時去另外一個窗口排隊。
但是,在實際 PoS 出塊節點時,此時的分身無成本,只是電腦做一個運算而已。
這會造成什麼亂象呢?
聰明的出塊節點會有動力產生新的分叉,支持或發起不合法交易,其他逐利的出塊節點會同時在多條鏈(窗口)上排隊出塊支持新的分叉。隨著時間的推移,分叉越來越多,非法交易,作惡猖狂。區塊鏈將不再是唯一鏈,所有出塊節點沒有辦法達成共識。
另外,無利害關係問題還讓雙花攻擊更容易。不像 PoW 51% 的攻擊那樣,PoS 的攻擊節點只需要多一定的算力 (有時候僅僅1% )就有可以進行攻擊。例如一個質押總量佔流通幣量只有30%的幣,攻擊成本比 60% 質押率的網路更容易攻擊。
有多容易呢?如下圖所示,仍然是 A、B、C 三個出塊節點,假如 A是攻擊節點,它在產生分叉時創造兩筆交易。一筆將 X 個幣發給自己的一個錢包地址,同時在另外一個分叉上將 X 個幣發到交易所。B、C出塊節點因 Nothing At Stake 所以同時會在兩條分叉鏈上出塊。
當交易被交易所確認後, A 將 X 個幣出售兌換成隱私幣種,移出交易所。之後 A 透過增加質押幣量,或創建多個其他出塊節點的方式提升出塊權重,只在分叉鏈繼續出塊。此時最長鏈很明顯,且逐漸拉開差距,會最終成為最長鏈,A 成功將 X 個幣雙花。
本文為巴比特資訊授權刊登,原文標題為「談 PoS,怎能不懂 Nothing At Stake ?」