跳到主要內容

升級你對 DApps 的理解(1):以類比思維打破迷思

Robert Mao (ArcBlock Chief Architect, CEO)
ArcBlockDapps

作者:Robert Mao(ArcBlock 首席架構師、執行長)

我準備從這個月起推出「升級你對去中心化應用的理解」專欄。配合這個專欄,我也準備製作一些相關的短影片,定期播出或透過 Clubhouse 討論。這個專欄不只面向開發者或專業人士,也面向更多對區塊鏈和去中心化應用感興趣的讀者,力求每支短影片講解一個概念和知識點,並搭配 ArcBlock 的實際設計與實作,讓更多人認識去中心化應用(DApps)的價值,理解這一切不只是願景,而是現在就能使用的技術與產品。

許多年前,網際網路才剛開始商業化時,我經歷過這樣一件事:一支在廣告設計領域頗有名氣的團隊,為客戶設計了一套網站方案。設計非常精美,在美感上遠勝所有競爭對手。然而,它只有一個問題——他們以為 HTML 頁面就只是一張圖片,因此每個頁面的設計都是一張完整的圖片!以今天對 Web 的理解來看,這或許很可笑,但當時這類事情並不少見。如今,如果你看待去中心化應用時,認為它不過是類似網際網路架構、使用區塊鏈和智慧合約的東西,並相信去中心化應用就該長成這樣,那就像認為製作網頁等同於製作一批彩色印刷傳單。

打破迷思也是認知升級的一部分

去中心化應用一直是個非常令人困惑的詞彙。去中心化應用的本質不容易理解,並不令人意外。幾年前,我剛開始接觸這個領域時,也被各種概念弄得一頭霧水;看著市場上種種互相矛盾的說法,偶爾甚至會懷疑自己的智力,或多年累積的電腦科學知識。早期的 DApps 比較偏重概念,因此許多人感到困惑,對去中心化應用也產生了各式各樣的誤讀——有人像原教旨主義者一樣過度崇拜(例如總是在談去中心化程度是否足夠的人),有各種「概念」的晦澀難懂(例如「胖協議」),也有許多出於商業宣傳目的的誇大。過去兩年,人們對去中心化應用抱持過度幻想後轉為失望,如今似乎又正走向另一個極端。

過去幾年,在開發 ArcBlock Platform 的過程中,我們從多個不同角度撰寫了數十篇文章,探討 DApps 是什麼、不是什麼,以及實作 DApps 的優勢。我們去年由中信出版集團出版的著作《區塊鏈實踐:從技術創新到商業模式》,也用了數個章節詳述這個問題。

在 2019 年的線上課程《去中心化應用開發設計:學習如何運用聚焦的去中心化產品思維模式》中,我主要從去中心化身分(DID)的角度,談如何思考去中心化應用的開發。如果你還沒看過那堂課,建議你花點時間聽一聽,因為開發去中心化應用最需要的是思維上的轉變。開發方法、工具、語言、框架,甚至技能,都不需要大幅更新,但設計理念需要一些新的思考。

類比「中心化應用」與「去中心化應用」

了解 ArcBlock 的朋友都知道,我們在產品與技術設計中經常提到「第一性原理」,但要幫助大家更深入地理解去中心化應用時,我更喜歡多運用「類比」。

前一陣子,我們的設計師 Cao Wen 寫了一篇用樂高積木類比並理解 ArcBlock 架構體系的文章《造訪樂高玩具店:開發去中心化應用的趣味旅程》。這篇文章從類比的角度,幫助讀者輕鬆理解我們的軟體架構,也獲得了許多好評。

運用正確的類比時,我們很容易理解去中心化應用與中心化應用之間的差異和關聯,一些問題與疑惑也會迎刃而解。無論是建築設計還是樂高積木,類比都是為了幫助大家理解:建築設計與去中心化應用的類比,是從巨觀角度出發,讓大家更容易體會什麼是去中心化應用;從樂高積木看去中心化應用,則是從微觀角度類比,讓大家從細節理解如何建構中心化應用。兩者有相似之處。需要注意的是,「類比」這種方法經常用來幫助理解,有時未必精確,因此透過類比理解概念後,仍需要進一步思考。

