為什麼權益證明棒棒的(2020 年十一月)

2020 Nov 06 See all posts


為什麼權益證明棒棒的(2020 年十一月)

感謝Chih-Cheng Liang, Hsiao-wei Wang和Jerry Ho翻譯這個文章

權益證明(Proof of Stake, PoS)比工作量證明(Proof of Work, PoW)在區塊鏈安全上更具優勢的關鍵因素有三個。

權益證明在同樣成本下可提供更高的安全性

理解這點最簡單的方式,就是把權益證明和工作量證明擺在一起看,假設每天有 $1 的區塊獎勵,攻擊此網路所需的成本是多少。

基於 GPU 的工作量證明

你可以便宜租到 GPU,所以攻擊網路的成本就等於是租到夠強 GPU 的成本,只要能夠壓過現有礦工 GPU 的算力即可。現有的礦工會花費將近 $1 的成本來賺取 $1 的區塊獎勵(如果他們花費更多,礦工就會因為無利可圖而退出;如果花費比這個數字少,新礦工就會加入來壓縮現有礦工的利潤空間)。因此,攻擊網路只需要暫時花費比 $1/天 多一點點,這還可能只要幾個小時而已。

總攻擊成本: ~$0.26 (假設攻擊 6 小時),且因為攻擊者有機會收到區塊獎勵,所以這個數字可能壓到零

基於 ASIC 的工作量證明

ASICs 其實是資本成本:當買進 ASIC 時你預期大概可以用兩年,因為它會慢慢耗損,或是因為更新更好的硬體出來而過時。如果一個鏈被 51% 攻擊了,社群大概會用更換 PoW 演算法來應對,這時,你的 ASIC 就會失去價值。平均而言,挖礦所費的成本分佈是 1/3 的經常性成本與 2/3 的資本成本(詳見 這裡)。因此,為了每天要賺到 $1 的區塊獎勵,礦工得花 ~$0.33 在電力與維護上,花費 ~$0.67 在 ASIC 上。假設 ASIC 可以用 ~2 年,礦工會需要為一單位的 ASIC 硬體花費 $486.67 。

譯註:$486.67 = 365 天 x 2 年 x $0.67 資本成本

總攻擊成本:$486.67 (ASICs) + $0.08(電力與維護)= $486.75

譯注:這邊電力與維護成本也是假設攻擊 6 小時

值得注意的是,雖然 ASICs 提供了很高的安全性,其(相較 GPU )付出的代價卻更高,讓環境變得過度的中心化。這同時也讓加入 ASIC 挖礦的門檻變得非常高

權益證明 Proof of stake

權益證明的成本幾乎全是資本成本(抵押的幣);唯一的營運成本花在運行節點上。猜猜人們願意為每天 $1 的區塊獎勵鎖住多少的資金呢?不像 ASIC,抵押的幣不會折舊,而且當你不想抵押了,你幾乎馬上就可以取回你的幣。因此,在獎勵相同的情況下,參與者會願意付出比 ASIC 的情況更多的資本成本。

讓我們假設 ~15% 的報酬率足夠吸引人們抵押(這是 eth2 的期望報酬率)。因此每天 $1 的區塊獎勵會吸引相當於 6.667 年報酬的抵押,可換算成 $2,433 。節點消耗的硬體與電力成本很小,一台千元美金等級的電腦就可以抵押非常大量的幣,而且每月只要花大概 ~$100 左右的電力與網路費就綽綽有餘。我們可以保守的假設上述這些經常性成本為抵押總成本的 10% ,這代表在協議每天發出的區塊獎勵中,需要扣掉 10% 的經常性成本,剩下的 $0.90 才是(攻擊時)需要花費的資本成本。

譯註: 6.667 年 = $1 /(15% 年報酬); $2,433 = $1 每天 x 365 x 6.667

總攻擊成本: $0.90/天 * 6.667 年 = $2,189

長期來說,這個攻擊成本會變得更高,因為抵押會變得更有效率,人們也因而更能接受較低的報酬率。我個人預期這個數字最終會攀升到 $10,000 左右。

值得注意的是,如此高的安全性帶來的「代價」,只是讓你在抵押時無法任意移動資金而已。人們有可能認知到,這些幣被鎖住之後反而造成了幣的價值攀升,因而造成在社群流通的貨幣總數、像是用於投資生產活動的資金,反而會維持不變。反觀 PoW,維持共識的「代價」卻是瘋狂地損耗電力

我們想要更高的安全性,還是更低的成本?

要知道的是,在每單位成本安全性增加了 5-20 倍之後,我們有兩種方式可以將其加以利用。一種方式是區塊獎勵維持現狀,單純享受多出的安全性。另一種方式是維持現有程度的安全性,並大量減少區塊獎勵(也就是減少共識機制成本的「浪費」)。

兩種方式都行。我個人喜歡後者,因為我們在下文會看到,跟工作量證明相比,在權益證明中的成功攻擊會造成更少的傷害,而且鏈更容易從攻擊中復原。

權益證明更容易從攻擊中復原

在工作量證明的系統,如果你的鏈遭受 51% 攻擊,你會怎麼做?目前為止,實務上唯一的應對一直是「慢慢等,直到攻擊者覺得無聊了」。但這忽略了一種更危險的攻擊叫做「住到你崩潰(spawn camping attack)」,攻擊者可以對鏈攻擊再攻擊,明確的目標就是要讓鏈無法再使用。

譯注:Spawn Camping 是一種遊戲術語,指在對方玩家重生點或死亡處埋伏的行為。如此會造成被住、被蹲的玩家一復活就再次陣亡,毫無還手之力。

