Substrate 基础 -- 教程(Tutorials)

这篇具有很好参考价值的文章主要介绍了Substrate 基础 -- 教程(Tutorials)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官网

github

DOC

面向未来的区块链框架

Substrate 使开发人员能够快速、轻松地构建适合任何用例的未来 证明区块链(future proof blockchains)。

Substrate 文档包括区块链构建器(blockchain builders)和parachain 项目团队的概念、过程和参考信息。

Tutorials

如果你是一个喜欢边做边学的人,Substrate 教程是开始你的旅程的好地方。教程不会提供关于为什么要执行某些步骤或解释编码细节的太多背景信息。相反,这些教程为您提供实践经验,执行构建自己的区块链所必需的任务,并专注于确保成功的结果。

如果您更喜欢在较少指导的情况下自己进行实验,您可能想要探索Substrate游乐场。如果你更喜欢直接深入代码的细节,你可能想从Rust API文档开始。但如果你想在导游的带领下开始你的旅程,试试下面的教程。

入门教程(Get started)

入门教程演示了使用区块链节点的基础知识,包括如何使节点在对等网络中相互通信,以及如何收集关于节点操作的指标。你将学习如何:

  • 在开发环境中构建一个本地节点。
  • 使用预定义帐户模拟双节点网络。
  • 启动一个小型可信验证器节点网络。
  • 通过收集指标监视节点操作。
  • 升级节点运行时。

使用pallets

使用 pallets 教程重点介绍如何使用 pallets 定制运行时,包括如何向运行时添加简单和复杂的pallets ,以及如何将pallets 与智能合约结合使用。你将学习如何:

  • 向运行时添加简单的预定义pallets 。
  • 使用宏创建自定义 pallets 。
  • 指定要用作函数调用发起者的帐户。
  • 发布自定义 pallets 供其他人使用。

为了更深入地了解如何从头到尾创建一个自定义托盘,您可能想要探索Collectibles workshop的第一部分。未来的迭代将包括对前端开发的介绍,以及如何将应用程序从单链项目转换为副链项目。

开发智能合约

开发智能合约教程指导您如何使用ink编程语言构建运行在基于Substrate的区块链上的智能合约。你将学习如何:

  • 打造智能合约项目的墨水!编程语言。
  • 使用智能合约存储、递增和检索简单值。
  • 在智能合约中使用映射存储和检索值。
  • 构建用于转移ERC-20 tokens的智能合约。

连接中继器 和 parachains

连接中继器 和 parachains 教程深入研究了更高级的主题,以超越单独的链开发,包括如何将您的链连接到其他链。你将学习如何:

  • 把 solo 链变成 parachain。
  • 部署一个本地测试网络,并与多个连接的 parachain 交互。
  • 将 parachain连接到公共测试网络。
  • 使用跨共识的消息格式( cross-consensus messaging format )。

与工具集成

与工具集成教程重点介绍了其他工具和节点扩展,使您能够以独特的方式与Substrate节点或区块链中的信息交互。你将学习如何:

  • 集成一个轻客户端节点以连接到基于Substrate的链。
  • 使用sidecar RESTful API和端点与基于Substrate的链交互。
  • 访问EVM帐户并使用与EVM兼容的应用程序。

一、环境安装

在开始开发基于 Substrate 的区块链之前,您需要用所需的编译器和工具准备好开发环境。因为Substrate (以及大多数使用Substrate 的开发人员工具)是用 Rust 编程语言编写的,所以准备计算机的第一步是安装Rust。安装Rust的步骤取决于用于Substrate开发的计算机的操作系统。有关安装说明,请参阅适用于您的操作系统的主题。

  • Linux
  • Windows

如果已经安装了Rust,可以跳过安装说明。有关安装和升级Rust编译器和工具链或解决安装问题的其他信息,请参阅以下主题:

  • Rust toolchain
  • 开发人员工具
  • 排除Rust问题

Linux开发环境

Rust支持大多数Linux发行版。根据所使用的特定发行版和操作系统版本,您可能需要向环境中添加一些软件依赖项。通常,您的开发环境应该包括一个链接器或c兼容的编译器(如clang)和一个适当的集成开发环境(IDE)。

1.1 开始之前

查看您的操作系统的文档,以获得有关已安装的包以及如何下载和安装您可能需要的任何其他包的信息。例如,如果你使用Ubuntu,你可以使用Ubuntu高级打包工具(Advanced Packaging Tool,apt)来安装build-essential包:

sudo apt install build-essential

在安装Rust之前,你至少需要以下包:

