关于 setup-cairo-contracts
面向使用 OpenZeppelin Contracts for Cairo 的开发者,指导创建 Cairo 和 Starknet 合约项目,涵盖项目脚手架、依赖选择与导入方式,包括总包和独立包。
主要功能
- 01创建预配置 snforge 的 Starknet 项目
- 02添加 OpenZeppelin 依赖
- 03选择总包或独立包
- 04按包使用对应导入路径
适用场景
- 01启动 Starknet 合约项目
- 02在 Scarb.toml 中添加 OpenZeppelin 组件
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ openzeppelin/ openzeppelin-skills --skill setup-cairo-contracts安装后在 Claude Code 中输入/setup-cairo-contracts确认已加载。
详细介绍
Cairo 安装
项目脚手架
安装工具链并创建项目:
curl --proto '=https' --tlsv1.2 -sSf https://sh.starkup.sh | sh
scarb new my_project --test-runner=starknet-foundry
这会搭建一个完整的 Starknet 项目,并预先配置好 snforge 测试。
OpenZeppelin 依赖项
添加前,请从 https://docs.openzeppelin.com/contracts-cairo 查询当前版本。将其添加到 Scarb.toml:
完整库(汇总包):
[dependencies]
openzeppelin = "<VERSION>"
单独的包(构建更快——只编译你使用的内容):
[dependencies]
openzeppelin_token = "<VERSION>"
openzeppelin_access = "<VERSION>"
可用的单独包:openzeppelin_access、openzeppelin_account、openzeppelin_finance、openzeppelin_governance、openzeppelin_interfaces、openzeppelin_introspection、openzeppelin_merkle_tree、openzeppelin_presets、openzeppelin_security、openzeppelin_token、openzeppelin_upgrades、openzeppelin_utils。
openzeppelin_interfaces和openzeppelin_utils使用独立的版本号。请查阅文档以了解它们的具体版本。其他所有包使用相同的版本。
导入约定
导入路径取决于声明的依赖项:
- 汇总包(
openzeppelin = "..."):使用openzeppelin::作为根路径 - 单独的包(
openzeppelin_token = "..."):使用包名作为根路径
// Individual packages
use openzeppelin_token::erc20::{ERC20Component, ERC20HooksEmptyImpl};
use openzeppelin_access::ownable::OwnableComponent;
use openzeppelin_upgrades::UpgradeableComponent;
// Umbrella package equivalents
use openzeppelin::token::erc20::{ERC20Component, ERC20HooksEmptyImpl};
use openzeppelin::access::ownable::OwnableComponent;
use openzeppelin::upgrades::UpgradeableComponent;
组件通过 component! 宏、嵌入式 impl 和子存储集成:
component!(path: ERC20Component, storage: erc20, event: ERC20Event);
#[abi(embed_v0)]
impl ERC20MixinImpl = ERC20Component::ERC20MixinImpl<ContractState>;
impl ERC20InternalImpl = ERC20Component::InternalImpl<ContractState>;
评论
支持 Markdown