安装基本的环境,如果Ubuntu的版本过高,则需要进行软件的降级,主要是libssl-dev。在开发环境中使用的是Ubuntu
sudo apt update
# May prompt for location information
sudo apt install -y git clang curl libssl-dev llvm libudev-dev
如果出现因为依赖问题不能安装,则需要进行统一的源更新和配置。安装完成后,需要安装Rust环境。
# Install
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Configure
source ~/.cargo/env
更新rustup为稳定版本,并且更新nightly,需要注意的是rustup是管理语言自身的,cargo是管理第三方拓展的,初始化WebAssembly的构建环境
rustup default stable
# 网络原因可能更新失败,多次尝试
rustup update
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
copy源码。
git clone https://github.com/substrate-developer-hub/substrate-node-template.git
进入到源码中,可以进行编译,编译之前需要git checkout latest
最新版本。
cargo build --release
编译注意事项:
-
如果编译失败需要设置
rustup default nightly
但是官方文档上使用的是stable进行编译,但是我的编译没有问题。 -
编译网速非常重要,这个网速是拉取GitHub以及crates.io的速度,有些网络就是不行,同地区的电信网络也可能出现很大的差别,编译过程分3部分,首先会自动下载crates.io index,然后会自动拉取git中的paritytech/substrate.git,然后下载500个需要的包开始编译,编译过程缓慢,虚拟机Linux全开CPU占用100%,编译十几分钟。
- 编译过程还会经常卡住,这个比较莫名其妙,总之最后编译完成的结果就是生成target文件夹。
然后准备前端的模板,前端使用的是front-end,使用的是Node.js和yarn管理的,所以需要在系统中安装Node.js和Yarn,使用apt就行,但是这里比较麻烦的是Node版本应当在V14以上,但是apt中安装的是10,所以使用NPM或者是Yarn进行升级。
curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash -
sudo apt-get install nodejs
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update
sudo apt-get install yarn
apt install npm
npm config set registry https://registry.npm.taobao.org
npm install npm@latest -g
克隆项目
git clone https://github.com/substrate-developer-hub/substrate-front-end-template
cd substrate-front-end-template
# We want to use the `latest` tag throughout all of this tutorial
git checkout latest
使用yarn安装依赖,注意yarn的权限是不是root用户,如果是root用户的话,本地用户调用不了。
当然如果是全局使用的apt进行安装的话,没有问题,但是需要注意权限,否则可能出现权限不足的情况。
然后可以直接启动结点(单机开发结点),在之前编译的target中如下命令
./target/release/node-template --dev
界面运行,进入到substrate-front-end-template中直接使用yarn运行即可,需要注意的是,如果之前使用的是sudo进行的安装,这里也需要使用sudo运行。
在整个浏览器页面中,可以查看到当前的区块,并且可以选择账户对区块进行转账