ABT Node v1.2.0 正式發布

作者: 王仕軍(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後會產生abtnode與blocklet兩個全域命令列工具,前者用於管理 ABT Node,後者用於操作 Blocklet abtnode deploy改為blocklet deployabtnode bundle改為blocklet bundleabtnode 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 Demo 或 Kitchen 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 裡繼續;子行程託管這個模型不再往下走。