在上一节,我们快速体验了一把substrate,并使用subtrate搭建了一条链。在本节,我们将对substrate做一个大体的介绍,以便于后续学习substrate官方教程的其他例子。

substrate采用模块化的方法进行开发,它定义了一组丰富的原语,为开发人员提供了强大的、熟悉的编程方法。使用substrate的方式主要有以下几种:

1. 使用subtrate node:开发者可以运行已经设计好的substrate节点,并配置genesis区块。在此方式下,只需要提供一个json文件就可以启动自己的区块链。实际上,我们上一节的substrate初体验也可以看成是使用此种方式的一个例子。

2. 使用substrate frame:frame其实是一组模块(pallet)和支持库。使用substrate frame可以轻松地创建自己的自定义运行时。因为frame是用来构建底层节点的。使用frame还可以配置数据类型,也可以从模块库中选择甚至是添加自己定义的模块。

3. 使用substrate core:使用substrate code运行开发者完全从头开始设计运行时。当然,这种方式也是使用substrate自由度最大的方式。

substrate客户端主要由以下几个组件组成:

1. 存储:用来维持区块链系统所呈现的状态演变。substrate提供了一种简单有效的key-value对存储机制的方式。

2. Runtime:这里就回答上面的问题——什么是runtime?runtime定义了区块处理方式,主要是状态转换逻辑。在substrate中,runtime code被编译成wasm作为区块链存储状态的一部分。

3. p2p网络:允许客户端和其他网络参与者进行通信。

4. 共识:提供了一种逻辑,能使网络参与者就区块链状态达成一致。substrate支持提供自定义的共识引擎。

5. RPC:远程过程调用。

6. telemetry(遥测):通过嵌入式Prometheus服务器的方式对外展示(我理解应该是类似于区块链浏览器一样的东西或者提供信息给区块链浏览器展示)。