在上一节,我们快速体验一把substrate,使用subtrate搭建了一条链。在本节,我们则对substrate做一个体的介绍,有利于我们后续学substrate官方教程的其它例子。
substrate采用模块化的方法进行,它定义了一组丰富的原语,给人员提供了强的、熟悉的编程方法。
1 使用方式介绍
使用substrate的方式主要有以下几种:
使用subtrate node
者可以运行已经设计好的substrate节点,并配置genesis区块,在此方式下只需要提供一个json文件就可以启动自己的区块链。其实我们上一节的substrate初体验,也可以看成是使用此种方式的一个例子。
使用substrate frame
frame其实是一组模块(pallet)和支持库。使用substrate frame可以轻松的创建自己的自定义运行时,因为frame是用来构建底层节点的。使用frame还可以配置数据类型,也可以从模块库中选择甚至是添加自己定义的模块。
使用substrate core
使用substrate code运行者完全从头开始设计运行时(runtime,问题:什么是runtime?),当然此种方式也是使用substrate自由度最的方式。
几种方式的关系可以用图描述如下:
2 substrate架构
substrate客户端是基于substrate实现的区块链的节点客户端(可以理解为全节点),它主要由以下几个组件组成(以下也就是告诉我们实现一条链由哪几分组成):
存储
用来维持区块链系统所呈现的状态演变。substrate提供了的存储方式是一种简单有效的key-value对存储机制的方式。
Runtime
这里就可以回答上面的问题,什么是runtime?runtime定义了区块的处理方式,主要是状态转换的逻辑。在substrate中,runtime code被编译成wasm作为区块链存储状态的一分。
p2p网络
允许客户端和其它网络参与者进行通信。
共识
提供了一种逻辑,能使网络参与者就区块链的状态达成一致。substrate支持提供自定义的共识引擎。
RPC
远程过程调用。
telemetry(遥测)
通过嵌入式Prometheus服务器的方式对外展示(我理解应该是类似于区块链浏览器一样的东西,或者是提供信息给区块链浏览器展示)。
3 参考资料
https://substrate.dev/docs/en/
https://www.readblocks.com/archives/71136
免责声明:文中图片均来源于网络,如有版权问题请联系我们进行删除!
标签: