如何讓所有區(qū)塊鏈一鍵發(fā)鏈和萬(wàn)鏈互聯(lián)成為現(xiàn)實(shí)
早春三月,雖然加密貨幣市場(chǎng)仍處于熊市寒冬,區(qū)塊鏈行業(yè)卻不斷傳出令人振奮的消息:以太坊完成旨在將 Pow 共識(shí)機(jī)制切換為 PoS 的君士坦丁堡硬分叉,Cosmos[1] 的主網(wǎng) Cosmos Hub 正式上線,ArcBlock 區(qū)塊基石 ABT Network 和 Forge 開(kāi)發(fā)框架即將于 3 月底發(fā)布,Polkadot[2] 也計(jì)劃在未來(lái)幾個(gè)月內(nèi)上線,不約而同為加速區(qū)塊鏈技術(shù)落地開(kāi)辟了一條頗具前瞻性的道路:提供開(kāi)發(fā)者友好便利的開(kāi)發(fā)框架,人人都能按需開(kāi)發(fā)自己的區(qū)塊鏈;并打破隔閡,讓所有區(qū)塊鏈能夠連通起來(lái),促進(jìn)價(jià)值無(wú)縫流通。
和“一條公鏈搞定一切”的思維分道揚(yáng)鑣
2018 年,眾多公鏈項(xiàng)目沿著以太坊開(kāi)辟的“世界計(jì)算機(jī)”方向,聚焦于單條區(qū)塊鏈的交易吞吐量和性能的提升進(jìn)行各種探索設(shè)計(jì),一時(shí)之間,各種“公鏈”層出不窮,人人企圖為全世界修建一條大而全的公路來(lái)解決各種交通運(yùn)輸問(wèn)題,即使是各種鏈上分片、鏈下用側(cè)鏈/子鏈/狀態(tài)通道等擴(kuò)容技術(shù)的方案,也仍然按照這一思維做文章。結(jié)果性能并未得到實(shí)質(zhì)性提升,卻誕生越來(lái)越多技術(shù)架構(gòu)各異、互不連通的公鏈,讓 Dapps 開(kāi)發(fā)者疲于奔命。
作為專注于 Dapps 開(kāi)發(fā)部署的區(qū)塊鏈時(shí)代的“云”平臺(tái),ArcBlock 的設(shè)計(jì)初衷是從應(yīng)用開(kāi)發(fā)角度出發(fā),幫助開(kāi)發(fā)者不僅擺脫訪問(wèn)調(diào)用不同區(qū)塊鏈的麻煩負(fù)擔(dān),而且盡可能降低應(yīng)用被底層公鏈鎖定的風(fēng)險(xiǎn)——去年 7 月上線的 OCAP(Open Chain Access Protocol,開(kāi)放鏈訪問(wèn)協(xié)議)即為 Dapps 訪問(wèn)比特幣、以太坊等底層公鏈提供了統(tǒng)一易用的中間抽象層,在解決加強(qiáng)區(qū)塊鏈互操作性的道路上“吾道不孤”:如何終結(jié)越來(lái)越多的公鏈/許可鏈之間呈現(xiàn)的割據(jù)局面,在一座座價(jià)值孤島之間搭建起價(jià)值互通的橋梁,使鏈與鏈之間可以互相傳遞訊息、發(fā)送交易,從而形成整個(gè)區(qū)塊鏈的價(jià)值互聯(lián)網(wǎng)。
如果說(shuō)以太坊公鏈設(shè)計(jì)好比是全世界只修一條公路,ArcBlock 等提出的是“織鏈為網(wǎng)”的全新思路:編織區(qū)塊鏈的交通網(wǎng)絡(luò),讓各種車輛各行其道、各行其是,既需要免費(fèi)的公路,也需要收費(fèi)的高速和私家車道。最重要的是,交通網(wǎng)絡(luò)必須有一個(gè)綜合平臺(tái)來(lái)協(xié)調(diào)指揮,才能有效利用路網(wǎng)資源發(fā)揮最好的綜合性能。
除了 ArcBlock 之外,最近發(fā)布的 Cosmos,即將發(fā)布的號(hào)稱實(shí)現(xiàn)了 ETH 2.0 愿景的 Polkadot,以及在企業(yè)聯(lián)盟鏈領(lǐng)域耕耘已久的 Hyperledger Farbirc[3],都是在這個(gè)方向上探索前行。 可以說(shuō),從 2019 年的動(dòng)向來(lái)看,關(guān)于區(qū)塊鏈的未來(lái)方向,最終可能形成分道揚(yáng)鑣的兩大陣營(yíng)。
從“互聯(lián)網(wǎng)”到“互聯(lián)鏈”的發(fā)展趨勢(shì)
回顧互聯(lián)網(wǎng)技術(shù)發(fā)展史,可以發(fā)現(xiàn)歷史有著驚人的相似之處:早期的計(jì)算機(jī)網(wǎng)絡(luò)是一個(gè)個(gè)獨(dú)立的局域網(wǎng),然后逐漸互聯(lián)成為更大的通信網(wǎng)絡(luò)。計(jì)算機(jī)網(wǎng)絡(luò)并沒(méi)有孕育出幾個(gè)超級(jí)通信網(wǎng)絡(luò)服務(wù), 相反,去中心的互聯(lián)網(wǎng)協(xié)議取得了巨大的成功。我們有理由相信,區(qū)塊鏈也會(huì)朝著類似的趨勢(shì)發(fā)展。
在如何實(shí)現(xiàn)跨鏈互聯(lián)互通方面, 目前的各家技術(shù)解決方案也是八仙過(guò)海、各顯神通,但基本的設(shè)計(jì)和目的是類似的。有趣的是,這些不同的跨鏈技術(shù)本身都體現(xiàn)出對(duì)其他技術(shù)的互聯(lián)互通性, 理論上它們是互相兼容,可以連接起來(lái)的——這與傳統(tǒng)的“公鏈”們各自為政形成鮮明對(duì)比。
以 Tendermint 團(tuán)隊(duì)為核心團(tuán)隊(duì)開(kāi)發(fā)的跨鏈項(xiàng)目 Cosmos 定義了 IBC(Inter-Blockchain Communication,鏈間通信)協(xié)議,允許使用 Cosmos SDK 開(kāi)發(fā)的相同結(jié)構(gòu)的區(qū)塊鏈以及代理鏈(遵守原鏈和 IBC 通信標(biāo)準(zhǔn)),以 Zone 的形式與 Hub 這一中間樞紐連接通信,實(shí)現(xiàn)鏈與鏈的互聯(lián)互通,最終形成宇宙星云式鏈網(wǎng)結(jié)構(gòu)。Polkasdot 出現(xiàn)在 Cosmos 之后可能較多受 Cosmos 啟發(fā),其設(shè)計(jì)有類似之處。
Hyperledger Farbric 由于主要定位是企業(yè)聯(lián)盟鏈的場(chǎng)景,經(jīng)常被人忽視,但是 Fabric 的設(shè)計(jì)思路相當(dāng)超前,當(dāng)各家公鏈還在喧囂之時(shí),Hyperledger Fabric 從其“Fabric”這個(gè)名字上就體現(xiàn)了其多鏈交錯(cuò)設(shè)計(jì)的特色。不過(guò)由于 Fabric 的設(shè)計(jì)目標(biāo)是聯(lián)盟鏈環(huán)境,其多鏈主要體現(xiàn)在其一個(gè)應(yīng)用中采用 Channel 的方式來(lái)切分多條鏈的設(shè)計(jì),在跨鏈通信方面沒(méi)有重視。
ArcBlock 的 ABT Network 與前述設(shè)計(jì)不同,采用的是獨(dú)創(chuàng)的三維稀疏矩陣的組網(wǎng)思路,所有的鏈都是平行空間的設(shè)計(jì),用 DID(去中心化 ID)和可編程通證(Programmable Token)來(lái)巧妙地實(shí)現(xiàn)鏈與鏈的互聯(lián)和通信。ABT Network 中鏈和鏈之間的通信不需要通過(guò)任何中間人的“中繼(relay)”或 Hub 進(jìn)行,更為去中心化,組網(wǎng)更為自由。
多鏈互聯(lián)設(shè)計(jì)的另一個(gè)顯著優(yōu)勢(shì)是不再需要去區(qū)分“私鏈”、“聯(lián)盟鏈”和“公鏈”,不必陷入“許可鏈(Permissioned Chain)”和“無(wú)許可鏈(Permissionless Chain)”這些無(wú)謂的“名詞之爭(zhēng)”。當(dāng)各條鏈可以有效互聯(lián),必然有一部分是公共的,有一部分是私有或者聯(lián)盟的,必然有需要許可的,有無(wú)需許可的,恰如今天的互聯(lián)網(wǎng)一般。
無(wú)論上述哪一種技術(shù),其基本思路都和現(xiàn)在的“一條公鏈搞定一切”的單鏈設(shè)計(jì)思路有著截然不同的世界觀。無(wú)論從技術(shù)發(fā)展的趨勢(shì)來(lái)看,還是從“去中心化”程度本身來(lái)分析,我們有理由相信,這種“互聯(lián)鏈”的方向是未來(lái)去中心化世界的趨勢(shì),也許 2019 年是這一共識(shí)形成的分水嶺。
個(gè)人自主的去中心化 ID 技術(shù)是連接 Dapps 的關(guān)鍵
當(dāng)應(yīng)用被去中心化的區(qū)塊鏈拆分成很多的部分之后,是什么把這些去中心化的應(yīng)用部件組織成一個(gè)完整的應(yīng)用來(lái)呈現(xiàn)給用戶? 答案就是去中心化的數(shù)字用戶 ID。
DID,是萬(wàn)維網(wǎng)聯(lián)盟(W3C )今年 1 月制定的用戶自主身份(Self-Sovereign IdenTIty)的數(shù)字 ID 技術(shù)標(biāo)準(zhǔn)[4],業(yè)界剛剛開(kāi)始研究開(kāi)發(fā)其在區(qū)塊鏈技術(shù)架構(gòu)和應(yīng)用中的價(jià)值與功能:DID 在技術(shù)上支持用戶自主身份在互聯(lián)網(wǎng)中的實(shí)現(xiàn),奠定了更好的保護(hù)用戶隱私、用戶資產(chǎn)安全、保障用戶數(shù)據(jù)主權(quán)等一系列重要基礎(chǔ), 也是實(shí)現(xiàn)去中心化應(yīng)用的關(guān)鍵技術(shù)。
目前為止把其中心化 ID 設(shè)計(jì)為關(guān)鍵部件的只有 ArcBlock。 ArcBlock 的 DID 設(shè)計(jì)是從底層開(kāi)始貫徹始終。未來(lái)會(huì)有越來(lái)越多的區(qū)塊鏈可能會(huì)采用側(cè)鏈或者智能合約的方法來(lái)實(shí)現(xiàn) DID,但是 ArcBlock 的 DID 則是從最底層支持的,屬于非常徹底支持 DID 的方案。Hyperledger 可能是出于其企業(yè)聯(lián)盟鏈的場(chǎng)景,繼承了傳統(tǒng)的企業(yè)認(rèn)證機(jī)制,這在企業(yè)內(nèi)部可能是可行的,但限制了其跨越組織的應(yīng)用場(chǎng)景。
值得一提的是 ArcBlock 的平臺(tái)把支持 DID 的錢包作為一個(gè)重要基礎(chǔ)部件,加密錢包將不只是一個(gè)數(shù)字資產(chǎn)的管理工具, 更是用戶去中心化 ID 的管理利器。
組件化設(shè)計(jì),讓”一鍵發(fā)鏈“和“萬(wàn)鏈互聯(lián)”成為現(xiàn)實(shí)
授人以魚(yú),不如授人以漁。ArcBlock 和 Cosmos 都將一條區(qū)塊鏈的開(kāi)發(fā)由下而上分離出三層:網(wǎng)絡(luò)層(底層數(shù)據(jù)結(jié)構(gòu)和通信協(xié)議設(shè)計(jì))、共識(shí)層(共識(shí)機(jī)制設(shè)計(jì))和應(yīng)用層(具體業(yè)務(wù)邏輯設(shè)計(jì)),將網(wǎng)絡(luò)層和共識(shí)層設(shè)計(jì)封裝為內(nèi)核,應(yīng)用層的通用功能分離成可插拔的模塊,組成 SDK 開(kāi)發(fā)工具,讓開(kāi)發(fā)者能夠一鍵發(fā)鏈:他們不再需要設(shè)計(jì)整條區(qū)塊鏈,而只需要實(shí)現(xiàn)核心的業(yè)務(wù)功能。
ArcBlock 提供的開(kāi)發(fā)者發(fā)鏈框架是 Forge 框架[5]。如上圖所示,其在系統(tǒng)架構(gòu)位置上和 Cosmos SDK 是一致的,更好的幫助開(kāi)發(fā)者發(fā)布根據(jù)自己的需求定制的區(qū)塊鏈,并與自己的 Dapps 無(wú)縫連接:Forge 內(nèi)核以 RPC(遠(yuǎn)程過(guò)程調(diào)用)的方式調(diào)用共識(shí)引擎、狀態(tài)引擎和存儲(chǔ)引擎,幫助用戶定制的區(qū)塊鏈實(shí)現(xiàn)共識(shí)達(dá)成、狀態(tài)同步和分布式存儲(chǔ),而這三個(gè)引擎均可插拔(比如目前 Forge 共識(shí)引擎調(diào)用的是 Tendermint,未來(lái)可插拔切換為其他共識(shí)算法);FABI(Forge ApplicaTIon Blockchain Interface,F(xiàn)orge 應(yīng)用區(qū)塊鏈接口)連接 Forge 內(nèi)核與更為豐富的應(yīng)用層:DID API、區(qū)塊鏈 API 和 OCAP API 幫助安全連接其他用 Forge 打造的鏈以及比特幣、以太坊等為 OCAP 支持訪問(wèn)的公鏈。在這之上支撐 Dapps 還有更多開(kāi)發(fā)者可以直接使用的工具:管理控制臺(tái)、命令行工具、區(qū)塊瀏覽器,而不只是框架。
對(duì)開(kāi)發(fā)者而言,ArcBlock 的 Forge 開(kāi)發(fā)框架更為簡(jiǎn)單實(shí)用,屬于“開(kāi)箱即用”的設(shè)計(jì)。Forge 框架目標(biāo)是讓開(kāi)發(fā)區(qū)塊鏈如同用 Ruby On Rails 來(lái)開(kāi)發(fā) Web 般的革命和簡(jiǎn)單。兩者相比,Cosmos 在理論上可以更加靈活,而 ABT Network 和 Forge 框架更加簡(jiǎn)單易用。ArcBlock 犧牲了一定靈活性來(lái)?yè)Q取簡(jiǎn)單和高性能,Cosmos 是追求充分的靈活性而犧牲簡(jiǎn)單性。這種區(qū)別屬于設(shè)計(jì)理念的區(qū)別,無(wú)所謂高下優(yōu)劣, ArcBlock 的目標(biāo)就是要構(gòu)建對(duì)開(kāi)發(fā)者極其友好的區(qū)塊鏈應(yīng)用平臺(tái),因此追求良好開(kāi)發(fā)者和用戶體驗(yàn)是其最高原則。
織鏈為網(wǎng)的區(qū)塊鏈設(shè)計(jì),更有可能搭建對(duì)開(kāi)發(fā)者友好的應(yīng)用開(kāi)發(fā)平臺(tái)和生態(tài),能讓區(qū)塊鏈更貼近實(shí)際應(yīng)用場(chǎng)景,讓去中心化應(yīng)用在這樣的基礎(chǔ)土壤中得以萬(wàn)物生長(zhǎng)。