跳到主要內容

ABT Node 1.3.0 新功能概覽

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

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

ABT Node 1.3.0 新功能概覽

經過近兩個月的琢磨、159 次提交和 14 個小版本迭代,我們於 2021 年 4 月 20 日正式發布了 ABT Node 1.3.0。

如果你想試用最新版本,可以執行 npm install -g @abtnode/cli 取得。

ABT Node 1.3.0 包含以下幾項重要的新功能:

  • 支援多個應用市集:Multiple Marketplace
  • 支援組合型 Blocklet:Blocklet Component
  • 支援付費型 Blocklet:Paid Blocklet

在詳細介紹上述新功能之前,我們先透過類比來說明本文涉及的各個元件扮演什麼角色:

  • ABT Node:就像每個人自己擁有的手機,只不過 ABT Node 裡安裝的是 Blocklet。每個人的手機只屬於自己,ABT Node 的擁有者也能完全掌控自己的資料
  • Blocklet:就像安裝在每支手機裡的應用程式。以 ABT Node 提供的 DID 使用者驗證、區塊鏈支付服務為基礎,開發者可以打造功能強大且充分去中心化的應用程式
  • Marketplace:就像 Apple App Store 之類的應用程式商店,方便使用者尋找、下載及安裝 Blocklet。Marketplace 本身會透過為 Blocklet 提供 Hosting 服務來取得挖礦收益。Marketplace 本身也是一個 Blocklet,因此很容易實現去中心化
  • ABT Wallet:協助使用者管理數位身分與數位資產的去中心化軟體。這裡的數位資產包括代幣、NFT(票券、優惠券、憑證、加密藝術品)

支援多個應用市集

ABT Node 1.3.0 支援新增多個應用市集,並可在不同市集間自由切換,為應用市集去中心化,以及 ArcBlock 的資源礦工、元件礦工參與貢獻提供技術支援。ABT Node 會智慧地記住所有 Blocklet 的安裝來源,方便後續升級及載入其他 Blocklet 資源。

此外,為了讓開發者快速瞭解 ABT Node 和 Blocklet 能做什麼,我們已將所有 Demo、Example Blocklet 發布到專屬的應用市集。

目前 ABT Node 內建的兩個應用市集為:

新增、編輯及切換應用市集的方式如下圖所示:

支援組合型 Blocklet

有了 Blocklet Component 支援,開發者可以像組合樂高積木一樣,將可重複使用的元件組裝成應用程式,再以整體形式發布並為使用者提供服務。這種靈活的組合方式讓以下情境成為可能:

  • 有些 Blocklet 可以做得非常小巧且專精,多數時候會嵌入其他 Blocklet 使用,例如一個以 Crypto 為基礎的打賞 Blocklet;在傳統軟體開發領域中,這就像提供 Library
  • 有些使用者非常擅長將其他 Blocklet 組合成完整解決方案,例如整合不同元件的去中心化社群應用程式、DAO 應用程式等
  • 當 Blocklet Component 被購買時,整個流程中的所有參與者,包括 Blocklet 作者、解決方案組裝與提供者、應用市集,都能獲得分潤

在 Dev 應用市集中,我們提供了 Component Demo Blocklet,方便大家安裝測試:

安裝 Component Demo 後,可以在 Blocklet 詳細資訊頁看到其中包含的元件:

Component Demo 設定頁面中,還可以分別設定所有元件:

啟動 Component Demo 後,可以看到其中其實嵌入了兩個應用程式:

除了 Component Demo 之外,是否還有其他 Production Ready 的 Blocklet 採用這種組合方式?有的,官方應用市集中的下列 Blocklet 就是組合型 Blocklet(這兩個 Blocklet 都組合了鏈的 API 部分和標準化的 Block Explorer;未來鏈還會組合更多其他內容,例如資產鏈文件):

支援付費型 Blocklet

如果開發者能提供為使用者創造價值、帶來便利的 Blocklet,憑此獲得代幣收入也很合理。

ABT Node 1.3.0 支援的 Paid Blocklet 正是為此情境而設。使用者若要購買、安裝需要付費的 Blocklet,直接在 ABT Node 中透過 ABT Wallet 即可完成,整筆交易也會透過資產鏈即時結算。

