無涯社群分享:鏈網+DID,區塊鏈應用破局的關鍵

5 月 23 日中午 12,ArcBlock 區塊基石創始人兼 CEO 冒志鴻參加無涯社群直播訪談活動,為社群開發者和技術愛好者分享介紹「鏈網」與「去中心化身分(DID)」技術如何成為區塊鏈應用開發的破局關鍵,以及 20 日正式發布的ABT Wallet。
作者: 騾覓鷗、BlockPunk
社群: Ourea 無涯社群

前言
從 2009 年至今,十年間,區塊鏈整體的市值增長了數百萬倍,而區塊鏈的效能,卻僅僅完成了不到百倍的增長,相比起來實在懸殊。區塊鏈技術就像被《三體》中的智子鎖死了一般,大家都在低效能、弱隱私、難易用的「低光速泥潭」中苦苦掙扎。
懷著對新興技術的寬容,我們依然對區塊鏈滿懷希望。但腳踏實地地,從應用落地的角度出發,區塊鏈應用的瓶頸是明顯的。
2018 一年,出現了很多試圖打破瓶頸的嘗試,ArcBlock 便是其中的代表。本期我們請來了 ArcBlock 的創始人冒志鴻,帶著剛發布的 DID Wallet,與我們分享鏈網思路下,區塊鏈應用破局的關鍵。

區塊鏈的未來是鏈網
ArcBlock 的核心想法是,區塊鏈的未來是鏈網架構的。未來的區塊鏈要有織「鏈」成「網」的能力,才能真正得到廣泛使用。
1. 什麼是鏈網架構?
所謂鏈網,就是多個互相連接的區塊鏈形成的網路。
用交通系統來類比區塊鏈世界,公鏈的思路,就是以一條能夠貫穿全世界的大路,理想情況下這條路上的車,能夠到達世界上任何一個地方。但如果所有人都在這條大路上駕駛,這條路一定會變得擁堵不堪,這就是公鏈的效能問題。
如何解決擁堵的問題?一種方法就是給汽車提速,原來跑 60 碼現在跑 120 碼(縮短出塊時間),但這樣容易出現安全隱患。另一種典型的想法就是擴容,拓寬原來的車道,但你不可能無休止地拓寬車道。
在現實生活中我們是如何解決交通問題的?現實生活的交通是很多道路與公共交通組成的綜合網路。未來的資訊社會也是如此,必然是鏈網架構的,可以根據不同的場景,使用不同特點的區塊鏈,但必須得保證鏈間是互聯互通的。
2. 為什麼要使用鏈網架構?
目前最主流的區塊鏈方案是公鏈,數數鏈網方案的專案,其實就三家,Cosmos、Polkadot 還有我們 ArcBlock,ArcBlock 的鏈網已經在 3 月份上線,跨鏈已經實現了,歡迎廣大開發者來檢閱。
可能是因為 EOS 的行銷成功導致,從業者普遍認為,必須做一條很大很強的公鏈,解決所有的問題。
但從現實邏輯的角度出發,公鏈的觀點是存在悖論的:
- 世界上所有的問題,是不可能靠一兩條鏈解決的。就算技術上能搞定,從現實出發,中國和美國至少不可能用同一條鏈的吧?
- 因為場景領域的不同,必然會出現多條不同的公鏈,因此它們的互聯互通是個必然的結果。
這就是公鏈的悖論,它的願景越有可能實現,就越需要跨鏈互通的鏈網。
舉個例子,針對銀行的去中心化金融體系,安全性是放在第一位的,效能的要求就不高了。但是如果是一個去中心化的通訊軟體,就已經需要很高的效能,能承載非常多的節點使用,而它對安全性的需求,就沒有金融體系那麼高了。但我們可能在通訊過程中會進行轉帳等操作,所以這兩個鏈之間必須是打通的。
因此,根據需求各取所需,多鏈共存,再利用跨鏈技術,織「鏈」成「網」,這才是區塊鏈的未來。
DID 是應用的關鍵
DID(Decentralized ID),即為分散式身分體系,一直是我們非常重視的一項去中心化技術,最近 ArcBlock 發布的錢包就主要搭載了 DID 功能。
1. 為什麼使用區塊鏈實現 DID?
去中心化 ID 這個技術,本身不屬於區塊鏈的範疇,但它卻和區塊鏈有著非常緊密的聯繫。實際上,一個使用者能自主建立管理的 ID,是遠早於區塊鏈的一個去中心化構想。
在基於區塊鏈技術構建 DID 之前,就已經出現了多個解決方案。搞技術的朋友們可能知道過去的 OpenID 技術。但過去的 DID 技術都沒有取得成效,有一個永遠繞不開的點————沒有區塊鏈的時候,任何一種 DID 技術,都需要一個「認證中心」。但一旦到達需要認證中心的時候,就會存在不夠去中心化的情況。這是與初衷相悖的,因為涉及到中心的認證,不僅存在隱私和安全問題,多個主體間的 DID 也是互相隔斷的。
我們常常討論一個系統究竟是去中心化還是中心化,其實你可以從不同的角度來看,程度是不同的。比特幣系統本身是去中心化運行的,這一點大家沒有爭議。而正是因為比特幣去中心化的特點,全世界就只有一個比特幣的共識,從這個角度來看,它又是非常中心化的。
這就恰恰解決了 DID 最大的問題。如果使用區塊鏈技術建立起一個 DID 系統,隨著去中心共識的加深,就可以 實現唯一的,人人皆可信的身分系統 ,而這個系統它本身的運作和維護,是非常去中心化的。這就是基於區塊鏈技術實現 DID 的基礎。
2. DID 在區塊鏈上意味著什麼?
我們一致認為,DID 是個非常重要的事情,ArcBlock 搭建鏈網體系時,就把去中心化 ID 作為一個非常重要的部件,從底層進行了支援。
這就意味著,在 ArcBlock 的鏈網中,任何一個身分證明,都是去中心化的。這裡的 ID 不僅僅只是一個帳戶的身分,鏈網中的每一個帳戶、每一個節點、每一個服務,乃至使用 DAPP 過程中的,甚至是未來上鏈的物聯網設備,都可以使用 DID。
這就意味著,在 ArcBlock 的鏈網體系中,每一個交易的帳戶,不僅僅是一個沒有內容意義的隨機位址,同時也是一個 DID,這大大降低了使用門檻。如果當你發布某個 DAPP 時,這個應用需要有證明自己唯一可信性的證據,證明它真的具備它描述的那些功能和屬性,這個證明就可以使用 DID 實現。包括你在使用某個特定服務時,需要建立新的身分時,我們傳統的解決方案是單獨在中心伺服器上註冊,這樣既不安全,也會因為帳戶過多難以管理,而在這裡,我們就可以針對每一個應用建立一個 DID,快捷方便地使用。
DID 技術,降低了區塊鏈整體的使用門檻,提升了很多的使用者體驗,這對大範圍應用是非常關鍵的。
迅捷開發,ArcBlock 的區塊鏈應用架構

