跳到主要內容

ABT Node v1.2.0 正式發布

王仕军(ArcBlock 高级工程师)
ABT NodeArcBlockBlocklet Server

作者: 王仕軍(ArcBlock 資深工程師)

歷經 239 次 Commit、17 個小版本迭代後,功能更強大、效能更穩定、更安全可靠且使用者體驗更好的 ABT Node v1.2.0 正式發布,歡迎大家升級試用!

如果您先前啟動過 ABT Node,可以直接在 ABT Node 的設定介面檢查升級,即可體驗最新版本。

您可能會好奇,ABT Node v1.2.0 包含哪些功能?又有哪些改善?以下列出主要變更與改善。

破壞性變更

ABT Node v1.2.0 包含以下破壞性變更:

  • 安裝 @abtnode/cli 後會產生 abtnodeblocklet 兩個全域命令列工具,前者用於管理 ABT Node,後者用於操作 Blocklet
  • abtnode deploy 改為 blocklet deploy
  • abtnode bundle 改為 blocklet bundle
  • abtnode blocklet:* 改為 blocklet *
  • ABT Node 預設的 Blocklet Registry 已改為 https://booster.registry.arcblock.io,新 Registry 採用 AWS 全球 CDN 加速,下載速度更快

Blocklet Registry

為了提供更好的 Blocklet 開發工作流程,我們設計並開發了去中心化的 Blocklet Registry。目前所有官方 Blocklet 都已發布至官方 Blocklet Registry。新的 Blocklet Registry 已具備以下能力:

  • 驗證 Blocklet 的中繼資料、發布版本資訊、開發者資訊與原始碼壓縮檔
  • 儲存並透過 API 提供自身託管的所有 Blocklet 資訊,方便 ABT Node 搜尋與安裝

接下來我們會持續迭代 Blocklet Registry,使其支援經濟模型中的利益分配,以及 Blocklet Registry 之間的 Push 與 Pull。

團隊管理模組

新版 ABT Node 包含更完善且通用的團隊管理功能:

  • 邀請其他使用者加入時,只需建立邀請連結,受邀者即可透過 ABT Wallet 加入
  • 更細緻的成員管理功能,例如停用、啟用、變更角色與記錄登入時間
  • Blocklet 具備與 ABT Node 完全相同但資料彼此隔離的團隊管理功能,無須自行開發

權限管理模組

在團隊管理的基礎上,我們也加入以角色為基礎的權限控制,以提高 ABT Node 的安全性。這非常適合需要由多人共同管理及維運一個 ABT Node 的情境。

這項功能對 Blocklet 而言同樣通用,也就是說,在 ABT Node 中執行的 Blocklet 原生就具備自己的權限控制模組。

ABT Node 的預設權限與安全性政策如下圖:

Blocklet 服務

以團隊管理與權限管理為基礎,我們開發了第一項 Blocklet 服務:使用者驗證與授權服務(Auth Service),省去開發 Blocklet 時必須重複處理使用者登入、授權等工作的麻煩。這項功能包含兩部分:

  • 使用者驗證:透過 DID 登入驗證使用者身分,不同 Blocklet 的使用者資料完全隔離,並可透過團隊功能管理 Blocklet 自己的使用者
  • 使用者授權:透過權限控制模組管理並驗證使用者權限,實現較安全的存取控制

當然,所有新功能我們都會親自使用。目前需要登入與授權的官方 Blocklet,已全部改用 ABT Node 提供的服務。

啟用 Auth Service 的 Blocklet 安裝後會如下所示:

如果您想親自體驗啟用 Auth Service 的 Blocklet,可以安裝 Auth DemoKitchen Sink;如果想在自己的 Blocklet 中使用 Auth Service,敬請期待即將發布的文件。

接下來我們會設計並提供更多 Blocklet 服務(例如以加密貨幣付款),以簡化 Blocklet 開發,讓 ABT Node 成為真正的 DApp 作業系統。

其他值得注意的改善

除了上述主要功能外,以下小幅改善也值得關注與嘗試:

  • 支援 Web Wallet:新版 ABT Node 能與 ABT Wallet Web 版本順暢協作,包括宣告節點與登入
  • 支援從檔案系統安裝 Blocklet:作為從 Blocklet Registry 安裝的補充,透過 URL 安裝目前支援 http/https/file 三種通訊協定
  • 支援取消等待中的安裝工作:先前版本只能取消下載中的安裝
  • 動態調整安裝與啟動佇列的並行處理數:新版 ABT Node 會依主機效能,動態調整 Blocklet 安裝與啟動兩個工作佇列的並行處理數
  • 支援 Blocklet Requirements:開發者可在 blocklet.yml 中宣告 Blocklet 的執行環境,例如 ABT Node 版本、作業系統與 CPU 架構
  • 支援檢視 Routing Engine 日誌:方便檢視經過路由引擎的流量與日誌

軟體品質提升

從技術預覽版到 v1.2.0,ABT Node 已演進為包含超過 11 萬行程式碼、20 多個子模組的專案,sloc 的統計結果如下:

為確保 ABT Node 可靠且穩定,我們在 CI 流程中加入程式碼涵蓋率統計,要求每個 PR 無論新增功能或重構,都不得降低整體程式碼涵蓋率。兩個月內,整個專案的程式碼涵蓋率從 25.2% 提升至 61.1%,而且仍在持續改善。

以下是 CodeCov 最近 90 天的涵蓋率變化趨勢:

此外,為了提高工程師的效率,我們已將 CI 流程全面從 Travis 轉移至 GitHub Actions,因為後者的執行速度更快。

歡迎試用並提供意見

以上,歡迎試用新版,並前往這裡提供建議!

本頁涉及

產品

  • Blocklet Server superseded

    把 blocklet 作為子行程託管的伺服器。這項工作在 ARC 裡繼續;子行程託管這個模型不再往下走。