StarknetAstro

StarknetAstro

(BootCamp1)開羅設置

image

注意!由於 Cairo 語言變化,此教程已經過期。1.10 語法請參考此文 https://starknetastro.xlog.app/Starknet_Shanghai_Workshop_DAY1#

學習資料推薦:

最小安裝選項:

系統:curl,git
IDE:VSCode 或任何你喜歡的編輯器(唯獨不要使用 windows 自帶的 notepad)
MacOS:homebrew

可選項:

如果你想要嘗試將 Cairo 合約部署到 testnet 和 mainnet 上,你還需要安裝以下支持
賬戶抽象錢包:Braavos 或 Argent X
Cairo 0.x 的 CLI 工具。

安裝 Rust#

建議通過 rustup (docs) 來安裝 rust。rustup 可以切換 rust 版本和升級。

~ $ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh  

之後重啟命令行終端即可驗證是否安裝成功,或者在終端內執行以下命令:

~ $ source "$HOME/.cargo/env"  

驗證版本

~ $ rustup --version  
rustup 1.25.2 (17db695f1 2023-02-01)  

如果你沒有安裝 curl,也可以在此處下載 rust 的各種系統的安裝包

https://forge.rust-lang.org/infra/other-installation-methods.html#rustup

安裝 Cairo#

在終端中輸入如下命令,從 Github 上 Clone 最新的 Cairo repo

git clone https://github.com/starkware-libs/cairo/ ./cairo  

注意,alpha 的一些版本可能是 starknet 不支持的,所以我們需要指定特定的 tag,現階段 starknet 支持的穩定版本是 v1.0.0-rc0。

cd ./cairo  
git checkout tags/v1.0.0-rc0  

之後我們就可以 build 整個 Cairo 了

cargo build --all --release  

測試是否成功

cargo run --bin starknet-compile --help  

或者

./target/release/starknet-compile --version  

執行 .cairo 文件#

讓我們先編寫一個測試用 Cairo 文件。在當前目錄下創建一個新的文件。
文件名為:hellostarknetastro.cairo

內容為:

use debug::PrintTrait;  
fn main() {  
    'Hello, StarknetAstro!'.print();  
}  

執行如下命令:

cargo run --bin cairo-run -- hellostarknetastro.cairo  

或者使用上面編譯好的 relese 中的來進行執行
target/release/cairo-run hellostarknetastro.cairo

這時,終端裡會輸出類似以下內容

[DEBUG]  Hello, StarknetAstro!  (raw: 105807143882116536446217580363080108601441594273569)  

編譯 .cairo 文件#

Cairo 自帶了一些範例,我們可以用如下命令編譯:
首先我們在 cairo 根目錄下創建一個文件夾用來保存輸出

mkdir output  

之後使用 cargo 進行編譯

cargo run --bin cairo-compile examples/fib.cairo output/fib.json  

或者使用

target/release/cairo-compile examples/fib.cairo output/fib.json  

這裡我們輸出的其實是中間代碼, Cairo 稱之為 Sierra。
如果想輸出可以直接在 Cairo-VM 上執行的文件,我們需要進一步把 Sierra 編譯稱 Cairo 匯編(casm)文件。

cargo run --bin sierra-compile -- output/fib.json output/fib.casm  

或者

target/release/sierra-compile -- output/fib.json output/fib.casm  

當然,一般來說,只有需要部署到 starknet 上時才需要編譯 Cairo 合約到 casm。無特殊需求我們一般不需要編譯單純的 Cairo 代碼到 casm。

安裝 Python#

舊 Cairo-CLI 需要的是 python 3.9 版本。為了避免和已經安裝的衝突,和 rust 一樣,我們推薦使用 python 版本管理工具 pyenv 來安裝 python。

MacOS:

brew update  
brew install pyenv  

或者

curl https://pyenv.run | bash  

之後

pyenv install 3.9  
pyenv global 3.9  

Linux:

curl https://pyenv.run | bash  

之後

pyenv install 3.9  
pyenv global 3.9  

驗證是否安裝成功

python3.9 --version  

或者直接簡單的安裝一個 py3.9 版本
https://www.python.org/downloads/release/python-3915/

可選內容:安裝 Cairo 0.x CLI#

此 CLI 用於部署 starknet 合約。我們需要先安裝 GMP 環境支持

linux

sudo apt install -y libgmp3-dev  

MACOS

brew install gmp  

之後我推薦創建一個虛擬環境。讓我們先創建一個 test 文件夾:

mkdir -p starknetastro/camp1/  
cd starknetastro/camp1/  

接著創建一個 python 虛擬環境:

python3.9 -m venv  venv  

啟動虛擬環境:

source venv/bin/activate  

此時你應該可以看到終端的前面帶上了個(venv)。讓在虛擬環境中升級 PIP

(venv)camp1 $ pip install --upgrade pip  

安裝 CLI
Linux:

(venv) camp1 $ pip install cairo-lang  

MACOS (M1~芯片)

(venv) camp1 $ CFLAGS=-I`brew --prefix gmp`/include LDFLAGS=-L`brew --prefix gmp`/lib pip install cairo-lang  

檢驗是否安裝完成

(venv) camp1 $ starknet --version  

輸出:

starknet 0.11.1  
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。