ABT Node:為去中心應用開發帶來的正規化遷移

買賣虛擬貨幣
作者: 冒志鴻(ArcBlock 執行長、首席架構師)去年 5 月 20 日,我們成功釋出了全球第一個去中心身份的數字錢包:ABT Wallet。今天在同一個日子,我們釋出了 ABT Node,雖然是技術預覽版,但是由於 ABT Node[1] 是建立在 ArcBlock 過去釋出的 ABT Blockchain Node(鏈節點)、ArcBlock Blockchain Framework(過去命名為 Forge Framework)和 Blocklet 等基礎之上,因此技術預覽版已經具備相當的成熟度,對開發者而言,這是一個完全可以在其上正常開發,功能全面、API 穩定的軟體平臺。技術預覽版目前還不建議用於生產環境——雖然我們自己的平臺正已經開始在這個預覽版節點上開始部署;此外,計費機制尚未開啟——目前所有功能都免費使用,也不能透過這個版本來提供 Blocklet 的收費和智慧合約的分賬。不忘初心,按照既定路線步步前進ABT Node 的釋出,意味著我們在 2017 年就開始設計的 ArcBlock 體系架構的拼圖,在這幾年的不懈耕耘下,首次以完整的面貌為大家呈現出來。不同於市場上各種喧囂與騷動, ArcBlock 從 2017 年創立起,我們就透過技術白皮書完完整整地展現了一幅我們心目中的區塊鏈和去中心應用的藍圖。如今,從當下再回顧成文於 3 年前的 ArcBlock 技術白皮書[2],會發現我們設計的前瞻性以及對市場判斷的準確性。ArcBlock 平臺開發幾年來,一方面不斷驗證了我們願景與最初規劃的正確性;另一方面,我們也不斷進行區域性調整和提升,將業界對我們有啟發有價值的新東西吸納進來,彌補專案初期對行業認知以及產品規劃的不足。由於區塊鏈技術的創新性、軟體工程的複雜性,我們這幾年走的並不是一條直線上升的路線,但卻是技術探索試錯、產品快速迭代、自信心不斷提升的“螺旋曲折上升”的精彩歷程。
“開發鏈訪問協議(OCAP)”、“雲節點”、“Blocklet”,“去中心化訂閱閘道器”是 ArcBlock 白皮書中最重要、最令人矚目的概念和設計,其實現載體正是“ABT Node”。如果說過去我們次序釋出的各個工具產品功能是一個個的點,那麼今天釋出的 ABT Node 就是把這些點連線起來成為線和麵。我們推薦關注 ArcBlock 技術發展的朋友對照 2017 版白皮書來閱讀本文,體會我們的技術進展和實施步驟。細心的朋友可以發現,與技術白皮書最初規劃相比,我們已經新增並實現了以下重要部件:•DID 技術[3]•ABT Wallet[4]•ArcBlock Blockchain Framework[5]什麼是 ABT Node?和過去各種區塊鏈節點有什麼不同?

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

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;