論Web3.0和Web3

renyuneyun 2023年03月16日(週四) 1 mins

之前本博客有篇摘錄(《那些稱爲Web 3.0的東西》)簡單提過實際上有兩種不同的關於下一代Web的思路,即W3C的Web 3.0以及區塊鏈的Web 3。最近有了一些更多思考,所以嘗試探討一下我對這個事情的看法。

本文分別介紹一下這兩種思路,梳理一下其關注的重點,然後進行對比,最後談談我的看法。主要側重技術層面討論,而非商業或宣傳。

W3C的Web 3.0以及Tim Berners-Lee的SoLiD

如果按時間來算,那麼W3C(World Wide Web Consortium)是首先提出Web3.0概念的,不晚於2007年(參見World Wide Web Consortium: Web 3.0 Emerging)。他們的理念中,核心是要使用語義網絡(Semantic Web)或者說互聯數據(Linked Data)。在2007年這個文檔中並沒有討論「去中心化」,可能是因爲當年的中心化情形尚不嚴重。但後來如萬維網之父Tim Berners-Lee的SoLiD(Social Linked Data)則是在此之上進一步增加了去中心化的性質。

下文關於Web 3.0的討論,如果涉及去中心化,多是以Solid的理念爲基礎進行的討論。

Tim Berners-Lee講解Solid基本理念

之所以以語義網絡爲核心,是因爲其背後基於形式邏輯,可以帶來強大的互操作性和推理能力。「互操作性」有很多方面,其中一個核心要點是指即使軟件A原來設計時讀取的是某個格式/結構爲X的數據,但通過背後機制(即推理),它自動地可以讀取格式/結構爲Y的數據,不需要做專門的修改。舉個不太對但能反映問題的例子:如果我編寫了一個查看和搜索QQ聊天記錄的軟件,那麼在互操作性的支持下,它自動也可以查看和搜索Element的聊天記錄,即使兩者的具體存儲結構不同。另外,爲了去中心化,我們還需要統一的(或至少跨服務的)身份認證和訪問接口。

Tim Berners-Lee認爲的Web1.0-3.0

這一系列反映的是,Web 3.0的關注重點是讓Web的數據更加機器可讀,統一及標準化,以及互操作性帶來的數據的可移植性。從使用的角度上,以前面這些爲基礎,附加上邏輯推理能力,可以更容易地搭建更方便用戶使用的軟件/網站。從理念的角度上,Web3.0和Solid希望帶給用戶更多的選擇或者自主權:

  • 數據存儲和控制的自主:可移植性使得用戶可以輕易地將數據從一個服務轉移到另一個服務去;

  • 數據使用上的自主:標準及互操作性使得可以比較容易地切換軟件或開發替代軟件。

另外,由於推理能力,已有的數據可以被用來(自動地)推出更多數據,可以一定程度上降低數據不完整帶來的影響,且可以檢查數據內部是否有衝突。

理所當然地,W3C的Web 3.0是基於現有的Web的,所以一般來講用戶不需要重新學習,也不需要放棄已有的東西。

區塊鏈的Web 3

近來這些年,隨着區塊鏈由於炒加密貨幣帶來的火熱,以及以太坊引入的智能合約機制,有人開始提出了基於區塊鏈的Web3理念,並且這個理念現在更廣爲人知。其核心是使用區塊鏈技術,將數據存儲在其上,使用智能合約提供額外功能。

於是其賣點也全部圍繞區塊鏈的特性而展開。比如區塊鏈的去中心化信任。比如數據保存在區塊鏈上不會因爲意外因素而消失,所以對應到網站上,則保證網站不會因爲服務器的意外因素而消失,可以起到文庫的作用。比如不可僞造性保證「我」的信息只有「我」能修改(或者智能合約授權的其他人),沒有人可以仿冒或造假。比如不可變性帶來的自動版本歷史。

可以看到,區塊鏈的Web3理念考慮的重點是數據的存在性、所屬性以及可用性(以及作爲基礎的去中心的信任)。

但數據存在區塊鏈上導致Web 3的使用必須另起爐竈,用戶需要安裝專門的軟件,並且下載整個區塊鏈(或者理論上可以優化到只下載用到的部分)到自己的硬盤上。雖然理論上可以由一些服務器提供橋接機制,讓用戶可以使用瀏覽器來瀏覽區塊鏈上的Web 3,但這又帶來對這些橋接服務器的依賴或者說一定程度的中心化,和區塊鏈本身的理念是相悖的。

兩者在主要特點上的對比

無論是Web 3.0還是Web 3,兩者都表達了對當下Web的(向大平臺)中心化趨勢的不滿,追求去中心化,也都宣稱要給用戶更多控制權和自主權。但從兩者的基本思路上可以看出它們有很大不同,也導向完全不同的途徑。這裏我以一些主要的話題來具體比較兩者的異同。這裏以Solid作爲Web 3.0的代表技術,畢竟它和Web本身都是Tim Berners-Lee發明的;將以太坊作爲Web 3的代表,畢竟它用戶量極大,而且宣稱自己先提了區塊鏈版的Web 3。

其實以太坊那邊把Web 3.0和Web 3兩個名字都佔過。但後來他們更傾向於使用Web 3,所以本文就叫他們Web 3。

如何去中心化

Web 3.0追求的去中心化是對數據和使用的去中心化,也就是數據的可移植性和互操作性,以及各種機制提供方的可替換性。Web 3.0允許任何人建立自己的數據倉庫,並且允許遷移數據到另一個倉庫,且不影響使用,這樣就不會出現中心化大平臺將數據鎖死在其上的情況——不允許數據轉移,不允許數據互聯。以Solid爲例,Pod就是你的數據倉庫,你可以選擇任意的Pod提供者,也可以將你的數據轉移到另一個提供者;App本身不保存你的ID或數據,而是臨時使用你的ID去獲取對你的Pod的讀寫授權,這樣遷移Pod後你對App的使用不會有任何不同;數據是Linked Data形式(RDF文檔),互聯性是內蘊在其中的。另外,身份提供和身份認證的服务均可替换,允許任何人自行搭建自己的服務或選擇/切換任一服務,自然也避免了中心化在某一个平台上。從另一個角度考慮,我們也可以說Solid消除了Web 2.0對平臺的中心化,取而代之的是各個App和各個用戶的Pod互相平級鑲嵌。

而Web 3追求的去中心化則是延續了區塊鏈的去中心化思路,即對信任的去中心化。區塊鏈提供了去中心化的一致性機制,保證了寫入的數據是正確的,且數據不會被篡改。由於數據統一存放在區塊鏈上,那麼互操作也可以保證,且自然也不會被某個平臺(應用軟件/App提供方)鎖死。但同時,Web 3也假設了所有人共同使用同一個區塊鏈(或同一組,見下文關於數據存儲和訪問的部分),也就是說Web 3的去中心化有一個巨大的中心化數據存儲鏈假設。

用戶標識(ID)和身份認證

對Web 3.0來說,前面提到的2007年的演示文稿並沒有規定如何表示用戶標識。W3C有一些不同的技術方案,各有優劣。Solid使用了WebID機制,即通過一個(或一系列)RDF文檔描述你的信息,登錄時使用OAuth(向你的WebID的issuer)確認身份。Solid暫時還沒有形成一個強制性的標準規定一個App如何識別用戶(以爲每個用戶提供各自定製後的服務),但大體上要麼是通過WebID的地址(URI),要麼通過WebID文檔的內容,要麼通過Pod內存儲的App信息(如配置)。

對Web 3,用戶標識就是一串數字,即你的公鑰。而身份認證則是通過密碼學技術,通過你持有的私鑰確認你就是你。理論上可以爲每個用戶在特定的位置生成一個文檔來描述用戶信息,不過沒有形成一致。

二者的身份ID本身均不具有意義。同樣的,如果用戶希望創建另一個身份,但又想將兩個關聯(比如遷移舊身份到新身份),這兩種系統都無法輕易做到這點——都有一些方案,但都不是標準的一部分。

我所知的對多身份更好的一個機制是HubZilla的nomadic identity,參見《互聯社交網絡》

信任機制

