淺談 PoW 共識與 PoS 共識差異

在祕猿小課堂 16-25 期,我們給讀者介紹了構建加密經濟網絡的技術實現的兩個部分,即 Cell 模型和 CKB-VM 虛擬機。在本期中,我們將會進入構建加密經濟背後的三大支柱之一的共識部分(加密經濟的三大支柱:技術實現、共識協議、經濟模型。)在這一部分,我們會給大家講解,祕猿科技技術團隊在深入研究 PoW 和 PoS 以及其他共識後,爲什麼堅定選擇 PoW 作爲底層公鏈 CKB 的共識協議原因。

祕猿科技區塊鏈小課堂第 26 期


關於 PoW 和 PoS 的誤解太多,想要在一篇文章中講個明白實在是一個極高難度的任務,所以這裏只簡單討論兩點,一個是從經濟學上思考 PoS 給出的美好承諾是否可靠,另一個是 PoS 本質上是一種許可機制。之所以拿這兩點出來是因爲很多討論非常糾結一些技術性的細節,忽視了這兩個根本性的問題。

成本悖論

區塊鏈技術提供的價值是去中心化的安全,而安全是可以用攻擊成本來衡量的。一條鏈的攻擊成本有多高,它就有多安全。

區塊鏈的共識節點提供的產品是安全,共識節點是網絡服務的生產者。我們也知道,經濟學裏面有一個基本定律,在完全競爭市場中,生產者在均衡狀態下的邊際收益等於邊際成本。也就是說,如果區塊鏈的共識算法創造了一個完全競爭市場,提供多少安全,就需要多少生產成本:

攻擊成本 = 安全程度 = 生產成本

想要提供多少邊際安全,就需要付出多少邊際成本。現在 PoS 告訴我們,我們可以提供等量的安全,但是只需要 10% 甚至 1% 的成本,你不會覺得很奇怪嗎?爲什麼 PoS 這麼容易就打破了經濟規律?

一種情況是,同等安全程度的PoS需要的實際成本是一樣的,只是一部分被隱藏起來了。以 DPOS 爲例,如果你想要做 Validator,就需要通過某些方法蒐集足夠多的票投給自己,進入前 X 個 Validator 的列表才行。蒐集足夠多的票的成本是多少呢?這個成本對於不同的人/機構是一樣的嗎?如果不一樣,這是一件好事還是壞事呢?這個成本是一個公開信息嗎?如果不是一個公開信息,這是一件好事還是壞事呢?

我很喜歡一句話:

Financial institutions make people feel safe by hiding risk behind
layers of complexity. Crypto brings risk front and center and brags
about it on the internet.

而把成本以最清楚的方式公開在所有人面前,正是 PoW 的特點。

PoS 不是真正的 Permissionless

還有一種情況是,PoS 沒有創造一個完全競爭市場。

在 PoS 中,未來的共識羣體是由今天的共識羣體決定的。任何新的節點想要參與共識都需要通過至少一個交易來實現(e.g. 抵押,投票,etc.),而這個交易是否被處理是由今天的共識羣體決定,他們可以處理這個交易,也可以不處理這個交易,如果不處理這個交易,新的節點永遠都無法參與共識。同時,「不處理交易」是容易僞裝而難於懲罰的行爲,我還沒有看到能在共識協議中解決這個問題的方案。PoS 往往是根據 Stake 的權重來分配出塊比例(和節點數量沒關係),考慮到大部分系統中 stake 的集中程度,這是一個非常實際的問題。

PoW 是徹底的 Permissionless。無論什麼時候,只要你願意,都可以買礦機和電力加入出塊者的行列,不需要今天的礦工給你任何形式的許可。你也許會說,我還是需要購買礦機和電力呀,這是不是一種形式的許可呢?是的,從更低一層來說,這也是一種許可。但遺憾的是,在所有的 Proof of XXX 中,這已經是最去中心化的許可形式了,畢竟礦機生產和電力資源的去中心化程度遠高於各種 Tokens。我們總是應該追求儘可能的去中心化,否則用回中心化系統就好了。

或許又有人問:如果設計一種不需要向鏈上發送任何交易,只要 Token 放在那裏就可以參與共識的 PoS,不是就解決了你說的問題嗎?

這會帶來兩個問題:

  1. 如果 Token 放在那兒就能參與共識,意味着用戶對參與共識沒有任何承諾,不參與共識也沒有任何成本和懲罰(用戶可能根本都沒上線),這樣的共識是很難設計的;
  2. 會有 Nothing at Stake 的問題,這裏不再多言。

