用途:该技能用于在 Starknet 上创建一个使用 OpenZeppelin Contracts for Cairo 的 Cairo 智能合约项目,适用于新建 Scarb/Starknet 工程或为项目引入 OpenZeppelin 合约组件等场景。
主要能力:
- 项目脚手架:通过 Starkup 安装工具链,并用 Scarb 创建预配置 snforge 测试的 Starknet 项目。
- OpenZeppelin 依赖配置:在 Scarb.toml 中声明依赖,可选用伞包(openzeppelin)或单个包(更快的构建,仅编译所用部分)。
- 导入约定:伞包以 openzeppelin:: 为根,单独包以包名为根。
- 组件集成:通过 component! 宏、embedded impls 与 substorage 集成组件。
使用方式: 安装工具链并创建项目: curl --proto '=https' --tlsv1.2 -sSf https://sh.starkup.sh | sh scarb new my_project --test-runner=starknet-foundry
添加依赖前先从 https://docs.openzeppelin.com/contracts-cairo 查询当前版本。伞包写法: [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 独立版本化,需查文档确认;其余包共享同一版本。
导入示例:单独包使用包名作为根,如 use openzeppelin_token::erc20::{ERC20Component, ERC20HooksEmptyImpl};;伞包使用 openzeppelin:: 作为根,如 use openzeppelin::token::erc20::{ERC20Component, ERC20HooksEmptyImpl};。组件通过 component!(path: ERC20Component, storage: erc20, event: ERC20Event); 等方式集成,配合 embedded impls 与 substorage。
适用场景:需要快速搭建 Starknet Cairo 合约工程、配置 OpenZeppelin 合约库、引入 ERC20 等标准组件时。
限制:资料未提供具体版本号、收费信息或更多完整代码示例;版本需以官方文档为准。