以Solid爲例,Web 3.0的App假設WebID的issuer是可信的,並且用戶需要假定Pod提供方是可信的。由於兩者均可自建(且兩者往往是同一個),信任成本並不高。不過廣泛來說,Web 3.0並沒有着重討論信任問題,可以認爲是假定用戶信任自己所選的(或自己搭建的)託管服務。

而Web 3假定所有人都不可信,於是通過區塊鏈保證在這種情況下仍然可以正確存放數據和使用數據,所以Web 3不需要信任。當然也可以說,Web 3假定大家信任那個區塊鏈技術/代碼的信任機制和區塊鏈的實際使用者之間相匹配。經典的例子就是比特幣上擁有>50%算力即可控制整個鏈,所以用戶需要假設不存在有人會控制50%算力。

數據存儲和使用

Web 3.0將每個人自己的數據存儲在自己的Pod(數據庫)中,並且允許用戶隨意選擇和遷移Pod。Pod是某(一或多)臺機器/服務器,所以存在失效的可能。這些機器可以任意修改數據(無論是授權還是惡意),無法保證數據固定不變。由於Pod是存在某臺機器/服務器上,由標準的協議提供外部訪問,所以可以爲數據設置訪問許可。使用者不需要提前下載任何數據,也不需要持久化保存數據。

Web 3將數據存放在區塊鏈上,由區塊鏈的機制確保數據永遠存在且不會被篡改。使用者需要提前下載整個區塊鏈纔能訪問和修改數據(或如果優化存在的話則是下載相關區塊)。同時,由於區塊鏈的特性,這裏隱藏了一個假設,即所有用戶的所有事務(比如寫入)需要可以互相驗證。在絕大多數區塊鏈設計中(比如以太坊),這意味着需要使用同一個區塊鏈。注意這裏的同一個不僅僅是要求技術一樣,還要求從源頭到數據都一樣。如果兩人用了兩個不同的區塊鏈,那麼兩者之間互相無法訪問對方的信息,互相不信任區塊的正確性,互相不認可用戶身份,自然也不存在互操作。這就是爲什麼前文說Web 3的去中心化有一個巨大的中心化數據存儲鏈假設。當然,有一些區塊鏈系統,比如Polkadot之類的宣稱自己可以支持多鏈,但也有各自的問題。而且它們的存在反而證實了這裏關於互操作性缺陷的論點。

數據隱私

Solid中用戶可以很容易地存放私有數據,因爲Pod內的數據由協議/接口保護,協議中包含身份認證和授權相關內容。

Web 3存放在區塊鏈上的數據全部公開,所以無法將私有數據簡單存放在鏈上。如果需要存放私有數據,只有兩種選擇:1. 要麼將其加密並存放在區塊鏈上,且保證密鑰不會存放在區塊鏈上;2. 要麼選擇「鏈外存儲」(off-chain storage),即在區塊鏈上放置一個指針,指向一個鏈外的位置(比如「我的計算機上的某個文件地址」)。做法可以參考IPFS。但選擇鏈外存儲即意味着該數據失去區塊鏈提供的保證,尤其是關於數據的可用性。

數據共享

這裏我們只討論私有數據的共享問題,因爲公有數據本身就是「永遠共享給所有人」的,沒有必要討論。

在Solid上,共享數據也是通過授權機制實現,只需要在數據擁有者之外增加某個「其他人」的訪問授權即可。訪問控制的粒度取決於具體的協議,如WAC(Web Access Control)支持設置讀、寫、附加、控制。

在Web 3上,共享數據難以操作,因爲共享也會涉及撤銷共享。然而由於已有區塊是不可修改的,所以使用區塊鏈機制只能有意義地做到共享,但無法實際撤銷——如果我是一個曾經被授權使用但現在不再擁有授權的惡意用戶,使用我自己編寫的軟件/客戶端,只要我能在歷史區塊中找到讀取方式,那麼就可以用它讀取數據,而不受新的區塊施加的限制的影響。智能合約只能限制寫入,但無法限制惡意用戶的讀取行爲。而如果不使用區塊鏈的機制來達成共享,那麼Web 3的意義便失去了不少。