Layer 1 必須用 PoW

Layer 1 是加密經濟的基礎,承擔 Layer 1 角色的區塊鏈必須是一個無需許可的網絡,因爲 Layer 1 必須是全球共享的、中立的設施,就像互聯網,而"需要許可“則意味着它是受到某一羣人控制的,與這個目標是根本衝突的。從上面的分析我們可以得出一個結論,如果我們希望 Layer 1 儘可能的去中心化和安全,Layer 1 就只有PoW 一個選項。PoS 不是不能用,只是不適合 Layer 1。

更多討論

這兩天在「橙皮書」的微信羣裏面產生了 PoW 和 PoS 的大討論,甚是精彩,從討論中我看到了許多有價值的觀點。

由於微信羣本身是一個非常不適合討論的工具,討論到後來很多回覆被忽略,很多問題被反覆提出來車軲轆說,效率實在太低,因此我在這裏將討論中提出的問題整理出來,統一回復一次,避免重複勞動。

A:POS 大戶坐着獲得的資本利得,是小散無法逾越的鴻溝,且無法約束他的權利。
B:這個問題是社會正常現象吧,有錢的人掙錢本身就是比平民容易,他投入這麼多錢收入卻比別人少,那纔是不公平啊,現在是大家獲得的比例是一樣的,大戶投入的錢多,就是會獲得更多的回報

這是一個 PoW 和 PoS 討論中常見的對話。A 提出了兩個問題:

  1. (公平性問題)PoS 大戶坐着獲利,普通人沒有;
  2. (無法制約)PoS 大戶的權利無法約束。B 回答了 1。

對於問題 1, 我同意 B 的看法。投入多回報多是合理的,無論是 PoW 還是 PoS 都是這樣, 區塊鏈是幫助實現過程公平而不是結果公平的工具。在區塊鏈裏面我們依然會看到馬太效應。試圖用區塊鏈去解決結果公平的後果是區塊鏈治理的內涵無限擴大,將本該由協議解決的各種問題(後面會看到)統統推給投票去解決。

然而無論是歷史還是理論早就告訴我們,世界上並沒有完美的羣體選擇制度。區塊鏈是一個能夠記錄數據,保證數據不被篡改,爲所有人提供數據的工具,通過這樣一個工具幫助我們更好的實現過程公平,已經是非常非常大的進步了。

問題 2,是一個在討論中被忽略的關鍵問題。投入資源換取回報天經地義,但前提是你想投入就能投入嗎?舉個例子,一個明星創業團隊融資,是不是任何 VC 想投就能投進去呢?PoW 具有非常好的開放性,使得後來的共識參與者總是可以加入共識羣體,而 PoS 不具有這樣的開放性。引用這裏的討論:

在 PoS 中,未來的共識羣體是由今天的共識羣體決定的。任何新的節點想要參與共識都需要通過至少一個交易來實現(e.g.抵押,投票,etc.),而這個交易是否被處理是由今天的共識羣體決定,他們可以處理這個交易,也可以不處理這個交易, 如果不處理這個交易,新的節點永遠都無法參與共識。

同時,「不處理交易」是容易僞裝而難於懲罰的行爲,我還沒有看到能在共識協議中解決這個問題的方案。PoS 往往是根據 Stake
的權重來分配出塊比例(和節點數量沒關係),考慮到大部分系統中 Stake 的集中程度,這是一個非常實際的問題。

PoW 是徹底的 Permissionless。無論什麼時候,只要你願意,都可以買礦機和電力加入出塊者的行列,不需要今天的礦工給你任何形式的許可。你也許會說,我還是需要購買礦機和電力呀,這是不是一種形式的許可呢?

是的,從更低一層來說,這也是一種許可。但遺憾的是,在所有的 Proof of XXX
中,這已經是最去中心化的許可形式了,畢竟礦機生產和電力資源的去中心化程度遠高於各種Tokens(的分散程度)。我們總是應該追求儘可能的去中心化,否則用回中心化系統就好了。

「是否能夠投入」本身可以看作一種 Option,有非常高的價值。PoW 能有這樣的性質,是因爲工作量證明的計算是一種不依賴歷史的計算,無論你在任何時間點購買算力加入計算,你都和其他礦工在同一個起跑線上,這是一個非常獨特的、反直覺的性質,正是這個性質使得後來者總是能打破了早期參與者的優勢。

