创建您的第一个Substrate区块链

区块链软件使单个计算机(称为节点)能够相互通信,形成分散的点对点(P2P)网络。为了确保链上数据的安全性和链的持续进展,节点使用某种形式的共识来商定每个数据块中的数据状态以及处理块的顺序。

什么是区块链节点?

站在一个high level角度讲, 区块链节点由以下关键组件组成:

  • Storage

  • Peer-to-peer networking

  • Consensus capabilities

  • Data handling capabilities for external or "extrinsic" information

  • A Runtime

由于构建这些组件的复杂性,大多数区块链项目都是从现有的区块链项目中分叉出来的。例如,比特币存储库被分叉创建:莱特币,ZCash,Namecoin和Bitcoin Cash。同样,以太坊存储库被分叉以创建Quorum,POA Network,KodakCoin和Musicoin。

[图片上传失败...(image-29f316-1650860902045)]

然而,现有的区块链平台并不是为了允许修改而设计的。因此,通过分叉构建新的区块链具有严重的局限性。

什么是Substrate?

Substrate是一个用于构建区块链的开源、模块化和可扩展的框架。

Substrate从头开始设计,具有灵活性,允许创新者设计和构建满足其需求的区块链网络。它提供了构建自定义区块链节点所需的所有核心组件。

安装依赖

Substrate开发在基于UNIX的操作系统(如macOS或Linux)上是最容易的。

要在 macOS 或 Linux 上安装所需的软件包,请执行以下操作:

  1. 在计算机上打开终端程序。

  2. 在下表中找到您的操作系统,并运行适用于您的开发环境的相应命令。

操作系统 安装命令
Ubuntu 或 Debian sudo apt update && sudo apt install -y git clang curl libssl-dev llvm libudev-dev
Arch Linux pacman -Syu --needed --noconfirm curl git clang
fedora sudo dnf update sudo dnf install clang curl git openssl-devel
OpenSUSE sudo zypper install clang curl git openssl-devel llvm-devel libudev-devel
macOS brew update && brew install openssl

如果您使用的是 macOS 且未安装 Homebrew,请运行以下命令来安装 Homebrew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

安装完成后,运行 :brew install openssl

安装 Rust 和 Rust toolchain

安装和配置 Rust:

  1. 通过运行以下命令进行安装:rustup
curl https://sh.rustup.rs -sSf | sh
  1. 通过运行以下命令,将当前 shell 配置为重新加载 PATH 环境变量,以便它包含 Cargo 目录:bin
source ~/.cargo/env
  1. 通过运行以下命令,将 ## Rust toolchain配置为默认为最新版本:stable
rustup default stable
rustup update
  1. 通过运行以下命令添加 nightly 版本和 nightly 的 WebAssembly(wsam):
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
  1. 通过运行以下命令验证安装:
rustc --version
rustup show

使用node template 准备 Substrate node

Substrate node template提供了一个工作开发环境,以便您可以立即开始在 Substrate 上进行构建。

编译Substrate node template:

  1. 通过运行以下命令,使用 latest版本分支克隆节点模板存储库:
git clone https://github.com/substrate-developer-hub/substrate-node-template
  1. 通过运行以下命令进入到节点模板root目录:
cd substrate-node-template
# We want to use the `latest` tag throughout all of this tutorial
git checkout latest
  1. 通过运行以下命令编译节点模板
cargo build --release

安装前端模板

前端模板使用ReactJS以呈现一个Web浏览器界面,使您能够与基于Substrate的区块链节点进行交互。您可以使用此前端模板作为将来为您自己的项目创建用户界面的起点。

前端模板需要 Yarn和node.js.如果您没有这些工具,请先安装它们。

安装前端模板:

  1. 通过运行以下命令检查本地计算机上是否安装了:node
node --version

如果该命令未返回版本号,请您按照node.js网站介绍下载安装node。版本应至少为 v14 才能运行前端模板。

  1. 通过运行以下命令检查本地计算机上是否安装了:yarn
yarn --version

如果该命令未返回版本号,请通过运行以下命令进行下载并安装:yarn

npm install -g yarn
  1. 通过运行以下命令克隆前端模板存储库:
git clone https://github.com/substrate-developer-hub/substrate-front-end-template
  1. 通过运行以下命令更改为前端模板目录的根目录:
cd substrate-front-end-template
# We want to use the `latest` tag throughout all of this tutorial
git checkout latest
  1. 通过运行以下命令安装前端模板的依赖项:
yarn install

启动区块链节点并进行探索

在节点编译后,您就可以开始探索它使用前端模板执行的操作。

启动本地“Substrate”节点

要启动本地“Substrate”节点:

  1. 打开终端

  2. 转到编译 Substrate-node-template的根目录

  3. 通过运行以下命令在开发模式下启动节点:

