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搭建的链可以就此蹭热度。

平行链和Substrate框架的关系

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


参考文献:

1.Jack Fransham ,"what is substrate"

2.Fabian Schulz, "A brief summary of everything Substrate and Polkadot"

3.金晓,《Substrate 设计总览》

编辑于 2019-07-11