http://www.yzthzm.com

ABT Node:为去中心应用开发带来的范式迁移

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

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

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

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

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

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

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

•DID 技术[3]
•ABT Wallet[4]
•ArcBlock Blockchain Framework[5]

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

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

ABT Node:为去中心应用开发带来的范式迁移

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

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

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

ABT Node:为去中心应用开发带来的范式迁移

我们在 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,我们称之为“区块链管理器”。

ABT Node:为去中心应用开发带来的范式迁移

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。