*本文做者爲Qtum量子鏈研究院核心工程師鄭義,原文發佈於Qtum量子鏈(qtumchain)公衆號前端
目錄算法
1、 信息數據庫
2、 互聯網進化史編程
1. 單向流動的Web 1.0後端
2. 雙向互動的Web 2.0瀏覽器
3. 去中心化的Web 3.0安全
3、 Web 3.0服務器
1. 信息共享網絡
2. 數字貨幣的誕生併發
3. 去中心化應用平臺
4. 開發中的項目
4、 對應用平臺將來發展的思考
序言:
自比特幣誕生以來,已通過去了十年的時間,區塊鏈和數字貨幣的概念已經被你們所熟知。現在,業內開始頻繁說起Web 3.0的概念,但關於Web 3.0究竟是什麼,卻不多有人能說清楚。本文將帶您一覽Web 3.0的前因後果,而且對Web 3.0的各類說法進行去僞存真,最後給出對Web 3.0的將來發展方向的思考。
「信息交流是人類的基本需求」
人類既是信息的生產者也是消費者。信息交流是生產和消費過程當中必不可少的環節。
在沒有互聯網的時代,信息交流的手段十分有限。人們只能當面走到一塊兒,或者經過書信的方式進行交流。
以獲取知識爲例:教師教書、學生聽講、學生提問、老師解答。學生經過和老師信息交流,獲取了新知識。
以商品交易爲例:貨比三家、討價還價、達成一致、一手交錢、一手交貨。買家和賣家經過信息交流,完成了交易。在這樣的交流過程當中,信息的持久、隱私、防篡改等特性都難以保證。
上圖:電視劇大宅門中的「袖裏吞金」片斷,中國古代隱私交易的方式
互聯網的出現,大大提高了信息交流的效率和質量。
人們獲取知識的方式,變成了搜索引擎、知乎、Wiki、在線課堂。任何問題,只要在電腦或手機上輕鬆點擊,答案就當即以圖片、文字、視頻的方式返回給你。
人們進行交易的方式,也變成了淘寶瀏覽、支付寶支付、快遞送貨、確認收貨的流程。足不出戶,遍覽天下商品,買東西變得十分便捷。
「生產力決定生產關係,生產關係會副作用於生產力」
圖1:Web 1.0和Web 2.0,單向和雙向的信息流動
互聯網的最先期是Web1.0的模式。彼時,信息只能從Server向Client單向流動。網站對於全部用戶來講,是隻讀的。
Web 1.0的典型應用包括網址導航、門戶網站等。咱們有幸找到了知名網址導航Hao123在2011年的頁面截圖來幫助咱們回顧Web 1.0的歷史,以下圖。能夠看到,網站的全部信息都以靜態的方式呈如今網頁上供用戶瀏覽。當時崛起的中國四大門戶網站,新浪、網易、搜狐、騰訊,都位於網頁上方的最顯眼位置。這也能夠看出,在2011年,Web 1.0的應用佔據着市場的主導位置。
圖2:2011年的Hao123截圖,Web 1.0的網站佔據主流(圖片來自百度知道)
Web 1.0模式下,生產關係是簡單的生產者/消費者模式。Server負責生產信息:網址導航收集網址,門戶網站撰寫新聞,都是生產信息的過程。Client負責消費信息:點擊網站連接跳轉,閱讀新聞,都是消費信息的過程。
不過,單向的信息流動儼然沒法知足信息交流的需求。通過PHP、Java等網站後端技術以及Ajax、JavaScript等網站前端技術的迅速發展,互聯網很快進入了Web 2.0時代。這時,信息能在Server和Client之間雙向流動。網站對於用戶而言具備了可讀寫性。
Web 2.0就此產生了大量的應用。時至今日,咱們平常使用的絕大多數應用都是工做在Web 2.0的模式下。其應用主要包含兩大類,讓咱們以今天Hao123的頁面截圖爲例介紹以下:
1. Server提供工具,Client與Server進行信息交互從而使用工具。典型的應用有搜索引擎、聊天工具、支付工具、網絡遊戲等。例如圖中的百度、百度地圖、12306都是屬於這一類。
2. Server提供平臺,Client能夠經過平臺上傳信息、獲取信息、進行用戶間的交流等。典型的應用包括社交網絡、電商平臺等。例如圖中的淘寶網、京東商城、58同城、知乎都屬於這一類。
圖3:2019年的Hao123截圖,Web 2.0的網站佔據主流
Web 2.0的生產關係和Web 1.0相比發生了巨大的改變:
首先,Server提供給Client的再也不僅僅是信息,而是包括計算、存儲、交易甚至物流等在內的各類服務。其次,Client必須和Server進行信息的交互,才能使用Server提供的服務。最後,Server提供的信息不只能夠由本身生產,還能夠來自於Client的上傳。
Web 2.0的產生和發展很好地印證了歷史惟物主義中的兩個重要觀點:
1. 生產力決定生產關係。隨着互聯網上生產的信息量不斷增長,Web 1.0已經沒法知足生產力的需求,Web 2.0應運而生。例如當時,隨着網站的不斷增長,基礎的網址導航已經沒法知足海量網站的檢索需求,因此才產生了搜索引擎。又譬如阿里巴巴最開始的模式是企業黃頁,但隨着企業和商品的不斷增長,其逐漸演化爲了電商平臺。
2. 生產關係會副作用於生產力。Web 2.0改變了互聯網節點間的生產關係後,Client具有了信息生產者和消費者的雙重身份,這進一步激發了Client生產信息的能力和意願。在這樣的環境下,先是產生了BBS、社交網絡等以UGC(用戶生產內容)爲主的平臺,又迎來了直播、短視頻等以PGC(專業生產內容)爲主的應用。互聯網上的信息量和信息種類進一步獲得提高。
但正是隨着信息量和信息種類的進一步提高,Web 2.0的瓶頸也體現了出來——即Server的中心化問題。在Web 2.0這種Client/Server的模式下,Server成爲了信息的「中介」:全部的信息都會通過Server,部分會存儲在Server。那咱們是否能夠徹底信任Server會正確地、合適地、如約地處理這些信息呢?
答案顯然是否認的,Server的中心化問題正是Web 2.0模式難以逾越的障礙。只有改變互聯網節點之間的生產關係,讓信息再也不通過中心化的Server,才能完全解決這個問題。
在這樣的背景下,Web 3.0的概念逐漸顯露了出來。Web3.0的核心思想是去中心化,也叫作P2P(Peer-To-Peer)。在Web 3.0的模式下,節點之間經過直接的鏈接來交流信息,而再也不須要中心化的Server。全部節點都是對等的關係,不區分Client和Server,而是統一稱之爲Peer。Peer須要遵照特定的計算、存儲、網絡等協議來鏈接其餘Peer從而加入到去中心化應用中,並提供必定的計算、存儲、帶寬等資源來維持應用的運行。
誤區1:語義網絡(Semantic Web)、人工智能(AI)等技術是Web 3.0。
分析:這些技術能夠看作是生產工具的進步。它們提高了人們生產信息、交流信息的能力,但並無從本質上改變生產關係,因此不能被認爲是Web 3.0。
「 不一樣的去中心化生產關係 」
大多數人可能沒注意到,最先的Web 3.0的嘗試實際上來自於一項沿用至今的技術:BT(BitTorrent)。BT產生的動機是爲了解決大型文件傳輸時帶寬不足的問題。在Client/Server的模式下,Server發佈了大型的文件後(例如操做系統、視頻文件、遊戲安裝包等),會面臨大量的Client同時下載。因爲Server的帶寬有限,則會出現Client下載速度過慢的問題。這是一個典型的隨着生產力提高,生產關係沒法知足生產力的場景。
BT所以設計了一套去中心化的文件傳輸方案。當Peer發佈文件的時候,會把文件切分紅許多小的數據塊,供其餘Peer進行下載,同時發佈全部數據塊的哈希值供驗證。當其餘Peer下載了數據塊並進行哈希值驗證後,會提供給更多的Peer下載。最終,文件會以數據塊的形式分佈在多個Peer中。新的下載者下載文件的時候,其實是同時從多個Peer下載文件的不一樣部分,並最終拼接成完整的文件。帶寬的壓力就變成由多個Peer共同承擔,下載速度從而獲得了提高。
圖4:BT的網絡結構(圖片來自Threestory Studio)
在最初BT的設計中,除了Peer以外,還須要一個或多個Tracker節點來實時記錄每一個文件分佈在哪些Peer中。下載者會鏈接若干個Tracker來獲取文件的Peer信息,從而決定鏈接哪些Peer來獲取文件。Traker一般會由一些下載站來維護。後續,BT加入了分佈式哈希表(DHT,DistributedHash Table)的設計,將文件和節點的映射關係分佈式地記錄在多個Peer中,從而實現了徹底對等的網絡。現在的BT網絡中,Tracker和DHT兩種模式是共存的。
BT還存在一個問題:缺少對Peer的激勵機制。這形成了部分Peer只下載不上傳,影響了整個網絡的文件傳輸。後來出現了PT(PrivateTracker)模式,即私有的Tracker。PT會讓每一個鏈接本身的Peer上報本身的上傳量和下載量,從而給予「上傳下載比例」高的Peer更好的待遇:積分獎勵,更高的下載優先級、帶寬等。
不過BT很好地解決了Server的中心化問題,見下表。
基於BT的思想,產生了不少相似的Web 3.0技術,例如電驢(eMule)、PPTV等,也產生了迅雷、VeryCD等咱們所熟知的互聯網產品。但後來,這些應用都走向了沒落。由於隨着CDN、網盤等技術的出現和發展,BT主要解決的帶寬問題,在Web 2.0的模式下也獲得瞭解決。而BT的Web 3.0特性,如隱私性、可信性等,對於用戶來講並非特別重要。再加上各國對於盜版的嚴厲打擊,BT的市場份額相比其巔峯時期大大縮水。
事實上,因爲BT能夠工做在Tracker、PT、DHT這3中不一樣的模式下,因此對應了3種不一樣的生產關係。它們之間的區別以下:
這些模式的嘗試給後來的Web3.0系統設計帶來了一些啓發:
1. 給節點賦予多種不一樣的類型,更有利於激發用戶的活力。由於不一樣用戶使用系統的目的並不一致。在BT中,有的用戶是爲了下載數據、有的是分享數據、有的是創建社區。用戶須要根據本身的需求選擇對應類型的節點進行運行,而徹底對等的網絡是作不到這點的。
2. 給貢獻服務的節點以適當的激勵,更有利於促使用戶爲系統做出貢獻。若是沒有激勵機制的存在,一些惡意的節點會不遵照協議,只使用系統但不做出貢獻。例如BT中的只下載不上傳的狀況。
2009年比特幣的產生給Web 3.0帶來了新的一類應用——數字貨幣。比特幣提出的動機是爲了創建一套全球化的貨幣體系和支付網絡,這在Client/Server模式下是難以實現的。由於Server的中心化問題,包括數據丟失、隱私保護、可信計算,對於貨幣和支付應用來講是很是致命的。另外,Server會面臨政府的監管,單一中心創建的貨幣和支付系統很難被全世界所接受。
比特幣的設計充分吸收了BT的經驗,賦予了節點不一樣的類型,且給貢獻服務的節點以獎勵。比特幣的節點分全節點和輕節點兩種。全節點負責維護服務也可使用服務。輕節點則只能使用服務。其中全節點又分爲普通全節點和礦工,礦工會額外提供算力以換取數字貨幣做爲獎勵。
圖5:比特幣的網絡結構(圖片來自Mastering Bitcoin)
比特幣經過如下方式解決了Server的中心化問題:
比特幣的生產關係能夠總結爲:部分節點提供服務,全部節點使用服務。全部全節點是服務的提供者,負責同步信息、驗證信息。其中,礦工是有償的服務提供者,即提供算力,得到獎勵。其餘是無償的服務提供者。全部節點都是服務的使用者:從網絡同步交易信息,擁有數字貨幣後能夠發起交易。
在比特幣使用日益普及的同時,也面臨着一些問題,但隨着技術的發展都獲得了必定程度的解決。好比,PoW共識面臨着能源問題,因而後來PoS共識被提出,並應用在了Qtum等新的區塊鏈系統中。又好比,交易的金額是以明文的形式存儲在區塊鏈上的,存在必定的隱私問題。因而zk-SNARK、MimbleWimble等隱私算法被提出,並應用在了ZCash、Grin、Beam等新的區塊鏈系統中。
以太坊在比特幣以後開啓了新的一種Web 3.0模式,咱們稱之爲去中心化應用平臺。以太坊在區塊鏈上加入了虛擬機功能,容許用戶在鏈上建立去中心化的應用,也叫作智能合約或DApp。以太坊上的虛擬機叫作EVM,可使用對應的Solidity語言編寫應用。由此,以太坊上誕生了一大批DApp,包括鏈上代幣、收藏遊戲、去中心化交易所、預測市場等。
圖6:以太坊上的DApp(圖片來自DApp Review)
以太坊的生產關係仍然是部分節點提供服務,全部節點使用服務的模式。可是可使用的服務除了數字貨幣的轉帳交易以外,還能夠進行DApp相關的操做。例如,開發者能夠發佈DApp,普通用戶能夠交互式地使用DApp。這種模式賦予了Web 3.0更多的可能性,容許開發者靈活地構建各類各樣的去中心化應用,而沒必要關心底層的去中心化協議。
以太坊是去中心化應用平臺的首次嘗試,存在着不少明顯的不足。其中最爲主要的是性能問題。由於全部節點都會運行一遍鏈上的智能合約以驗證合約的正確性,因此合約的運算和存儲等資源受到了單個節點的CPU、內存、硬盤的限制。EOS經過下降去中心化程度,將共識改成了dPoS,即合約只須要21個高性能的超級節點進行驗證,從而提高了合約的性能。但這仍舊未能突破單個節點的資源限制,與Web 2.0模式下應用的性能相差很遠。
從已有的信息共享、數字貨幣、去中心化應用平臺三種Web 3.0的應用模式能夠看出兩點:
1. Web 3.0的底層技術還沒有成熟。一方面表現爲,當前的底層技術所能提供的性能較弱,沒法支撐大規模的應用。另外一方面,不少Web2.0應用依賴的底層技術,在Web 3.0模式下都還沒有出現解決方案,開發者開發一個新的Web 3.0應用的時候,不得不從新進行底層模塊(包括傳輸層、網絡層等)的設計和開發。
2. Web 3.0的應用模式還有待探索。目前Web 3.0可以應用的場景過於狹窄,不少Web2.0涉及的領域,例如社交網絡、電商平臺等,沒法在Web 3.0的模式下落地。這些場景都會遇到Web 2.0中的Server中心化問題,可是目前並沒能經過Web 3.0的模式進行解決。另外,Web 3.0也有望催生出更多新的應用模式和生產關係。
對Web 3.0底層技術的探索一直進行着,如下列舉一些項目供參考。其中去中心化應用平臺主要是爲解決DApp運行環境的性能問題。而文件存儲、消息通訊、數據庫這3個分類,是爲了提供一些經常使用的底層技術的解決方案。
目前對於Web 3.0應用模式的探索還很是早期。從下圖中能夠看出,Web 3.0的項目,大多數都在照搬Web 2.0中一些成功的模式,而沒有進行太多的思考和創新。不少項目雖然使用了區塊鏈等去中心化技術,但生產關係仍是傳統的Client/Server模式,以致於每每陷入到了嚴重的誤區中。
圖7:Web 3.0的應用圖譜(圖片來自Medium)
誤區2:Web 3.0會取代2.0,全部應用均可以去中心化。
分析:
1. Web 3.0會和2.0、1.0共存。能夠看到Web 2.0的出現並未徹底取代1.0,傳統的門戶網站仍然存在而且知足部分用戶的需求。因此,Web 3.0並不會取代它的前輩們,這三者是共存的關係。
2. 有些應用經過Web 2.0的模式就能很好實現,不須要Web 3.0。例如,有些項目想要實現去中心化的分佈式計算(也叫Volunteer Computing或Grid Computing)平臺,包括Golem、Enigma、Sonm等。但實則用Client/Server的模式就能很好實現,NiceHash、BOINC都是成功的例子。
3. Web 3.0可以解決一部分Web 2.0解決不了的問題。就像Web 2.0解決了搜索引擎和電商中的交互問題同樣,Web 3.0目前也解決了文件傳輸的帶寬問題和貨幣的全球支付問題。
4.Web 3.0會誕生全新的應用模式和生產關係。就像Web 2.0誕生了涉及網絡同樣,Web 3.0目前也誕生了信息共享、數字貨幣、去中心化應用平臺這些之前沒有過的模式。
「 應用平臺的完善,纔會帶來應用的爆發 」
曾經Web 2.0的出現,雖然從本質上來看是互聯網信息量增長所催生的,可是直接因素仍是依靠底層技術的完善,特別是應用平臺的完善。
最初,開發者須要使用複雜的MFC、QT等技術開發客戶端程序和服務器進行信息交互。隨着Chrome瀏覽器的出現和完善,以及JavaScript瀏覽器端編程語言的普及,你們才轉而構建交互式的網頁應用,或稱做Web App。最後,進入了移動互聯網時代,iOS和Android兩大平臺佔據了主流地位。直到今天,Web2.0的應用已經穩定地集中在Chrome、iOS、Android三大平臺上。
只有當完善的、通用的應用平臺出現,而開發者沒必要再關注網絡通訊、消息隊列等底層技術細節的時候,才能把更多的思考放在應用的設計上,從而帶來應用爆發式的出現。如下咱們對比了正在開發中的Web 3.0應用平臺:
能夠看到,雖然Web3.0應用平臺還處於MFC、QT的時代,但衆多項目正在努力向着下一階段演進。從開發環境而言,EVM和WASM等虛擬機的功能十分有限,缺少IO、文件、進程、線程、異步、Socket、定時任務等操做系統級別的接口,而Linux虛擬機和雲的嘗試也許會帶來起色。從計算性能而言,雖然跨鏈、側鏈技術能必定程度上帶來擴展,可是應用仍然沒法作到內部並行,並且始終受到單節點性能的限制,所以鏈下擴容技術更有潛力。從存儲性能而言,全局可驗證的要求致使了全部的操做、中間狀態都記錄在區塊鏈上,存儲空間過大,正在探索的P2P存儲和鏈下存儲值得期待。
基於當前技術發展的趨勢,咱們認爲,去中心化應用平臺至少要達到如下要求,纔是發展更多Web 3.0應用的基礎:
1. 既提供可靠的鏈上計算環境,又提供高性能的鏈下計算環境。
2. 鏈上計算保證安全、可驗證。
3. 鏈下計算容許應用內併發,計算、存儲等資源可無限擴展。
其中的技術難度主要在鏈下計算部分,目前並無成熟的解決方案。但相信不久的未來,必定會出現。到那個時候,將會開啓互聯網、區塊鏈和數字貨幣的下個十年。
免責聲明:本文僅表明做者我的觀點,不表明 Qtum 量子鏈基金會立場,不構成任何投資意見。歡迎關注Qtum量子鏈(qtumchain)官方公衆號,瞭解更多區塊鏈技術最新研究資訊。