跳到主要內容

究竟什麼是去中心化應用程式?

冒志鸿
ArcBlockBlockchainDappsDecentralization

作者: 冒志鴻

編輯: 陳俊

進入 2019 年,加密貨幣市場依然低迷,「公鏈」危機卻接踵而至,「去中心化應用程式」(Decentralized Applications, Dapps)一時間成為熊市寒冬裡的希望,不斷有各種自稱去中心化應用程式的博彩類遊戲日創千萬交易流水的消息傳出。 那麼,究竟什麼是 Dapps 呢?

非常不幸的是,Dapps 也許是繼「區塊鏈」之後又一個定義不明、令人費解的詞彙。隨便 Google 搜尋「Dapps」,第一頁幾篇閱讀量不菲的文章所羅列的什麼是 Dapps 的觀點都是充滿了各種誤解。而自稱 Dapps 的各種賭博、資金盤類應用程式讓很多人失望,難道被產業吹捧為未來的應用程式就是這些東西?

顧名思義,「去中心化應用程式」的最大特點應該就是「去中心化」,但是什麼是「去中心化」本身就讓人迷惑。如果連什麼是「去中心化」的概念都模糊不清的話,討論去中心化有什麼好處,為什麼要去中心化,以及怎麼開發「去中心化應用程式」就非常困難。

我們一直生活在「去中心化」的世界裡

其實,我們一直生活在「去中心化」的世界裡,每個人都是獨立的個體,我們的大腦並沒有像科幻電影《駭客帝國》(Matrix) 描繪的那樣連接著「母體」被其統一控制,但是我們卻可以成功地交流、分工和協作。

個體在去中心化的世界裡能夠協作,關鍵在於個體之間能夠互相「通訊」 和產生「共識」。人和人之間可以通過聽覺、視覺、觸覺等感覺進行」通訊」,我們的語言文字就是一種「通訊協議」,我們通訊產生的認知中有一部分形成了「共識」。人類共識中的「時間」是不以任何人意志為轉移、對所有個體同步並不斷前進的尺度,一旦過去就不可改變。區塊鏈,則是迄今以來電腦系統結構裡最接近人類社會的一種設計。按照這一思路理解,你會發現兩者有驚人的類似之處,最大的區別是現實世界沒有一個可以查閱的公共「帳本」,「有據可查」的都是時間長河中一些人為記錄的片段。

從現實世界去中心化運轉方式,我們毫無疑問能夠建立「去中心化」可行的信心,也更容易認識和理解「去中心化」的確能解決相當多的問題。無論系統如何設計,最終到達使用者那裡的時候,任何資訊還是不可避免地回到人類「去中心」的大腦之中。

通過觀察人類社會、語言、文化、城市、國家的形成和變遷,可以幫助我們思考和決策。在 ArcBlock 產品設計過程中,我們始終這樣分析問題和輔助設計,例如設計經濟模型時,我們研究城市經濟學來汲取靈感和參考。

「中心化」和「去中心化」是相對的

「中心化」和「去中心化」是相對的, 而且存在從不同角度觀測引出不同結論的可能性。就以比特幣為例,「比特幣是去中心化的」、「比特幣是一種去中心化的加密貨幣應用程式」,這可能是業內高度一致的共識。

從比特幣的網路拓撲結構來看,比特幣的節點非常多而分散,PoW 的「挖礦」機制導致攻擊比特幣需要有超過全網 50%的算力,少數節點的被攻擊、崩潰、或被關閉,都不會影響整個比特幣網路的安全和正常運行——這說明比特幣網路是去中心化的。

然而從比特幣的軟體開發和發行角度而言,只有 Bitcoin Core 團隊發布的比特幣新版本程式碼被公眾認可接受,雖然他們團隊最近公佈了他們如何採用系列措施確保程式碼發布的流程安全可靠,並且採用開源的方式讓人人可以參與貢獻、人人可以分叉後修改,但是從軟體發行升級角度來看,這是比較中心化的。

