ABT Node v1.2.0 正式发布

作者: 王仕军(ArcBlock 高级工程师)

在经历 239 个 Commit,17 个小版本迭代之后,功能更强大、性能更稳定、更安全可靠、用户体验更好的 ABT Node v1.2.0 正式发布了,欢迎大家升级试用!

如果你之前启动过 ABT Node,可以直接在 ABT Node 的配置界面检查升级即可体验最新版。

可能你会好奇,ABT Node v1.2.0 都包含了哪些特性?哪些改进?下面我们列出主要的变化和改进。

Breaking Changes

ABT Node v1.2.0 里面包含了下面的 Breaking Change

  • @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 的形式提供自己 Host 的所有 Blocklet 信息,方便 ABT Node 检索和安装

接下来我们会继续迭代 Blocklet Registry,使其支持经济模型里面的利益分配、支持 Blocklet Registry 之间的 Push 和 Pull。

团队管理模块

新版的 ABT Node 包含了更加完善且通用的团队管理功能:

  • 邀请其他用户加入,只需要创建邀请链接,受邀者通过 ABT Wallet 即可加入
  • 更加细粒度的成员管理功能,比如禁用、启用、更改角色,登录时间记录
  • Blocklet 享有和 ABT Node 完全相同但数据隔离的团队管理,无需自行开发

team users

权限管理模块

在团队管理的基础上我们还增加了基于角色的权限控制,来提高 ABT Node 的安全性,这非常适合于需要多人来管理和运维一个 ABT Node 的情形。

当然,这个功能对于 Blocklet 来说也是通用的,即运行在 ABT Node 里面的 Blocklet 天然就有了自己的权限控制模块。

ABT Node 的默认权限和安全策略如下图:

team rolesteam permissions

Blocklet 服务

在团队管理和权限管理的基础上,我们开发了第一个 Blocklet 服务:用户认证和鉴权服务(Auth Service),省去开发 Blocklet 过程中需要考虑的用户登录、授权等重复性的工作,这个功能包含两部分:

  • 用户认证:通过 DID 登录来验证用户身份,不同 Blocklet 的用户数据完全隔离,并且能通过团队功能来管理 Blocklet 自己的用户
  • 用户鉴权:通过权限控制模块来管理用户权限,验证用户的权限,实现比较安全的访问控制

当然,对所有的新功能我们都会吃自己的狗粮,目前官方 Blocklet 中需要登录和鉴权的已经全部切换到为 ABT Node 提供的服务。

启用了 Auth 服务的 Blocklet 安装后会是下面的样子:

blocklet auth

如果你想亲自体验启用了 Auth 服务的 Blocklet,可以安装 Auth Demo 或者 Kitchen Sink,如果你想在自己的 Blocklet 中使用 Auth 服务,敬请期待即将发布的文档。

接下来我们会设计并提供更多的 Blocklet 服务(比如基于 Crypto 的支付)来简化 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 已经演化成包括 11W+ 行代码、20+ 子模块的项目,sloc 的统计结果如下:

sloc

为了确保 ABT Node 的可靠和稳定,我们在 CI 流程里面增加了代码覆盖率统计,要求每个 PR 不管新增还是重构不能降低整体的代码覆盖率,在两个月的时间内,整个项目的代码覆盖率从 25.2% 提升到 61.1%,且还在持续改进。

下面是 CodeCov 的最近 90 天的覆盖率变化趋势:

coverage

此外,为了提高工程师的效率,我们的 CI 流程全面从 Travis 切换到了 Github Actions,因为后者有更快的执行速度。

欢迎试用反馈

以上,欢迎试用新版,并到这里给我们提建议!

2赞