地址和人類友好地址

Web 3.0沿用URI機制來標記地址,並且繼續使用DNS來提供人類可讀地址。理所當然地,這也延續了DNS機制的優缺點,包括但不限於控制在有限的分發者手中,且如果需要原生加密(HTTPS)則更進一步受限(引流《扯兩句HTTPS和CNNIC的CA信任被吊銷之事》)。

Web 3則沒有深入討論該機制,而且也沒有形成共識。但基礎來說,由於數據存儲在區塊鏈上,都有區塊編號,那麼至少可以使用區塊來作爲數據的第一層地址。於是寬泛地說,Web 3應該可以沿用URL/URI機制,使用自己的「協議」,並以區塊作爲地址。例如可以規定my-web3://qwert/article-a指向my-web3(協議)對應的鏈上一個叫做qwert的區塊上一個叫做article-a的數據。至於人類可讀性,理論上Web 3也可以開發一個類DNS機制,但具體細節(尤其是導航向哪裏)有許多種選擇,这里就不展開了。這個機制的弊端也很明顯,那就是如果數據更新,那麼地址就過時了;永遠無法簡單地使用一個地址指向最新數據,除非每次都遍歷整個區塊鏈來尋找最新版本(或每個用戶提前維護緩存)。至於加密則並沒有標準,應當大體等同於HTTP時代自行處理加密的情況。

超鏈接或其他數據間關係

Solid基於Web標準,並使用Linked Data(LD),原生支持使用URI/URL「引用」其他地方的數據。除了Web 1.0時代就有的超鏈接外,LD還支持其他的數據間關聯方式,比如在數據中直接引用其他地方的數據。這也是Linked Data本身的含義:數據之間是互相鏈接的,可以很容易地從一個數據導航(比如鏈接、跳轉、包含)到另一個數據。

Web 3由於使用了區塊鏈,原生支持數據和它的舊版本之間的關聯。由於超鏈接只是地址的特殊用法,那麼沿用上面提到的地址可能性,超鏈接也可以在Web 3上被支持。相比Solid或者LD,Web 3並沒有更多地討論數據間關係的表示。

實際上有一個叫做IPLD(InterPlanetary Linked Data)的用於區塊鏈的數據模型。但它和前面說的Linked Data不是一回事。

遍歷數據或用戶

Solid或者說Web 3.0,由於數據的去中心化,都不存在遍歷全部數據或用戶的可能性。這點在現有的Web上也一樣,所以應對方法也類似——目錄/黃頁、門戶、搜索引擎等。現有Web在Web 2.0時代的許多「服務」是由「平臺」提供的,它同時提供了數據存儲、身份認證以及應用軟件。於是對每一個平臺來說,它擁有自己平臺上的全部數據,可以說是一種「本地全局」,可以進行遍歷。但Solid上數據存儲或者身份和應用軟件是分離的,所以應用軟件不具有類似的「本地全局」,需要新的解決方案。

Web 3則由於假設/要求所有數據存儲在同一個/組區塊鏈上,那麼理論上完全可以遍歷所有數據及(活動)用戶。

應用程序/App

Solid上的應用程序/App使用標準的協議和Solid Pods進行交互,讀寫用戶數據。App的代碼自行維護,和Pod相分離,可以使用任何語言,部署在任何地方。一般而言,如果App只需要應對一個用戶(不特定的「一個」,或者也可以說是「當前用戶」),那麼App完全可以作爲靜態網頁部署。

Web 3上的應用程序按用到的理念不同可以分成兩類:1. 增強區塊鏈功能的App;2. 使用區塊鏈數據的App。其中第一種是Web 3比較經常提及的所謂dApp(decentralized App,即「去中心化應用程序」),需要依賴智能合約機制來保證執行的正確及結果的可靠;第二種則更接近普通意義的App,未必需要使用智能合約。使用dApp有一些典型場景,尤其是需要寫入區塊鏈的情況——如果不使用智能合約,沒有人會信任寫入的數據。而如果只涉及讀取區塊鏈上的數據,尤其是公開數據,那麼完全不需要智能合約,可以類比爲一個「客戶端」。其中dApp(相比Web 2.0應用)的主要優勢是消除了中心服務器,而依託於區塊鏈的機制,由(所有的/大量的)對等端(客戶端)共同完成。另外注意,區塊鏈上只有持久數據(外存)和智能合約(程序),沒有類似於內存的東西,所以如果涉及「狀態」,那麼需要客戶端自行計算,其計算量也許會是一個問題。

客戶端或瀏覽器類似物

Web 3.0沿用已有的Web架構,預期繼續使用通用客戶端即瀏覽器來訪問,用法和現在的Web類似。只不過它不再圍繞在「平臺」上,而是使用/訪問「應用程序」來和(用戶自己的固定的)「數據存儲」(Pod)交互。當然,和現在的Web類似,Web 3.0也一樣可以使用專用客戶端。如前面所說,Web 3.0帶來的一大特性就是可以很容易地切換應用程序而不用擔心丟失任何已有信息,因爲數據存儲在用戶自己的倉庫中,而非應用程序開發者的平臺內,所以切換應用程序仍然可以訪問原先的數據。

Web 3則是另一種機制,不具有傳統意義上的瀏覽器。Web 3的用戶需要使用一個區塊鏈軟件(對等端/客戶端,例如相應加密貨幣錢包),下載整個區塊鏈,然後訪問其上的數據。這些下載的數據需要持久保存在本地。也就是說,用戶需要預先下載大量數據到本地,然後訪問本地的數據(傳統的瀏覽器也下載,但數據量不可同日而語)。如果用到智能合約,那麼需要下載更廣泛的區塊(如果之前通過優化僅下載部分區塊),並且執行計算。

和已有Web的兼容性

Web 3.0基於現有的Web,對其所有技術都兼容。不過Web 3.0希望對範式進行修改,所以在完整的Web 3.0下,現有的中心化服務將被拋棄,改爲去中心化的App。

Web 3則不具備和現有Web的兼容性,完全另起爐竈。的確,我們可以通過一些橋接站點,來使得用戶可以通過瀏覽器和HTTP(S)協議訪問Web 3的數據,但這僅對讀取有意義,對寫入則比較怪異。因爲如果想要寫入,那麼就需要去競爭區塊的寫入權,其中涉及到計算。如果計算全部由那個橋接站點代勞,那麼這些站點會形成新的中心,和公有區塊鏈的基本假設和原則背道而馳。而如果計算由本地瀏覽器執行,那麼基本等於使瀏覽器成爲(全功能)客戶端,那麼橋接站點的存在則沒有實際意義(更何況還有效率的問題)。而一個沒有寫入能力的所謂Web,其實又退回了Web 1.0時代,完全沒有技術優勢。

綜合對比

上面我們針對一些具體的話題討論了Web 3.0和Web 3技術上的特性。兩者的差異源自選擇的技術路線及其思考的關鍵特性,即區塊鏈vs個人數據庫,以及去中心化信任vs去中心化數據、使用和提供方。

整體來看,兩者各有優劣,且在一些方面通過不同的思路提供了類似的特性。

Web 3.0的優勢是支持隱私數據和共享,用戶(數據擁有者和使用者)本機存儲和使用成本低,應用開發者可以隨意選擇語言,以及互操作性帶來的好處。劣勢是沒有人能保證任何操作的可信性,用戶需要信任「自己」以外的東西(小到服務器,大到Pod提供方)。而數據存儲在Pod內這件事既可以是優勢也可以是劣勢:好處在於一個URI可以永遠指向「最新」數據,用戶也可以隨意撤銷訪問授權(或刪除數據);壞處是數據會隨着服務器而消失。

而Web 3的優勢是用戶(數據擁有者、使用者)和應用開發者不需要信任任何人(只要所有的對等端能滿足該區塊鏈的信任模型,比如不存在算力集中,那麼一切都是可信的),且數據不會消失。而劣勢則是對Web極其有限的兼容,對隱私數據極其有限的支持,難以共享數據,用戶(數據使用者)需要下載大量數據和處理大量計算,應用開發一定程度上受語言限制(智能合約的語言),對區塊鏈本身共識的要求,以及(延續自區塊鏈的)全局性能限制。

兩者通過各自的技術方案,都消除了大(私有)平臺控制用戶數據的問題,都提供了去中心化應用構建的方法。

所以,兩者本質上並非是互相競爭的技術,而是兩類不同的技術。最合理的做法是將兩者結合,而非是用一種完全壓過另一種(當然這裏仍然存在一個以誰爲主的問題,後文討論我的看法)。之所以有誰壓過誰或者你死我活的感覺,更多是宣傳的問題。

從這個角度看,Web 3.0派比Web 3派要好很多。Web 3.0這邊不怎麼斷言「我就是未來」,尤其是一般不會說「Web 3.0就是要以我這個技術爲核心」,比如Solid的官網甚至沒有提Web 3.0這個詞,而只是說「提供更好的Web」;這也是爲什麼你都不怎麼能在網上看到關於Web 3.0的討論(這也是我爲什麼看不下去決定寫這篇博文的一大原因)。而Web 3這邊則很武斷地說「Web 3就是以區塊鏈爲核心」,比如以太坊的Web 3頁面和所謂的Web 3基金會的網站。Web 3.0這邊更多的是學界或業界(技術)人士,本身更擅長和傾向於做事和討論技術問題,當然也理所當然地會產生相互競爭的技術和議案,比如各種不同的ID方案。而Web 3派則更多的是區塊鏈的(商業)人士和鼓吹手,甚至是虛擬幣的炒幣者或是NFT的兜售者,更擅長炒作和宣傳,以及利用人性(的弱點)。有點工業和金融之分的味道。

另外,如果看過我之前那篇摘錄的話,應該會看到區塊鏈Web 3派中有一些喜歡碰瓷的人,比如那個碰瓷縮寫W3C的流氓推特賬號。可以說,之所以區塊鏈的Web 3能廣爲人知,主要是因爲區塊鏈經濟的火熱,和它具體技術細節反而關係不大。

我的看法

至於我個人,我更認可Web 3.0的技術和思路,也更喜歡他們的環境。(這兩者並沒有因果關係。)當然這不代表我認爲應該忽視區塊鏈技術的優勢,而是覺得區塊鏈應當作爲補充。

爲什麼更認可Web 3.0

首先,不管是Web 3.0還是Web 3,都宣稱要去中心化。但區塊鏈的Web 3本身又導致需要中心化到那一個/一組區塊鏈上,這和它宣傳的有所矛盾。而Web 3.0這邊則沒有這個顧慮。只要大家遵循同樣的協議,那麼各個不同組織或個人都可以自行搭建自己的系統,並且也可以提供各自的額外的功能。這和區塊鏈中必須使用完全一樣的區塊鏈設計使用同一個區塊鏈有很大區別。尤其是Solid的協議中更是允許一切都由不同實體處理——WebID入口文檔在一個URI,WebID又可以包含在其他地方的其他文檔(另外的URI)作爲內容的一部分,WebID(身份標識)、issuer(身份認證者)和Pod(數據存儲)可以是分離的不同服務,可以有多個Pod;而App和前面的這些都沒有所屬關係,而只是通過認證來使用它們。

其次,區塊鏈的所謂Web 3上不能有意義地存儲隱私數據,可以說這本身就斷絕了它作爲「Web」的意義。而Web 3.0在這個方面完全不存在問題,數據共享以及撤銷共享也被支持,還可以同時允許不同機制的存在。

再次,區塊鏈機制對資源需求很大,不論是存儲還是計算資源。在它的設計中,不存在「服務器」,所以這個需求是每一個用戶都需要承擔的。換句話說,如果一個終端(比如手機,或更輕量的如智能家居設備)不具有承擔這些需求的能力,它就不能正確使用區塊鏈的Web 3。當然,如果使用了合適的優化措施,那麼一個只需要讀取Web 3信息的終端的確可以只使用更少的資源,然而一旦涉及寫入那麼則是另一種情況。取決於不同的共識機制,Web 3會有不同的要求,也有不同的事務處理速度上限,當然另一面則是不同共識機制的不同安全和信任度。而且取決於具體的技術,如果使用類以太坊的單一鏈技術,那麼共識機制不可修改,除非願意冒丟失用戶數據的風險(參考關於以太坊的Hard Fork的討論)——這對一個穩定運行的Web來說是不可接受的。