從比特幣作為一個應用程式來看,它被設計為一個「點對點電子現金」,比特幣的錢包地址由使用者自主產生,不需要任何人發放和批准,沒有私鑰任何人和組織都無法奪取使用者的比特幣。比特幣的轉帳不需要任何第三方的介入,其他任何人和組織無法禁止或篡改交易。比特幣的交易記錄在比特幣的區塊鏈上永久保存,沒有人能夠篡改、刪除和隱藏。這說明比特幣本身是一個真正的去中心化應用程式。

耐人尋味的是,正是因為大眾認可比特幣的網路高度去中心化,作為一個應用程式高度去中心化,導致大家都認可比特幣這個網路服務——全世界只有一個比特幣。從這個角度來看,比特幣又是高度中心化的。這就非常有趣,當一個系統從某個角度高度去中心化後,從另一個角度看可能正是其他角度的去中心化使得這個角度又中心化了。因此任何「中心化」和「去中心化」的劃分和定義都不是絕對的,而是相對的,甚至是不斷演變的。從不同維度去審視,去中心化和中心化其實是錯綜交織的。用這個角度來觀察我們人類社會的語言文字,就會發現它們整體上非常「去中心化」,但另一個角度卻非常「中心化」。

「去中心化應用程式」的前世今生

電腦軟體應用程式的發展過程就是這樣一個「中心化 - 去中心化 - 再中心化 - 再去中心化」的演變過程,一如辯證法所描述的事物經歷「肯定 - 否定 - 否定之否定」、螺旋曲折上升的發展變遷過程。

最早的電腦軟體毫無疑問是「單機」軟體。字元終端和分時系統的出現,讓一台處理能力較強的電腦可以帶著好多台字元終端讓多人同時操作。那時的軟體應用程式的方式相當「中心化」,那些字元終端被稱為「啞終端」,它們離開主機什麼也不能幹,軟體完全運行在中心電腦上。

個人電腦(PC)時代的降臨迎來了第一批真正意義的「去中心化應用程式」。是的,不必驚訝,我們曾經熟悉的各種 PC「單機版」 軟體某種意義而言全部是去中心化應用程式。在那個時代最重要的協議是「檔案」,這一最古老的電腦「協議」直到今天仍然深深植根於電腦文化之中。我們無法考證最初設計發明電腦「檔案「的人是如何思考的,但是可以感覺到他們一定也參考類比現實世界來設計。電腦的「檔案」和「檔案系統」相當大程度上來自對現實世界的模仿。有了「檔案」這樣的協議,分散在無數個人電腦上的應用程式有了共同的溝通「語言」,通過「檔案」 可以安裝新的應用程式,而應用程式產生的結果也必須通過「檔案」來傳播給其他的應用程式。

Internet 的誕生,源自美國國防部的研究專案 ARPANET,其設計目的就是實現一個足夠健壯、容錯抵御甚至經受住核打擊這樣的災難性後果。為達此目的,Internet 將去中心化思想根植於設計理念之中,很多早期的網際網路協議,包括 TCP/IP 都是以去中心化思想為基礎來設計的。網際網路的早期應用程式也體現出強烈的去中心化,不僅僅因為網際網路設計的去中心理念,而是在於當時大量的 PC 軟體本來就是「單機」的,其網路化的第一步,最現實不過的就是用網路可以更好地交換「檔案」,這比通過磁碟、磁帶要效率更高。

最早一批使用網路的應用程式,有相當大比例建立在「網路檔案交換」的基礎之上,流行至今的 HTTP 協議也不例外。當用檔案交換這種方式越來越不能滿足需求的時候,一種稱為「用戶端-伺服器架構(C/S 架構)」 的網路應用程式模式開始流行,這出現在前網際網路時代,以企業應用程式為主,而且這種架構至今仍然沒有過時。C/S 是從「去中心」變得「中心化」一些的演進,但是每個 C/S 架構的系統,用戶端和伺服器之間基本都「講」著不同的「語言」(協議)。瀏覽器誕生之後,人們開始意識到瀏覽器就是一種能理解更普遍標準的「語言」(HTML)的通用用戶端,這使得應用程式可以更加中心化,從而更容易開發部署維護,於是「瀏覽器/伺服器架構(B/S 架構)」這樣一個更為中心化傾向的模式開始流行。形成這一趨勢的一個重要原因是網路頻寬和電腦的處理能力不斷增加,價格卻在不斷下降。

