1. 程式人生 > >一切為了落地,為什麼要把PP.io設計成三個階段!

一切為了落地,為什麼要把PP.io設計成三個階段!

之前的一篇文章,我講解了PP.io的三個階段:“強中心”,“弱中心”,“去中心”。今天來解釋下,我為什麼要分三個階段逐步實現PP.io去中心化儲存網路:
簡單地說,就是在區塊鏈不可能三角理論中,我暫時放棄了去中心化。
在這裡插入圖片描述
我先解釋一下什麼是不可能三角理論。就是說可擴充套件性(Scalable),去中心化(Decentralized),一致性(Consistent) 這三個點不能都取,只有取其二。比特幣和以太坊犧牲的是可擴充套件性,因為他們做得是加密數字貨幣。
而我在設計PP.io的時候,為了做好場景落地,暫時犧牲了一定的去中心化。
我是怎麼詳細思考的呢?主要3方面考慮。

非常複雜的證明機制
在這裡插入圖片描述


數字貨幣,比特幣和以太坊的證明機制非常簡單,簡單的說,就是做數學題,大家都來猜一個數字,誰先猜到一個數,符合遊戲的要求,誰獲得這個獎勵。

你看,多簡單的演算法。這個演算法因為簡單,所以數學上非常嚴密,只要這個計算過程在數學上是不可反向推算的,就沒有任何漏洞。因為僅僅設計的是數學遊戲,所以演算法非常簡單,不過這種數學計算卻變得沒有意義:挖比特幣的人越多,人類的資源被白白消耗的也就越多。
而去中心化儲存公鏈肩負的偉大使命,就是把比特幣這樣浪費資源的挖礦方式,變成能提供服務,做對人類社會有意義的事。我在設計PP.io的時候也是這樣想的。那麼提供的服務怎麼計量,最基本的就是用儲存和流量分別來計,傳統的雲服務也是用這兩個因素。

儲存是什麼,就是存了一個內容,有多大,存了多少時間,這就是一個計量因素;流量是什麼,就是傳輸了多少資料,這也是一個計量因素。要證明這兩個因素,都不只是靠單機演算法就能完成,都需要用網路通訊,由第三方節點對雙方做見證的機制來完成證明,而如果這個第三方不可信,就需要多個第三方來共同見證,再在這些第三方中共識達成一致。這個過程比起比特幣的單機演算法要複雜得多。

另外還有一點,比特幣每次在出塊的時候,只有一個節點能獲得獎勵,因為它做最先做對數學題,這非常簡單。而去中心化儲存系統要對所有在這段時間提供了服務的節點,就應該根據貢獻獲得獎勵。這比特幣複雜得多。(可能你曾經參與過比特幣挖礦,誤以為比特幣是按照算力來分配獎勵的。其實不是,因為比特幣引入了一箇中心化的節點叫礦池。礦池相當於保險,把原本只有少數節點獲得比特幣獎勵分給了所有參與挖礦的人。)

所以去中心化儲存的證明機制比比特幣的證明機制要困難得多,困難到什麼程度,舉個例子吧,IPFS團隊開發得的Filecoin於2017年中就釋出了白皮書,白皮書裡面就提到了PoSt演算法和PoRep演算法,佔了整個白皮書50%的篇幅。2018年秋季,IPFS團隊專門發表了一篇PoRep長達50頁的論文(後面我會專門寫文章解讀這篇論文)。可見,PoRep演算法有多麼複雜。他們很想一步做到去中心化,現在是2018年底,除了兩篇論文和幾個演示視訊之外,沒有開放出其他任何實質資料,相信他們也一定遇到了巨大的挑戰。

我在設計PP.io的時候是這樣考慮的,在完全去中心化的環境中,所有的節點都可能作惡。在所有節點都可能作惡的前提下,設計任何機制都會非常複雜,特別是證明機制。證明機制越複雜,安全漏洞就越多。而如果一開始放棄完全不可信的環境,讓部分角色變得可信,只有提供儲存的儲存節點是可能作惡的,整個演算法將簡單很多。
在這裡插入圖片描述
所有我在設計PP.io的”強中心“階段的時候,排程索引節點,監督節點和結算中心是由中心化服務完成,只有儲存節點是去中心的,他們是可能作惡的。在這個階段,先實現儲存節點相關的證明機制,先把整個系統執行起來。其他因素在這段時間更重要,效能,Qos,經濟模型等。
然後,在“弱中心”階段,之前中心化服務變成可以分開部署的節點。排程索引節點和監督節點可以允許授權部署,但是必須通過線下的商業條款約束,並保證不會作惡。在這期間,我們在技術上做好這些授權節點的證明機制。當我們在工程上和數學上都做到了無懈可擊的時候,就可以開放准入門檻,走向完全去中心。

服務質量(QoS)的迭代和優化

我前面專門寫文章介紹了服務質量(Qos)的重要性:去中心化儲存的QoS是什麼?

我先來講一下我在PPTV創業過程中做技術的故事,當年我們是怎麼做好Qos的。 我於2004年開始做了10年的P2P技術。在這10年裡,我先後經歷了P2P直播,P2P點播,在嵌入式裝置上做P2P技術。其中我在P2P直播的Qos做到了,在同時千萬人線上看同一個節目的時候,啟動時長平均1.2s;平均每30分鐘卡頓1.6s;全網最多延遲90。點播的Qos做到了 90%的頻寬節約比;啟動時長平均1.5s;平均每30分鐘卡頓2.2s;平均拖動響應時間 0.9s。

