什么是Substrate? Substrate是Parity创建的下一代区块链框架,可以在短时间内建立完整、可配置的区块链。 Substrate框架前身是Gavin Wood及其Parity团队开发的Polkadot(波卡)区块链项目的PoC-2版本,后来他们发现可以将Polkadot项目的一些通用逻辑提取出来,开发成更底层的区块链框架,就是Substrate。新的Polkadot项目基于Substrate框架开发。 Substrate具有以下特性 开发的区块链可无分叉升级: runtime rust代码->(rustc)->runtime wasm二进制文件->(链上治理模块)->链上状态;高效率:使用rust语言开发,rust语言的安全性非常适合区块链开发;内置PoS共识机制;创新性:包括模块化接口、插件式共识、WASM解释器、第三方库、定制模块、智能合约等。波卡生态圈 波卡生态圈包含中继链、平行链、转接桥,它们都是基于Substrate开发的。 中继链(relay chain):负责跨链交流,即达成和平行链的状态共识;平行链(parachain):负责业务逻辑,是独立的区块链,拥有独立的链上数据和交易处理能力,同时利用中继链保证安全;转接桥(bridges):是平行链的一种,可以让其他链如比特币、以太坊加入波卡生态圈,让波卡生态圈能够与其他原来不在波卡生态圈的独立链进行交流;转接桥也可以用来连接多个中继链,目前中继链能接的平行链有限,约100条,插槽不够时可用启用第二条中继链。中继链、平行链、转接桥以及其他区块链之间的关系如下图所示(可以把这张图想象成一组无限延伸的区块链的横切面): 使用Substrate框架开发的区块链,技术上都可以部署到波卡生态圈中。 波卡生态圈中的平行链还包括平行线程(parathread),平行线程和平行链一样有完全的安全性,及和波卡链连接的能力。区别在于平行链会占用插槽,平行链可以降级到平行线程以把押金退还,平行线程可以升级到平行链以获得最大吞吐量。 Polkadot Polkadot(波卡链)就是波卡生态圈一个中继链,波卡链支持私有链、公链、预言机等组件之间的交流。 Substrate开发需要的前置知识 计算机科学和基本的区块链概念:header、block、client、hash、transaction、signature等;Rust编程语言:Rust程序设计语言;Substrate客户端架构 Substrate客户端(Substrate client)是一个应用程序,它运行一个基于Substrate的区块链节点,它由包括但不限于以下组件组成: 存储(Storage):key-value存储机制,数据库使用RocksDB;运行时逻辑(Runtime logic):运行时代码被编译为Wasm,无分叉区块链升级;点对点网络(Peer-to-peer network):使用libp2p网络栈协议;共识引擎(Consensus engines):插件式可自定义共识协议,并内置PoS共识;RPC:提供HTTP和WebSocket RPC服务;监控告警系统(Telemetry):遥测指标通过嵌入式Prometheus服务器公开;Substrate部署 Substrate可以实现多种可行的部署方式: Polkadot生态圈的平行链或平行线程;联盟链;私有链;独立应用链:区别于智能合约,而是单独为一个应用创建一条区块链,Substrate应用链可高度定制化,包括链的逻辑和安全、链状态、交易费用设计、共识机制设计、通证模型、链下工作等;Substrate开发环境搭建 安装依赖环境,Ubuntu或Mac OS系统使用如下命令: curl https://getsubstrate.io -sSf | bash -s -- --fast 这里使用 --fast 参数跳过 substrate 和 subkey 的安装过程。 getsubstrate.io脚本解析 可以在getsubstrate.io查看安装依赖库的Shell脚本,以Ubuntu/Debian Linux系统为例,需要的依赖库有: cmake:一个跨平台的安装(编译)工具;pkg-config: 一个linux下的命令,用于获得某个库/模块的所有编译相关的信息;libssl-dev:一个Linux平台下提供加密安全支持的库文件;git:一个开源的分布式版本控制系统;gcc:一套由GNU开发的编程语言编译器;build-essential:提供编译程序必须软件包的列表信息;clang:一个C语言、C++、Objective-C语言的轻量级编译器;libclang-dev:一个clang开发包;安装依赖库命令如下: sudo apt update sudo apt install -y cmake pkg-config libssl-dev git gcc build-essential clang libclang-dev getsubstrate.io脚本接下来安装Rust开发环境,相关命令如下: if ! which rustup >/dev/null 2>&1; then curl https://sh.rustup.rs -sSf | sh -s -- -y source ~/.cargo/env rustup default stable else rustup update rustup default stable fi 由于国内网络连接问题,安装Rust这部分可能会失败,可以使用国内镜像安装Rust。首先下载shell脚本文件:https://sh.rustup.rs; 然后修改下载的rustup-init.sh文件源码: RUSTUP_UPDATE_ROOT改为国内镜像RUSTUP_UPDATE_ROOT="https://mirrors.ustc.edu.cn/rust-static/rustup" 修改_file变量的值local _file="./rustup-init${_ext}" 注释掉以下代码# ignore rm "$_file" # ignore rmdir "$_dir" 然后执行下载的脚本进行安装: sh rustup-init.sh 安装完成后执行 source ~/.cargo/env rustup default stable 然后安装Rust的wasm工具链: rustup update nightly rustup target add wasm32-unknown-unknown --toolchain nightly 最后根据是否设置了--fast参数,选择安装 substrate 和 subkey。 下一篇文章介绍如何创建一条基于Substrate的区块链。 —- 编译者/作者:松果 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
【Substrate开发教程】01 - 基础介绍 & 开发环境搭建
2020-10-10 松果 来源:区块链网络
LOADING...
相关阅读:
- 3比特币链上趋势显示宏观牛市正在酝酿2020-10-10
- 北京市大力推行“政务服务+区块链” 助力建设国际一流营商环境2020-10-10
- 布朗克思维:区块链知识体系2020-10-10
- 因为魔兽世界删除术士吸血,这位少年创造万亿的市值的以太坊!2020-10-10
- 区块链大型巡回播放【第72期】#公证通# &“行情解读”2020-10-10