创建第一个 Substrate 区块链
区块链软件使单个计算机(称为节点)能够相互通信以形成分散的点对点 (P2P) 网络。为保证链上数据的安全和链上的持续进展,节点通过某种形式的共识,就每个数据块中的数据状态以及块的处理顺序达成一致。
安装所需的软件包
OS | Installation commands |
---|---|
Ubuntu or 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 |
Windows | Refer to this installation guide. |
如果您使用的是 macOS 并且没有安装 Homebrew,请运行以下命令来安装 Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
安装 Homebrew 后,运行brew install openssl
安装 Rust 和 Rust 工具链
手动安装和配置 Rust:
-
rustup
通过运行以下命令进行安装:curl https://sh.rustup.rs -sSf | sh
-
bin
通过运行以下命令,配置当前 shell 以重新加载 PATH 环境变量,使其包含 Cargo目录:source ~/.cargo/env
-
stable
通过运行以下命令将 Rust 工具链配置为默认为最新版本:rustup default stable rustup update
-
通过运行以下命令添加
nightly
版本和nightly
WebAssembly ( ) 目标:wasm
rustup update nightly rustup target add wasm32-unknown-unknown --toolchain nightly
-
通过运行以下命令来验证您的安装:
rustc --version rustup show
前面的步骤将引导您完成 Rust 和 Rust 工具链的安装和配置,以便您自己看到完整的过程。
启动区块链节点并探索
节点编译后,您就可以开始使用前端模板探索它的功能了。
启动本地 Substrate 节点
启动本地 Substrate 节点:
-
打开终端外壳。
-
切换到编译 Substrate 节点模板的根目录。
-
通过运行以下命令以开发模式启动节点:
./target/release/node-template --dev
node-template
命令行选项指定您希望正在运行的节点如何操作。在这种情况下,该--dev
选项指定节点使用预定义的development
链规范在开发者模式下运行。默认情况下,当您按 Control-c 停止节点时,此选项还会删除所有活动数据,例如密钥、区块链数据库和网络信息。使用该--dev
选项可确保您在任何时候停止和重新启动节点时都处于干净的工作状态。 -
通过查看终端中显示的输出来验证您的节点是否已启动并成功运行。
终端应显示类似于此的输出:
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 <https://github.com/substrate-developer-hub>, 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
如果之后的数字在finalized
增加,则您的区块链正在生成新块并就它们所描述的状态达成共识。
我们将在后面的教程中查看日志输出中报告的详细信息。目前,只需要知道您的节点正在运行并生成块即可。
- 保持显示节点输出的终端打开以继续。
启动前端模板
Substrate 前端模板由用户界面组件组成,使您能够与 Substrate 节点交互并执行一些常见任务。
要使用前端模板:
- 在您的计算机上打开一个新的终端 shell,切换到安装前端模板的根目录。
- 通过运行以下命令启动前端模板:
yarn start
3.在浏览器中打开http://localhost:8000查看前端模板。
顶部有一个账户选择列表,用于在您想要执行链上操作时选择要使用的账户。模板的顶部还显示有关您连接到的链的信息。
您可能还注意到,前端模板显示了一个带有一些预定义账户的余额表,并且其中一些账户预配置了资金。您可以使用此示例数据来尝试转账等操作。
将资金从一个帐户转移到另一个帐户
既然您在本地计算机上运行了一个区块链节点,并且您有一个可用于执行链上操作的前端模板,那么您就可以探索与区块链交互的不同方式了。
默认情况下,前端模板包含多个组件,可让您尝试不同的常见任务。对于本教程,您可以执行简单的转账操作,将资金从一个账户转移到另一个账户。
将资金转入账户:
- 在余额表中,请注意预定义的帐户(例如 dave)没有与其关联的资金。
在 Balances 表下,前端模板还显示一个Transfer组件。您使用此组件将资金从一个帐户转移到另一个帐户。
2.复制并粘贴dave帐户的地址,以指定您将资金转移到的地址。
3.指定至少1000000000000作为转账金额,然后点击提交。
4.请注意,余额表中的值随转移而更新。
5.检查事件组件以查看与您刚刚完成的传输相关的事件。
Substrate 区块链将异步操作的结果报告为事件,因此您可以使用事件组件查看作为传输的一部分执行的每个操作的详细信息。例如:
当交易完成并包含在区块中时,您会看到类似于以下内容的确认消息:
😉 Finalized. Block hash: 0xda7e9e935abf5a3a2fdb0a27d67cd7a69e628165b5827255af2635ba226411a4
停止本地节点
传输成功后,您可以继续探索前端模板组件或停止本地 Substrate 节点。因为您--dev
在启动节点时指定了该选项,所以停止本地节点会停止区块链并清除所有持久块数据,以便您下次启动节点时可以以干净的状态开始。
停止本地 Substrate 节点:
- 返回到显示节点输出的终端 shell。
- 按 Control-c 终止正在运行的进程。
- 验证您的终端返回到
substrate-node-template
目录中的终端提示符。