2020 年,區塊鏈的發展進入了第二個十年。ArcBlock 技術白皮書總結了區塊鏈技術在過去 11 年從 1.0、2.0 到 3.0 的不斷進步的過程。一些人誤以為我們只是打出 3.0 一個看似空洞的市場推廣口號,然而,我們卻是一如既往地認真 —— 認真地去思考、認真地去規劃、認真地去執行。ABT Node 和業界常見的區塊鏈節點軟體有什麼不同?其實這張我們創作卻廣為流傳的圖片已經畫龍點睛。
對於以承載應用為主的區塊鏈 3.0,在圖中我們總結了它一些應該具備的基本特點:
•雲節點 (和雲端計算結合)
•開放鏈訪問 (也就是可以支援多鏈的架構)
•Blocklet (我們定義的、執行在鏈節點上的、一直無伺服器應用程式協議)
•擴充套件進化能力(區塊鏈節點的處理能力可以不斷演進)
今天釋出的 ABT Node 正是上述這些特點的真正實現。
我們在 2019 年 9 月上海的“上海之巔 創見未來”活動上首次公開發布了 Blocklet 的技術預覽版,並且使用 Blocklet 框架構建我們自己的應用,在 ABT Node 釋出之前,Blocklet 還只是一種應用開發的框架,其本身的部署和執行還需要單獨的伺服器,和傳統的應用服務還看不到足夠的差異,而當 ABT Node 釋出之後,Blocklet 的優勢將全面展現出來。
ABT Node 和容器(Container)、虛擬機器(Virtual Machine)有何區別和聯絡?
ABT Node 和 Blocklet 是一種無伺服器(Serverless)的微服務(Micro-service)架構, 我們在白皮書中就給出了這樣明確的定義。ABT Node 上能執行應用的是 Blocklet, Blocklet 是我們設計的一種應用元件協議,可以使用各種語言來實現,也可以混合編排不同語言和框架實現的 Blocklet。例如我們 ABT Node 本身採用 Node.js 實現,大部分我們提供的 Blocklet 也採用 Node.js,而我們的區塊鏈框架採用了 Erlang/Elixir 來實現。
ABT Node 看起來有些類似目前流行的容器(Container)技術,但是 ABT Node 的設計和目前的常見容器技術(如 Docker 等)有較大的區別。簡單而言,容器技術更加註重通用性,例如 Docker 能容納很多並沒有考慮在容器中執行的應用;而 Blocklet 有自己嚴格的協議,每個 Blocklet 都是為能夠在 ABT Node 中執行而設計的。值得一提的是,一些沒有為 ABT Node 而設計的應用也可以很方便地擴充套件為 Blocklet。
ABT Node 本身和容器、虛擬機器之間沒有衝突,是相輔相成的關係。ABT Node 可以執行在虛擬機器上,也可以執行在 Docker 容器中,我們把它設計得非常適合 Docker,或者 Kubernetes 編排的服務。例如在 AWS 上,ABT Node 可以非常容易地作為一個 EC2 例項執行在 EC2 的虛擬機器上, 也可以作為一個 Docker 容器執行在 ECS 或 EKS 上,也能很方便地使用 AWS Fargate 來部署——完全由使用者根據自己的需求來決定選擇什麼樣的執行環境。ABT Node 本身也和雲端計算平臺無關(Cloud agnostic),她可以執行在各種雲端計算服務上,也可以執行在使用者自己提供的伺服器或裝置上。ABT Node 的設計也適應物聯網的應用場景,開發者可以在樹莓派(Raspberry Pi)這樣的嵌入式裝置上部署,為區塊鏈、Dapps 的應用展開了一個廣闊的空間。
ArcBlock 的區塊鏈和 ABT Node 是什麼關係?對現有的區塊鏈應用有什麼樣的影響?
ArcBlock 是一個面向去中心化應用(Dapps)的平臺,區塊鏈的支援只是我們平臺的一個重要部分而不是全部, ABT Node 可以成為區塊鏈的節點,卻不一定只是用作區塊鏈的節點。ABT Node 讓基於區塊鏈的 Dapps 架構變得非常簡單而清晰,移除了 Dapps 對傳統 web 元件的依賴,改變了現有區塊鏈應用的軟體開發正規化。
我們在去年 3 月釋出了 ArcBlock 區塊鏈框架,讓一鍵發鏈、織鏈成網變成可能,構成這些區塊鏈的基本部件是鏈節點。在去年 ABT Node 還沒有推出的時候, 我們釋出了一個“鏈節點”的軟體和構建鏈的工具 Forge CLI(Forge 框架和 CLI 工具將在 ABT Node 正式釋出後完全“退休”遷移到 ABT Node 上來,並且我們向前保持著 100%的相容性)。現在,這些“鏈節點”的軟體和構建鏈的工具已經是一個 ABT Node 上的 Blocklet,我們稱之為“區塊鏈管理器”。
透過區塊鏈管理器,開發者能夠更為方便地構建、管理、檢視區塊鏈,這比去年推出的 ForgeCLI 要更為方便易用。採用 ABT Node 來建立、部署一個區塊鏈的門檻進一步大幅度下降。當你使用 ABT Node 來建立管理區塊鏈,你可能會驚訝地發現,這如此簡單、容易和快捷,我們的目標就是如此,我們想讓你把精力完全專注於你的應用開發或者業務的運營,這些基礎的事情我們自動化幫你完成。
ABT Node 是否是區塊鏈節點,取決於這個節點上是否透過區塊鏈管理器將其配置為區塊鏈節點。值得一提的是,你可以在 ABT Node 上執行多個區塊鏈,只要節點的硬體環境能夠允許多條鏈的執行,完全可以在同一個 ABT Node 上多鏈同時執行。事實上,在開發和測試環境下,我們鼓勵開發者在自己的開發節點上執行多條鏈,這對測試、跨鏈開發等都非常有幫助。ABT Node 既可以配置為區塊鏈的全節點,也可以只作為輕節點,或者是一條鏈的全節點,其他鏈的輕節點。
ABT Node 和 DID 技術有什麼樣的聯絡?
ArcBlock 認為 DID 技術是去中心化應用的重要基礎,對 DID 的支撐貫穿整個 ArcBlock 產品體系之中。ArcBlock 一直在推進的 DID 技術協議及實現是 ABT Node 的基礎,並且始終貫穿在 ABT Node 設計和實現之中。ABT Node 本身的使用者管理、授權、認證完全基於 DID 和 Verifiable Credentials(可驗證證書,VC)技術,和 ABT Wallet 有機地結合在一起。
除了本身使用 DID 技術,ABT Node 本身還對 DID 協議起到支撐和服務的作用,每個 ABT Node 上執行的應用都可能是一個 DID 的服務提供端點( Service Endpoint), 每個 ABT Node 都會為自己的服務提供 DID Resolver 的例項,使得 DID 能在應用中的實現、部署、互聯互通前所未有的方便。由於 ArcBlock 的區塊鏈本身也使用 DID 技術,因此毫無疑問執行在 ABT Node 裡的區塊鏈透過 DID 可以完美地整合。而 Blocklet 協議本身也和 DID 及 VC 密切相關。
ABT Node 對 Dapps 開發帶來了哪些全新意義?
ABT Node 為去中心應用開發帶來的是軟體開發的正規化遷移,具有著劃時代的意義。我會另撰專文,帶大家回顧軟體開發正規化在過去幾十年裡如何變遷,從而更清晰地看到其意義所在。
ABT Node 是一個 Blocklet 的執行環境,廣義來說是使用者資料的執行邏輯處理器,狹義的理解可以認為是一個使用者友好、易操作的微服務作業系統——使用者可以很容易地在節點裝載、解除安裝 Blocklet。這些 Blocklet 對使用者來說,如同樂高積木,只要做基本選擇即可。一旦這些應用被使用者安裝就屬於使用者,而可以不需要依賴於其他服務,成為完全去中心化的應用。Blocklet 不但可以和區塊鏈互操作,而且可以和區塊鏈以外的服務,如資料庫、API 等互操作,並且 Blocklet 協議不限制其實現的語言、框架和使用者介面,具有非常強的靈活性和非常廣泛的使用空間。
上圖是我們在技術白皮書裡列舉的 Blocklet 的幾種典型應用場景。ABT Node 所帶來的軟體開發正規化變遷,使得大部分軟體變得非常容易規模化(Scale),將更容易開發、更容易部署,開發運營者不再需要為多租方式的服務而付出高昂的運營成本,而使用者將能全面掌控自己的資料,保證自己的隱私和資料安全。而這些將為整個應用軟體市場,乃至網際網路應用服務帶來深遠的意義。
References
[1] ABT Node: https://www.arcblock.io/zh/node
[2] ArcBlock 技術白皮書: https://www.arcblock.io/zh/whitepaper
[3] DID 技術: https://www.arcblock.io/zh/decentralized-identity
[4] ABT Wallet: https://abtwallet.io/zh/
[5] ArcBlock Blockchain Framework: https://www.arcblock.io/zh/forge-sdk