圖片:以積木搭成的房屋模型與實際房屋。

軟體設計師(Software Architect)和建築師都是 Architect,因此我們就以住宅建築為例,從建築的角度理解去中心化軟體與當今網際網路時代常見的中心化軟體之間的差異和關聯。

圖片左側的高樓公寓,可能是許多人熟悉的日常居住環境。用這類住宅類比今日許多網際網路服務相當貼切:公寓式住宅是一種典型的中心化服務,許多住戶共用走廊、樓梯、電梯與地面空間。在許多情況下,住戶其實並不擁有建築或土地,本質上只是「租用」其使用權。現在,想像一下你所使用的 WeChat、Weibo 等各種網際網路服務,你正與數百萬名其他使用者一起「租用」服務供應商提供的服務。你的帳號實際上並不屬於你,你的資料也不受你掌控。

圖片:左 - 香港的公寓大樓(Unsplash @jcgellidon),右 - 澳洲的現代住宅(Unsplash @rarchitecture_melbourne)

右側則以獨立住宅類比「去中心化應用」。去中心化應用強調使用者自主,就像這棟獨立住宅,住戶通常獨立擁有自己的土地和建築。這正是「去中心化應用」所強調的:使用者應該擁有自主的身分,使用者應該擁有自主的資料資產。

記住這個類比,也許就更容易理解「去中心化應用」的四個關鍵特徵。你可以試著理解並思考:

  • 任何人都無法奪取或控制的自主使用者身分與驗證系統。
  • 使用者資料的權利與授權、資料自主與可控性、資料可攜性。
  • 更妥善地保護隱私並抵抗審查。
  • 能以去中心化方式運作,減少對其他服務的依賴。

透過上圖的類比,很容易理解「去中心化應用」與目前「中心化應用」之間的異同,以及你未來更希望擁有哪一種應用。但也要思考這個類比可能存在哪些偏差。最明顯的偏差是,左圖是擁擠的公寓,右圖則是較高級的住宅。現實中也有豪華公寓和狹小的獨立住宅。然而,如果你能在類比時意識到這些偏差,透過表象看見本質,仍然可以更有效地運用類比來理解新事物的概念。

「中心化應用」與「去中心化應用」有許多共通之處

去中心化應用的一切都是獨立的嗎?用建築來類比,很容易理解這個概念。雖然你的獨棟住宅非常獨立且去中心化,但通常仍會接上共用的電網、電話與寬頻,房屋通常也會接入社區的小型供水系統……此外,你也會享有各種公共服務,例如郵局寄送信件、快遞公司運送包裹、警察維持治安,以及地方政府處理道路、路燈等所有與城市管理相關的事務。去中心化應用就像這種「去中心化」的獨棟住宅,為你提供很大的獨立性和空間,但你不會因此與世隔絕。在這裡,我必須強調一個自己始終堅持的觀點:中心化與去中心化並非絕對,也不是彼此對立。

身為去中心化應用,可能仍需要使用一些中心化服務,讓應用更方便使用。例如,網域名稱系統(DNS)是相對中心化的系統。去中心化應用當然可以不使用網域名稱也能運作,也有新的去中心化網域名稱服務不斷出現,但距離被大眾廣泛接受仍相當遙遠。同樣地,去中心化應用的伺服器,甚至目前的區塊鏈,都不是脫離網際網路獨立存在的。就像獨立住宅仍必須建在土地上一樣,理想的獨立住宅總是建在規劃完善的區域,才能享有更好的公共服務。