PoS 不同,因爲 Stake 是系統中內生的資產,資產的所有權是由系統歷史決定的,交易順序是由系統歷史決定的,因此無論是需要抵押 Token 加入的 PoS,還是只需要持有 Token 就可以參與的 PoS,其 Validator 集合都是這個系統自身的歷史決定,PoS 和 PoW 在「參與共識是否需要依賴歷史」上是截然不同的。我們很容易能看出,這是一個本質不同,無論什麼樣的上層設計都解決不了這一點。

因此 PoW 和 PoS 的設計,從根本上是兩種不同的思路,體現兩種不同的理念:

  1. (PoS)系統應該讓先發者獲得天然的優勢
  2. (PoW)系統不應該讓先發者獲得天然的優勢

注意主語是「系統」,共識參與者在系統外的優勢不是任何協議設計可以解決的。如果你認爲1是對的,自然應該支持 PoS,反之你應該會更贊同 PoW。CKB 在設計中選擇 PoW,是因爲 CKB 的設計目標是 Layer 1,一個全世界共用的基礎設施,我們希望它可以長久而且中立的運行,要做到這一點,系統不應該讓先發者(包括系統設計者自己)獲得天然的優勢。

A:PoS 買幣 Staking 不就是投入了嗎?

確實是投入,但是這裏的「投入獲得回報」中的「回報」已經變了。對於投入獲得的回報我們需要分開來看,一種回報是 Token 收益,最近的 PoS 基本都支持 Delegate,所以基本上所有人都有這個 Option。另一種是參與共識的權利,根據上面的回答,它可以被現有的 Validator 壟斷,大部分人沒有 Option。權利有很多種,分紅只是其中一種,而且不是關鍵的那一種。

那麼共識的權利爲什麼重要,它有什麼用呢?它意味着你可以對交易排序,而交易排序決定了鏈上衆籌時你的交易能不能及時上鍊,在 DEX 裏面交易時你的訂單能不能及時成交,等等等等。在 PoS 的系統上做 DeFi?你需要認真考慮一下 Validator 本身是做什麼的,是否和你的發送的交易有利益相關?

我們知道,DeFi 的交易很可能是價值含量非常高的交易,e.g. DEX 裏面一個巨大的買單,這時候 Validator 如果安排一個插隊的交易怎麼辦?僅僅是交易順序的不同就可以造成巨大的獲利,何況共識節點能做的遠大於此?

聰明的你一定會想到:「那 PoW 的礦工 / 礦池不是一樣有這樣的問題嗎?」沒錯,PoW 的礦工一樣有這樣的權利,但 PoW 有兩個優點可以削弱這個問題:

1、出塊節點和生態中的關鍵用戶是解耦的。生態中的關鍵用戶,指的是交易所、錢包等圍繞區塊鏈提供服務的服務商,它們爲大量的用戶提供優質的服務,聚集了大量的用戶和交易。

在 PoS 中,由於擁有大量用戶和交易,Stake 會自然的往生態中的關鍵用戶集中,形成天然的 Stake Pool,因此關鍵用戶在業務上的優勢可以轉化成在共識和治理上的優勢(在某些鏈裏面已經體現的非常明顯了),使得先行者的優勢更加強化。

在 PoW 中,礦工羣體和交易所 / 錢包是獨立的,他們有不同的專業分工,通過不同的專業知識,不同的方式獲取回報,關鍵用戶不能將自己的業務優勢轉化爲協議中的優勢,礦工也沒辦法將自己在協議中的優勢轉化爲上層業務的優勢。在 PoW 中,開發者、用戶和共識節點之間可以形成制衡。

2、PoW 的共識是開放的(見上文),充滿了激烈的競爭。也許一個礦池 / 礦工可以在短時間內做到這一點,但由於新的礦工總是可以自由加入,想要長久的做到這一點是非常困難的,激烈競爭將會造就一個越來越公平的充分競爭的市場,這需要時間(30年?Maybe)。

反過來,在 PoS 中,由於天然的先行者的優勢,以及業務優勢和共識優勢的綁定,先行者的優勢只會越來越大,競爭將逐漸消失,最後形成壟斷或寡頭。在基礎設施級的協議裏面,我們應該儘可能的去避免壟斷。

區塊鏈本身是一個大的排隊機,決定排序的權利是這個系統中最關鍵的權利。

A:(Bitcoin)一小時 51 攻擊的成本區區 44.3 萬美金……

A 想要表達的是,Bitcoin 並不安全,因爲只要 44.3 萬美金就能攻擊它了,然後 PoS 的 Token 是有限的,沒有攻擊者可以從市場上購買到足夠多的 Stake 來攻擊。

