介绍#
Node Guardians 是一个学习 Solidity 和 Cairo 的网站,在华丽的游戏界面后面是优秀的课程设计,强烈建议学习。本系列从头介绍怎么一步一步完成课程。
打开网站 https://nodeguardians.io/dev-hub?s=devhub-campaigns 能看到如下界面,每个卡片就是一个主题的任务,完成任务即可获得奖励。
Build Tutorial: Cairo#
我们第一个任务从 Setting Up: Cairo 开始,本任务目的是让你设置好 Cairo 开发环境和了解如何提交任务。有 Build Tutorial: Cairo 和 CTF Tutorial: Cairo。让我们从 Build Tutorial: Cairo 开始,点击右下角的 Start Quest。
首先是安装 git 和 npm,如果是 MacOS,输入 brew install node
和 brew install git
就能完成安装。(国内遇到网络问题可使用brew 镜像) Windows 自行搜索安装方式。
安装完成后,输入 git -v && node -v
后如果能显示版本就继续。node 版本应该在 16 以后。
到 GitHub 主页创建一个名为ng-questplay的私有 (Private) 代码库。
然后点击链接添加 GitHub Application。该程序用于验证未来上传解答代码是否能通过测试。选择安装到刚创建的 ng-questplay 就行,其他库不需要。
克隆官方代码库并 link 到你的私有仓库。
git clone [email protected]:Nodeguardians/ng-questplay.git
cd ng-questplay
git remote set-url origin [email protected]:{GITHUB_USERNAME}/ng-questplay.git
git push -u origin main
在 ng-questplay 文件夹,运行下面指令安装必要的依赖,然后进行第一次提交 (commit)
npm run start-adventure
git add .
git commit -m "Install initial dependencies"
进行 Cairo 开发需要安装 scrab,它是 cairo 的打包和包管理工具,安装最新版本即可。安装指引链接
接下来设置 GitHub Token 用于下载任务。
- 点 GitHub 右上角头像,进入 settings 页面。
- 在左侧边栏中,点击 Developer Settings (最后一个选项) > Personal Access Tokens。
- 生成一个新的 Token (classic)(例如命名为 “Node Guardians Questplay”)。
- 给予该 Token 公共仓库访问权限。
- 生成该 Token。
复制 Token 到项目文件夹的.env 里,命名为 GITHUB_TOKEN = "ghp_..."
运行quest find build-tutorial-cairo
下载第一个任务。
然后 cd ./campaigns/starting-cairo/build-tutorial-cairo
进入任务文件夹。
第一个任务是 src/hello.cairo 里的 hello_guardian () 需要返回 'Hello Guardian'
我不会给出答案,只提供思路。Cairo 使用的是 rust 的语法,这儿有 2 个知识点:
输入 quest test 3
,如果代码没有报错,本地测试就完成了。如果有错误,你需要根据报错修改代码。
接下里是提交答案,建议使用自动提交(Automated Submission)。需要先 commit 你的代码,可以任意输入提交说明,例如
git add .
git commit -m "complete quest 3"
然后输入quest submit
,等待成功后,回到页面点击 Verify 即可。
未来有的任务会有隐藏的测试用例,本地完全通过测试也不一定完成了任务。
提交完成后会有个 Summary 总结,你可以回顾本任务学习到的重点。
获得的经验会提高账号等级和全球排名,黄金用于升级角色(没啥用)。
CTF Tutorial: Cairo#
接下来是 CTF 任务,CTF 任务会部署一个合约到测试网,你需要去和该合约交互,修改合约状态以达成任务目标。手段不限于区块浏览器交互,通过 cli 发送交易,部署新合约去调用。
在完成任务前,建议学习如何导出钱包私钥,创建合约并交互。可以参考官方文档 https://docs.starknet.io/documentation/quick_start/environment_setup/
或者中文视频教程
点击左下角的deploy sand devil,连接钱包,切换到 Testnet,发送交易后会显示部署合约的地址。
该任务你需要先知道 count 的值,然后调用 slay,参数和 count 一样相减就是 0 了。最简单的是通过浏览器访问你部署的地址,通过最右边的read contract和write contract去达成任务。
count 设置成 0 后,点击Verify就完成任务了。
Next#
下一篇开始深入 Cairo,完成难度 2 的 Thinking in Cairo,分类是算法与数据结构。