上圖是區塊鏈的應用和網際網路的應用的比較,可以看出來兩者其實有非常高的相似性,區塊鏈的應用架構並沒有大家想像的那麼複雜。
我一直認為,區塊鏈本身是電腦科學發展到一定程度的必然結果,沒有什麼非常難理解的地方。只不過在過去的時間裡,整個業界把區塊鏈搞得很神祕,創造了各種莫名其妙的名詞和概念,創造了認知障礙,最終大家好像都不知道區塊鏈到底是什麼樣子。
1. 傳統網際網路的應用架構
我們來回顧一下典型的 WEB 應用系統,這是網際網路時代最成功的一種應用方式,應用是基於網際網路搭建的,網際網路有標準的 TCP/IP 協定,因此各種各樣的應用可以連接在一起,形成現在這樣龐大的網路。這些 WEB 應用有一個特點,很多都會用到標準的 WEB 應用節點,比較典型比如 Apache、Nginx。
WEB 伺服器它的特點是什麼?首先可跨平台部署,Apache、Nginx 既可以跑在 windows 上,也可以跑在 Unix 的不同版本上。其次伺服器可以是你自己架設的機器,也可以建立在各種雲端服務上。一旦建立了標準化的伺服器,對使用者來說使用起來沒有差別,我們所用的站點服務,都是在這個基礎之上建立的。
直接基於伺服器來做的話有一定的複雜性,所以大家本著不重複造輪子的想法,建立了一堆應用框架。這些框架都是為了讓開發者能更簡單地開發應用,好的框架是能解放開發者的,讓大家能更專注於自己要做的事情。
所以在今天你要想開發一個 WEB 應用,相對來講就比較簡單了。正是因為能比較容易地進行開發,才造就了今天整個網際網路生態的巨大繁榮。
2. ArcBlock 的區塊鏈應用架構
在 ArcBlock 的鏈網世界裡面是什麼樣子呢?上面右邊的圖裡,我們設想應用整體是基於區塊鏈網路的,而不是單獨哪一條公鏈。在這個區塊鏈網路裡,ArcBlock 提供的就是 ABT Network 的標準協定,如果還有其他鏈網架構的公司,也可以連接上它的鏈網協定,比如 Cosmos Hub,共同組合成為應用的最底層。
在這個區塊鏈網路之上,需要建立一個非常標準的部件,稱為區塊鏈節點。ArcBlock 提供了 ABT Node,它對應的是 WEB 應用裡 Apache、Nginx 伺服器這類的東西。ABT Node 要成為一個標準件,這個標準件可以部署在不同的硬體上。可以是在雲端服務上,也可以是在自建礦機上,一旦部署好 ABT Node 的節點,在節點之上看來都是沒有差別的、標準化的。
在這之上,ArcBlock 還提供了一個區塊鏈的應用框架,讓開發者更簡單地使用區塊鏈節點的特性與功能,這就不需要自己造輪子了,從底層到上層的東西已經給開發者搞定了。
有了這些相對清晰的架構,我相信在不久的未來,區塊鏈的開發不會再那麼神祕。未來的區塊鏈開發者,可以使用自己熟悉的框架,使用自己熟悉的標準化區塊鏈節點,快速地搭建自己的 DAPP,甚至是一整條寫入邏輯的區塊鏈。 同時這些區塊鏈可以非常容易地互聯互通。
這就減少了很多的學習成本,讓大家術業有專攻,ArcBlock 來專注於底層技術和框架的實現,讓廣大的開發者,更好地專注於商業與應用。
3. 未來的展望
網際網路剛開始出現的時候,只是電信網路上的一個加值服務,但在今天來看,網際網路已經是一個比電信網路更大更重要的網路了。
今天看起來,區塊鏈應用還只是網際網路上一種 P2P 類型的新協定,但是我們相信,區塊鏈有一個相當大的未來,未來的區塊鏈網路可能與現在的網際網路一樣龐大,甚至是遠超網際網路的體量。

社群問答
問:注意到你們錢包裡可以添加多個「個人資訊」,我理解相當於可以有多個分身,能說下多個分身的使用場景嗎?不同的分身除了名稱不同還有什麼其他不同的內容嗎?
老冒: 這個問題非常好。DID 技術雖然比較新,但理解起來不難,DID 的身分是由使用者自主維護的,更接近於現實生活中的社交身分。
身分不賜予:在現實生活中,我作為一個人,是不需要其他人來承認,更不需要任何一個人來賜予,是生來就有的。這就是所謂的天賦人權,一個人生下來就獲取擁有了自己的身分。
但如果在傳統網際網路的系統裡,想獲得一個身分,就必須去申請,把你的資訊上傳後,系統才會生成一個帳戶,這個帳戶在伺服器上存著,實際上是借給你用的。而在去中心化的自主 ID 系統裡,不需要向任何人申請就可以獲得一個身分 ID。
一人千面:在 ABT Walle 錢包裡,大家其實是可以添加多個不同的個人資訊,這裡體現出了 DID 技術在設計上非常重要的一個思想,那就是支援「一人千面」的多身分。
DID 更像現實生活中我們的身分,每一個人都可以有多個不同身分。工作上的、倫理上的、生活上的等等。並且在不同的場景之下,與不同人打交道的時候,我們可以讓自己呈現出不同的身分。
在傳統網際網路上雖然可以建立多個分身,但建立分身的自由程度很低。比如在使用微信的時候,你對微信裡所有好友呈現的,都只是一個相同的 ID,雖然你能透過設定隱私來選擇新的展示身分,但是用起來是非常繁瑣的。很多時候想把工作和生活的微信號分開就非常麻煩,唯一的辦法就是建立一大堆小號,這樣使用和管理起來非常麻煩。
在 DID 的設計裡,把這樣不同身分需要在不同場合使用的需求,從設計上就實現了。舉個例子,一個真正的 DID 系統,即使使用同一個帳戶,去造訪不同的應用時,或者當你和不同的人進行交流時,DID 會立刻產生出一個專門在這個場景下使用的唯一 ID。
從使用 DAPP 的角度來說,ABT Walle 可以讓你自主地去編輯身分,並決定不同場景下分別使用什麼樣的身分。要注意的是,即使你使用同一個身分,在造訪不同應用時,你的每一個身分 ID 都是唯一且不同的。舉個例子,裡建立的 3 個身分卡片,當你去造訪十個不同的應用時,就會產生十個不同的 ID,而這些 ID 是不需要裡獨自管的,只用維護裡的身分資訊就好。
問:關於 DID,其實現在已有不少鏈也支援高級的帳戶功能了,比如 EOS 的 action 和 owner 帳戶。DID 的多身分 ID 比起這些,優點在哪裡?對開發者來說,意義在哪裡?
老冒: 從 ID 設計的角度,我覺得 EOS 的帳戶體系是一種巨大的倒退,比起最初的比特幣來講,EOS 基本上是按照網際網路註冊帳戶那套體系來的。
大家都知道,在比特幣、以太坊這些「真正的」區塊鏈所設計的思路裡,每個帳戶都是一個自主的帳戶。你不需要向任何一個網路上的節點去申請帳戶,你只要運行區塊鏈給出的演算法,就可以直接建立出帳戶。這個帳戶只要建立過,無論你聲明與否,都是立刻生效的,而不用等待任何人給你批准。
EOS 建立帳戶必須向超級節點申請記憶體空間,這在設計上基本是回到了網際網路註冊體系,所以說是巨大的倒退。
如果按照 W3C 對 DID 的定義,它一定是自主的。身分不是靠任何人給你賜予的,身分就是自我證明的。
所以如何判斷一個系統是不是一個真正的 DID?其實最簡單的方法,就是獲得 ID 的時候,需不需要申請,需要申請的一定不是 DID。
DID 提供了更好的隱私,能更加符合我們的使用需求,但相比 ID 來說更複雜更難實現,需要的效能更高。因此早期的電腦都會用簡化的註冊模型。而隨著運算能力的高速發展,效能足夠了,加上有了區塊鏈技術,去中心化的 DID 才得以實現。
問:看到介紹說 ABT Wallet 還可以充當驗證人,這一點不太理解,它是一個完整的節點能夠運算?還是呼叫鏈上的 API 做相關計算?
老冒: 非常專業的問題!沒錯,一個好的去中心化錢包,應該僅效忠於這個錢包的主人。
錢包不僅僅是管理資產,還必須能夠幫助錢包的主人,隨時隨地進行驗證。
這個驗證不難理解,大家想一下,一個好的瀏覽器也是一個非常典型的、去中心化的應用。瀏覽器並不依靠伺服器運行,給它任何一個網址,都能幫你去瀏覽。比如造訪 https 的站點時,瀏覽器會在背後幫你做一連串的驗證,來保證你的上網安全。
那麼在 ABT 的錢包裡,也需要幹類似的事情。舉個例子,比如說用 ABT Wallet 接受了別人轉賣給你的、一張基於區塊鏈實現的電子電影票。當你接受這張電影票的過程中,錢包首先會使用密碼學的方法來驗證,這是不是一張真正的電影票,這張電影票的簽章是不是正確,電影票裡的內容是不是和交易中你說的屬實等等。
這些計算可能涉及一些密碼學的驗證,也可能會涉及在各個不同鏈上進行驗證。一個比較獨立的、去中心化的錢包,對使用者在將來使用整個區塊鏈網路,是非常重要的,錢包相當於驗證人的作用,它隨時隨地幫你掃描,看看你的資產、你的交易是否合法。
錢包的節點不能簡單等同於區塊鏈上一個節點,甚至不和輕節點劃等號。應該將它理解成鏈的安全代理人,它熟識很多協定,可以去和底層不同結構的鏈進行溝通,並忠實地對你的每一個操作,做一系列的檢查工作。
問:現在有很多專案在做跨鏈,比較熟悉的是最近的 Cosmos 和 Polkadot,你們的優勢或者說定位是什麼?
老冒: Cosmos 和 Polkadot 都是非常值得尊敬的專案。說實在的,真正在鏈網這個架構下的專案,也就它們倆和我們 ArcBlock 這三個專案了。
從架構設計的角度來講,Cosmos 和 ArcBlock 思路上是最接近的,而 Polkadot 更像以太坊 2.0,像以太坊的一個分片技術。

