作者: 王仕军(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:好比苹果的 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 内置的两个应用市场为:

添加、编辑、切换应用市场如下图所示:

multiple markpetplace

组合型 Blocklet 支持

有了 Blocklet Component 支持,开发者可以用类似于乐高积木的方式把可重用的组件组装成应用,然后作为整体发布出来为用户提供服务,这种灵活的组合方式让下面这些事情成为可能:

  • 有些 Blocklet 就可以做的非常小巧专精,在绝大多数场合都被内嵌在其他 Blocklet 里被使用,比如一个基于 Crypto 的打赏 Blocklet,这在传统的软件开发领域就好比是提供 Library
  • 有些用户非常善于把其他 Blocklet 组合在一起做成整体解决方案,比如打包了不同组件的去中心化社交应用、DAO 应用等
  • 整个流程中的所有参与方,Blocklet 作者、解决方案组装和提供者、应用市场都会在 Blocklet Component 被购买时得到分成

在 Dev 应用市场中,我们提供了 Component Demo Blocklet 方便大家安装测试:

component demo

安装 Component Demo 之后,在 Blocklet 详情页可以看到内含的组件:

component children

Component Demo 配置页面还可以分别对所有组件进行配置:

component config

启动 Component Demo 之后,可以看到它里面其实内嵌了两个应用:

component demo ui

除了 Component Demo 之外,有没有其他 Production Ready 的 Blocklet 是用这种组合类的呢?有的,官方应用市场中下列 Blocklet 就是组合型的(这两个 Blocklet 都是组合了链的 API 部分和标准化的 Block Explorer,未来链还会组合更多其他的内容,比如资产链文档):

component blocklets

付费型 Blocklet 支持

如果开发者能提供为用户创造价值、提供便利的 Blocklet,那么他凭此获得通证收入也是合情合理。

ABT Node 1.3.0 中支持的 Paid Blocklet 就是为这个场景准备的,用户如果需要购买、安装某个需付费的 Blocklet,直接在 ABT Node 里面通过 ABT Wallet 即可完成,整个交易也是通过资产链实时结算。

为了激励生态参与者,开发者可以自行决定 Blocklet 价格和分成策略,而应用市场根据自己的运营成本来决定是否把某个 Blocklet 上架。而最终用户的购买也是以获得 NFT 的形式来完成,同样的 NFT 可以在很多场合下作为购买凭证使用。

如果你想试用 Paid Blocklet,可以如下图在 Dev 应用市场中找到 Payment Demo Blocklet:

paid blocklet

然后在完成购买,并安装到你的节点里面(目前的购买使用的还是测试币,你可以到这里来领取)。

purchase 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。