介紹#
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,分類是算法與數據結構。