Substrate 是从Polkadot 孵化出来的项目。它是一个用来搭建区块链的通用框架,具有以下特点:

  1. 可扩展。
  2. 模块化。
  3. 开源。

Substrate的框架与组件

框架

其中:

  1. P2P: libp2p网络协议,Substrate基于该协议实现了一个不带任何假设的,点对点对等网络,所以它不会成为你基于Substrate扩展的障碍:

  2. NativeRuntime:节点发现、交易池、区块和交易gossip,共识,返回RPC call。

  3. Storage存储:RocksDB。

  4. RPC(远程过程调用),支持:

  • HTTP
  • WebSocket

核心组件

数据库

  1. 采用简单的键值对方式的存储。
  2. 实现了一个改进版Patricia Merkle tree (trie),以支持轻量级客户端对Substrate链的访问。
  3. Substrate没有对该数据库中存储数据的内容与结构,作出任何假设,所以它也不会成为你基于Substrate实现某些扩展的障碍。

网络连接

它的扩展性在框架部分已讲了。

共识

  1. Substrate将区块的生成过程(BABE)和区块的终结过程(GRANDPA)区分开来。

  2. Substrate只会假定一笔交易所具有的权重,以及一组用于创建从属关系图表的先决条件标签,其余地全权交给用户定制交易;Substrate将根据这些权重和标签,自动为接收到的交易理顺从属关系,确保交易的顺序:

  3. Substrate内建了多种共识引擎:

  • 工作量证明(PoW);
  • Aura(Authority Round);
  • Polkadot共识。
  1. 你不仅在基于Substrate构建自己的区块链时,可以配置你想要的共识机制,还可以在区块链运行中,修改或更新共识引擎。

Substrate运行时

Substrate是一个运行时环境,用来维护Substrate区块链上的状态转换。

SRML

Substrate运行时采用了组件模块化的设计思想:

  1. 内建的模块;
  2. 我们也可以定制模块

这些模块的集合,将构成Substrate运行时模块库SRML(Substrate Runtime Module Library )。我们先看运行时框架:

其中:

  1. 系统模块(System Module):提供底层基本的API和工具集,定义了Runtime的核心类型、外部事件等等。
  2. 运行时模块(Runtime Module):多个托盘(Pallets)小模块。
  3. 执行模块(Executive Module):充当运行时的业务流程层,将传入的外部调用分派给运行时中的各个模块负责运行时执行。
  4. 运行时(Runtime):管理托盘,接受api调用。
  5. 支持宏(Support Macros):
  • 帮助开发自定义模块;
  • 允许开发人员声明自定义存储、具有公共 API 的模块和事件。

再具体来看Substrate的SRML:

其中内建的模块有:

  1. 余额模块(Balances)。
  2. 民主模块(Democracy)。
  3. 质押模块(Staking)。
  4. 合约模块(Contract)等。

这种模块化的设计,可以让我们可以很容易地组拼出,自己想要的区块链网络。

无分叉的在线更新

Substrate有个设计初衷:支持区块链在线更新,以满足区块链的多样化需求。

但SRML模块的更新缺省是会导致区块共识难以达成:一般分布式网络,节点的更新不会一致,因此节点之间存在着版本的差异,也就存在着处理逻辑的不一样,进而导致下图的分叉:

Substrate采用了一个巧妙的办法,来解决这个问题:让Substrate的运行代码,成为区块链上共享账本存储的数据,因此任何一个节点运行的都是最新版本的逻辑。

其实,包含了共识部分讲的共识引擎升级或更新,正是基于这个机制:从SRML中选取合适的共识引擎,提交Substrate区块链,新的共识引擎上链确认后,将负责之后区块的共识验证。