不難理解,雖然「去中心化應用」擁有更好的隱私保護與抗審查能力,但它並不是「法外之地」。它帶來抵抗非法脅迫與掠奪的能力,同時仍符合現代法治社會的治理機制,甚至是一種更能體現民主法治的治理方式。就合法性而言,中心化應用與去中心化應用並沒有太大差異。

「去中心化應用」更難設計與實作嗎?

運用類比的方法,你可以問問自己:設計一棟 30 層的高樓公寓「比較難」,還是設計一棟兩層的獨棟別墅比較難?建造高樓公寓的成本更高、建築要求也更高嗎?還是獨棟別墅的成本更高、建築要求也更高?但同時想一想,在面積相同的住宅中,高樓公寓的一戶比較昂貴,還是獨棟別墅比較昂貴?為什麼?

設計和實作去中心化應用的思路有所不同,但一旦理解去中心化應用的概念,其實非常自然,甚至比中心化應用更容易理解,因為我們人類本身就是去中心化的。世上並不存在一套「母體(Matrix)」系統,統一管理全世界的人口;相反地,每個人都透過自己對世界的感知,建立自己的世界。因此在某種意義上,去中心化應用更簡單也更直接。

從軟體工程的角度來看,設計、開發和營運擁有眾多使用者的中心化服務,其成本與難度很可能遠高於去中心化應用。然而,使用者使用去中心化應用的成本,可能會高於租用中心化服務。

ArcBlock 的 ABT NodeBlocklet 框架,進一步降低了設計、開發及營運去中心化應用的門檻。事實上,我們相信,未來去中心化應用的繁榮將帶動中小型開發者,甚至個人開發者的蓬勃發展,而不再是如今由眾多網際網路巨頭主導的局面。

使用者安裝和使用「去中心化應用」會更困難嗎?

去中心化應用的一個非常重要的特點是「去中心化部署」。去中心化部署一直是項挑戰。在上一代去中心化應用運動中,去中心化軟體最大的難題就是安裝。在過去的去中心化社群軟體運動中,Mastodon、Diaspora 等最成功且最具影響力的專案,只要看看它們的文件如何引導使用者開始,就會明白:除了是技術玩家或程式設計師,還需要高度熱情,以及一定程度的網路與服務資源,才能安裝這些去中心化應用的執行個體。正因為如此困難,它們的設計往往需要一些熱心人士為一群人建立共用的執行個體,才能讓更多使用者參與。

近期許多熱門的區塊鏈相關去中心化應用,並沒有解決這個關鍵問題。多數去中心化軟體實際上仍採中心化部署,例如 CryptoKitties、Uniswap 只把智慧合約部署在區塊鏈上,Web 前端依然以網際網路服務相同的方式部署。

ArcBlock 的 ABT 節點與 ABT 代幣機制,堪稱去中心化應用皇冠上的明珠。ArcBlock 的 ABT 節點所解決的最大問題,就是「去中心化部署」。在 ArcBlock 平台上,使用者只需要以 ABT 代幣付款,就能自動取得 ABT 節點的節點資源。這些節點的安裝、部署、啟動與管理全都自動化。使用者透過 NFT 證明自己對節點和服務的使用權。在未來的影片示範中,我會展示如何輕鬆實現 ABT 節點的「去中心化部署」。這只是開始,未來它將成為人人皆可使用的服務,而且只會愈來愈好。

今天的第一部分提供了一種思考方式,讓我們思考什麼是去中心化軟體與服務、它們與中心化服務有何不同,並打破人們對去中心化應用的迷思。清楚理解這些之後,現在讓我們一步一步向前,看看 ArcBlock 平台已經能協助開發者實現哪些事情。一切才剛開始,許多事情或許會超乎想像,因為去中心化軟體的設計思維,本身就是一次認知升級。

本頁涉及

術語

  • Dapp

    一種應用,它的關鍵狀態不只存在某一個營運方的資料庫裡。各個專案對「去中心」的標準差別很大,所以有用的問題是:哪一部分能被外部的人核實。