作者: 冒志鸿(ArcBlock 首席执行官、首席架构师)

2020 年 5 月 20 日,ArcBlock 区块基石发布 ABT Node 的“技术预览版”(Technical Preview)。

去年 5 月 20 日,我们成功发布了全球第一个去中心身份的数字钱包:ABT Wallet。今天在同一个日子,我们发布了 ABT Node,虽然是技术预览版,但是由于 ABT Node 是建立在 ArcBlock 过去发布的 ABT Blockchain Node(链节点)、ArcBlock Blockchain Framework(过去命名为 Forge Framework)和 Blocklet 等基础之上,因此技术预览版已经具备相当的成熟度,对开发者而言,这是一个完全可以在其上正常开发,功能全面、API 稳定的软件平台。技术预览版目前还不建议用于生产环境——虽然我们自己的平台正已经开始在这个预览版节点上开始部署;此外,计费机制尚未开启——目前所有功能都免费使用,也不能通过这个版本来提供 Blocklet 的收费和智能合约的分账。

不忘初心,按照既定路线步步前进

ABT Node 的发布,意味着我们在 2017 年就开始设计的 ArcBlock 体系架构的拼图,在这几年的不懈耕耘下,首次以完整的面貌为大家呈现出来。

不同于市场上各种喧嚣与骚动, ArcBlock 从 2017 年创立起,我们就通过技术白皮书完完整整地展现了一幅我们心目中的区块链和去中心应用的蓝图。如今,从当下再回顾成文于 3 年前的 ArcBlock 技术白皮书,会发现我们设计的前瞻性以及对市场判断的准确性。

ArcBlock 平台开发几年来,一方面不断验证了我们愿景与最初规划的正确性;另一方面,我们也不断进行局部调整和提升,将业界对我们有启发有价值的新东西吸纳进来,弥补项目初期对行业认知以及产品规划的不足。由于区块链技术的创新性、软件工程的复杂性,我们这几年走的并不是一条直线上升的路线,但却是技术探索试错、产品快速迭代、自信心不断提升的“螺旋曲折上升”的精彩历程。

“开发链访问协议(OCAP)”、“云节点”、“Blocklet”,“去中心化订阅网关”是 ArcBlock 白皮书中最重要、最令人瞩目的概念和设计,其实现载体正是“ABT Node”。如果说过去我们次序发布的各个工具产品功能是一个个的点,那么今天发布的 ABT Node 就是把这些点连接起来成为线和面。我们推荐关注 ArcBlock 技术发展的朋友对照 2017 版白皮书来阅读本文,体会我们的技术进展和实施步骤。细心的朋友可以发现,与技术白皮书最初规划相比,我们已经添加并实现了以下重要部件:

什么是 ABT Node?和过去各种区块链节点有什么不同?

2020 年,区块链的发展进入了第二个十年。ArcBlock 技术白皮书总结了区块链技术在过去 11 年从 1.0、2.0 到 3.0 的不断进步的过程。一些人误以为我们只是打出 3.0 一个看似空洞的市场推广口号,然而,我们却是一如既往地认真 —— 认真地去思考、认真地去规划、认真地去执行。ABT Node 和业界常见的区块链节点软件有什么不同? 其实这张我们创作却广为流传的图片已经画龙点睛。

blockchain3

对于以承载应用为主的区块链 3.0,在图中我们总结了它一些应该具备的基本特点:

  • 云节点 (和云计算结合)
  • 开放链访问 (也就是可以支持多链的架构)
  • Blocklet (我们定义的、运行在链节点上的、一直无服务器应用程序协议)
  • 扩展进化能力(区块链节点的处理能力可以不断演进)

今天发布的 ABT Node 正是上述这些特点的真正实现。

snapshot blocklet

我们在 2019 年 9 月上海的“上海之巅 创见未来”活动上首次公开发布了 Blocklet 的技术预览版,并且使用 Blocklet 框架构建我们自己的应用,在 ABT Node 发布之前,Blocklet 还只是一种应用开发的框架,其本身的部署和运行还需要单独的服务器,和传统的应用服务还看不到足够的差异,而当 ABT Node 发布之后,Blocklet 的优势将全面展现出来。

ABT Node 和容器(Container)、虚拟机(Virtual Machine)有何区别和联系?

ABT Node 和 Blocklet 是一种无服务器(Serverless)的微服务(Micro-service)架构, 我们在白皮书中就给出了这样明确的定义。ABT Node 上能运行应用的是 Blocklet, Blocklet 是我们设计的一种应用组件协议,可以使用各种语言来实现,也可以混合编排不同语言和框架实现的 Blocklet。例如我们 ABT Node 本身采用 Node.js 实现,大部分我们提供的 Blocklet 也采用 Node.js,而我们的区块链框架采用了 Erlang/Elixir 来实现。

ABT Node 看起来有些类似目前流行的容器(Container)技术,但是 ABT Node 的设计和目前的常见容器技术(如 Docker 等)有较大的区别。简单而言,容器技术更加注重通用性,例如 Docker 能容纳很多并没有考虑在容器中运行的应用;而 Blocklet 有自己严格的协议,每个 Blocklet 都是为能够在 ABT Node 中运行而设计的。值得一提的是,一些没有为 ABT Node 而设计的应用也可以很方便地扩展为 Blocklet。