Substrate之旅3:Substrate是什么相关推荐

  1. Substrate之旅1:Polkadot是什么

    什么是Polkadot? 它是区块链领域的跨链解决方案. 它立足于解决当下区块链种类繁多,且相互基本隔绝的问题.为此: 构建协议,以便区块链之间可以相互发送交易和消息,也就是实现区块链的互操作性: 同 ...

  2. Substrate之旅4:基于Substrate私有链的搭建

    参考:https://docs.substrate.io/tutorials/v3/private-network/ 实现目标 这里我们学习: 如何基于Substrate来构成一个两节点的链网络. 如 ...

  3. 【Android 逆向】substrate 框架 ( substrate 简介 | substrate 相关文档资料 )

    文章目录 一.substrate 简介 二.substrate 相关文档资料 一.substrate 简介 substrate 官网 : http://www.cydiasubstrate.com s ...

  4. 中如何计算工龄_在Substrate中如何计算交易权重

    建议在阅读本文之前,先掌握关于Substrate中交易费用设计的基本概念.如果还没有了解的童鞋,请移步: Kaichao:Substrate 区块链应用的交易费用设计​zhuanlan.zhihu.c ...

  5. substrate介绍

    Blockchain Development for Innovators 官网 https://substrate.dev/ 的介绍: Substrate is a modular framewor ...

  6. 开发技术指南 | 最全 Substrate 与 Polkadot 技术文档、教程、课程

    Substrate 让您可以通过制作及整合不同的模块来创建定制化的区块链.它附带了构建区块链所需的一切.使用Substrate 模块能轻松创建所需的内容,或制作自己的自定义逻辑,让构建区块链比以往更快 ...

  7. Substrate区块链框架学习小组

    Substrate框架是什么 Substrate是一个由Rust语言写的区块链开发框架,是目前业界最强大,特性最丰富的区块链框架之一.使用Substrate,你可以很方便地搭建出一条链(solo链). ...

  8. Substrate 基础 -- 教程(Tutorials)

    官网 github DOC 面向未来的区块链框架 Substrate 使开发人员能够快速.轻松地构建适合任何用例的未来 证明区块链(future proof blockchains). Substra ...

  9. 认识substrate

    了解substrate 前言 从互联网发展看区块链未来--跨链 跨链是未来 公链和联盟链 可交互的联盟链 polkadot组件 substrate介绍 区块链的构造组件 substrate开发的特性 ...

  10. Cydia Tweak--Cydia Substrate

    http://www.jianshu.com/p/8982e9670fc6 Cydia Substrate.MobileHooker MSHookMessageEx MSHookFunction Mo ...

最新文章

  1. Symfony笔记之--控制器的快捷方法
  2. Hibernate配置文件,省的到处找了
  3. 磁盘里竟然还有这个东西!多亏这个1.5M大小的神器工具发现了它
  4. 编写程序处理一个 string 类型的 list 容器。在该容器9.27:中寻找一个特殊值,如果找到,则将它删除掉。用 deque容器重写上述程序。
  5. 使用引用的方式交换数据的数值
  6. apache 编译报错:undefined reference to `apr_array_clear'
  7. 十九、Math和Random类
  8. 【通信】基于matlab GUI循环码编译码器【含Matlab源码 692期】
  9. 全角字符unicode码对应表
  10. win7计算机怎么录屏,win7电脑怎么录屏?这个实用工具给你答案!
  11. 图书馆图书借阅登记微信小程序开发制作管理软件系统
  12. 汉字编码,GB2312、GB 13000、GBK、GB18030 介绍
  13. 现代软件工程 习而学的软件工程教育
  14. 百度竞价推广地域是如何选择的?
  15. 添加镜头光晕的正确方法
  16. 百度直播消息系统的实践和演进
  17. 搜索引擎技术的概要以及相关知识
  18. Codeforces Round #401 (Div. 2) D Cloud of Hashtags —— 串
  19. 3. JS编程之移除数组中的元素
  20. 深圳市人力资源和社会保障局关于发放脱贫人口就业有关补贴的通知

热门文章

  1. FastDFS——Bug篇——上传txt文档乱码
  2. 八位超前进位加法器八位行波进位加法器
  3. 15串行加法器和并行加法器原理
  4. python数据清洗代码_微博数据清洗(Python版)
  5. 键盘测试软件能自动,键盘测试软件哪个好用?2020键盘测试软件推荐
  6. 元旦节前python网络编程趣味小游戏
  7. 泰坦尼克号-决策树模型
  8. Head first java(第一章进入Java的世界)
  9. 手机测试SD卡读写速度的软件,手机存储SD卡读写测试:Cross Platfrom Disk Test
  10. VARCHART XGantt系列教程:甘特图调度程序探究