我們做到了如此優秀的Qos,也為我們後續做到全球5億使用者提供了非常堅實的基礎。

我們當時取得了這樣優秀的成績,並不是一開始就是這樣,而是經過長期的日復一日的優化和無數個版本的升級迭代才做到的。在這個過程中,我們提煉至少100個QoS指標,建立了大資料分析系統,對不同地國家不同地區做拆分來逐個優化。我們還建立了AB測試機制,A網為大部分使用者,他們使用穩定的核心;B網為小部分自願使用者,他們使用最新的核心。我們快速評估演算法對於QoS的有效性,B網會頻繁升級P2P核心,直到確定新P2P核心的全網QoS更好,並且測試下來非常穩定了。如果做到了,我們便會對A網核心進行全面的升級,這樣能讓大部分使用者使用到最好的使用者體驗。

但是,如果在完全去中心的環境下,升級是需要共識的,就像比特幣和以太坊。比特幣的升級,經歷很多次軟分叉和硬分叉,而且大的升級每次都經歷了很長時間。這樣的產品升級效率對做好服務質量來說是非常不利的。好的QoS是迭代出來的,不是一次做好的。如果早期直接代用去中心化,那麼升級的成本就會極高,迭代週期就會非常緩慢。

做好了QoS是產品,做不好QoS是玩具。現在有些所謂國際知名公鏈專案,故事講得非常好,”宗教信徒”也不少,但在我看來,這是玩具,因為用起來,非常不好用。

而我在設計PP.io時,一開始選擇“強中心”,就能非常高效的去調優QoS。而好的QoS,就會有更多使用者進來使用,這樣儲存資料就會越多。有了更多的資料,就會吸引更多的儲存節點,從而形成一個良性迴圈。當QoS做到了非常優秀時,我們再走向去中心化,這個時候,因為QoS好了,使用者數量也多了,公信就越來越重要。

經濟模式

我在設計PP.io的時候,要設計了一套激勵機制,儲存節點按照這套經濟激勵模型在PP.io上提供服務就能獲得收益。經濟模型的好壞,就直接決定了專案的成敗。

經濟機制看起來非常簡單,但是實際運營起來且非常複雜。例如前面提到去中心化儲存的安全性問題,也說明了不可能三角形理論,只靠重量級的數學證明,是不能徹底解決作惡問題,還要依賴於經濟懲罰。
在這裡插入圖片描述
首先,我問幾個問題,你怎麼看:

是否要求儲存節點必須有抵押,才能挖礦?

反方觀點:儲存節點不抵押就可以挖礦。如果儲存節點必須有抵押,那麼儲存節點的進入門檻就會非常高。

正方觀點:儲存節點必須先抵押才能挖礦。因為有了抵押,就能在他不遵守規則時候進行懲罰,這樣才能保證的儲存節點的穩定性。如果儲存節點隨意上線,隨意離線,那麼P2P網路就會很不穩定,這樣會拉低整個服務的穩定性。

再問一下,如果儲存節點突然下線了,但不是故意下線,例如停電了,應該執行懲罰嗎?

反方觀點:不應該懲罰,在設計的演算法的時候,應該給儲存節點設計一個容錯機制,允許儲存節點偶爾的離線。只要儲存節點不是在作惡,可以不予懲罰。

正方觀點:在計算機程式裡,無法很好地鑑別儲存節點是否故意,所以設計激勵的時候必須一致。只要有離線就要懲罰,這樣能淘汰不良儲存節點,保持優質儲存節點。儲存節點越優質,整個網路的服務質量才能越優質。

這兩個問題,你的意見呢?其實這兩個問題本質上都是經濟學問題。不論怎麼選擇,都會產生之前無法預料的結果。經濟學提倡你希望怎樣的不是就會怎樣,經濟學是一門專門研究事與願違的學科。

我在設計PP.io的時候,是怎麼解決這個問題,首先我預設一種經濟激勵方案,當然這個預設方案不是拍腦袋決定的,而是通過一系列的資料建模和條件假設推算的,後面我會在PP.io的官方github公開經濟模型建模的原始碼。

經濟模型的各方面影響因子非常複雜。而如果一開始就採用去中心化的方案,就會出現很難升級的問題。儲存節點很有可能因為對自己不利,就拒絕升級,就像吳忌寒完全不鳥bitcoin core的人發起BCH硬分叉一樣。

我在設計PP.io的時候,就意識到好的經濟機制是非常重要的,而好的經濟模型是實踐中調整出來的,而過早地去中心化不利於經濟模型的調整。所以早期採用”強中心“是更利於經濟模型的調整,當經濟模型逐步地穩定合理,PP.io也會逐步走向去中心化。

以上這三個原因,就是我為什麼在設計PP.io的時候,依次經過 “強中心”,“弱中心”,“去中心” 三個階段的原因。

文章作者:Wayne Wong
轉載請註明出處
如果有關於區塊鏈學習的交流,可以通過下面的方式聯絡我:
加我微信,注意備註: 區塊鏈
wechat:omnigeeker
github: omnigeeker (Wayne Wong)