clang curl git make

因为区块链需要标准密码学来支持公钥/私钥对(public/private key pairs )的生成和交易签名的验证,所以还必须有一个提供密码学的包,比如libssl-devopenssl-devel

1.2 安装所需的包和Rust

1.2.1 在Linux上安装Rust工具链:

例如,在Ubuntu桌面或Ubuntu服务器上,你可能会运行类似如下的命令:

sudo apt install --assume-yes git clang curl libssl-dev llvm libudev-dev make protobuf-compiler

Fedora

sudo dnf update
sudo dnf install clang curl git openssl-devel make protobuf-compiler
1.2.2 下载rustup安装程序,执行如下命令安装Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
1.2.3 通过运行以下命令更新当前shell以包含Cargo:
source $HOME/.cargo/env
1.2.4 执行以下命令验证安装正确性:
rustc --version
1.2.5 通过运行以下命令配置Rust工具链为最新的稳定版本:
rustup default stable
rustup update
1.2.6 通过运行以下命令将nightly 版本和nightly WebAssembly (wasm)目标添加到您的开发环境中:
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
1.2.7 运行以下命令验证开发环境的配置:
rustup show
rustup +nightly show

substrate开发快速入门,区块链,rust,区块链,开发语言

substrate开发快速入门,区块链,rust,区块链,开发语言

1.3 编译一个Substrate节点

现在已经安装了Rust,并为Substrate开发配置了Rust工具链,现在可以通过克隆Substrate节点模板(node template)文件并编译一个Substrate节点来完成开发环境的设置。

节点模板提供了一个工作环境,其中包括构建区块链所需的所有最常见的特性,无需任何多余的模块或工具。为了确保节点模板为您提供一个相对稳定的工作环境,推荐的最佳实践是从Substrate Developer Hub存储库克隆Substrate节点模板,而不是从核心的Substrate存储库克隆。

编译Substrate节点模板:

1.3.1 使用实例克隆节点模板存储库。
git clone https://github.com/substrate-developer-hub/substrate-node-template

在大多数情况下,您可以克隆main 分支以获得最新的代码。但是,如果希望使用与特定Polkadot版本兼容的Substrate分支,则可以使用--branch命令行选项。单击Tags查看与特定Polkadot版本兼容的分支列表。

1.3.2 执行如下命令,进入节点模板目录的根目录。
cd substrate-node-template

如果你想保存你的更改并使这个分支易于识别,你可以通过运行类似于下面的命令来创建一个新的分支:

git switch -c my-wip-branch
1.3.3 执行如下命令编译节点模板。
cargo build --release

构建成功完成后,您的本地计算机就可以进行Substrate开发活动了。
substrate开发快速入门,区块链,rust,区块链,开发语言

1.4 下一步做什么

Substrate开发人员中心充当访问社区可用的许多资源的中央门户。根据你的兴趣和学习风格,你可能更喜欢某一种途径。例如,如果您更喜欢阅读源代码,并且熟悉Rust,那么您可能希望从深入研究Rust API开始。

二、入门教程 Get started

入门教程演示了使用基于Substrate的区块链节点的基础知识,包括如何使节点在对等网络中相互通信,以及如何收集关于节点操作的度量。通常,您应该按照列出的顺序完成教程,因为它们为尝试后面的教程或执行更复杂的任务奠定了基础。后面的教程将加强或扩展在入门教程中学习的基本主题。

  • 构建本地区块链向您展示如何在开发环境中设置本地节点并与之交互。
  • 模拟网络帮助您使用预定义帐户模拟双节点网络。
  • “添加可信节点”演示如何生成密钥和分发链规范,以创建一个小型可信验证器节点网络。
  • 授权特定节点说明如何配置具有授权节点和访问受限节点的网络。
  • 监视节点指标强调如何利用Substrate公开的节点指标。
  • 升级正在运行的网络通过修改正在运行的Substrate节点的运行时来说明无分叉升级。

2.1 建立一个本地区块链

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

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

2.1.1 开始

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

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

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

2.1.2 这篇教程是给谁看的?

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

2.1.3 你需要多少时间来完成这个教程?

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

2.2 开始之前

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

  • 您有良好的互联网连接,并可以访问本地计算机上的shell终端。
  • 您通常熟悉软件开发和使用命令行接口。
  • 你一般都熟悉区块链和智能合约平台。
  • 您已经安装了Rust,并按照安装中所述设置了开发环境。

2.3 教程的目标

