目录
[1.1 ankr的介绍](#1.1 ankr的介绍)
[1.1.1 核心服务:节点基础设施](#1.1.1 核心服务:节点基础设施)
[1.1.2 Web3 开发者工具](#1.1.2 Web3 开发者工具)
[1.1.3 质押与流动性解决方案](#1.1.3 质押与流动性解决方案)
[1.1.4 去中心化云计算与边缘计算](#1.1.4 去中心化云计算与边缘计算)
[1.1.5 ANKR 代币](#1.1.5 ANKR 代币)
[1。1.6 简单总结](#1。1.6 简单总结)
[1.2 课程介绍](#1.2 课程介绍)
[1.2.1 你将学到什么](#1.2.1 你将学到什么)
[1.2.2 未涵盖的主题](#1.2.2 未涵盖的主题)
[1.2.3 为什么要学习这门课程?](#1.2.3 为什么要学习这门课程?)
[1.2.4 前置条件](#1.2.4 前置条件)
[1.3 课程设置](#1.3 课程设置)
[1.3.1 设置 Rust 速成课程环境](#1.3.1 设置 Rust 速成课程环境)
[1.3.2 克隆 GitHub 仓库](#1.3.2 克隆 GitHub 仓库)
[1.3.3 开发环境:VS Code 和rust-analyzer](#1.3.3 开发环境:VS Code 和rust-analyzer)
[1.3.4 关于Rust安装的说明](#1.3.4 关于Rust安装的说明)
[1.3.5 课程导航和练习完成](#1.3.5 课程导航和练习完成)
[1.3.6 主要内容README.md:您的课程地图](#1.3.6 主要内容README.md:您的课程地图)
[1.3.7 了解主题文件夹](#1.3.7 了解主题文件夹)
[1.3.8 练习说明:特定主题README.md](#1.3.8 练习说明:特定主题README.md)
[1.3.9 编写代码:src/lib.rs文件](#1.3.9 编写代码:src/lib.rs文件)
[1.3.10 todo!()宏:你的起点](#1.3.10 todo!()宏:你的起点)
[1.3.11 获取解决方案](#1.3.11 获取解决方案)
[1.3.12 跟随视频示例进行练习](#1.3.12 跟随视频示例进行练习)
[1.3.13 运行代码示例](#1.3.13 运行代码示例)
[1.3.14 其他学习资源](#1.3.14 其他学习资源)
[1.3.15 后续步骤](#1.3.15 后续步骤)
第一章:课程介绍
1.1 ankr的介绍
Decentralized Infrastructure to Build and Earn in Web3
Ankr 是一个专注于 Web3 基础设施 和 去中心化云计算 的区块链平台。它的核心目标是为开发者、企业和普通用户提供便捷、可靠且去中心化的区块链节点服务、开发者工具和质押解决方案。
你可以将 Ankr 理解为 "Web3 的后端基础设施提供商"。它让访问和利用区块链技术变得像使用云服务一样简单。
以下是 Ankr 平台的主要组成部分和功能:
1.1.1 核心服务:节点基础设施
这是 Ankr 最知名和最基础的服务。
功能: 运行和维护全球分布的区块链全节点和验证节点。
解决的问题 : 对于开发者或项目方来说,自己搭建和维护一个区块链节点(如以太坊、BSC、Polygon等)成本高昂、技术复杂且耗时。Ankr 提供了节点托管服务,开发者只需通过其平台一键式地租用或连接到一个高性能的节点,无需自己运行硬件。
服务形式:
公共 RPC 服务: 免费的端点,让开发者可以轻松读取区块链数据、发送交易。
高级/专用节点服务: 付费的、具有更高性能、可靠性和隐私性的专属节点。
1.1.2 Web3 开发者工具
Ankr 提供了一系列工具来简化 Web3 应用的开发。
- Ankr Scan: 多链区块链浏览器,可以同时查看多条链的数据。
- SDK 与 API: 简化与区块链交互的编程接口。
- 质押 SDK: 方便其他平台(如钱包、交易所)集成质押功能。
1.1.3 质押 与流动性解决方案
Ankr 在权益证明(PoS)区块链的质押领域扮演重要角色。
-
传统 质押: 用户可以将代币(如 ETH、MATIC)通过 Ankr 委托给验证节点进行质押,并赚取奖励。
-
流动性 质押 : 这是 Ankr 的一大亮点。当用户质押资产(例如 ETH)时,Ankr 会1:1地铸造出对应的流动性质押代币。
-
例如 : 质押 1 个 ETH,你会收到 1 个
ankrETH(或其他链的对应代币,如ankrBNB)。 -
优势 : 你持有的
ankrETH本身会随着质押奖励而增值,同时你还可以将这个流动性质押代币用于 DeFi 生态中的其他活动,如借贷、提供流动性等,实现"一份资产,多重收益"。这解决了传统质押中资产被锁定、缺乏流动性的问题。
-
1.1.4 去中心化云计算与边缘计算
这是 Ankr 的长远愿景。它旨在利用全球闲置的计算资源(个人电脑、数据中心),创建一个去中心化的云计算市场。
- 提供者: 可以将自己闲置的算力出租给网络并获得报酬。
- 使用者: 可以以更低的成本租用这些分布式算力,用于需要大量计算的任务,如渲染、科学计算、AI 训练等。
1.1.5 ANKR 代币
ANKR 是其平台的原生功能型代币,主要用于:
- 支付服务费用: 支付节点服务、API 调用的费用。
- 治理: 代币持有者可以参与社区治理投票。
- 激励网络: 作为对节点提供者和质押者的奖励。
- 质押: 代币本身也可以进行质押以获取收益。
1。1.6 简单总结
- 对开发者而言 :Ankr 是便捷的节点即服务(NaaS)提供商和工具包,让他们能快速构建和连接 DApp。
- 对普通用户而言 :Ankr 是一个流动性 质押 平台,可以让你的 PoS 资产在赚取质押收益的同时保持流动性。
- 对愿景而言 :Ankr 致力于构建一个去中心化的云计算网络。
重要背景 :Ankr 成立于2017年,最初的想法是共享闲置计算资源,后来成功转型为现在的区块链基础设施领导者。它支持超过 40 条 主流区块链,是行业内最重要的基础设施提供商之一。
因此,当有人提到 Ankr 时,通常指的是这个为整个 Web3 生态系统提供"水、电、煤"基础服务的强大平台。
1.2 课程介绍
本课将作为我们 Rust 速成课程的介绍。我们将概述需要学习的内容、不涉及的主题、学习本课程的主要原因(尤其如果你对智能合约开发感兴趣),以及你入门所需的基础知识。
1.2.1 你将学到什么
本课程的目标是让您对 Rust 的几个关键领域有扎实的理解:
- Rust **基础到中级:**我们将涵盖 Rust 编程语言的基本概念,逐步提升您的技能,达到中级水平。
- **所有权和借用规则:**这些规则通常被认为是 Rust 编程语言中容易让人困惑的部分。我们将在课程早期就讲解这些关键概念。这种方法将为你提供充足的机会,让你在后续课程中编写 Rust 程序时应用这些规则。
- 异步/等待 编程: 在本课程的最后,我们将简要介绍 Rust 中使用异步编程
async。await
1.2.2 未涵盖的主题
为了使本速成课程重点突出、高效地达成主要目标,某些高级 Rust 主题将不会详细讲解。这些主题包括:
闭包(Closures)
智能指针(Smart pointers)
并发性(Concurrency)
线程(Threads)
通道(Channels)
互斥锁(Mutexes)
我们之所以决定不涉及这些主题,是因为我们的重点在于:学习足够的 Rust 知识,以便您能够自信地用 Rust 编写智能合约并审核用 Rust 编写的智能合约。我们的目标是,在本课程结束时,您将对 Rust 有扎实的理解,如果您选择进一步探索这些高级主题,这将大大降低您自学的难度。
1.2.3 为什么要学习这门课程?
本课程的主要目的是使你能够:
- 编写和审核基于 Rust 的智能合约。本课程旨在为您提供在主流区块链平台上进行智能合约开发和审核所需的 Rust 知识。您所获得的技能可直接应用于solana、Arbitrum生态系统。
1.2.4 前置条件
为了充分利用这门 Rust 速成课程,你应该具备一些基础知识并熟练使用某些工具。我们假设您已经熟悉以下内容,因为本课程不会讲解这些概念:
**基本编程概念:**你应该理解变量、函数、哈希表和类似编程结构等基本概念。
- 具备 Python、JavaScript、C、Java 或其他编程语言的经验者优先考虑。
**命令行基础:**我们将频繁使用终端编译 Rust 代码和执行测试。因此,您需要熟悉命令行的操作和使用。
- 请注意:本课程中的所有演示都将使用 Linux 终端进行。
使用集成开发环境 ( IDE **):**我们将使用代码编辑器演示代码示例和开发过程。假设您已熟悉 IDE 的使用。
- 请注意:本课程将使用 VS Code 作为主要 IDE。
好的,以上是先决条件。接下来,我们开始课程相关环境搭建。
1.3 课程设置
1.3.1 设置 Rust 速成课程环境
欢迎来到 Rust 速成课程!本课程将指导你完成学习课程内容和成功完成练习所需的初始设置。我们将介绍如何克隆必要的代码仓库以及如何配置开发环境。
1.3.2 克隆 GitHub 仓库
第一步是将课程资料下载到本地计算机上。所有练习、答案和示例都托管在 GitHub 代码库中。
1、导航至存储库: 打开您的网络浏览器并访问github.com/cyfrin/rust-crash-course
**注意:**访问上述网址时需要开通科学上网。
2、复制克隆 URL : 在仓库页面,点击绿色的"代码"按钮。您会看到通过 HTTPS、SSH 或 GitHub CLI 进行克隆的选项。视频演示使用的是 SSH,但如果您更熟悉 HTTPS 或尚未在 GitHub 上设置 SSH 密钥,则可以选择 HTTPS。
-
选择"SSH"选项卡(如果使用SSH),然后复制提供的URL(例如,https://github.com/Cyfrin/rust-crash-course.git)。
-
或者,选择"HTTPS"选项卡并复制该网址。

3、将代码库克隆到本地: 打开终端或命令提示符(win + R ,输入cmd即可进入命令提示符界面)。导航到要存储课程文件的目录。然后,执行以下命令,git clone并在其后加上您复制的 URL:
在git bash中执行如下克隆脚本:
bash
第一步:进入目录
cd C:\web3_Pragram_study\rust_study
第二步:克隆代码(前提条件是需要先安装好git软件,不然没法克隆)
git clone https://github.com/Cyfrin/rust-crash-course.git

(1)此命令会将存储库下载rust-crash-course到当前目录中同名的新文件夹中。文件中有如下的内容:

1.3.3 开发环境:VS Code 和 rust-analyzer
虽然你可以使用任何文本编辑器或集成开发环境 (IDE),但本课程将使用 Visual Studio Code (VS Code) 进行演示。为了获得最佳的 VS Code Rust 开发体验,我们强烈建议您安装相应的rust-analyzer扩展程序。
1、优点rust-analyzer:此扩展程序提供强大的功能,例如智能代码补全、实时错误检查、语法高亮、跳转到定义和重构工具,从而显著提高工作效率。
2、rust-analyzer在 VS Code 中安装:
打开 VS Code。
第一步:单击窗口侧边活动栏中的扩展图标(或按Ctrl+Shift+X),即可导航到扩展视图。
第二步:在搜索栏中输入"rust-analyzer"。
第三步:找到由"Rust 编程语言"发布的"rust-analyzer"扩展。
第四步:点击"安装"按钮。(如果已安装,此按钮可能显示"卸载"或齿轮图标以进行设置)。

虽然建议使用 VS Coderust-analyzer以获得最佳学习体验,但它们并非学习课程内容的必要条件。
注意:此步骤在后续的课程中会涉及,此处只做了解。
1.3.4 关于Rust安装的说明
请注意,本设置课程不包含 Rust 编程语言本身的安装。Rust 的安装过程,包括rustcRust 编译器和cargoRust 包管理器及构建工具,将在本课程的下一节视频课中详细讲解。
1.3.5 课程导航和练习完成
克隆rust-crash-course仓库后,你会发现一个结构化的环境,旨在引导你了解各种 Rust 概念。
**备注:**rustc 是 Rust 编译器,负责将 Rust 代码编译为可执行文件或库;cargo 是 Rust 包管理器和构建工具,用于创建、构建、运行项目以及管理依赖项。
1.3.6 主要内容README.md:您的课程地图
在克隆目录的根目录下rust-crash-course,你会找到一个README.md文件。该文件是整个课程的主要目录,列出了所有涵盖的主题,包括:
- 数据类型(标量类型、元组、数组、字符串、枚举、结构体、向量、哈希映射)
- 控制流
- 所有权
- 以及许多其他Rust的基本概念。
README.md文件中列出的每个主题都是一个超链接,点击即可跳转到存储库中该主题对应的文件夹。
1.3.7 了解主题文件夹
当您点击主页上的某个主题链接README.md(例如,"标量类型")时,您将被引导至相应的文件夹,其结构通常如下topics/<topic_name>/(例如,topics/scalar/)。
在每个主题文件夹内,您都会找到两个主要子文件夹:
-
exercises此文件夹包含Rust 项目文件,您将在其中编写代码以完成该主题的练习。 -
solutions此文件夹包含该主题所有练习的完整解答。如果您遇到难题或想比较自己的解题方法,可以参考这些解答。
exercises为了保持一致性,主文件夹和子文件夹内的文件结构solutions通常相同。
1.3.8 练习说明:特定主题README.md
每个主题exercises文件夹(例如,`<topic_name> topics/scalar/exercises/`)内都包含另一个README.md文件。这个嵌套文件README.md提供了针对该主题练习的详细说明。它通常包含以下内容:
-
对所提供的示例代码进行解释。
-
清楚地说明每个练习需要完成哪些任务。
-
如何运行示例代码片段。
例如,README.md输入内容topics/scalar/exercises/可能包含如下指令:
练习 1:修复函数
eq内部的表达式src/lib.rs。比较两个相同类型的输入char是否相等,并返回一个值bool。
1.3.9 编写代码:src/lib.rs文件
你在练习中编写的实际 Rust 代码通常位于某个主题 exercises/src/lib.rs 的文件中(例如:`topics/scalar/exercises/src/lib.rs`)。
1.3.10 todo!()宏:你的起点
当您打开一个练习文件(如 `topics/scalar/exercises/src/lib.rs`)时,您会发现其中使用了 `todo!()` 宏作为函数体的函数框架:
rust
// 来自练习文件的示例
pub fn eq () {
todo!(); // 你的实现写在这里
}
pub fn add () {
todo!(); // 你的实现写在这里
}
// 以及其他函数
宏todo!()是 Rust 的一种特殊结构。它是一个占位符,即使函数的逻辑尚未实现,Rust 项目也能成功编译。如果todo!()在运行时调用包含该宏的函数,程序将会崩溃(即 panic),并显示一条消息,表明该功能尚未实现。
完成练习:你需要将todo!()指定函数中的宏替换为你用 Rust 编写的、能够正确实现所需逻辑的代码。
1.3.11 获取解决方案
如果您在练习中遇到困难或想验证您的结果,请导航至相应主题的solutions文件夹,您会在文件中找到完整的代码src/lib.rs(例如,topics/scalar/solutions/src/lib.rs)。老师通常不会在课程中展示解决方案文件,以免剧透。
1.3.12 跟随视频示例进行练习
视频课程通常会使用具体的代码示例来演示 Rust 的概念。这些示例文件也包含在代码仓库中供您参考。您可以在examples每个主题exercises目录下的子文件夹中找到它们(例如,topics/scalar/exercises/examples/)。
例如,演示标量类型的示例代码可能位于topics/scalar/exercises/examples/scalar.rs:
bash
// 来自 topics/scalar/exercises/examples/scalar.rs 的示例内容
fn main () {
// 标量类型表示单个值
// 有符号整数
// 范围:-(2^(n-1)) 到 2^(n-1) - 1
let i0 : i8 = - 1 ;
let i1 : i16 = 2 ;
// ... 等等
}
1.3.13 运行代码示例
README.md每个主题exercises文件夹(例如)中的文件topics/scalar/exercises/README.md会提供运行相关示例所需的命令。请查找标题为"Example"或相似的部分。
要使用 Cargo(Rust 的构建系统和包管理器)运行示例,通常需要在终端中使用类似这样的命令,并确保您位于正确的目录中(例如topics/scalar/exercises/):
bash
cargo run --example <example_name> --release
例如,要运行上面提到的 scalar.rs 示例,可以使用如下命令:
bash
cargo run --example scalar --release
此命令指示 Cargo 编译并执行指定的示例文件。该--release标志会使用优化功能编译代码。
1.3.14 其他学习资源
README.md在主文件(位于仓库根目录)的底部rust-crash-course,你会找到一个"资源"部分。该部分包含一个精选的外部 Rust 学习资料链接列表

- Rust 编程语言书籍(通常称为"本书"): Rust 的官方、综合指南。
- rustlings:一套小型交互式练习,帮助你熟悉阅读和编写 Rust 代码。
- Rust 实例教学:通过一系列可运行的示例学习 Rust。
- Rust Playground:一个无需任何本地设置即可编写、编译和运行 Rust 代码的在线环境。
这些资源供您进一步探索和自学。在本速成课程的视频课程中,它们不会直接使用或提及,但可以显著加深您对 Rust 的理解。
1.3.15 后续步骤
环境准备就绪后,下一个关键步骤是安装 Rust 编程语言本身。本课程的后续视频课程将详细讲解 Rust 的安装过程。请务必在尝试编译或运行任何练习或示例之前完成安装。