# 部署 Starknet Cairo 1 合约 **Published by:** [0xpowpos.eth](https://paragraph.com/@0xpowpos/) **Published on:** 2023-03-28 **URL:** https://paragraph.com/@0xpowpos/starknet-cairo-1 ## Content 前言Starknet 是一种基于 zk rollup 的 L2 解决方案,非 EVM 兼容,使用自己开发的 Cairo 语言来编写链上的智能合约,而非 Solidity。目前 Cairo 1.0 已经发布,基于 rust 语言实现。之前的版本是基于 python 语言,属于两个独立的代码仓库。Cairo one 编译器安装本地安装 Rusthttps://www.rust-lang.org/zh-CN/tools/install本地安装 Cairo one 编译器git clone https://github.com/starkware-libs/cairo/ cd cairo git checkout 9c190561ce1e8323665857f1a77082925c817b4c cargo build --all --release 本地安装 Cairo one 编译器Starknet CLI 安装注:目前这一部分还在旧版的代码仓库中。创建 python 虚拟环境python3.9 -m venv ~/cairo_venv_v11 source ~/cairo_venv_v11/bin/activate 也可以采用其他方式,比如 conda 之类的。若之前已经安装,需要卸载pip3 uninstall cairo-lang 下载最新的代码包(cairo-lang-0.11.0.1.zip)curl https://github.com/starkware-libs/cairo-lang/releases/download/v0.11.0.1/cairo-lang-0.11.0.1.zip 本地安装pip3 install cairo-lang-0.11.0.1.zip 验证starknet --version 导入依赖cp cairo/target/release/starknet-sierra-compile ~/cairo_venv_v11/lib/python3.9/site-packages/starkware/starknet/compiler/v1/bin/starknet-sierra-compile 编译合约下载 demo 合约cd .. git clone https://github.com/starknet-edu/deploy-cairo1-demo mv deploy-cairo1-demo/hello_starknet.cairo . 编译// 切换至 cairo one 编译器所在目录 cd cairo cargo run --bin starknet-compile -- ../hello_starknet.cairo ../hello_starknet.json --replace-ids 编译后得到 hello_starknet.json 文件。创建测试账号设置环境export STARKNET_NETWORK=alpha-goerli export STARKNET_WALLET=starkware.starknet.wallets.open_zeppelin.OpenZeppelinAccount 创建账号starknet new_account --account <your account name> 领水去官方网站 StarkNet Faucet 领水。部署账号注:每一个 starknet 账户,都是一个合约,因此创建完之后需要部署。starknet deploy_account --account <your account name> 声明合约cd .. starknet declare --contract hello_starknet.json --account <your account name> 声明后得到 class hash 以及交易 hash 值。部署合约starknet deploy --class_hash <class_hash> --account <your account name> 部署后得到合约地址以及交易 hash 值。 至此,大功告成。总结后续 Cairo One 编译器安装与 Starknet CLI 安装应该会融为一体,提供诸如 starknet compile 命令,促使更好的开发体验。Starknet 的账户使用的是 AA(Account Abstraction) 账户,每一个账户都对应一个合约。部署合约之前,需要先进行一步声明。参考https://github.com/starknet-edu/deploy-cairo1-demo ## Publication Information - [0xpowpos.eth](https://paragraph.com/@0xpowpos/): Publication homepage - [All Posts](https://paragraph.com/@0xpowpos/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@0xpowpos): Subscribe to updates