首页 资讯 正文

15 分钟速览 Polkadot 的 Substrate 如何为加密茂林提供土壤

链闻 ChainNews 2019年07月11日 08:02

原文标题:《Substrate 大法,15 分钟速成区块链大神》
作者:蒋新,分布式资本投资经理

随着 Polkadot 主网临近,Substrate 这个词作为没几个人懂什么意思但是不提显得不太专业的代表,也变得越来越热。

然而,Substrate 框架的开发公司 Parity 在 2018 年 9 月发表的博文《什么是 Substrate》中,开篇非常有预见性地说道,「我认为要理解 Substrate 最重要是要知道它根本不是 Polkadot 的一部分 (I think the most important part of understanding Parity Substrate is that it is not part of Polkadot at all)」。

那为什么人们在提及 Polkadot 时总会提到 Substrate 呢?

软件的开发框架

想必知道「Substrate」的同学下一句会脱口而出两个字:「框架」,那么什么是框架(Framework)?

维基百科是这样说的:

在编程领域,软件框架是指一种抽象形式,它提供了一个具有通用功能的软件,这些功能可以由使用者编写代码来有选择的进行更改,从而提供服务于特定应用的软件。软件框架提供了一种标准的方式来构建并部署应用。

软件框架是一种通用的、可复用的软件环境,它提供特定的功能,作为一个更大的软件平台的一部分,用以促进软件应用、产品和解决方案的开发工作。软件框架可能会包含支撑程序、编译器、代码、库、工具集以及 API,它把所有这些部件汇集在一起,以支持项目或系统的开发。

看不明白没关系,你只需要对「通用」、「可复用」这几个词留下印象。

Netbeans 的创始人 Jeroslav 在《软件框架设计的艺术》中强调:软件开发并不需要了解每一个 API 背后的实现原理,只要知道它是怎么用的就可以了。这是大型软件协作开发的理论基础。

做个不那么恰当的比喻,如果我们把构建大型软件的工作比作制造汽车,那么最后整车厂完成的是对汽车各个零部件的设计、组装和再加工,而不是自己造轮子、沙发、座椅、和仪表板。或者换个例子来说,玩乐高玩具的小朋友可以用乐高块搭出埃菲尔铁塔和美国队长,但小朋友们不需要自己把塑料加工成乐高块。

如果还想再了解深入一点,《代码大全》的作者金戈的观点可以作为补充:
1、框架本身一般不完整到可以解决特定问题;
2、框架天生就是为扩展而设计的;
3、框架里面可以为后续扩展的组件提供很多辅助性、支撑性的方便易用的实用工具(utilities),也就是说框架时常配套了一些帮助解决某类问题的库(libraries)或工具(tools)。

Substrate 是个什么样的框架

根据上面对框架的理解,想必你应该猜到,Substrate 也是将通用的部分提取出来,而它所构建的框架是 Parity 认为搭建一个区块链所必须具备的通用模块。

这些模块主要包括:

1. 区块链系统基础架构:
  • 共识机制(无论是虚拟货币还是分布式系统都需要)

  • 网络通信(P2P 和广播系统)

  • 存储

  • 交易池(Parity 认为交易数据本质上是某种形式的状态机,为了通用性,substrate 存储的是其成为外部参数(extrinsics)的二进制串(binary blobs))

  • RPC (远程过程调用,主要负责区块链与外部交互)

2. 特定的链的功能

比特币的 UTXO 机制、以太坊的智能合约等等

在 Substrate 的框架体系中,林嘉文(Gavin Wood)博士将第一个区块链技术架构称为 Substrate Core,也就是区块链的基础架构,即通用功能模块;而将第二个特定功能模块称为 Runtime,开发者在构建区块链的时候,只需要关注于 Runtime 自己区块链的核心功能,而无需将注意力放在底层的 Core 模块上。

在 2018 年柏林 Web 3 的峰会场,利用 Substrate 高度通用化的便捷性,林嘉文博士也在柏林秀了一把骚操作,从拆封一台全新的 Macbook 电脑开始,15 分钟写出来一个新的区块链,包括部署、升级平行链,还包括了升级 UI。用现场社区人员的话来形容:「柏林 Funkhaus Nalepastraße 广播大楼,一栋宏伟且有年代感的包豪斯建筑里,林嘉文博士彻底 High 翻了全场,坐在现场前排的观众,甚至激动地有些喘不上气来。」

事实上,15 分钟写出平行链依靠的不是博士个人的编码超能力,而是 Substrate 框架将区块链的必备底层已经设置好,普通人利用 Substrate 一样可以 15 分钟构造自己的区块链。(笔者实际操作了一下,由于国内互联网的特殊设置,花费在下载软件依赖环境上的时间就超过了 1 个小时。实际构建链的时间还不到 10 分钟)

Substrate 厉害在什么地方

对区块链有基础了解的人知道,区块链要进行系统升级非常复杂。

普通的网页只需要后台部署新版本的代码即可以实现升级,移动端 app 可以通过提醒用户在 app store 下载新版本实现升级。而区块链要更新版本,需要链上所有节点都同意,统一进行新版本的部署,实际过程往往是构建了一条新的链,也就是俗称硬分叉,认同新版本的链会迁移到新版本运行,而旧的链依然存在。可以说,升级一次就是对社区的一次分裂,严重影响区块链的生态价值,典型的例子比如 BTC 和 BCH/BSV; ETH 和 ETC 等等。

Substrate 的厉害之处就在于:不用硬分叉(hard fork)就可以实现区块链的系统升级。

实现的机制讲起来稍显硬核,用人话来简单解释,就是 Substrate 的 Runtime 在执行的时候,节点的本地会产生一个版本(native),链上会产生一个版本(wasm),如果两者不一致,则可以按照链上的新版本执行,本地的老版本则会被舍弃。(为了便于理解,忽略了很多技术细节)

波卡是 Substrate 的波卡,但 Substrate 不是波卡的 Substrate

上面这句话有些绕,但基本可以说明两者之间的关系。

总结一下就是:波卡基于 Substrate 框架开发,而使用 Substrate 框架开发的链将来也可以直接接入 Polkadot 的生态作为一个平行链。

这也就可以解释为什么 Polkadot 主网还没上线,就有那么多使用 Substrate 搭建的链可以就此蹭热度。

15 分钟速览 Polkadot 的 Substrate 如何为加密茂林提供土壤

平行链和 Substrate 框架的关系

Substrate 在韦伯大字典中的释义为:the base on which an organism lives。在区块链这颗小幼苗生长成加密世界的繁茂森林过程中,希望 Substrate 是那个不可或缺的基质。