這個觀點忽略了一個問題:在某一時刻,地球上的算力同樣是有上限的。如果一條 PoW 的鏈只有 10% 的 SHA256 算力,這樣算是沒有問題的。但是如果比特幣已經集中了 90%(估計值)的 SHA256 算力,你從哪裏去獲得另外 90% 的 SHA256 算力呢?量變會引起質變,算力地位的變化會影響安全性。

不安全的不是 PoW,是沒有獲得足夠算力的 PoW 鏈。使用 PoW 的區塊鏈都會遇到比使用 PoS 的區塊鏈更大的起步問題,然而正是這樣真實而殘酷的考驗才能證明區塊鏈的安全。不然,我也跑一條 PoS 鏈,99% 的 Token 都歸我自己,1% 在市場上想炒多高炒多高,安全性豈不是分分鐘超過 Bitcoin?Bitcoin 已經運行 10 年了,上面承載的價值這麼多,爲什麼攻擊沒發生呢?相反,某些鏈運行了不到一年,上面存了價值區區幾十萬元的智能合約被偷了無數次……理論需要不斷用事實修正,當理論和事實不符的時候,一定是理論錯了。

同樣是有上限,在 PoW 鏈中參與共識所需要的資源上限是隨着時間變化的,由科技的進步、人類的進取心和激烈的競爭不斷推動前進,所需要的自然資源的獲取是完全去中心化的;而 PoS 鏈中所需要的資源上限是協議規定好的,增發的 Token 全部進入現有 Validator 的手中,再通過 Validator 在市場上的售賣或是 Staking Pool 的分紅分發出去,會不會有些似曾相識?

A:這兩者抽象到最後都是資本,PoW 是以資本開支和 Opex 計算資本成本;PoS 是以抵押物市場價值計算機會成本。這兩種成本都是不可逆的。

我不贊同這種邏輯,忽略中間過程直接捅到本質恰好忽略了關鍵。過程是關鍵,過程會產生摩擦,過程會產生損耗。即使都是資本,資本的流動性和產生壟斷的速度也是有差異的,協議是否能從壟斷中回覆也是有差異的,見前文。

A:我不覺得 PoS 的持幣者會一直不賣;
A:過度集中,誰會給生態貢獻;
A:如果籌碼 90% 在你手裏,這個生態也就做不下去;
A:對你來說,高度集中持幣是沒有價值的;
A:你都壟斷 90% 代幣,沒有人給你交租。

壟斷也是可以建立生態的,騰訊、蘋果都是例子。無論是歷史還是經濟學原理還是《從 0 到 1》都很清楚的告訴我們,壟斷才能獲取暴利。

同時,壟斷存在不代表,你知道有壟斷存在。Token 是世界上最具有流動性的資本,即使我擁有 90% 的 Token,我也會把它分散投入到 100 個 Staking Pool 裏面去,而不會集中在一個 Staking Pool 裏面。壟斷者不會喜歡跳出來說「Hey,我壟斷了這個系統!」。

A:潛在作惡壟斷者會因爲短期利益賣出 Token;
A:作惡就是爲了短期利益;
A:即,潛在謀求短期利益壟斷者會因爲短期利益賣出 Token;
B:頭部抵押者都被看的很清楚,解抵押了,或者提幣去交易所了,本身會導致價格下跌,他還沒砸呢,就已經反映了;
A:我也是這個意思,壟斷者不作惡不也是安全的麼

這裏混淆了壟斷和作惡的概念。作惡指的是顯式的攻擊,例如雙花一筆交易,作惡是可以被觀察到的,系統或者生態也可以作出相應的反制。 壟斷是隱式的 ,壟斷者不需要也不會攻擊這個系統,但是它依然可以利用自己的共識權利獲得更多的利益,正如前文說的,只要能操控交易排序,你就能操控一切。

操控交易排序是無法被發現的 。在 PoS 系統中,操控交易排序也意味着操控未來的 Validator 集合,意味着壟斷地位可以輕易的維持,這是根據系統歷史來保證系統安全的必然結果,這一點在 PoW 中是不存在的。

我們現在還沒有找到一個方法可以在所有時間排除一切壟斷的可能,但是 PoW 至少給了我們一個更長的時間維度上使得壟斷難以存在的設計,我覺得這一點對於 Layer 1 至關重要。

