script (⏱,💰)

script (⏱,💰)

NG#0 - Cairo入门

介绍#

Node Guardians 是一个学习 Solidity 和 Cairo 的网站,在华丽的游戏界面后面是优秀的课程设计,强烈建议学习。本系列从头介绍怎么一步一步完成课程。

打开网站 https://nodeguardians.io/dev-hub?s=devhub-campaigns 能看到如下界面,每个卡片就是一个主题的任务,完成任务即可获得奖励。

main page

Build Tutorial: Cairo#

我们第一个任务从 Setting Up: Cairo 开始,本任务目的是让你设置好 Cairo 开发环境和了解如何提交任务。有 Build Tutorial: Cairo 和 CTF Tutorial: Cairo。让我们从 Build Tutorial: Cairo 开始,点击右下角的 Start Quest

build tutorial

首先是安装 git 和 npm,如果是 MacOS,输入 brew install nodebrew install git就能完成安装。(国内遇到网络问题可使用brew 镜像) Windows 自行搜索安装方式。

安装完成后,输入 git -v && node -v后如果能显示版本就继续。node 版本应该在 16 以后。
git & node version

到 GitHub 主页创建一个名为ng-questplay的私有 (Private) 代码库。

然后点击链接添加 GitHub Application。该程序用于验证未来上传解答代码是否能通过测试。选择安装到刚创建的 ng-questplay 就行,其他库不需要。

add github app

克隆官方代码库并 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 用于下载任务。

  1. 点 GitHub 右上角头像,进入 settings 页面。
  2. 在左侧边栏中,点击 Developer Settings (最后一个选项) > Personal Access Tokens。
  3. 生成一个新的 Token (classic)(例如命名为 “Node Guardians Questplay”)。
  4. 给予该 Token 公共仓库访问权限。
  5. 生成该 Token。

Public permission

GitHub Token

复制 Token 到项目文件夹的.env 里,命名为 GITHUB_TOKEN = "ghp_..."

env Token

运行quest find build-tutorial-cairo下载第一个任务。

download quest

然后 cd ./campaigns/starting-cairo/build-tutorial-cairo 进入任务文件夹。

第一个任务是 src/hello.cairo 里的 hello_guardian () 需要返回 'Hello Guardian'
hello world

我不会给出答案,只提供思路。Cairo 使用的是 rust 的语法,这儿有 2 个知识点:

  1. function 返回值,参考资料
  2. cairo 的 string 类型,参考资料

输入 quest test 3,如果代码没有报错,本地测试就完成了。如果有错误,你需要根据报错修改代码。

接下里是提交答案,建议使用自动提交(Automated Submission)。需要先 commit 你的代码,可以任意输入提交说明,例如

git add .
git commit -m "complete quest 3"

然后输入quest submit,等待成功后,回到页面点击 Verify 即可。
未来有的任务会有隐藏的测试用例,本地完全通过测试也不一定完成了任务。
提交完成后会有个 Summary 总结,你可以回顾本任务学习到的重点。

summary

获得的经验会提高账号等级和全球排名,黄金用于升级角色(没啥用)。

CTF Tutorial: Cairo#

接下来是 CTF 任务,CTF 任务会部署一个合约到测试网,你需要去和该合约交互,修改合约状态以达成任务目标。手段不限于区块浏览器交互,通过 cli 发送交易,部署新合约去调用。

在完成任务前,建议学习如何导出钱包私钥,创建合约并交互。可以参考官方文档 https://docs.starknet.io/documentation/quick_start/environment_setup/
或者中文视频教程

点击左下角的deploy sand devil,连接钱包,切换到 Testnet,发送交易后会显示部署合约的地址。

wallet

该任务你需要先知道 count 的值,然后调用 slay,参数和 count 一样相减就是 0 了。最简单的是通过浏览器访问你部署的地址,通过最右边的read contractwrite contract去达成任务。

voyager

count 设置成 0 后,点击Verify就完成任务了。

complete

Next#

下一篇开始深入 Cairo,完成难度 2 的 Thinking in Cairo,分类是算法与数据结构。

Next

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。