通过完成本教程,您将实现以下目标:

  • 编译节点模板,启动本地基于Substrate的区块链。
  • 安装前端模板与本地区块链节点交互。
  • 使用前端模板提交事务并查看结果。

2.4 编译一个Substrate节点

Substrate节点模板提供了一个工作的开发环境,以便您可以立即开始在Substrate上进行构建。

如果已在本地编译节点模板,可跳过本节,继续执行“启动本地节点”。

编译Substrate节点模板:见上节 环境安装

2.5 启动本地节点

在编译节点之后,就可以开始使用前端模板研究它的功能了。
启动本地Substrate节点:

  1. 打开终端shell。
  2. 切换到编译Substrate节点模板的根目录。
  3. 以开发模式启动节点。
./target/release/node-template --dev --ws-external

node-template 命令行选项指定您希望运行的节点如何操作。在本例中,--dev选项指定节点使用预定义的development 链规范以开发模式运行。默认情况下,该选项还会在按Control-c停止节点时删除所有活动数据——例如键、区块链数据库和网络信息。使用--dev选项可以确保在停止并重新启动节点时保持干净的工作状态。

  1. 通过检查终端中显示的输出,验证节点已启动并成功运行。
    substrate开发快速入门,区块链,rust,区块链,开发语言

如果finalized 后的数量在增加,您的区块链正在产生新的区块,并就它们所描述的状态达成共识。
我们将在后面的教程中探讨日志输出的细节。现在,重要的是知道节点正在运行并生成块。

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

2.6 安装前端模板

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

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

安装前端模板。

  1. 在计算机上打开一个新的终端窗口。
  2. 执行以下命令检查本地是否已安装node。
node --version

如果命令不返回一个版本号,下载并安装节点按照说明使用Node.js网站上的操作系统。节点版本至少应该发掘运行前端模板。

执行以下命令检查本地计算机是否安装了yarn

yarn --version

yarn版本至少为v3才能运行前端模板。如果您安装了较旧的版本,则可以使用yarn version并指定版本号来更新yarn。如果该命令没有返回版本号,请执行以下命令下载并安装yarn:

npm install --global yarn
  1. 克隆前端模板存储库。
git clone https://github.com/substrate-developer-hub/substrate-front-end-template
  1. 执行如下命令,进入前端模板目录根目录。
cd substrate-front-end-template
  1. 执行以下命令安装前端模板的依赖项:
yarn install

2.7 启动前端模板

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

使用前端模板:

  • 验证当前工作目录是否是安装前端模板的根目录。
  • 执行如下命令启动前端模板。
yarn start
  1. 在浏览器中打开http://localhost:8000,查看前端模板。
    substrate开发快速入门,区块链,rust,区块链,开发语言
    顶部部分有一个帐户选择列表,用于在想要执行链上操作时选择要使用的帐户。模板的顶部部分还显示有关您所连接的链的信息。

substrate开发快速入门,区块链,rust,区块链,开发语言

您可能还注意到,前端模板显示了一个带有一些预定义帐户的余额表,其中一些帐户预先配置了资金。您可以使用此示例数据来尝试诸如转移资金之类的操作。

2.8 从帐户转移资金

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

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

把钱转到一个帐户:

  1. 在余额表中,请注意预定义的帐户(例如dave),这些帐户没有与之关联的资金。

substrate开发快速入门,区块链,rust,区块链,开发语言
在Balances 表下,前端模板还显示了一个Transfer组件。您可以使用此组件将资金从一个帐户转移到另一个帐户。

  1. 从可用帐户列表中选择dave以填充要向其转移资金的地址。
  2. 指定至少1000000000000作为要传输的金额,然后单击Submit
    substrate开发快速入门,区块链,rust,区块链,开发语言
  3. 注意,余额表中的值随着转账而更新。
    substrate开发快速入门,区块链,rust,区块链,开发语言
  4. 检查Events组件以查看与刚刚完成的传输相关的事件。

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

# 此处从 alice 帐户转到 dave
system:ExtrinsicSuccess
[{"weight":{"refTime":"272,785,000","proofSize":"0"},"class":"Normal","paysFee":"Yes"}]
transactionPayment:TransactionFeePaid
["5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY","272,785,147","0"]
balances:Transfer
["5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY","5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy","3,000,000,000,000"]
balances:Endowed
["5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy","3,000,000,000,000"]
system:NewAccount
["5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy"]
balances:Withdraw
["5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY","272,785,147"]
  1. 当事务完成并包含在一个块中时,您将看到类似以下的确认消息:
    substrate开发快速入门,区块链,rust,区块链,开发语言

