本页目录
Stellar 有智能合约吗?有。Soroban 就是 Stellar 的智能合约平台,自 Protocol 20 于 2024 年 2 月 20 日投票通过以来一直在主网运行,并于 2024 年 3 月 19 日全面向用户开放(SDF 软件版本说明)。开发者用 Rust 编写合约,编译成 WebAssembly(Wasm),再部署到自 2014 年起就在处理支付的同一个 Stellar 网络上。Soroban 不是独立的链,也不是侧链。
Soroban 的看点不在于“有合约”(如今大多数一层网络都有),而在于背后的设计取舍:费用按资源分项计价,而不是一个笼统的“gas”数字;存储的数据要交租金,并且可以被归档;合约重入被直接禁止;原生资产无需包装即可接入。本文会讲清 Stellar 智能合约如何运作、费用多少、与以太坊 EVM 有何不同,以及亚洲的开发者能利用哪些资源。
Stellar 有智能合约吗?简要历史
在大部分时间里,Stellar 有意不提供通用智能合约。协议自带订单簿、多重签名、路径支付、可认领余额,并从 2021 年起加入了原生 AMM 资金池。这些足以覆盖支付和简单交易,但没人能部署借贷市场之类的自定义逻辑。
Soroban 改变了这一点。SDF 在 2022 年宣布设立 1 亿美元的 Soroban 采用基金(Soroban Adoption Fund)来扶持生态,2023 年代码一直在测试网和 Futurenet 上运行。因修复一个漏洞推迟三周后,Protocol 20 于 2024 年 2 月 20 日登陆主网。SDF 随后分阶段开放:2 月 20 日进入第 0 阶段,2 月 27 日进入第 1 阶段,2024 年 3 月 19 日进入第 2 阶段,网络从此全面开放使用(SDF 关于分阶段上线的说明)。如果你看到“Soroban 于 2023 年上线”的说法,那指的是测试网络,而非主网。
关于名称再补充一句:SDF 的新资料越来越多地直接称之为“Stellar 智能合约”,Soroban-RPC 也在 2024 年更名为 Stellar RPC。不过 Soroban 这个名字仍保留在 soroban-sdk 这个 Rust crate 里,也活跃在开发者的日常交流中,两种叫法指的是同一回事。
Soroban 如何运作:Rust、WebAssembly 与宿主环境
一份 Soroban 合约,就是一个编译成 Wasm 的小型 Rust 程序。SDF 的概览说得很直白:目前只支持 Rust,合约也不能使用完整的 Rust 标准库,而是基于 soroban-sdk crate 构建(智能合约概览)。上方的小工具展示了一个最小合约的结构:一个结构体、一个标注了 #[contractimpl] 的 impl 块,以及一个接收环境句柄和参数的函数。
Wasm 代码运行在 Stellar Core 内置的“宿主”(host)环境中。宿主负责提供存储、密码学、事件、跨合约调用和授权,因此合约本身可以保持精简,开销大的工作则以原生代码执行。调用合约时,你需要提交一笔带有 InvokeHostFunctionOp 的交易。智能合约交易只能包含一个操作,而经典交易最多可以打包 100 个。
测试是它的强项。SDK 自带一个与链上环境一致的本地宿主实现,你可以在普通 IDE 里调试,在上测试网之前就跑完单元测试、模糊测试和属性测试。授权同样是内置的:函数对某个地址调用 require_auth(),宿主就会检查对应的签名。这既适用于普通账户,也适用于基于通行密钥(passkey)的智能钱包——后者得益于 Protocol 21 加入的 secp256r1 支持。
Soroban 手续费与资源模型
每笔 Soroban 交易都要支付两部分费用:包含费(inclusion fee)和资源费(resource fee)(费用、资源限制与计量)。包含费和 Stellar 上的其他手续费一样,至少 100 stroop(0.00001 XLM);账本满载时,激增定价机制会按出价对交易排序。资源费是 Soroban 特有的部分,而且逐项列明:CPU 指令、读取和写入的账本条目、I/O 字节数、交易大小、事件和返回值,以及存储租金。
其中一部分可以退还。CPU、读写字节和带宽按声明值收取;租金、事件和返回值如未用完则会退还。实际操作中你根本不用去猜这些数字:先通过 Stellar RPC 模拟交易,模拟结果会返回需要附带的资源占用和费用。
换算成真金白银,这笔钱依然很小。据我们最近一次查询,主网上最常见的手续费就是 100 stroop 的最低值,中位数则在 0.00035 XLM 左右,主要被合约调用拉高。截至 2026 年 7 月,每个账本可容纳 1,000 个经典操作和 2,000 笔智能合约交易。和 Stellar 上所有手续费一样,这些 XLM 会进入锁定的手续费池,而不是付给验证节点。我们的 Stellar 手续费与速度指南将它与其他网络做了对比。
状态归档:链上数据也要交租
在以太坊上,合约数据一旦有人付费写入就会永久保存,每个节点都得一直背着这份负担。Soroban 采取了另一种做法,称为状态归档(state archival)(SDF 文档)。每条合约数据都有一个以账本数计算的生存时间(TTL),要保持活跃就得付租金。
存储分为三种类型。临时(Temporary)存储最便宜,TTL 归零后即被永久删除,适合报价、nonce 之类的数据。持久(Persistent)存储适合存放余额,到期后会被归档而非删除。实例(Instance)存储保存合约级别的配置,与合约本身共享 TTL。已归档的条目不能重新创建、只能恢复,所以没人能在旧余额原来的位置偷偷塞进一个新余额。
2025 年 9 月的 Protocol 23“Whisk”重做了归档机制:交易恢复列表中列出的已归档持久条目,会在合约运行前自动恢复,而模拟过程会帮你填好这份列表。这种设计让验证节点的存储保持精简,但也给开发者多派了一项工作:给重要数据延长 TTL,或者为恢复操作预留预算。
Stellar 资产合约:原生资产对接智能合约
Soroban 避开的一个老麻烦是“包装”。在以太坊上,ETH 必须先变成 WETH 才能被大多数合约使用。而在 Stellar 上,包括 XLM 在内的每一种资产都有一个专属的 Stellar 资产合约(Stellar Asset Contract,简称 SAC),实现标准代币接口(SEP-41)。SDF 文档写明,资产与其 SAC“代表同一资产”(SAC 文档)。任何人都可以部署 SAC,它读写的正是经典钱包所用的同一套信任线余额。
这不只是方便而已。SAC 会遵守发行方的授权和追回标志,这正是受监管发行方敢让自家代币进入 DeFi 而不失去控制的原因。例如 PayPal 的 PYUSD 在 Stellar 上发行时就采用了 SAC,因此从第一天起就能与 Soroban 配合使用,我们的稳定币指南有更详细的介绍。我们关于代币化现实世界资产的页面则解释了为什么这层合规能力会吸引基金管理人。2026 年 5 月的 Protocol 26 更进一步:通过 SAC 转账 XLM 时,可以自动为收款方创建账户。
Soroban 与 EVM 对比
从以太坊、BNB Chain 或其他 EVM 网络转过来的开发者,会发现概念很熟悉,但默认设定不同。SDF 的设计说明把其中好几项归结为从以太坊学到的教训,其中有一条说得斩钉截铁:“不允许合约重入”(SDF 博客)。
| 项目 | Soroban(Stellar) | EVM(以太坊等) |
|---|---|---|
| 语言 / 运行环境 | Rust 编译为 Wasm | 主要是 Solidity,运行于 EVM 字节码 |
| 手续费 | 分项资源费 + 包含费 | 单一 gas 指标 |
| 存储 | TTL、租金与归档 | 写入后永久保存 |
| 重入 | 宿主直接禁止合约重入 | 允许,需在应用代码中防范 |
| 合约中的原生币 | XLM 通过 SAC 使用,无需包装 | ETH 通常需包装成 WETH |
| 代币授权 | 内置授权,一笔交易完成 | approve + transferFrom 模式 |
有两点需要提醒。禁止重入消除了一类经典漏洞,但并不意味着合约天生安全:逻辑错误、权限控制不当和预言机问题依然存在。另外,Soroban 没有 EVM 兼容层,Solidity 代码必须重写。想看 Stellar 与另一条主打支付的网络的全面对比,请阅读 XLM 与 XRP 对比。
上线以来的协议升级:从 P29 到 Bell 投票
协议升级由验证节点投票决定,投票一通过即刻生效。自 Soroban 上线以来,合约平台已经发生了很大变化:
- Protocol 21(2024 年 6 月):为通行密钥钱包加入 secp256r1 签名验证,并优化了成本模型。
- Protocol 22(2024 年 12 月):合约构造函数和 BLS12-381 密码学。
- Protocol 23“Whisk”(2025 年 9 月):统一事件、状态归档调整和合约并行执行。
- Protocol 25“X-Ray”(2026 年 1 月):BN254 和 Poseidon 哈希,为零知识证明打下基础。
- Protocol 26“Yardstick”(2026 年 5 月):验证节点可通过共识冻结被盗用的账本条目,加入带溢出检查的 256 位运算并改进 SAC。
- Protocol 27“Zipper”和 28“Adapter”(2026 年 7 月和 9 月):先是智能账户的认证委托,随后是外部管理的合约可执行文件和稀疏映射函数。
- Protocol 29(2026 年 10 月 1 日):仅包含安全修复,没有新的 CAP。
下一个是 Protocol 30“Bell”,它尚未上线。其主网投票计划于 2026 年 11 月 23 日举行,日期仍可能变动。Bell 将新增多路复用合约地址、以宿主函数形式提供的 ML-DSA 后量子签名验证,以及毫秒级账本时间戳(Bell 升级指南)。SDF 指出,普通账户签名仍然使用 Ed25519,而且 Bell 本身并不会让账本确认快于约五秒。
开发工具与资金支持
工具链相当精干。Stellar CLI 负责构建、测试、部署和调用合约,并管理密钥和网络。SDF 的网页工具 Stellar Lab 无需任何本地配置,就能在主网、测试网和 Futurenet 上传、部署、调用和模拟合约。Stellar RPC 是推荐给新开发者的数据 API。客户端 SDK 覆盖 JavaScript、Python 等语言,Stellar Wallets Kit 则负责把应用连接到 Varial(原 Freighter)、LOBSTR、xBull 等 Stellar 钱包。
安全方面,SDF 与 OpenZeppelin 签订了为期两年的合作协议,从 2025 年 1 月持续到 2026 年 12 月,内容包括一套经过审计的 Stellar 合约库、40 个审计师周的审计服务以及漏洞赏金计划(SDF 公告)。SDF 的 Soroban 安全审计银行(Soroban Security Audit Bank)会为符合条件的项目对接审计公司,项目只需自付 5%;如果在 20 个工作日内修复了严重、高危和中危问题,这笔自付款还可以退还。
资金支持主要来自 Stellar 社区基金(SCF)。其 Build 赛道为每个项目提供最高 15 万美元等值的 XLM,较小额的 Instawards 则通过各地大使分会发放。奖励由社区成员投票决定。最近几轮每轮发放约 120 万至 220 万美元,例如 SCF 第 29 轮向 39 个项目发放了约 220 万美元。
安全教训:YieldBlox 预言机事件
Soroban 迄今最昂贵的一课,并不是来自核心合约的漏洞。2026 年 2 月 22 日,攻击者盯上了 YieldBlox DAO 在 Blend 上运营的一个借贷池。该池通过 Reflector 预言机为抵押品定价,而 Reflector 的数据来自 Stellar DEX 上一个流动性很薄的 USTRY/USDC 市场。一笔交易就把 USTRY 的报价从约 1.05 美元推高到约 106.73 美元。攻击者随后以被抬高的抵押品借走了约 1020 万美元的 XLM 和 USDC(Blockaid 事后分析)。
Blockaid 识别出攻击者的钱包后,一级(Tier-1)验证节点协调一致,拒绝处理来自这些地址的交易,从而“隔离”了约 4807 万枚 XLM(约 730 万美元)。Blockaid 本身也参与了应急响应,解读它给出的数字时请考虑到这一点。对开发者来说,教训都是 DeFi 的老生常谈:永远不要用薄市场给抵押品定价,使用时间加权或多源报价,并限制对低流动性资产的敞口。我们的 Stellar DeFi 指南从用户角度复盘了这起事件。
亚洲的 Soroban 开发者
亚洲经过核实的 Soroban 活动规模不大,但在增长。2026 年,SDF 与教育平台 Rise In 联合举办了 APAC Stellar 黑客松,奖金最高 6 万美元,邀请东南亚各地的团队在 Soroban 上开发 DeFi、支付、钱包和法币出入金应用,提供本地支持,并在菲律宾、越南和印尼举行线下决赛(BitPinas)。机构层面,2026 年 10 月获得 SDF 战略投资的新加坡 Marketnode,正在 Stellar 上向亚太投资者分销代币化基金。我们的亚洲专区逐个市场追踪监管动态。
对于胡志明市或万隆的开发者来说,实际路径和其他地方没有两样:学 Rust,在测试网上发布,申请 SCF,在真金白银进场前做好审计。如果你想先了解这个网络本身,可以从恒星币(XLM)是什么读起,并随手打开我们的 Stellar 术语表,查阅 TTL、SAC、信任线等术语。
常见问题
Stellar 有智能合约吗?
有。Stellar 的智能合约平台 Soroban 随 Protocol 20 于 2024 年 2 月 20 日在主网上线,并于 2024 年 3 月 19 日全面向用户开放。合约用 Rust 编写,编译为 WebAssembly。在此之前,Stellar 提供的是内置 DEX、多重签名、可认领余额等原生功能,但没有通用智能合约。
Soroban 合约用什么编程语言?
Rust。SDF 的文档写明,目前合约只支持 Rust,并且使用 soroban-sdk crate,而不是完整的 Rust 标准库。调用合约的应用则可以使用 JavaScript、Python 等语言的客户端 SDK。
一笔 Soroban 交易要多少钱?
一次合约调用要支付包含费(至少 100 stroop,即 0.00001 XLM),外加资源费,涵盖 CPU、账本读写、交易大小、事件和存储租金。据我们最近一次查询,全网所有交易的手续费中位数约为 0.00035 XLM,主要是被合约调用拉高的。先模拟交易就能知道确切费用,更多内容见我们的手续费指南。
Stellar 的状态归档是什么?
Stellar 上的合约数据有生存时间(TTL),必须支付租金才能保持活跃。临时数据在 TTL 耗尽后会被删除;持久数据和实例数据则会被归档,之后可以恢复。自 Protocol 23 起,只要交易把它放进恢复列表,恢复就会自动完成。
Stellar 的 Protocol 30 上线了吗?
还没有。据我们最近一次查询,主网运行的是 Protocol 29。代号 Bell 的 Protocol 30 计划于 2026 年 11 月 23 日进行验证节点投票,将新增多路复用(muxed)合约地址、面向合约的后量子 ML-DSA 签名验证以及毫秒级账本时间戳。投票通过之前,请把它视为待定。



