一、概述

该提议的是,在通过删除释放存储槽时,将部分存储费用(在AIP-17中引入)退还给原始支付者。

二、动机

为了反映被释放的存储槽不再对区块链产生成本。

现在,AIP-17 已经被实现和部署,存储分配是按每个槽位收费,并根据原生货币定价,不受 Gas 价格的影响。除此之外,我们提议记录分配所支付的金额,以便我们能够退款。

存储退款鼓励清理未使用的存储槽位。

1. 替代方案 - 临时槽位

我们可以为 Move 合约提供接口,允许存储槽在未来短期内自动消失,以此换取降低费用。如果某个存储槽被“承诺”将会被删除(用户可以选择在设定的生存期限(TTL)到期前提前手动删除以获得一些额外退款,或者系统将在其过期后自动回收),则可以以较低成本为其分配。

考虑到实际操作的可行性及成本问题,允许的生存期限不能设置得太短。若初期收费过低,用户可能会以低廉价格大量占用存储空间,从而违背了初衷。同时,永久且自动消失的项目可能导致用户困惑并引发欺诈行为。

尽管如此,这一改动可提升用户体验,但对于开发者和用户来说却意味着更为显著的语义变化。因此,这可能是未来值得考虑的一个方向。

2. 替代方案 - 租赁

除了少数状态项类型的白名单外,所有或大多数存储槽位都被强制具有自上次访问以来的 TTL。到期(达到 TTL)将导致槽位被“标记为删除”,以释放大部分在链成本,但用户可以以一定成本复活该槽位。分配将收取其永久存在的费用,可以认为永久槽位的收费总是不足的,因为费用是有限的,而它可以存在的时间跨度是无限的。针对租金/TTL 的反对意见:

  1. 随着时间的推移,存储变得更加便宜。如果在创建时正确收费,尽管永久槽位的费用可能并不重要,但从长远来看,这可能并不重要。
  2. 存储槽位可以强制自动消失的想法令人沮丧。
  3. 在智能合约的世界中,特别是像我们这样只有一个非常宽松的基于账户的模型的情况下,租金接口在生态系统级别可能非常具有侵入性 - 一个小数据过期可能会导致大量合同失效。
  4. “可复活”是我能想象到的底线 - 东西不会永远消失,“人们至少可以通过付费来拿回来”。然而,不仅要实现复活以及为过期数据提供服务的辅助系统(带有证明)会造成很大的资源成本,而且意味着永久的链上数据无法清理(墓碑)。

除了少数白名单内的状态项类型,所有或大部分存储槽都必须自上次访问起设定一个生存期限(TTL)。当生存期限到期时,该存储槽会被标记为“已删除”,以释放大部分链上成本,但用户有权通过付费来恢复该槽位。对于永久存在的分配,将按照其永久存在的时间收取费用,有人认为这种收费方式总是低估了成本——因为收费是有限的,而数据可能存在的时间却是无限的。针对租金/TTL机制的反驳观点如下:

  1. 随着时间推移,存储成本会越来越便宜。如果在创建时适当收费,永久存储槽所造成的成本,尽管是永久的,但从长远来看可能并不重要。
  2. 存储槽在未经用户设定生存期限的情况下,会被强制自行消失的想法令人沮丧。
  3. 在智能合约世界中,特别是在我们这种只有非常松散账户模型的系统中,租金接口可能会对整个生态系统造成很大干扰 —— 一小块数据过期就可能导致一大批合约失去活性。
  4. “可复活”是我能想到的我们必须提供的底线 —— 事物不会“永久”消失,人们至少可以通过付费将其找回。然而,不仅实现复活功能及其为服务过期数据(带有证明)所需的辅助系统需要消耗大量资源,而且这也意味着链上会出现无法清理的永久数据(墓碑)。

三、规范

1. 语言和框架

对于如何编写 Move 没有明显变化。但是经济学上发生了变化。

2. 经济学

  • 当前的链上时间戳和用于槽位分配的金额将被跟踪为附加到槽位的元数据。为了简单起见,即使燃料费用的其他部分被重新分配,可退还部分的燃料费用也将被销毁,从而降低本地 token 的全局供应量。
  • 对于已删除的槽位,将铸造并发放退款给交易支付者,从而增加本地 token 的全局供应量。
  • 注意,仅对启用了时间戳和金额跟踪的槽位分配后分配的槽位进行退款。
  1. 当前链上的时间戳以及为分配存储槽所支付的金额将作为元数据附着于该存储槽上。为了简化处理,即使其他部分的 Gas 费用被重新分配,可退还的 Gas 费用部分也将被销毁,从而降低原生 token 的全局供应量。
  2. 对于被删除的存储槽,将铸造并发放退款给交易付款人,从而增加原生 token 的全球供应量。
  3. 注意,仅针对在启用时间戳和金额追踪之后所分配的存储槽的移除才会发放退款。

四、参考实现

#9588

五、风险和缺陷

  1. 让执行删除操作的开发者获得退款,这种做法可能会激励不怀好意的模块开发者主动更新代码并删掉用户数据来牟取不正当利益。
  2. 全额退款对于保留存储以供将来使用或转售没有提供保护。为了预期更高的存储定价,人们可以低成本(除了锁定价值之外)地将存储槽位长期地进行投机性预留。

六、未来潜力

1. 随时间减少的退款比例

为了防止对存储定价的猜测并激励及时清理存储,可以将退款实现为随时间减少的方式 —— 如果迅速删除,退款将是全额的,而随着时间的推移,退款比例将下降到可配置的最低值。

2. 存储押金

可退还金额可以在全局范围或基于每个账户进行跟踪(称为存储押金),提供清晰度,并可能通过从押金中产生和重新分配利息来激励验证者存储链上数据。

七、建议的实施时间表

发布 1.7