基於 GPU 的系統完全沒有防禦的辦法,而且持續攻擊的攻擊者可以輕易讓一個鏈永遠毫無用處(實務上來說,該鏈會開始轉移到權益證明或權威證明(proof of authority))。事實上,在攻擊開始後不久,攻擊者的成本就會變得非常低,而誠實礦工會離開,因為他們沒辦法在攻擊持續之下取得區塊獎勵。

在基於 ASIC 的系統,社群有辦法應對第一波攻擊,但接下來的攻擊就會變得很容易。社群可以在第一波攻擊之後,硬分叉來更換工作量證明的演算法,讓所有 ASIC 「變磚」(攻擊者和誠實礦工的 ASIC 會一起磚掉)。如果攻擊者願意承受第一次 ASIC 變磚的成本,接下來幾次的情況就和 GPU 的情況一樣(因為還沒有足夠的時間去為新演算法打造與生產 ASIC),所以在這之後攻擊者可以很便宜地持續對鏈發動攻擊到天荒地老。

譯註:變磚為電子產品俚語,代表損壞後無法使用,像磚頭一樣

在權益證明下,狀況則好上非常多。。針對特定種類的 51% 攻擊(特別指想要推翻已經敲定的區塊),權益證明共識有內建的「砍押金(slashing)」機制,大比例的攻擊者抵押會被自動銷毀(而且不會銷毀到其他人的抵押)。針對其他種類的,更難偵測的攻擊(像是 51% 合謀截斷其他人訊息),社群可以協調一個「少數使用者發起軟分叉 minority user-activated soft fork (UASF)」,可以大量銷毀攻擊者的資金(在以太坊中,可以透過「離線懲罰 inactivity leak 」做到)。如此就不需特別花心力來「搞個硬分叉砍掉非法貨幣」。除了 UASF 需要人為協調要選擇哪個少數區塊,其餘的事情都是自動化的,只要遵照協定規則去執行即可。

譯註:少數區塊 minority block 是小於 51% 抵押總數的驗證者決定出來的區塊。

因此,對鏈的第一次攻擊就會耗損攻擊者幾百萬美元,而且社群可以幾天內馬上站穩腳步。第二次攻擊仍然會花費攻擊者數百萬美元,因為他們被迫要買新的幣來取代自己被燒毀的幣。再攻擊第三次...只會繼續燒更多錢。。局面極為不對稱,而且優勢並不會在攻擊者那邊。

權益證明比 ASIC 更去中心化

基於 GPU 的工作量證明的去中心化程度還不錯,因為取得 GPU 不會太難。但前面提過,基於 GPU 的挖礦難以滿足「在攻擊之下的安全性」這個準則。另一方面,基於 ASIC 的挖礦,則需要數百萬美元的資本才能做(而且如果你的 ASIC 是買來的,多數時候,製造商會佔更多便宜)

如上述,你現在知道要怎麼回答「 PoS 只會讓有幣的人繼續以錢滾錢」這個論點了: ASIC 挖礦一樣會讓已經有幣的人得利 - 而且賺得比 PoS 的時候還多。相比之下,至少權益證明的最低抵押門檻夠低,讓一般人還能有機會接觸。

譯註:就文章完成當下 32 ETH @ 440 USD ,最低抵押門檻大概是 40 萬台幣。

進一步說,權益證明更能抵抗審查。GPU 挖礦和 ASIC 挖礦很容易被偵測,他們需要大量電力消耗、昂貴硬體採購、及大型廠房。另一方面,權益證明可以跑在一台不起眼的筆電上,就算跑在 VPN 上也毫無問題。

工作量證明可能的優勢

我覺得 PoW 在下述這兩點上是真的比較佔優勢,縱然這些優勢相當有限。

權益證明更像個「封閉系統」,長期而言財富更加集中

在權益證明的情況下,如果你手上有幣,你可以抵押手上的幣來獲得更多同種類的幣。但,在工作量證明的情況下,就算你沒有幣你還是能賺到,只要你願意投入一些外部資源。因此,或許可以說權益證明會造成長期風險,讓幣的分配變得越來越集中。

我的回應是,在 PoS 中,報酬一般而言會很低(所以驗證者的獲利也會低)。在 eth2 ,我們預期驗證者的年報酬會相當於總 ETH 供給量的 ~0.5-2%。而且更多驗證者抵押,利率會更低。因此,可能要花個一世紀,整個資產集中程度才會翻倍,而且在這樣的時間跨度之下,其他促進分配的壓力(人們想花他們手上的錢,分配金錢到慈善或他們自己的子孫等等)比較可能會佔上風。

權益證明需要「弱主觀性(weak subjectivity)」而工作量證明不需要

關於「弱主觀性」的觀念可以看這個 原始介紹。本質上,就是節點在第一次上線,或是在離線很長一段時間之後(數個月)再次上線,這個節點必須要透過第三方的資源,才能決定正確的鏈頭在哪。這個第三方可以是他們的朋友、可以是交易所或區塊鏈瀏覽器網站、或是客戶端開發者本身、又或是其他角色。PoW 則沒有這樣的要求。

然而,這可能是一個很弱的要求。事實上,使用者本身就已經必須對客戶端開發者、或「社群」有這種程度的信任。最起碼,使用者必須信任某個人(通常是客戶端開發者)來告訴他們協定是什麼,這個協定曾經經歷過什麼樣的更新。這在任何軟體應用都無法避免。因此,這個 PoS 所需要增加的額外信任,其實已經算很少了。

但就算事實證明這些風險其實一點都不小,在我看來切換到 PoS 系統帶來的好處要高得多,像是系統運作的高效率和從攻擊中回歸正軌的能力。

參考來源:我之前寫權益證明的文章