一个反直觉的问题
在多数链上,数据写上去的费用是一次性支出,删掉数据通常不退钱。Sui 把交易费用明确拆成计算费与存储费两笔,而存储费带着一条“退款通道”:官方文档写明,当交易删除此前存储的对象时,会把当初存储费的 99% 作为返还不给用户,其余 1% 永久留在系统里。听起来像“删数据换币”,背后解决的其实是一个老大难——状态增长的成本该由谁长期承担。
为什么要为长期存储单独收费
Sui 的状态以对象形式存在,每个新对象都需要验证者长期保存。计算是一时的,存储是长期的:如果用户只在写入时付计算费,那么未来为旧数据买磁盘的验证者等于替过去的用户垫钱。官方方案是一座存储基金:每笔交易产生的存储费注入基金,基金本身每个纪元被锁仓并参与质押,凭这部分质押赚取收益,再把奖励定期分给当期提供服务的验证者,而基金本金不参与分配。这样新加入的验证者因为接手历史数据也能拿到补偿,历史用户的义务在写入那一刻已经通过基金付清。
返还怎么计算
存储费按存储单位计量,单位单价由治理提案设定、不随行情秒级浮动。费用结构分两块:可退还押金,以及占比 1% 的不可退还费。删除对象或缩小对象体积时,对应的可退押金部分以存储返还的形式退给这笔交易的 gas 支付者;那 1% 沉在基金里,不再流出。如果数据写进了不可变对象,它的存储费永久锁定、永远拿不回来,因为这类对象既不能删也不能改。官方文档的 gas 记账示例里还有一类边界情形:当被删对象的押金足够大,净费用可以低到零甚至为负——交易执行完,用户反而从系统净收到一点 SUI。

为什么要拆成两个价格
Sui 把计算价格和存储价格分开设计,这个取舍值得单独讲。计算价格是瞬时的:一个时段执行负载高,价格可以调整,过了就过去。存储价格面对的是“这一字节要存到网络终结为止”,所以官方文档把它描述为由治理提案定期设定、平时保持固定的常量,同一纪元内乃至跨纪元对所有交易一致。把两个价格绑在一起,要么存储被补贴、要么计算被惩罚;分开之后,网络拥堵不影响你写入数据的一次性押金,数据变多也不直接抬高执行价格——代价是存储价格对成本变化的反应变慢,靠治理流程小步校准。
另一个容易忽略的点是时间归属。存储基金的本金每个纪元被锁定质押,像普通质押者一样分得奖励,奖励的大头作为报酬分发给当期验证者,剩余部分滚回基金。这套“只付回报、不动本金”的安排让基金在正常情况下不会被抽干,但也意味着补偿能力取决于基金质押收益的水平,而不是某个刚写入数据的用户当场支付的那笔钱——理解这一点,才能看懂为什么删除返还是“退押金”而不是“发收益”。
用户视角的排障要点
三个常见困惑。第一,删除类交易常要求明显高于净费用的 gas budget:预算要覆盖的是返还抵扣前的毛费用,所以“按实付金额设预算”可能让删除交易直接失败,官方文档也据此区分了最低预算与最终净费用两个概念。第二,在浏览器里没看到返还,多半是对象大小变化不够大,或者动的是不可变对象。第三,存储返还不是利息也不是质押收益,是拿回自己当年的押金,把它记成“理财回报”会算错账。与整体对象模型的关系,可参考 Sui 是什么?对象模型与并行执行怎么工作。
边界与风险
99% 的返还比例与存储单价都是协议参数,调整要走治理流程,当前数值以官方文档和链上参数为准,本文不把任何数字写成永久值。还要认清这条机制的边界:基金靠自身质押的回报补偿存储,是跨代际的支付安排,不是收益承诺。本文不构成投资建议;链上操作失败同样可能产生费用,执行前请以官方文档核验当前参数。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。