Skip to main content

setup-stellar-contracts

Set up a Stellar/Soroban smart contract project with OpenZeppelin Contracts for Stellar. Use when users need to: (1) install Stellar CLI and Rust toolchain for Soroban, (2) create a new Soroban project, (3) add OpenZeppelin Stellar dependencies to Cargo.toml, or (4) understand Soroban import conventions and contract patterns for OpenZeppelin.

来源信息

仓库
OpenZeppelin/openzeppelin-skills
最近来源活动
2026年3月4日 18:15
检测到的 SKILL.md 语言
英语
星标
214
分支
33

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
setup-stellar-contracts
description
Set up a Stellar/Soroban smart contract project with OpenZeppelin Contracts for Stellar. Use when users need to: (1) install Stellar CLI and Rust toolchain for Soroban, (2) create a new Soroban project, (3) add OpenZeppelin Stellar dependencies to Cargo.toml, or (4) understand Soroban import conventions and contract patterns for OpenZeppelin.
license
AGPL-3.0-only
metadata
{"author":"OpenZeppelin"}
# Stellar Setup ## Soroban/Stellar Development Setup Install the Rust toolchain (v1.84.0+) and the Soroban WASM target: ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup target add wasm32v1-none ``` Install the Stellar CLI: ```bash curl -fsSL https://github.com/stellar/stellar-cli/raw/main/install.sh | sh ``` Create a new Soroban project: ```bash stellar contract init my_project ``` This creates a Cargo workspace with contracts in `contracts/*/`. ## OpenZeppelin Dependencies Look up the current version from the [stellar-contracts repo](https://github.com/OpenZeppelin/stellar-contracts) before adding. Pin exact versions with `=` as the library is under active development. Add OpenZeppelin crates to the **root** `Cargo.toml` under `[workspace.dependencies]`: ```toml [workspace.dependencies] stellar-tokens = "=<VERSION>" stellar-access = "=<VERSION>" stellar-contract-utils = "=<VERSION>" stellar-macros = "=<VERSION>" ``` Then reference them in the **per-contract** `contracts/*/Cargo.toml`: ```toml [dependencies] soroban-sdk = { workspace = true } stellar-tokens = { workspace = true } stellar-access = { workspace = true } stellar-contract-utils = { workspace = true } stellar-macros = { workspace = true } ``` Available crates: `stellar-access`, `stellar-accounts`, `stellar-contract-utils`, `stellar-fee-abstraction`, `stellar-governance`, `stellar-macros`, `stellar-tokens`. > Only add the crates the contract actually uses. `stellar-macros` provides proc-macro attributes (for example, `#[when_not_paused]`, `#[only_owner]`, `#[derive(Upgradeable)]`) and is needed in most contracts. ## Code Patterns Imports use underscores as the crate root (Rust convention): ```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; ``` Contracts use `#[contract]` on the struct and `#[contractimpl]` on the impl block (from `soroban_sdk`): ```rust use soroban_sdk::{contract, contractimpl, Env}; #[contract] pub struct MyToken; #[contractimpl] impl MyToken { // Implement trait methods here } ``` Trait implementations are separate `impl` blocks per trait (e.g., `FungibleToken`, `Pausable`). Guard macros like `#[when_not_paused]` and `#[only_owner]` decorate individual functions. ## Platform Notes - **Read operations are free in Stellar.** Optimize for minimizing writes; reads and computation are cheap. Prefer clean, readable code over micro-optimizations. - **Instance storage TTL extension is the developer's responsibility.** The OpenZeppelin library handles TTL extension for other storage entries, but contracts must extend their own `instance` storage entries to prevent expiration. ## Build & Test Build the contract to WASM: ```bash stellar contract build ``` This is a shortcut for `cargo build --target wasm32v1-none --release`. Output appears in `target/wasm32v1-none/release/`. Run tests: ```bash cargo test ``` > `soroban-sdk` testutils are automatically enabled for in-crate unit tests.
在 GitHub 查看