LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 行情分析 > 【Substrate开发教程】01 - 基础介绍 & 开发环境搭建

【Substrate开发教程】01 - 基础介绍 & 开发环境搭建

2020-10-10 松果 来源:区块链网络


什么是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的区块链。

—-

编译者/作者:松果

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...