最後,如果我們考慮失信或錯誤的處罰,以及協議或機制的更新,Web 3.0在這方面有顯著高於Web 3的優勢。對於Web 3.0,如果是託管服務(比如Pod服務器)失信,那麼用戶可以輕易遷移自己的數據到另一個Pod服務器上;如果應用程序開發者失信,那麼用戶可以吊銷應用程序訪問權,並更換其他應用程序(如果有數據損失則可以嘗試從備份恢復);如果是協議有錯誤或缺陷,或者只是想要更新,那麼服務提供者只需要更新爲修正後的協議即可,除非整個Web 3.0的架構被修改。而對於Web 3,假如認可共識機制正常生效,那麼託管失信的問題不存在;如果應用開發者失信,雖然可以之後更換應用,但之前使用應用的結果無法撤銷無法恢復(除非產生Fork,但這個行爲本身是大問題);如果應用程序有bug更新即可,但如果發現基本協議或設計的缺陷,那麼則無法解決(還是只有產生Fork一條路)。當然,反過來Web 3的優勢在於不用擔心錯誤導致的數據丟失(除非是本質上的嚴重錯誤),而Web 3.0則對此沒有任何討論,需要使用備份機制來部分緩解問題。

在我看來,如果Web 3不能解決前面的這些問題,它是不能作爲共用的基礎架構的。而因爲它的區塊鏈的技術本質,在保留它的承諾的前提下,隱私數據的存儲、共享和撤銷共享似乎是一座不可逾越的高山。

結合?

也許可以將一些區塊鏈技術結合進來,用來改進目前的如Solid存在的一些缺憾。結合的核心是利用區塊鏈的特性,尤其是不可僞造性,來存儲一些Web 3.0中會遇到的數據。但主次不能顛倒,以Web 3.0爲基礎,而不是以Web 3爲基礎,否則會引入前述的Web 3(暫時或永遠)難以解決的缺陷。

比如在使用數據的時候,或許可以使用區塊鏈記錄訪問和寫入信息,或者說data lineage或provenance。尤其是當數據使用涉及到多個用戶的時候,這一機制的意義更明確——多個Pod服務器聯合起來各自作爲一個對等點來跑區塊鏈,並共同記錄。類似地,授權信息也可以一併記錄,以備日後查詢。

當然,這其實也不是非區塊鏈不可,因爲核心是需要交叉認證/簽名,而這一技術並非區塊鏈發明的。類似地,許多其他「可以」用區塊鏈進行的功能也都未必一定需要區塊鏈(比如保障數據始終可用可以通過類似Internet Archive的東西)。所以究竟是否有必要使用區塊鏈也是一個值得討論的話題。

其他與未來

前面主要是在技術層面討論Web 3.0和Web 3。但如何落實和推廣則又是另一個問題了。

如前面所說,Web 3的宣傳能力很強,已經讓大多數人不加思考地認爲它就是未來了。而且它也有盈利點,或者說炒作點,所以在商業上也站得住,可以持續有資金投入並維持開發。不得不承認,在這一點上,金融就是更厲害。

Web 3.0這邊則是另一種現象。因爲它本身要顛覆現有的盈利生態(廣告、封閉花園),而又沒有直接提供一個新的盈利生態(不像區塊鏈的概念本身就被炒作出來了盈利點),所以開發和推廣速度很有限。而由於我們所處的社會時代限制,缺少商業利益推動的東西大多都會失敗,所以Web 3.0需要儘快尋找到解決方案。技術優秀但推廣失敗的案例實在不少。

而目前的Solid系統也有一些缺陷,尤其是關於推理部分的實現很有限——本身暫時不支持,故而App需要通過Comunica庫(執行SPARQL查詢)或自己執行推理。另外教程、文檔和示例等信息也不夠好或很有限,在這些方面亟待加強。


Related posts:

您可以在Hypothesis上的該群組內進行評論,或使用下面的Disqus評論。