網際網路應用程式的中心化演變之路

「協議」是去中心化應用程式的關鍵。在 PC 時代,讓如此多的個人電腦軟體能夠去中心化的最重要協議就是「檔案」,而「檔案」這種協議直到今天和未來都還將長期延續下去。網際網路時代的最重要的協議是 TCP/IP 協議族以及構建在其上的更多應用程式協議,這些開放的協議使得全世界的開發者一起構建了今天的網際網路。

順便說一下,有不少人認為「去中心化應用程式」必須「開源」,我認為這是個誤解。正確的理解是,去中心化應用程式的「協議」必須是開放的,而這些協議的實現,以及協議以外的事情,開源與否其實並不重要——一些場合可能適合開源, 而另外一些場合也許不開源更恰當。TCP/IP 協議發展起來的時候,「開源運動」還沒有誕生,但是各方非常注重協議和標準的設計(早期的軟體設計由於資源有限比今天往往更為嚴謹和準備充分),那個時代的以 RFC(Request for Comments,徵求意見)形式的協議制定,是民主、去中心化設計軟體的優良傳統。 直到今天,這些 RFC 定義的很多規範和協議還影響著我們的日常每一天。

是什麼導致了網際網路應用程式的逐漸中心化?

  • 封閉的使用者體系

「網際網路思維」的發展模式使得各家公司都試圖大量獲得「使用者」,收集各種使用者的資料資訊,再從利用這些使用者資料進行廣告推廣來獲益。這使得各家公司都排他性地搶奪佔有使用者,都試圖把使用者盡可能長久地鎖定在自己的系統平台之中。

  • 重複造「輪子」形成競爭壁壘

大量重複造「輪子」,並用這些互不相容的輪子來形成用所謂的「競爭壁壘」,這其實嚴重違背 Internet(網際網路)和 Web(萬維網)最初的精神,但如今卻成為了網際網路公司最常見的競爭手段。結果導致我們手機上有 10 個不同的訊息應用程式、10 個不同的銀行應用程式、10 個不同的電影應用程式 … 而它們的作用其實幾乎是一樣的,只是服務供應商不同。

  • 使用者鎖定、資料鎖定

無償或極其廉價地佔有本來就屬於使用者自己的資料,不允許使用者遷移資料或者製造各種障礙讓使用者遷移不便,用這種方法來「鎖定」使用者。用免費來作為獲得使用者的手段,出賣使用者的資料,盡可能佔用使用者盡可能多的時間、注意力、頻寬等來獲得利益不得不成為網際網路通行的商業套路。

  • 「協議」鎖定

不遵守協議、不開放協議、或只部分提供協議來製造「開放」的假象。利用「開放」的假象來獲取使用者, 用「不開放」的實現來增加使用者遷移難度和成本,把使用者鎖定在自家。

2005 年湧現的「Web 2.0」運動是桌面網際網路時代離「去中心化」最接近的一次。Blog 是去中心化的出版和媒體,採用的是 RSS 這樣一個簡單而開放的協議。當時以個人為節點的社交網路蓬勃興起,FOAF 協議、Microformat、OpenID、OAuth 等這些都是在那個時代興起的開發標準。

不幸的是,當時和後來的產業巨頭 Google 與 Facebook 策略性地撲滅了這場去中心化運動,反而把網際網路的中心化推向了極致。而中國的巨頭們更是樂得建立起一個個壟斷封閉的平台。如果說,微軟在當年的瀏覽器大戰中利用壟斷地位擊垮了網景是天下皆知、昭然若揭的陽謀,那麼後來以 Google 和 Facebook 帶頭的這場絞殺則是被完美陽光掩蓋的陰謀,開發標準、去中心化,皆死於他們之手,大家卻一直覺得他們創新、開放、貢獻。

當然,Google、Facebook 也貢獻了不少開源的產品,有很多到了區塊鏈時代又成了可以反擊他們的利器。比如 Bitcoin 用的 Level DB 是 Google 的作品, 以太坊和 ArcBlock 採用的 RocksDB 是 Facebook 的作品。

區塊鏈帶來的「去中心化」演變之路