./target/release/node-template --dev

node-template的命令行选项指定您希望正在运行的节点如何运行的。在这种情况下,--dev选项指定节点使用预定义的开发链规范在开发者模式下运行。默认情况下,当您通过按 Control-c 停止节点时,此选项还会删除所有活动数据,例如键、区块链数据库和网络信息。使用该选项可确保在每次停止和重新启动节点时都处于干净的工作状态。

  1. 通过查看终端中显示的输出来验证节点是否已启动并成功运行。

终端应显示类似于以下内容的输出:

2021-11-24 15:36:35 Running in --dev mode, RPC CORS has been disabled.
2021-11-24 15:36:35 Substrate Node
2021-11-24 15:36:35 ✌️ version 4.0.0-dev-82b7c2c-aarch64-macos
2021-11-24 15:36:35 ❤️ by Substrate DevHub , 2017-2021
2021-11-24 15:36:35  Chain specification: Development
2021-11-24 15:36:35  Node name: six-wash-9274
2021-11-24 15:36:35  Role: AUTHORITY
2021-11-24 15:36:35  Database: RocksDb at /tmp/substrateP1jD7H/chains/dev/db
2021-11-24 15:36:35 ⛓ Native runtime: node-template-100 (node-template-1.tx1.au1)
2021-11-24 15:36:35  Initializing Genesis block/state (state: 0xa59b…5331, header-hash: 0xc5d2…37f3)
2021-11-24 15:36:35  Loading GRANDPA authority set from genesis on what appears to be first startup.
2021-11-24 15:36:35 ⏱ Loaded block-time = 6s from block 0xc5d2fdad35e14684753f087c1a20f022274e154d39add4f7efe34e95476a37f3
2021-11-24 15:36:35 Using default protocol ID "sup" because none is configured in the chain specs
2021-11-24 15:36:35  Local node identity is: 12D3KooWG5niQF5bjsFao3D8DZRpUUB6uWZC2pK8hCDZ94zsr8Sc
2021-11-24 15:36:35  Highest known block at #0
...
...
...
2021-11-24 15:36:40  Idle (0 peers), best: #1 (0xd2b5…d03f), finalized #0 (0xc5d2…37f3), ⬇ 0 ⬆ 0
  1. 使显示节点输出的终端保持打开状态以继续。

启动前端模板

Substrate 前端模板由用户界面组件组成,使您能够与 Substrate 节点交互并执行一些常见任务。

要使用前端模板, 请执行以下操作:

  1. 在计算机上打开一个新的终端 shell,切换到substrate-front-end-template的根目录。

  2. 通过运行以下命令启动前端模板:

yarn start
  1. 在浏览器中打开 http://localhost:8000 以查看前端模板。

顶部有一个帐户选择列表,用于选择要在执行链上操作时使用的帐户。模板的顶部还显示有关您连接到的链的信息。

[图片上传失败...(image-6b115-1650860902044)]

您可能还会注意到,前端模板显示一个“余额”表,其中包含一些预定义的科目,其中一些科目已预先配置了资金。您可以使用此示例数据来尝试转移资金等操作。

[图片上传失败...(image-4b8747-1650860902044)]

将资金从一个账户转移到另一个账户

现在,您已经在本地计算机上运行了一个区块链节点,并且您有一个可用于执行链上操作的前端模板,您就可以探索与区块链交互的不同方式了。

默认情况下,前端模板包含多个组件,可用于尝试不同的常见任务。在本教程中,您可以执行简单的转账操作,将资金从一个账户转移到另一个账户。

要将资金转入账户:

  1. 在“余额”表中,请注意没有关联资金的预定义科目(如 dave)。[图片上传失败...(image-c36b3b-1650860902043)]

    在“余额”表下,前端模板还显示“转移”组件。您可以使用此组件将资金从一个账户转移到另一个账户。

  2. 复制并粘贴dave账户的地址,以指定您要将资金转入的地址。

  3. 指定至少 1000000000000 作为转账金额,然后单击提交。[图片上传失败...(image-d87d5-1650860902043)]

  4. 请注意,余额表中的值将随转账一起更新。[图片上传失败...(image-19155f-1650860902043)]

  5. 检查“****Events****”组件以查看与刚刚完成的传输相关的事件。Substrate 区块链将异步操作的结果报告为事件,因此您可以使用 Events 组件查看作为传输的一部分执行的每个操作的详细信息。例如:[图片上传失败...(image-e7f5a4-1650860902043)]

  6. 当交易完成并包含在区块中时,您会看到类似于以下内容的确认消息:

 Finalized. Block hash: 0xda7e9e935abf5a3a2fdb0a27d67cd7a69e628165b5827255af2635ba226411a4

你可能感兴趣的:(创建您的第一个Substrate区块链)