StarknetAstro

StarknetAstro

(BootCamp1)Cairo Setup

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