在祕猿小課堂 16- 25 期,咱們給讀者介紹了構建加密經濟網絡的技術實現的兩個部分,即 Cell 模型和 CKB-VM 虛擬機。在本期中,咱們將會進入構建加密經濟背後的三大支柱之一的共識部分(加密經濟的三大支柱:技術實現、共識協議、經濟模型。)在這一部分,咱們會給你們講解,祕猿科技技術團隊在深刻研究 PoW 和 PoS 以及其餘共識後,爲何堅決選擇 PoW 做爲底層公鏈 CKB 的共識協議緣由。
祕猿科技區塊鏈小課堂第 26 期算法
關於 PoW 和 PoS 的誤解太多,想要在一篇文章中講個明白實在是一個極高難度的任務,因此這裏只簡單討論兩點,一個是從經濟學上思考 PoS 給出的美好承諾是否可靠,另外一個是 PoS 本質上是一種許可機制。之因此拿這兩點出來是由於不少討論很是糾結一些技術性的細節,忽視了這兩個根本性的問題。segmentfault
區塊鏈技術提供的價值是去中心化的安全,而安全是能夠用攻擊成原本衡量的。一條鏈的攻擊成本有多高,它就有多安全。安全
區塊鏈的共識節點提供的產品是安全,共識節點是網絡服務的生產者。咱們也知道,經濟學裏面有一個基本定律,在徹底競爭市場中,生產者在均衡狀態下的邊際收益等於邊際成本。也就是說,若是區塊鏈的共識算法創造了一個徹底競爭市場,提供多少安全,就須要多少生產成本:微信
攻擊成本 = 安全程度 = 生產成本
想要提供多少邊際安全,就須要付出多少邊際成本。如今 PoS 告訴咱們,咱們能夠提供等量的安全,可是隻須要 10% 甚至 1% 的成本,你不會以爲很奇怪嗎?爲何 PoS 這麼容易就打破了經濟規律?網絡
一種狀況是,同等安全程度的PoS須要的實際成本是同樣的,只是一部分被隱藏起來了。以 DPOS 爲例,若是你想要作 Validator,就須要經過某些方法蒐集足夠多的票投給本身,進入前 X 個 Validator 的列表才行。蒐集足夠多的票的成本是多少呢?這個成本對於不一樣的人/機構是同樣的嗎?若是不同,這是一件好事仍是壞事呢?這個成本是一個公開信息嗎?若是不是一個公開信息,這是一件好事仍是壞事呢?架構
我很喜歡一句話:less
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 沒有創造一個徹底競爭市場。區塊鏈
在 PoS 中,將來的共識羣體是由今天的共識羣體決定的。任何新的節點想要參與共識都須要經過至少一個交易來實現(e.g. 抵押,投票,etc.),而這個交易是否被處理是由今天的共識羣體決定,他們能夠處理這個交易,也能夠不處理這個交易,若是不處理這個交易,新的節點永遠都沒法參與共識。同時,「不處理交易」是容易假裝而難於懲罰的行爲,我尚未看到能在共識協議中解決這個問題的方案。PoS 每每是根據 Stake 的權重來分配出塊比例(和節點數量不要緊),考慮到大部分系統中 stake 的集中程度,這是一個很是實際的問題。加密
PoW 是完全的 Permissionless。不管何時,只要你願意,均可以買礦機和電力加入出塊者的行列,不須要今天的礦工給你任何形式的許可。你也許會說,我仍是須要購買礦機和電力呀,這是否是一種形式的許可呢?是的,從更低一層來講,這也是一種許可。但遺憾的是,在全部的 Proof of XXX 中,這已是最去中心化的許可形式了,畢竟礦機生產和電力資源的去中心化程度遠高於各類 Tokens。咱們老是應該追求儘量的去中心化,不然用回中心化系統就行了。
或許又有人問:若是設計一種不須要向鏈上發送任何交易,只要 Token 放在那裏就能夠參與共識的 PoS,不是就解決了你說的問題嗎?
這會帶來兩個問題:
Layer 1 是加密經濟的基礎,承擔 Layer 1 角色的區塊鏈必須是一個無需許可的網絡,由於 Layer 1 必須是全球共享的、中立的設施,就像互聯網,而"須要許可「則意味着它是受到某一羣人控制的,與這個目標是根本衝突的。從上面的分析咱們能夠得出一個結論,若是咱們但願 Layer 1 儘量的去中心化和安全,Layer 1 就只有PoW 一個選項。PoS 不是不能用,只是不適合 Layer 1。
這兩天在「橙皮書」的微信羣裏面產生了 PoW 和 PoS 的大討論,甚是精彩,從討論中我看到了許多有價值的觀點。
因爲微信羣自己是一個很是不適合討論的工具,討論到後來不少回覆被忽略,不少問題被反覆提出來車軲轆說,效率實在過低,所以我在這裏將討論中提出的問題整理出來,統一回復一次,避免重複勞動。
A:POS 大戶坐着得到的資本利得,是小散沒法逾越的鴻溝,且沒法約束他的權利。
B:這個問題是社會正常現象吧,有錢的人掙錢自己就是比平民容易,他投入這麼多錢收入卻比別人少,那纔是不公平啊,如今是你們得到的比例是同樣的,大戶投入的錢多,就是會得到更多的回報
這是一個 PoW 和 PoS 討論中常見的對話。A 提出了兩個問題:
對於問題 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,反之你應該會更贊同 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 有兩個優勢能夠削弱這個問題:
一、出塊節點和生態中的關鍵用戶是解耦的。生態中的關鍵用戶,指的是交易所、錢包等圍繞區塊鏈提供服務的服務商,它們爲大量的用戶提供優質的服務,彙集了大量的用戶和交易。
在 PoS 中,因爲擁有大量用戶和交易,Stake 會天然的往生態中的關鍵用戶集中,造成自然的 Stake Pool,所以關鍵用戶在業務上的優點能夠轉化成在共識和治理上的優點(在某些鏈裏面已經體現的很是明顯了),使得先行者的優點更增強化。
在 PoW 中,礦工羣體和交易所 / 錢包是獨立的,他們有不一樣的專業分工,經過不一樣的專業知識,不一樣的方式獲取回報,關鍵用戶不能將本身的業務優點轉化爲協議中的優點,礦工也沒辦法將本身在協議中的優點轉化爲上層業務的優點。在 PoW 中,開發者、用戶和共識節點之間能夠造成制衡。
二、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 才能解決咱們但願解決的問題,實現咱們但願的將來。