mcpField
S
setup-cairo-contracts

setup-cairo-contracts

github.com/openzeppelin開発219205 回インストール2 日前に更新
リポジトリ

setup-cairo-contracts について

OpenZeppelin Contracts for Cairoを使う開発者向けに、CairoとStarknetのコントラクトプロジェクトの作成方法を案内します。雛形作成、依存関係の選択、包括パッケージと個別パッケージのインポート方法を扱います。

主な機能

  1. 01snforge設定済みStarknetプロジェクトの作成
  2. 02OpenZeppelin依存関係の追加
  3. 03包括パッケージと個別パッケージの選択
  4. 04パッケージ別のインポートパス適用

活用シーン

  1. 01Starknetコントラクトプロジェクトの開始
  2. 02Scarb.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

これにより、snforge によるテストがあらかじめ設定された Starknet プロジェクト一式が作成されます。

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>;

コメント