網際網路的發展步步走向中心化,既有技術進步的原因, 也有商業發展、使用者習慣演變等帶來的結果。而區塊鏈技術,也是在電腦和網際網路技術不斷發展成熟之後才進化而成的,如果沒有網際網路頻寬的飛速成長、電腦效能的飛速提升, 區塊鏈不會出現,也沒有實現的基礎和能力。

天下大勢「分久必合,合久必分」,區塊鏈帶來的演變是應用程式再一次重新向去中心化的趨勢走去。除了技術的發展,還有其他的因素和事件:一次次的使用者隱私資料洩密帶來的巨大損失,Facebook 等大公司對隱私問題的漠視,歐洲 GDPR 法案的執行等等,讓越來越多的人再次意識到「去中心化」的價值。

區塊鏈和 DApps 能真正成功,恰恰要根治網際網路中心化壟斷的四大痛點:

  • 統一的、自主的、去中心化的 ID
  • 資料完全屬於使用者, 使用者擁有自主權
  • 大量地重用輪子,而不是不斷再造
  • 完整和全面的開放協議、盡可能保持向前相容(不產生無謂的分叉)

「去中心化應用程式」和區塊鏈、代幣之間有沒有必然關係?

如果認可我之前的論述, 你一定也會同意 Dapps 和區塊鏈、代幣其實沒有必然的聯繫。但是真正讓 Dapps 這個名字耳熟能詳的,恰恰是區塊鏈和代幣。

諷刺的是,今天大多數宣稱自己是 Dapps 的應用程式根本沒有任何去中心化的屬性,大部分應用程式只是使用了區塊鏈的中心化應用程式,它們大多只是利用了區塊鏈智慧合約的一些屬性。

比如 CryptoKitty 這樣的遊戲類應用程式,它只是使用了以太坊 ERC721 的特性,而整個遊戲的前端、設計都和一個傳統 Web 遊戲並無太大區別。其最大特色是用以太坊的智慧合約來保證這些加密貓的唯一性和獨特性。那些賭博、博彩、資金盤遊戲,也是利用的智慧合約讓使用者誤以為遊戲「公開透明,無人能幕後操縱」而參與其中,殊不知相當多的這類遊戲由於程式碼設計的問題,或者區塊鏈技術不成熟的問題等,更易遭受攻擊被騙取竊取加密資產,這些遊戲其實比傳統遊戲更不合理、公平,甚至更不安全。我相信未來一定會出現非常成功、可玩性非常強、且充分利用區塊鏈的去中心化遊戲,但絕不是今天這些公平、安全和使用體驗都差得可憐的傢伙們。

「去中心應用程式」為什麼還沒有引爆?

任何新生事物的「引爆」都少不了漫長而黑暗的前夜,很多人只看到了爆炸增長的階段,往往忽視了爆炸所需勢能的緩慢積蓄過程。

iPhone 問世之前,智慧型手機的概念已經出現了超過 10 年的時間。席捲全球的比特幣,其理念誕生於 2008 年,而在此之前至少還有 10 年以上不同的設計嘗試沒有取得成功。

彼得·蒂爾在其著作《從 0 到 1》裡指出一個新產品要能獲得高速增長,必須比現有的方案好 10 倍以上。現在的 DApps 所依賴的區塊鏈環境,還非常原始。EOS 的確是比以太坊更「快」了,但是不是更「好」的還是更「壞」的方案,還沒有公論,而其他複製模仿以太坊的公鏈更需要時間和結果來證明它們究竟能否奏效。

誠然今天的區塊鏈技術還處於嬰幼兒期,尚未產生成熟的技術,尤其是應用程式平台,有能力來承載成功的去中心化應用程式。 但是,ArcBlock 以及其他技術團隊正在日以繼夜地努力,盡快讓這種困境變成歷史。

「去中心化應用程式」必須因打破規則而獲得不對稱的競爭優勢

對於普羅大眾來說,他們不會因為「去中心化」而愛上一個應用程式,只會因為這個應用程式解決了他們的問題而使用它。

因此應用程式絕對不能為了「去中心化」而「去中心化」,「去中心化應用程式」的關鍵是找到一個需要解決的問題,這個問題用「去中心化」的方法來解決比其他方案好 N 倍,或者因此而獲得了不對稱、類似「碾壓」的競爭優勢, 或者因此而打破了現有的規則。如果能夠回答上面的問題, 那麼恭喜你, 這個「去中心化應用程式」不火也很難。

例如,比特幣作為一個點對點的加密貨幣,打破了無數條規則,也解決了一些切實的痛點,因此比特幣和 Paypal 等傳統的數位貨幣或支付相比,具有不對稱的競爭優勢。雖然比特幣很慢,用起來很麻煩,但在過去的 10 年裡還是得到了飛速的發展。

今天的電腦應用程式、網際網路應用程式,其實離完美還有很遠的距離,如果我們能用「打破一切規則」的角度來思考,可以發現非常多切實可行的場景可以用去中心化的方法更完美地解決。有些問題,其實一直是人們的夢想,但在區塊鏈誕生之前這些夢想在技術上還沒法實現,因此我們為了實現設計了各種妥協方案,有些妥協如此成功,以至於大家忘記了這其實是妥協的結果。然而,如今技術可行,正是去解決這些問題的時機。

「去中心化」與否,不是大眾使用者關心的問題

「去中心化」更多是產品經理、開發者所關心的問題, 而不是使用者關心的問題。很多大眾不明白也不關心什麼是去中心化,以及是不是去中心化,而只關心能否解決他們的問題以及會不會使用。

「使用者體驗」是否重要? 當然重要,然而,這並不是根本,使用者不會只是因為「使用者體驗好」才愛上一個應用程式, 但是如果一個能解決使用者痛點的應用程式還同時具有好的使用者體驗, 那麼這才能稱為爆款應用程式。

因此作為「去中心化應用程式」的開發者和產品經理, 應該把注意力的焦點首先聚焦在發現問題,解決問題上,然後才是使用者體驗,尤其是如何才能讓大眾使用者方便地進入這個世界,使用新的產品解決他們的問題。

未來所有的應用程式都是「去中心化應用程式」

未來可能並不存在 Dapps,因為所有的 app 都會是 dapps。

Dapps 的核心基礎並不是區塊鏈,雖然區塊鏈技術對未來 dapps 的實現非常重要。 並不是用了區塊鏈的 app 就是 dapps,今天大多聲稱 dapps 的其實只是用了區塊鏈,並不去中心化。

為什麼需要去中心化應用程式? 因為它能帶來一些中心化應用程式無法企及的能力和場景。 去中心化應用程式不應該為去中心而去中心, 有些應用程式天生需要中心化,其中心化解決方案無害而且效能更好,因此去中心化應用程式是針對那些真正有去中心需求的場景下天然的選擇。

為什麼今天沒有什麼去中心化應用程式?是因為你沒有意識到我們其實生活在一個去中心化的世界裡,我們用的無數東西本來就是去中心的。人類社會就是去中心化的存在,正如我們呼吸的空氣很長時間人們並不知道他的存在。

另外一個原因就是技術過去不夠成熟,10 年之前,電腦科學家和工程師沒有辦法給出一個成熟的方案。這就是無數電腦科學家、工程師、創業者對區塊鏈技術如此興奮的原因,他們並不是因為加密貨幣可以炒作賺錢而興奮,而是因為發現了新的處女地,可以披荊斬棘重構世界而興奮……上一次有這種機會還是在網際網路早期的時候。

去中心化應用程式的核心基礎到底是什麼?首先是自主個人身分,你的身分、關係、資料、資產……都是被你自己控制而不是被任何其他人控制;其次是點對點的數位資產流動(加密貨幣以及其他代幣),不需要中間人,不需要別人批准; 然後還需要資料可遷移,你的資料你做主,想讓誰用其他人才能用。這幾個重要基礎,只有今天電腦技術發展到區塊鏈階段才有實現的可能,而這在區塊鏈出現前實際上是無解的。

原文連結: 究竟什麼是去中心化應用程式?

本頁涉及

術語

  • Dapp

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

  • Decentralization

    它不是一個整體屬性,而是對每一部分分別要問的問題:誰能改動它、誰能扣住它、事後誰能核實它。一個系統通常只在某些部分是去中心的,另一些部分不是。

  • 區塊鏈

    透過密碼學連接記錄,並按共同的驗證與共識規則確定交易歷史的分散式帳本。