2.9 停止本地节点

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

停止本地Substrate节点。

  1. 返回到显示节点输出的终端shell。
  2. 按Control-c终止正在运行的进程。
  3. 验证您的终端返回到substrate-node-template目录中的终端提示符。

前端模板包括几个额外的组件,供您在连接到本地开发节点时进行试验。您可以自己探索这些组件或在以下主题中了解更多信息:文章来源地址https://www.toymoban.com/news/detail-761191.html

  • 架构
  • 网络和区块链
  • 模拟网络
  • Submit an issue
  • Substrate Stack Exchange

到了这里,关于Substrate 基础 -- 教程(Tutorials)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Substrate区块链框架学习小组

    Substrate框架是什么 Substrate是一个由Rust语言写的区块链开发框架,是目前业界最强大,特性最丰富的区块链框架之一。使用Substrate,你可以很方便地搭建出一条链(solo链)。它可以开发公链,联盟链,私有链。作为开发框架(脚手架),它提供了一切必要的完善的基础组件,

    2023年04月08日
    浏览(31)
  • 恢复 Substrate 链: unexpected epoch changes

    使用 Substrate 定制的区块链,所有节点听了一段时间后,链无法工作。 Substrate:polkadot-v0.9.25 共识协议: babe + grandpa 系统:macOS Big Sur (11.3) cargo: cargo 1.63.0-nightly (a4c1cd0eb 2022-05-18) babe 协议算法,要求每个 epoch(session) 周期内都需要出块,因此当链出现以下情况,导致无法正常出

    2024年01月16日
    浏览(35)
  • 解决Substrate节点模板编译失败ailed to run custom build command for `tikv-jemalloc-sys v0.4.3+5.2.1-patched.2`

    操作系统Linux 按照 Substrate官网入门教程编译节点模板 报错 error: failed to run custom build command for `tikv-jemalloc-sys v0.4.3+5.2.1-patched.2` 记录下解决方法         安装cmake 重新编译项目 编译成功

    2024年02月13日
    浏览(34)
  • c++超详细基础教程(快速入门)

    ❤作者:那些年丶我们逃过的课 ❤博客主页:那些年丶我们逃过的课的博客_CSDN博客-c++题目,c++学习记录,c++小游戏领域博主 ❤码云gitee:我的码云 - Gitee.com ❤期待你的关注,如果觉得还可以的话,可以点赞评论支持一下,每个评论我都会回访的🎉 教程简介 c++初步了解 c++简

    2024年04月15日
    浏览(92)
  • CSS零基础快速入门(详细教程)

    CSS是层叠样式表,由 Cascading Style Sheets 简称而来。 CSS的功能为:能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果,并且能够做到页面的样式和结构分离。 CSS的作用效果跟我们日常使用的化妆术是一样的,化妆术能使人看起来更好看,而CSS能够美化页

    2024年04月26日
    浏览(39)
  • HTML零基础快速入门(详细教程)

    HTML代码有以下特点: html代码是通过标签来组织的,而标签是由尖括号 组织的,也可被叫作元素(element)。 大部分标签是成对存在的,称之为双标签,少数标签是单独存在的,称之为单标签。 双标签, html 为开始标签, /html 为结束标签,开始标签和结束标签之间的是标签

    2024年02月05日
    浏览(43)
  • k8s教程----零基础快速入门

    前言: Kubernetes(k8s)作为云原生的核心平台,吸引了越来越多的运维、开发、测试以及其他技术员去了解学习。随着行业越来越内卷,k8s已经被广泛使用,作为一名运维人员,k8s将成为一个必须掌握的技术点,同时,我们也可以依靠它跳槽涨薪。 一、什么是K8s 它前生是谷歌

    2024年02月03日
    浏览(51)
  • JMeter基础使用教程及使用技巧(快速入门)

    本篇内容为JMeter的简单使用介绍,是基础的使用技巧,希望能帮到各位,不足之处还望多多包涵,最后感谢您的阅览。 Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试。 可以Apache Jmeter官网下载,地址:http://jmeter.apache.org/downloa

    2024年02月08日
    浏览(50)
  • Docker超详细基础教程,快速入门docker首选

    一、docker概述 1.什么是docker Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之

    2024年02月13日
    浏览(51)
  • 【零基础入门学习Python---Python中Web开发基础之快速入门实践】

    🚀 零基础入门学习Python🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,CSDN-Java领域优质创作者🏆,保研|国家奖学金|高中学习JAVA|大学完善JAVA开发技术栈|面试刷题

    2024年02月12日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包