mcpField
S
setup-stellar-contracts

setup-stellar-contracts

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

setup-stellar-contracts について

Stellar の Soroban スマートコントラクト開発を始める人向けのセットアップスキルです。Rust と CLI の導入、OpenZeppelin 依存関係、基本パターン、ビルドとテストのコマンドを扱います。

主な機能

  1. 01Rust と Soroban ターゲットの設定
  2. 02Stellar CLI プロジェクトの初期化
  3. 03OpenZeppelin 依存関係の設定
  4. 04コントラクトのパターンとインポート
  5. 05WASM ビルドと Cargo テスト

活用シーン

  1. 01新しい Soroban ワークスペースの準備
  2. 02コントラクトへの OpenZeppelin crate の追加
  3. 03コントラクトの WASM ビルド
  4. 04プロジェクト内テストの実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/openzeppelin/openzeppelin-skills --skill setup-stellar-contracts

インストール後、Claude Code で/setup-stellar-contractsを入力して読み込まれたか確認します。

詳細

Stellar のセットアップ

Soroban/Stellar の開発環境のセットアップ

Rust ツールチェーン(v1.84.0 以降)と Soroban WASM ターゲットをインストールします。

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add wasm32v1-none

Stellar CLI をインストールします。

curl -fsSL https://github.com/stellar/stellar-cli/raw/main/install.sh | sh

新しい Soroban プロジェクトを作成します。

stellar contract init my_project

これにより、contracts/*/ にコントラクトが配置された Cargo ワークスペースが作成されます。

OpenZeppelin の依存関係

追加する前に、stellar-contracts リポジトリで最新バージョンを確認してください。ライブラリは活発に開発されているため、= を使って正確なバージョンを固定してください。

OpenZeppelin のクレートをルートの Cargo.toml の [workspace.dependencies] に追加します。

[workspace.dependencies]
stellar-tokens = "=<VERSION>"
stellar-access = "=<VERSION>"
stellar-contract-utils = "=<VERSION>"
stellar-macros = "=<VERSION>"

続いて、各コントラクトの contracts/*/Cargo.toml で参照します。

[dependencies]
soroban-sdk = { workspace = true }
stellar-tokens = { workspace = true }
stellar-access = { workspace = true }
stellar-contract-utils = { workspace = true }
stellar-macros = { workspace = true }

利用可能なクレート:stellar-access、stellar-accounts、stellar-contract-utils、stellar-fee-abstraction、stellar-governance、stellar-macros、stellar-tokens。

コントラクトで実際に使用するクレートだけを追加してください。stellar-macros は proc-macro 属性(例:#[when_not_paused]、#[only_owner]、#[derive(Upgradeable)])を提供しており、ほとんどのコントラクトで必要です。

コードパターン

インポートでは、クレートのルートにアンダースコアを使用します(Rust の慣例)。

use stellar_tokens::fungible::{Base, FungibleToken};
use stellar_tokens::fungible::burnable::FungibleBurnable;
use stellar_access::ownable::Ownable;
use stellar_contract_utils::pausable::Pausable;
use stellar_macros::when_not_paused;

コントラクトでは、構造体に #[contract] を、impl ブロックに #[contractimpl] を使用します(soroban_sdk から提供)。

use soroban_sdk::{contract, contractimpl, Env};

#[contract]
pub struct MyToken;

#[contractimpl]
impl MyToken {
    // Implement trait methods here
}

トレイトの実装には、トレイトごとに個別の impl ブロックを使用します(例:FungibleToken、Pausable)。#[when_not_paused] や #[only_owner] のようなガードマクロは、個々の関数に付与します。

プラットフォームに関する注意事項

  • Stellar では読み取り操作は無料です。 書き込みを最小限にするよう最適化してください。読み取りと計算のコストは低いため、マイクロ最適化よりも、明快で読みやすいコードを優先してください。
  • インスタンスストレージの TTL 延長は開発者の責任です。 OpenZeppelin ライブラリは他のストレージエントリの TTL 延長を処理しますが、期限切れを防ぐため、コントラクト自身の instance ストレージエントリは延長する必要があります。

ビルドとテスト

コントラクトを WASM にビルドします。

stellar contract build

これは cargo build --target wasm32v1-none --release のショートカットです。出力は target/wasm32v1-none/release/ に生成されます。

テストを実行します。

cargo test

クレート内のユニットテストでは、soroban-sdk の testutils が自動的に有効になります。

コメント