ABT Node 本身和容器、虚拟机之间没有冲突,是相辅相成的关系。ABT Node 可以运行在虚拟机上,也可以运行在 Docker 容器中,我们把它设计得非常适合 Docker,或者 Kubernetes 编排的服务。例如在 AWS 上,ABT Node 可以非常容易地作为一个 EC2 实例运行在 EC2 的虚拟机上, 也可以作为一个 Docker 容器运行在 ECS 或 EKS 上,也能很方便地使用 AWS Fargate 来部署——完全由用户根据自己的需求来决定选择什么样的运行环境。 ABT Node 本身也和云计算平台无关(Cloud agnostic),她可以运行在各种云计算服务上,也可以运行在用户自己提供的服务器或设备上。 ABT Node 的设计也适应物联网的应用场景,开发者可以在树莓派(Raspberry Pi)这样的嵌入式设备上部署,为区块链、Dapps 的应用展开了一个广阔的空间。

ArcBlock 的区块链和 ABT Node 是什么关系? 对现有的区块链应用有什么样的影响?

ArcBlock 是一个面向去中心化应用(Dapps)的平台,区块链的支持只是我们平台的一个重要部分而不是全部, ABT Node 可以成为区块链的节点,却不一定只是用作区块链的节点。ABT Node 让基于区块链的 Dapps 架构变得非常简单而清晰,移除了 Dapps 对传统 Web 组件的依赖,改变了现有区块链应用的软件开发范式。

我们在去年 3 月发布了 ArcBlock 区块链框架,让一键发链、织链成网变成可能,构成这些区块链的基本部件是链节点。在去年 ABT Node 还没有推出的时候, 我们发布了一个“链节点”的软件和构建链的工具 Forge CLI(Forge 框架和 CLI 工具将在 ABT Node 正式发布后完全“退休”迁移到 ABT Node 上来,并且我们向前保持着 100%的兼容性)。现在,这些“链节点”的软件和构建链的工具已经是一个 ABT Node 上的 Blocklet,我们称之为“区块链管理器”。

blockchain manager

通过区块链管理器,开发者能够更为方便地构建、管理、查看区块链,这比去年推出的 ForgeCLI 要更为方便易用。采用 ABT Node 来创建、部署一个区块链的门槛进一步大幅度下降。当你使用 ABT Node 来创建管理区块链,你可能会惊讶地发现,这如此简单、容易和快捷,我们的目标就是如此,我们想让你把精力完全专注于你的应用开发或者业务的运营,这些基础的事情我们自动化帮你完成。

ABT Node 是否是区块链节点,取决于这个节点上是否通过区块链管理器将其配置为区块链节点。值得一提的是,你可以在 ABT Node 上运行多个区块链,只要节点的硬件环境能够允许多条链的运行,完全可以在同一个 ABT Node 上多链同时运行。事实上,在开发和测试环境下,我们鼓励开发者在自己的开发节点上运行多条链,这对测试、跨链开发等都非常有帮助。ABT Node 既可以配置为区块链的全节点,也可以只作为轻节点,或者是一条链的全节点,其他链的轻节点。

ABT Node 和 DID 技术有什么样的联系?

ArcBlock 认为 DID 技术是去中心化应用的重要基础,对 DID 的支撑贯穿整个 ArcBlock 产品体系之中。ArcBlock 一直在推进的 DID 技术协议及实现是 ABT Node 的基础,并且始终贯穿在 ABT Node 设计和实现之中。ABT Node 本身的用户管理、授权、认证完全基于 DID 和 Verifiable Credentials(可验证证书,VC)技术,和 ABT Wallet 有机地结合在一起。

did wallet

除了本身使用 DID 技术,ABT Node 本身还对 DID 协议起到支撑和服务的作用,每个 ABT Node 上运行的应用都可能是一个 DID 的服务提供端点( Service Endpoint), 每个 ABT Node 都会为自己的服务提供 DID Resolver 的实例,使得 DID 能在应用中的实现、部署、互联互通前所未有的方便。由于 ArcBlock 的区块链本身也使用 DID 技术,因此毫无疑问运行在 ABT Node 里的区块链通过 DID 可以完美地集成。而 Blocklet 协议本身也和 DID 及 VC 密切相关。

ABT Node 对 Dapps 开发带来了哪些全新意义?

ABT Node 为去中心应用开发带来的是软件开发的范式迁移,具有着划时代的意义。我会另撰专文,带大家回顾软件开发范式在过去几十年里如何变迁,从而更清晰地看到其意义所在。

ABT Node 是一个 Blocklet 的运行环境,广义来说是用户数据的执行逻辑处理器,狭义的理解可以认为是一个用户友好、易操作的微服务操作系统——用户可以很容易地在节点装载、卸载 Blocklet。这些 Blocklet 对用户来说,如同乐高积木,只要做基本选择即可。一旦这些应用被用户安装就属于用户,而可以不需要依赖于其他服务,成为完全去中心化的应用。Blocklet 不但可以和区块链互操作,而且可以和区块链以外的服务,如数据库、API 等互操作,并且 Blocklet 协议不限制其实现的语言、框架和用户界面,具有非常强的灵活性和非常广泛的使用空间。

blocklet

上图是我们在技术白皮书里列举的 Blocklet 的几种典型应用场景。ABT Node 所带来的软件开发范式变迁,使得大部分软件变得非常容易规模化(Scale),将更容易开发、更容易部署,开发运营者不再需要为多租方式的服务而付出高昂的运营成本,而用户将能全面掌控自己的数据,保证自己的隐私和数据安全。 而这些将为整个应用软件市场,乃至互联网应用服务带来深远的意义。