為了鼓勵生態系參與者,開發者可以自行決定 Blocklet 的價格及分潤策略,而應用市集則依據自身營運成本,決定是否將某個 Blocklet 上架。最終使用者會以取得 NFT 的形式完成購買,同一個 NFT 也能在許多情境中作為購買憑證使用。

如果你想試用 Paid Blocklet,可以如下圖在 Dev 應用市集中找到 Payment Demo Blocklet:

接著完成購買,並安裝到你的節點中(目前購買使用的仍是測試幣,你可以到這裡領取)。

新版節點的其他變更

除了上述幾項重要功能,ABT Node 1.3.0 還包含大量細節更新與最佳化,以確保 ABT Node 節點穩定、高效能且易於使用,例如:

Dashboard

  • 應用市集頁面支援新增、編輯、刪除及切換至不同市集
  • 應用市集頁面支援搜尋及篩選 Blocklet
  • Blocklet 詳細資訊頁顯示最新版本號及最近發布時間
  • Blocklet 詳細資訊頁顯示 Blocklet 價格及分潤資訊
  • 初始化介面支援透過開發者工具設定自訂 Web Wallet 位址
  • Router 頁面支援修改特定網站的主要網域
  • 最佳化大部分頁面的響應式設計,方便在 ABT Wallet 中管理節點

Core

ABT Node 的核心也進行了許多改善,以提升效能與穩定性

  • 支援安裝、設定及升級 Blocklet Component
  • 節點初始化時支援要求並驗證節點所有權 NFT
  • 下載及安裝 Blocklet 前嚴格驗證 Blocklet 中繼資料,確保安全
  • 妥善處理 Blocklet Service 程序中反向代理發生錯誤的情況
  • 使用 /.proxy/{resource} 取代 /{did}/{resource} 來傳回 Blocklet 靜態資源

Router

路由引擎的可靠性與效能也有相當顯著的改善:

  • 為 Blocklet Component 中的複雜組合提供路由支援
  • 依不同執行模式自行決定啟動的程序數量,以達到最佳效能
  • 反向代理時設定合理的請求標頭,確保不會影響各種服務
  • 更完整、穩定,且經過大量實際應用驗證的 CORS 支援

CLI

ABT Node CLI 在 1.2.0 之後拆分成兩個命令列工具,各自的最佳化包括:

  • abtnode init 能正確處理組合型 Blocklet
  • blocklet dev 支援開發時自動安裝、啟動組合型 Blocklet 的相依套件
  • blocklet bundle 支援在多 Blocklet 儲存庫中進行封裝
  • blocklet publish 發布前會自動為付費 Blocklet 在資產鏈上建立 NFT Factory
  • blocklet publish 發布前會使用開發者的私鑰簽署 Blocklet 中繼資料

Blocklets

在開發 1.3.0 的過程中,我們提供了以下 Blocklet 來協助開發:

  • Component Demo: 方便開發者測試組合型 Blocklet
  • Payment Demo: 方便開發者測試及體驗付費型 Blocklet
  • NFT Store: 通用的 NFT 商店元件,可嵌入任何需要販售 NFT 的 Blocklet
  • Blocklet Registry: 最新版本內建 NFT Store,以及動態的 Blocklet 清單與詳細資訊頁
  • ABT Node Launcher: 重新設計的 Launcher,只需使用 ABT Wallet 即可完成 ABT Node 的購買、啟動及管理
  • OCAP Playground: 方便開發者瞭解新資產鏈及 ABT Wallet 功能的 Blocklet

Blocklet Meta Spec

除了上述功能,我們還擴充了 Blocklet Meta Spec

  • 開發者可以透過 charging 欄位自訂 Blocklet 的定價策略
  • Blocklet 發布與分發工作流程透過 signatures 欄位確保資訊未遭竄改

One More Thing

我們最近正在積極招募 Node.js 全端工程師,如果你對我們正在做的事情感興趣,歡迎將履歷寄到 shijun@arcblock.io

本頁涉及

產品

  • Blocklet Server superseded

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