用途:指导用 Rust 编写 Stellar 智能合约。Stellar 智能合约曾用品牌名“Soroban”,平台名已停用,但 Rust SDK(soroban-sdk)及部分工具名保留该前缀。本文件覆盖环境搭建与核心工作流,深入内容分拆到配套文件:development.md(存储、鉴权、跨合约调用、事件、错误、升级、工厂、排障)、testing.md(单元、集成、模糊、属性、分叉、变异测试)、security.md(安全审查、漏洞类别、清单、审计准备、工具)。
适用时机:编写 Stellar Rust 合约、搭建任意层级合约测试、审查合约安全问题、设计可升级合约/工厂/治理/DeFi 原语、调试合约相关错误(鉴权、存储、归档、资源限制)。
平台约束:合约编译为 WebAssembly 并在沙箱宿主中运行;必须 #![no_std],使用 soroban_sdk 类型(String、Vec、Map、Symbol)而非标准库;编译后合约大小上限 64KB;Symbol 限 32 字符,symbol_short!() 最多 9 字符;存储按租期计费,每个条目有 TTL 且可能被归档;无 delegatecall,无经典跨合约重入。
用法:用 stellar contract init my-contract 生成 Cargo 工作区;Cargo.toml 中 crate-type 设为 cdylib,依赖 soroban-sdk(示例版本 25.0.1,最新版见 crates.io),测试特性用 testutils,release profile 需开启 opt-level="z"、overflow-checks、lto 等以控制体积。合约结构包含 contracttype 状态键、contracterror 错误、contract 与 contractimpl,构造函数须命名为 __constructor 且返回 (),部署时原子执行一次,升级时不重跑;鉴权用 Address::require_auth();用 extend_ttl 延长状态 TTL 防止归档。
构建与部署:stellar contract build 生成优化 WASM;stellar keys generate --global alice --network testnet --fund 创建并充值身份;stellar contract deploy 部署(构造函数参数放在 -- 之后);stellar contract invoke 调用;仅上传 WASM 不实例化用 stellar contract upload(旧命令 install 已弃用)。测试可用 Env::default()、mock_all_auths()、env.register 与生成的客户端。主网上线前应完成 security.md 清单,鉴权、重初始化、算术、存储 TTL、跨合约校验是常见失败点。相关技能:资产与 SAC 桥接、前端/钱包、链上数据查询、ZK 验证、SEP/CAP 标准。官方文档、示例合约、soroban-sdk API 参考与 Stellar CLI 手册见资料所列链接。