← 返回
开发者工具 中文

Setup Stylus Contracts

Set up a Stylus smart contract project with OpenZeppelin Contracts for Stylus on Arbitrum. Use when users need to: (1) install Rust toolchain and WASM target...
在 Arbitrum 上搭建集成 OpenZeppelin 合约的 Stylus 智能合约项目。适用于用户需要:(1)安装 Rust 工具链和 WASM 目标……
samledger67-dotcom
开发者工具 clawhub v1.0.1 2 版本 100000 Key: 无需
★ 0
Stars
📥 513
下载
💾 5
安装
2
版本
#latest

概述

Stylus Setup

Rust & Cargo Stylus Setup

Install the Rust toolchain and WASM target:

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

Install the Cargo Stylus CLI:

cargo install --force cargo-stylus

Create a new Stylus project:

cargo stylus new my_project

> A Rust nightly toolchain is required. The project should include a rust-toolchain.toml specifying the nightly channel, rust-src component, and wasm32-unknown-unknown target. Check the rust-contracts-stylus repo for the current recommended nightly date.

Adding OpenZeppelin Dependencies

Look up the current version from crates.io/crates/openzeppelin-stylus before adding. Add to Cargo.toml:

[dependencies]
openzeppelin-stylus = "=<VERSION>"

Enable the export-abi feature flag for ABI generation:

[features]
export-abi = ["openzeppelin-stylus/export-abi"]

The crate must be compiled as both a library and a cdylib:

[lib]
crate-type = ["lib", "cdylib"]

Import Conventions

Imports use openzeppelin_stylus (underscores) as the crate root:

use openzeppelin_stylus::token::erc20::{Erc20, IErc20};
use openzeppelin_stylus::access::ownable::{Ownable, IOwnable};
use openzeppelin_stylus::utils::pausable::{Pausable, IPausable};
use openzeppelin_stylus::utils::introspection::erc165::IErc165;

Contracts use #[storage] and #[entrypoint] on the main struct, embedding OpenZeppelin components as fields:

#[entrypoint]
#[storage]
struct MyToken {
    erc20: Erc20,
    ownable: Ownable,
}

Public methods are exposed with #[public] and #[implements(...)]. The canonical pattern uses an empty impl block for dispatch registration, plus separate trait impl blocks:

#[public]
#[implements(IErc20<Error = erc20::Error>, IOwnable<Error = ownable::Error>)]
impl MyToken {}

#[public]
impl IErc20 for MyToken {
    type Error = erc20::Error;
    // delegate to self.erc20 ...
}

Top-level modules: access, finance, proxy, token, utils.

Build & Deploy Basics

Validate the contract compiles to valid Stylus WASM:

cargo stylus check

Export the Solidity ABI:

cargo stylus export-abi

Deploy to an Arbitrum Stylus endpoint:

cargo stylus deploy --endpoint="<RPC_URL>" --private-key-path="<KEY_FILE>"

> Private key security: Never use --private-key with a raw key on the command line — it will be visible in shell history and process lists. Always use --private-key-path with a file that has restrictive permissions (chmod 600), or use a hardware wallet / keystore.

版本历史

共 2 个版本

  • v1.0.1 当前
    2026-03-30 05:41 安全 安全
  • v1.0.0
    2026-03-20 03:51

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

developer-tools

CodeConductor.ai

larsonreever
AI驱动平台,提供快速全栈开发、智能体、工作流自动化及低代码AI集成的可扩展产品创建。
★ 68 📥 180,450
data-analysis

Financial Analysis Agent

samledger67-dotcom
面向AI智能体的财务分析技能,涵盖差异分析、现金流预测、月结自动化、CFO评述生成及13周现金流等内容。
★ 2 📥 1,600
developer-tools

Gog

steipete
Google Workspace 命令行工具,支持 Gmail、日历、云端硬盘、通讯录、表格和文档。
★ 921 📥 185,920