1. 程式人生 > >富人越富,窮人越窮,我為什麼反對PoS

富人越富,窮人越窮,我為什麼反對PoS

在這裡插入圖片描述 據摩根士丹利年初報告,2017 年比特幣挖消耗的電力與中東國家卡達年耗電相當,預計 2018 年的電力需求可能會達到 2017 年的三倍以上。

大量的電力消耗也帶來了很多爭議,很多人都嘗試在保證安全性的前提下改進共識協議。一時間,業界出現了許多新的協議,如權益證明(PoS)、委託權益證明(DPoS)等等。

這些協議中最有前景的莫過於 PoS,甚至以太坊在未來也會從工作量證明過渡到權益證明。

不過,近日 Hugo Nguyen 列舉了權益證明的幾大罪狀,實名反對權益證明。這到底是怎麼回事,讓我們一起去看看。

多角度分析 PoS 並不是什麼靈丹妙藥

很多人都在大力倡導使用權益證明,筆者看來,權益證明並不是什麼靈丹妙藥,從多個角度都能發現它的缺點。

進化心理學/歷史學

歷史上的「收藏品」或「原始貨幣」都有一個共同點,即不可偽造的成本(Unforgeable Costliness,有些人可能會將不可偽造的成本與勞動價值論混為一談,但其實它們並不是同一回事,因為僅靠消耗資源是不夠的,資產必須是不可偽造的),或者至少在他們的時代大背景下是不可偽造的成本,隨著歷史的不斷髮展,這些貨幣逐漸從最初的貝殼,毛皮,牙齒,貴金屬演變成今天的鑄幣。

由於權益證明僅僅是臨時鎖定現有的資本而並不消耗這些資本,因此它不能滿足Nick Szabo(計算機專家,智慧合約之父)確定為貨幣的三個關鍵屬性之一的不可偽造的成本。

經濟學

如果某個物品具有價值,人們就會花費精力追逐它,直到消耗的精力與物品的價值相抵(邊際成本=邊際收益,MC = MR)。這裡的精力可以看作是某種形式的「工作量」。前耶魯大學統計學家,現區塊鏈創業者Paul Sztorc認為權益證明是一種混淆形式的工作量證明。

權益證明中的工作量可以來自多種不同的形式,比如說從銀行獲得的貸款,執行全天候的權益證明挖礦伺服器獲得的區塊獎勵,甚至可以是通過竊取私鑰獲得的贓款。

權益證明不僅混淆了工作量證明,它還不如工作量證明。任何權益證明為你節省的潛在成本,都需要你付出相應的安全性損失的代價。

正如我們將在下面看到的那樣,短暫地鎖定1美元的權益創造出的安全性水平遠遠低於在挖礦中實際花費1美元創造出的安全性。

電腦科學

Blockstream 公司數學家 Andrew Poelstra 寫了業界第一篇批評權益證明的文章,在其中他創造了無成本模擬(Costless Simulation,即無利害關係)和遠端攻擊(Long-range Attacks)這兩個術語。

加州大學伯克利分校研究員 Jonah Brown-Cohen 和《區塊鏈 技術驅動金融》作者,德克薩斯州大學奧斯汀分校研究員 Arvind Narayanan 在最近的一篇論文中說明了權益證明協議中缺乏良好且可靠的隨機數來源。對於使用權益證明的加密貨幣,依賴外部的隨機數來源可能會出現迴圈推理謬誤(Circular Reasoning Fallacy)。因此,權益證明協議急切需要使用其區塊鏈中的內容在內部生成隨機數。然而,這個過程被證明是一個需要折衷的難題。

工程實踐

從工程實踐的角度,我寫了一篇關於權益證明缺點的文章(Proof-of-Stake & the Wrong Engineering Mindset [1]),其中列出了權益證明機制特別容易受到攻擊的某些特定場景,包括網路分裂、私鑰被盜、以及權益證明參與率低。

也許看待權益證明的最簡單方法就是透過時間尺度。

PoS 應該叫 PoTS

權益證明是一個誤稱,正確的叫法應該是臨時權益證明(Proof-of-Temporary-Stake,PoTS),臨時權益證明這個名稱更準確,因為它加入了權益證明中缺少的時間因素。

為了正確理解權益證明中時間因素的影響,我們首先來分析時間因素在工作量證明中發揮的作用。

工作量證明中持續消耗的資源以兩種方式保護整個區塊鏈網路的安全:

