這兩天在橙皮書的微信羣裏面產生了 PoW 和 PoS 的大討論,甚是精彩,從討論中我看到了許多有價值的觀點。由於微信羣本身是一個非常不適合討論的工具,討論到後來很多回覆被忽略,很多問題被反覆提出來車軲轆說,效率實在太低,因此我在這裏將討論中提出的問題整理出來,統一回復一次,避免重複勞動。

原文標題:《PoW 和 PoS 大辯論:誰擁有真實的開放性?誰能遠離熱力學的終局?》
文章來源:Nervos 中文社區
作者:謝晗劍,Nervos 創始人

觀點:PoW 與 PoS 本質的區別在於參與共識是否依賴歷史janx,謝晗劍,Nervos 創始人

A:POS 大戶坐着獲得的資本利得,是小散無法逾越的鴻溝,且無法約束他的權利。

B:這個問題是社會正常現象吧 , 有錢的人掙錢本身就是比平民容易 , 他投入這麼多錢收入卻比別人少 , 那纔是不公平啊 , 現在是大家獲得的比例是一樣的 , 大戶投入的錢多 , 就是會獲得更多的回報。

以上是一個 PoW 和 PoS 討論中常見的對話。A 提出了兩個問題,第一個是公平性問題:PoS 大戶坐着獲利,普通人沒有;第二個是無法制約問題:PoS 大戶的權利無法約束。B 回答了第一個問題。

對於問題 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 的設計目標是 Layer1,一個全世界共用的基礎設施,我們希望它可以長久而且中立的運行,要做到這一點,系統不應該讓先發者(包括系統設計者自己)獲得天然的優勢。

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

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

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

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

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

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

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

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

3、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 至少給了我們一個更長的時間維度上使得壟斷難以存在的設計,我覺得這一點對於 Layer1 至關重要。

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 才能解決我們希望解決的問題,實現我們希望的未來。

來源鏈接:talk.nervos.org