A:第一點,PoS 鏈後來者爲什麼不能參與?買幣比買礦機門檻低多了,PoS 裏面長期存在壟斷者這個結論我是不認同的,沒有經濟規模效應;第二點,攻擊 PoS 的成本比較,收購 Stake 只是一方面,還有 Reputation 系統,PoS 裏面節點是非常在意自己 Reputation 的,這個成本對節點是巨大的。

第一點問題中,壟斷的問題上面已經有回答。關於門檻問題,我認爲這是很多人甚至包括協議設計者常常犯的錯誤。區塊鏈的首要目標是安全和去中心化,而門檻以至於一切易用性問題都不是區塊鏈的目標。

在區塊鏈協議裏面討論門檻問題就像是在說「你讓普通人怎麼去構造 TCP 請求包」一樣,將不同層次的目標混爲一談。要降低門檻,提高易用性,我們可以在上層做很多工作,做錢包,做雲挖礦,設計各種金融產品,爲什麼要在區塊鏈協議裏面考慮門檻的事情呢?

Nervos 追求分層的協議架構,也是因爲看到了易用性問題和安全問題必須分開考慮,易用性 / 門檻和安全從本質上就存在矛盾,強行扭在一起只會讓我們一無所獲。未來區塊鏈協議的直接參與者一定是專業用戶,這些專業用戶通過搭建(可信的)服務、降低使用門檻、提供易用性來獲取生態中普通用戶的支持和收益。

第二點,Reputation 是一個無法量化,區塊鏈協議也無法判斷的東西。將區塊鏈的安全寄託在 Reputation 上,只會讓區塊鏈走回現有信任體系的老路。同時 Reputation 還有 無法轉讓 的特點,基於一個無法轉讓的事物建立安全模型,會不會又有些似曾相識?

A:其實這裏面有很多隱含的假設,如果一個 PoS 鏈出現你說的一個 Cartel 控制 1/3 的 Token ,社區是可以通過硬分叉 Fork out cartel;我不覺得一個 PoW 鏈被 51% 算力控制的鏈,也面臨同樣嚴重的問題;另外我覺得節點隱藏最後長時間形成多數控制這種可能性是不大的。

將協議中解決不了的問題推給鏈外治理(注意在 Cartel 控制 1/3 Stake 並且產生足夠大的威脅以至於社區想要 Fork 的時候,鏈上治理已經沒有用了)和硬分叉,確實可以解決一切問題,但這應該是一種成本極大的最後手段,不應該成爲隨便使用的工具,區塊鏈的協議應該儘可能的避免陷入這個場景。

使用鏈外治理和硬分叉等價於承認協議的不足,需要人來接手了。我贊同一個區塊鏈生態最終是需要人來治理的,但是我認爲人介入的頻率越低越好,如果不追求這一點,爲什麼還需要區塊鏈呢?只有降低人蔘與的頻率,協作的自動化成本才能降低,協作所需要的信任基礎才能減小。

「節點隱藏最後長時間形成多數控制這種可能性是不大的」——只要時間足夠長,無論多小概率的時間都會發生。金融市場的黑天鵝告訴過我們無數次了,願我們的記憶不只是 7 秒。

A:xxx 的籌碼在不斷分散;
A:xxx 的錢包地址從 ICO 1000 多個,不到一個月上萬個。

根據 Top 100 的地址或者 Top 20 Staking Pool 的分散程度是無法證明 Token 是分散的。道理很簡單,我們談論的都是無需許可(Permissionless)的系統,地址代表的只是一個公私鑰對而已,不代表一個身份。產生地址幾乎是零成本的,存有 Stake 的地址數量無法代表持有這些 Stake 的是不同的用戶。不要混淆地址和用戶。

在 PoS 中,Validator 集合中的 Validator 數目是無關緊要的,並不能代表 Stake 分散。如前文所說,如果你有 99% 的 Stake ,你應該把它們分散到 100 個甚至 1000 個 Validator 上去。

PoW 中同樣會有算力集中在大礦工手中的問題,但是由於 PoW 的開放性以及系統沒有給後來者製造劣勢(見上文),這樣的集中只會是暫時的,算力將在激烈的競爭中不停的從一個人手中轉移到另一個人手中。PoW 讚美競爭,PoW 是一個開放的系統,只有開放的系統纔可能遠離熱力學的終局,保持長久的生機。

PoS 有其價值,也有其問題,因此無法適用所有場景。Layer 1 的區塊鏈協議必須使用 PoW,只有使用 PoW 的 Layer 1 才能解決我們希望解決的問題,實現我們希望的未來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章