關於這三個專案設計思路的利弊,我就不王婆賣瓜自賣自誇了。但有一個設計理念,我覺得還是非常值得來講的。ArcBlock 在整個設計中有一個首要指導原則,是從 Unix 系統的原則裡學到的:「Do one thing and do it well」。我們只做一件簡單的事,並且要把它做得足夠好。
所以在 ArcBlock 鏈網的架構裡,我們為了讓這件事情變得簡單,讓它簡單地使用、簡單地開發,我願意為了這個「簡單」做一定程度的犧牲。我們是非常注重開發者體驗的,大家可以看到我們在不同開發者 SDK 的支援之上,是做得最全面的。我們的應用開發框架,也是一個全端的框架,你用了這樣一個框架,從前端到後端都可以使用。而不是說我們造了一堆輪子給你自己組裝。
所以我覺得如果開發者朋友們想對這三個專案進行比較,有個簡單的辦法,只需要獲取每一個專案的 SDK,大致地看一下文件,然後按照文件開發實踐一下,你就會迅速地發現區別。你會發現 ArcBlock 非常容易上手。
舉個例子,Polkadot 在亮相介紹的時候,他告訴大家 15 分鐘就能發出來一條鏈,但實際演示中大概花了 40 分鐘,才把環境搭建起來,又花了 15 分鐘建立一個類似「Hello World」的鏈出來。而同樣的事情讓 ArcBlock 來做的話,差不多十分鐘就可以解決。總體來說,我們是非常注重開發者體驗的。
問:我們今天登入很多應用基本都是透過微信、微博或者 GitHub、Google 一鍵登入的,您覺得 ABT 的 DID 和它們最大的不同是什麼?
老冒: 今天我們所能見到的帳戶體系,其實有三種典型的模式:
- 網際網路傳統帳戶模式,必須去系統中申請一個帳號,然後使用 ID 和密碼來使用。前面也有說到。這種模式迅速地出現了一個問題:大家的帳戶實在太多了。
- 第二種就是這位朋友講的一鍵登入模式,它與前一種模式的區別在於,由某一個 ID 系統的提供者,在你的授權下,把你的資料提供給第三方。但仍然需要你把資料上傳給這樣一個 ID 提供者的中心系統。這種情況下,問題常出在 ID 資料的提供方這裡,他會對第三方軟體作出限制,讓你不能自由地使用一鍵登入,同時還有隱私洩漏的風險。
- 第三種就是 DID 了。DID 希望能讓傳統帳戶模式的優秀使用者體驗,再實現非常好的易用性,並保護使用者的隱私,首先得讓使用者身分相關的資訊完全都屬於使用者自己,而不再由任何一個中間人控制。 即使是 DID 的技術供應商,也不擁有使用者的資料,更不能完全控制使用者資料的使用。相當於把使用者的身分和資料還給了使用者。
問:ABT Wallet 以後會支援哪些 token 的管理?有什麼特別方便的地方可以介紹下?
老冒: ABT 的錢包支援一個叫 Open Wallet Protocol 的開放錢包協定,任何支援開放錢包協定的資產,就可以被 ABT Wallet 管理。這不是由開發者決定的,也不需要任何一個人批准,錢包的擁有者可以自由地添加。
任何基於 ArcBlock 發出來的數位貨幣和數位資產,毫無疑問錢包是支援的。任何使用了 ArcBlock 的開放鏈訪問協定,從而能進行映射的第三方鏈也是支援的。就比如說現在我們已經支援了原生比特幣和以太坊的映射,這就意味著 BTC、ETH 以及 ETH 上發行的各種 ERC20 資產,都是可以被 ABT Wallet 管理的。
問:如果我記得所有相關的密碼,但是沒有做資料備份匯出,那麼我再換一台新手機的時候用密碼重新恢復,有哪些資料會遺失?
老冒: 簡單來講,如果你沒有進行資料備份,但是仍然記得恢復碼和初始密碼,那麼在這種情況之下,所有的鏈上資料都不會遺失,但是所有不在鏈上的資料都沒有了。
那麼鏈上資料不會遺失,是不是意味著你利用恢復碼找回後,馬上就能看見裡的所有資產、所有記錄?
這是不一定的,DID 的原理就是這樣子的。你擁有一個主帳號,代表著你最基本的自我身分,每當你去造訪不同應用時,DID 系統會根據演算法,給你建立一個子身分。那麼問題來了,當我知道我的主帳號時,我究竟有多少子帳戶存在呢?
這其實就涉及到隱私的問題了,因為每一個子帳號就相當於你使用過某一服務的證據,因此沒有任何一個地方會為你做記錄,一旦記錄就會存在使用者行為隱私洩漏的問題,子帳戶之間的關係也會暴露。
但你的資產都是記錄在鏈上的,還躺在它原有的地方,並不會消失。只要裡還記得自己擁有那些資產,就可以添加過後,輕鬆找回資產。
在後續的版本之中會在資料備份方面做出更好的改進,來實現去中心化的、自動的資料備份,錢包會變得更加好用。
問:數位身分管理,總會聯想到現實社會、公安局身分證的發放,假以時日未來會有越來越多的應用有去中心化數位身分認證的需求,現在問題是,這個最終的需求會不會變成一個社會的基礎設施?如果真是基礎設施,會不會被政府接管?政府應該不會容許有另一個組織來管幾十億人的身分這麼敏感的事情吧!
老冒: 其實 DID 包含兩個部分,ID 本身是一部分,ID 之上的可驗證聲明也是一個非常重要的部分。
大家都知道身分證吧!我們講過,現實生活中我們的個人身分比較像 DID,生下來就是客觀上存在的,並且是由你自行維護的。那麼身分證、護照這些身分證件屬於什麼呢?
身分證、護照都屬於 ID 上的可驗證聲明。 什麼時候我們才需要一本護照?當我們要出國的時候。護照意味著我們的政府給了我們一個背書,證明我這個人沒犯過罪,是誠實可信的,不會給別國帶來麻煩。為了方便驗證,政府就發了一個證件給你,這個證件叫做護照。
沒錯吧?所以這些證件,都是政府機構發給你,可以用來驗證某些特性的證明材料。可驗證聲明就是指一些機構或個人,從你的 ID 裡發出一個可以被驗證的資料。包括你的身分證、學歷證明、資格證書等等,其實都是可以拿到鏈上實現的。你提供了可驗證的聲明,有的服務才會為你開啟,就像你去銀行辦理業務,必須要帶上身分證一樣。
回答第二個疑問。DID 只是一套技術體系,並不是說誰提供一個 DID 系統,這些身分資料就歸誰了。這也是 DID 跟傳統網際網路 ID 的一個巨大區別。在傳統網際網路裡,用 ID 登入後發文,中心化的管理員想封掉你的 ID 都是隨時可以的,你沒有任何辦法,因為這個 ID 本質上是他借給你使用的。
但 DID 不一樣,它是一套體系。即使是 ArcBlock 提供了 DID 的身分服務,我們本身是不擁有任何人的資料的,僅僅是遵循一套方法實現了這個身分系統而已。而反而從安全和效率的角度來講,我覺得將來整個社會,是更容易接納 DID 的身分框架的,反而傳統的網際網路 ID 框架存在問題了。
我期望,將來政府的公民身分認證體系裡,能逐漸擁抱 DID,走到這種技術的思路上來,從而保護大家的隱私不受侵犯。因為我們都知道,很多傳統網際網路巨頭,都有靠賣我們的資料賺過錢。想要徹底解決隱私洩露的問題,DID 能提供一個很好的開始,但還是需要完善的法律來保障。
個人自主 ID 這種技術,政府是持比較歡迎態度的。比如像美國的國土安全部,也就是給大家發放簽證的部門。它現在的一些方案裡面,就有考慮採用區塊鏈實現的 DID 技術,來管理簽證的發放。所以我相信,在將來這些技術最終會被政府接受,並不衝突。