每個區塊消耗的資源不僅可以保護屬於該區塊的 UTXO(未使用的交易輸出),還可以保護前序區塊中所有的 UTXO。為什麼這麼說呢?是因為如果不首先恢復當前的區塊,就不可能恢復過去的 UTXO。所以說,每個新區塊都保護著所有前序的現存 UTXO。

從本質上來說,對專業挖礦裝置的投資代表了對未來獲得潛在回報的樂觀預期,對於礦工而言,投資新的挖礦裝置可以看作是在購買定期支付股息的股票。這意味著挖礦裝置大致代表了未來區塊鏈的潛在能源支出。

這麼說可能有點抽象,想象一個時間軸。過去花費的工作量單元積累在賬本中,未來消耗的工作量單元積累在當前的挖礦裝置中。

在這裡插入圖片描述

賬本積累了過去的工作量單元,挖礦裝置積累了未來的工作量單元

隨著時間的推移,右側的工作量單元逐步實體化並向左側移動。這裡的挖礦裝置可以看作是一個「緩衝區」,工作量單元在進入最終目的地——賬本之前,都存放在這個緩衝區中。不過,並非所有的工作量單元都可以直接進入帳本中,大部分都被拋棄了,但正是這些被拋棄的工作量單元保證了整個網路的去中心化。

描述這種基於時間的資源積累現象的官方術語是存量和流量(stock & flow),這種現象也經常發生在自然界中。從本質上說,比特幣的安全性是因為受到賬本和挖礦裝置兩個部分的高存量流量比的保護。

相比之下,權益證明並沒有這種安全性保障。

在權益證明中,過去的權益(時間線的左側)不會積累在賬本中,因為經過一段時間的凍結週期後,這些權益會被釋放。不過,權益證明不涉及資源的積累也並不影響其「確定性(Finality)」概念,因為從新成立節點、長期休眠節點、分割槽節點中也可以看出不同的「確定性」。

遠端攻擊是這種缺點的表現:它的攻擊原理是因為權益證明無法保護過去發生的交易。因而,遠端攻擊是權益證明面臨的最嚴重問題之一,這種攻擊方式的出現表明,從長遠來看權益證明機制無法保證賬本的完整性,而賬本的完整性是區塊鏈最核心的特性。

在權益證明中,未來的權益(時間線的右側)也不會在當前的校驗器中積累,因為權益證明行為只在它發生的短暫視窗時間內具有意義,而並不會影響未來。私鑰盜竊是這種缺點的表現:它的原理是權益證明無法保護未來。

私鑰盜竊完全避開了獲得多數權益所需的財務成本,而在工作量證明中,攻擊者需要克服挖礦裝置和持續能源消耗帶來的成本來發起並維持一場51%算力攻擊,而且任何攻擊者都不得不面對這個問題。在工作量證明中,挖礦裝置被大規模查封(例如國家釋出禁令)是最大的風險,不過只要挖礦裝置足夠去中心化,就可以大大降低這種風險。

然而,權益證明無法使用這種將挖礦裝置去中心化的應對方法,因為權益證明中的校驗器只是軟體節點,它們可以輕而易舉地被遠端定位。更重要的是,在工作量證明中即使控制了硬體,攻擊者仍然無法避免持續的能源消耗帶來的成本,所以說工作量證明更加安全。

權益證明中存在一種積累形式,即校驗器獲得的週期性權益獎勵。但是,與工作量證明中的積累不同,獎勵積累僅對每個權益證明校驗器有益,而不會提高整個網路的安全性。

總的來說,如果在權益證明中進一步脫離時間因素,更快的權益證明就失去了存在的意義,直到權益證明變得毫無意義。

工作量證明可以有力地抵擋時間的摧殘,而權益證明不能。工作量證明的穩健性得益於其大量的雜湊算力,而不是它所消耗的資源。新的技術可以提高挖礦效率,不過在未來某些時候,效率的增加會因為物理限制的瓶頸慢慢放緩。比特幣工作量證明的穩健性也依賴於SHA256雜湊演算法的安全性。

工作量證明消耗了大量的資源這一事實是一個重要的特性,而不是設計漏洞。關於權益證明的研究通常陷入工作量證明是一種漏洞並且效率十分低下的誤解中。

寫在最後

看到這裡,相信你已經理解我為什麼反對使用權益證明,當然這還不是全部的原因。對權益證明的另一個主要批評是,權益證明可以說是建立了一個財閥統治體系,在其中富人越富,窮人越窮。這也是一個很值得討論的問題,但由於本文的主題是安全性,所以在這裡未做過多討論。

引用: [1] Proof-of-Stake & the Wrong Engineering Mindset