跳到主要内容

01-substrade入门之构建本地区块链

构建本地区块链

正如您在区块链基础知识中所了解的,区块链由分散的计算机(称为节点)组成,以形成网络。

Substrate 提供了一个灵活、开放和可扩展的开发环境,允许您设计和构建完全定制的区块链节点,以满足您的应用程序或业务模型需求。

开始

成为区块链开发人员的第一步是学习如何编译和启动单个本地区块链节点。 在本教程中,您将使用节点模板构建并启动单节点区块链。

Substrate 节点模板提供了一个可以在开发环境中本地运行的工作单节点区块链。 节点模板包括几个预定义的组件(例如用户帐户和帐户余额),以便您可以尝试执行常见任务。 无需对模板进行任何更改,您就可以运行生成块并允许交易的功能节点。

启动本地区块链节点后,本教程将说明如何使用 Substrate 前端模板查看有关区块链活动的信息并提交交易。

本教程适用于谁?

本教程提供了对 Substrate 的基本介绍,并准备了一个最小的工作开发环境,您可以使用它在其他教程中进一步探索。 它适用于任何有兴趣了解 Substrate 和区块链开发的人。 本教程假设您之前没有 Substrate 的经验或知识。 您不需要任何编程或区块链经验即可完成本教程。 这只是第一步,但希望它能激励您继续您的旅程。

完成本教程需要多少时间?

本教程需要编译 Rust 代码,大约需要一到两个小时才能完成。

开始之前的准备

对于本教程,您将下载并使用工作代码。 在开始之前,请验证以下内容:

  • 您有良好的互联网连接并可以访问本地计算机上的 shell 终端。
  • 您通常熟悉软件开发并使用命令行界面。
  • 您通常熟悉区块链和智能合约平台。
  • 你已经安装了 Rust 并按照安装中的描述设置了你的开发环境。 小Y注 环境配置参照:window10 substrate开发环境配置

编译substrate node

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

如果您已经在本地计算机上编译好节点模板,您可以跳过本节继续启动本地节点

编译 Substrate node template

1.打开ubuntulinuxshell终端 小Y注如果使用vscode+win10 wsl开发方式可在vsode安装Remote-wsl插件连接上ubuntu子系统。附图

这里输入图片描述 这里输入图片描述 在新开vscode窗口打开Terminal即可 这里输入图片描述 2.通过运行以下命令克隆节点模板存储库:

git clone https://github.com/substrate-developer-hub/substrate-node-template

小Y注如果下载不下载可以通过giteer的导入github功能然导入到giteer中,然后再下载 3.切换到节点模板目录的根目录并通过运行以下命令检出最新的分支:

cd substrate-node-template && git checkout latest

4.通过运行以下命令编译节点模板:

cargo build --release

您应该始终使用 --release 标志来构建优化的工件。

启动本地node

节点编译后,您就可以开始使用前端模板探索它的功能了。

启动本地 Substrate 节点:

1.打开终端shell。 2.切换到编译 Substrate 节点模板的根目录。 3.通过运行以下命令以开发模式启动节点:

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

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

4.通过查看终端中显示的输出来验证您的节点是否已启动并成功运行。 终端应显示类似于此的输出:

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

如果最终确定后的数量在增加,则您的区块链正在生成新块并就它们所描述的状态达成共识。

我们将在后面的教程中探讨日志输出的详细信息。 目前,只需要知道您的节点正在运行并生成块即可。

5.保持显示节点输出的终端打开以继续。

安装前端模板

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

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

安装前端模板: 1.通过运行以下命令检查节点是否安装在本地计算机上:

node --version

如果该命令未返回版本号,请按照您在 Node.js 网站上使用的操作系统的说明下载并安装节点。 节点版本应至少为 v14 才能运行前端模板。 小Y注由于前端项目使用的node版本不同,而且各node版本的项目兼容性不好,这里建义使用nvm多版本管理安装node,具体方法见Ubuntu-20.04-安装和使用nvm

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

yarn 版本至少应该是 v3 才能运行前端模板。

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

npm install -g yarn

3.通过运行以下命令克隆前端模板存储库:

git clone https://github.com/substrate-developer-hub/substrate-front-end-template

4.通过运行以下命令切换到前端模板目录的根目录:

cd substrate-front-end-template

5.通过运行以下命令安装前端模板的依赖项:

yarn install

运行前端项目

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

要使用前端模板:

在您的计算机上打开一个新的终端 shell,切换到安装前端模板的根目录。 通过运行以下命令启动前端模板:

yarn start

在浏览器中打开 http://localhost:8000 查看前端模板。

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

这里输入图片描述

从账户转账

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

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

将资金转入账户:

在余额表中,请注意预定义的帐户(例如 dave)没有与其关联的资金。 这里输入图片描述

5.检查事件组件,以查看与您刚刚完成的转移相关的事件。

Substrate 区块链将异步操作的结果报告为事件,因此您可以使用事件组件查看作为传输的一部分执行的每个操作的详细信息。 例如:

这里输入图片描述

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

关闭本地节点

传输成功后,您可以继续探索前端模板组件或停止本地 Substrate 节点您所做的状态更改。 因为您在启动节点时指定了 --dev 选项,所以停止本地节点会停止区块链并清除所有持久块数据,以便您下次启动节点时可以以干净的状态开始。

停止本地 Substrate 节点:

返回到显示节点输出的终端 shell。 按 Control-c 终止正在运行的进程。 验证您的终端返回到 substrate-node-template 目录中的终端提示符。 小Y注wsl vscode窗口下可能过open Folder打开项目 这里输入图片描述

原文

https://docs.substrate.io/tutorials/get-started/build-local-blockchain/