ABT Node:為去中心化應用開發帶來的典範轉移

作者: 冒志鴻(ArcBlock 執行長、首席架構師)
2020 年 5 月 20 日,ArcBlock 區塊基石發佈 ABT Node 的「技術預覽版」(Technical Preview)。
去年 5 月 20 日,我們成功發佈了全球第一個去中心化身份的數位錢包:ABT Wallet。今天在同一個日子,我們發佈了 ABT Node,雖然是技術預覽版,但是由於 ABT Node 是建立在 ArcBlock 過去發佈的 ABT Blockchain Node(鏈節點)、ArcBlock Blockchain Framework(過去命名為 Forge Framework)和 Blocklet 等基礎之上,因此技術預覽版已經具備相當的成熟度。對開發者而言,這是一個完全可以在其上正常開發、功能全面、API 穩定的軟體平台。技術預覽版目前還不建議用於生產環境——雖然我們自己的平台已經開始在這個預覽版節點上進行部署;此外,計費機制尚未開啟——目前所有功能都免費使用,也無法透過這個版本來提供 Blocklet 的收費和智慧合約的分帳。
不忘初心,按照既定路線步步前進
ABT Node 的發佈,意味著我們在 2017 年就開始設計的 ArcBlock 體系架構拼圖,在這幾年的不懈耕耘下,首次以完整的面貌為大家呈現出來。
不同於市場上各種喧囂與躁動,ArcBlock 從 2017 年創立起,我們就透過技術白皮書完完整整地展現了一幅我們心目中的區塊鏈和去中心化應用的藍圖。如今,從當下再回顧成文於 3 年前的 ArcBlock 技術白皮書,會發現我們設計的前瞻性以及對市場判斷的準確性。
ArcBlock 平台開發幾年來,一方面不斷驗證了我們願景與最初規劃的正確性;另一方面,我們也不斷進行局部調整和提升,將業界對我們有啟發、有價值的內容吸納進來,彌補項目初期對行業認知以及產品規劃的不足。由於區塊鏈技術的創新性、軟體工程的複雜性,我們這幾年走的並不是一條直線上升的路線,但卻是技術探索試錯、產品快速迭代、自信心不斷提升的「螺旋曲折上升」的精彩歷程。
「開發鏈訪問協定(OCAP)」、「雲端節點」、「Blocklet」、「去中心化訂閱閘道」是 ArcBlock 白皮書中最重要的概念和設計,其實現載體正是「ABT Node」。如果說過去我們依序發佈的各個工具產品功能是一個個的「點」,那麼今天發佈的 ABT Node 就是把這些點連接起來成為「線」和「面」。我們推薦關注 ArcBlock 技術發展的朋友對照 2017 版白皮書來閱讀本文,體會我們的技術進展和實施步驟。細心的朋友可以發現,與技術白皮書最初規劃相比,我們已經添加並實現了以下重要部件:
什麼是 ABT Node?和過去各種區塊鏈節點有什麼不同?
2020 年,區塊鏈的發展進入了第二個十年。ArcBlock 技術白皮書總結了區塊鏈技術在過去 11 年從 1.0、2.0 到 3.0 不斷進步的過程。一些人誤以為我們只是打出 3.0 一個看似空洞的市場推廣口號,然而,我們卻是一如既往地認真 —— 認真地去思考、認真地去規劃、認真地去執行。ABT Node 和業界常見的區塊鏈節點軟體有什麼不同?其實這張我們創作卻廣為流傳的圖片已經畫龍點睛。

對於以承載應用為主的區塊鏈 3.0,在圖中我們總結了它一些應該具備的基本特點:
- 雲端節點(與雲端運算結合)
- 開放鏈訪問(也就是可以支援多鏈的架構)
- Blocklet(我們定義的、運行在鏈節點上的、無伺服器應用程式協定)
- 擴展進化能力(區塊鏈節點的處理能力可以不斷演進)
今天發佈的 ABT Node 正是上述這些特點的真正實現。

我們在 2019 年 9 月上海的「上海之巔 創見未來」活動上首次公開發佈了 Blocklet 的技術預覽版,並且使用 Blocklet Framework構建我們自己的應用。在 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,我們稱之為「區塊鏈管理員」。

透過區塊鏈管理員,開發者能夠更方便地構建、管理、查看區塊鏈,這比去年推出的 Forge CLI 要更方便易用。採用 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 為去中心化應用開發帶來的是軟體開發的典範轉移(Paradigm Shift),具有劃時代的意義。我會另撰專文,帶大家回顧軟體開發典範在過去幾十年裡如何變遷,從而更清晰地看到其意義所在。
ABT Node 是一個 Blocklet 的運行環境,廣義來說是使用者資料的執行邏輯處理器,狹義的理解可以認為是一個用戶友好、易操作的微服務作業系統——用戶可以很容易地在節點裝載、卸載 Blocklet。這些 Blocklet 對用戶來說如同樂高積木,只要做基本選擇即可。一旦這些應用被用戶安裝,就屬於用戶所有,不需要依賴於其他服務,成為完全去中心化的應用。Blocklet 不但可以與區塊鏈互操作,而且可以與區塊鏈以外的服務(如資料庫、API 等)互操作,且 Blocklet 協定不限制其實現的語言、框架和用戶介面,具有極強的靈活性和廣泛的使用空間。

上圖是我們在技術白皮書裡列舉的 Blocklet 幾種典型應用場景。ABT Node 所帶來的軟體開發典範轉移,使得大部分軟體變得非常容易規模化(Scale),將更容易開發、更容易部署。開發營運者不再需要為多租戶方式(Multi-tenancy)的服務而付出高昂的營運成本,而用戶將能全面掌控自己的資料,保證自己的隱私和數據安全。而這些將為整個應用軟體市場,乃至網路應用服務帶來深遠的意義。
本頁涉及
產品
-
Blocklet Server
superseded
把 blocklet 作為子行程託管的伺服器。這項工作在 ARC 裡繼續;子行程託管這個模型不再往下走。