非常重要的是,消费者硬件 RAM 可以容纳实际大小可能是 16GB (如果不能,我们可以调整 Gas 价格或状态有效期以使其适合),而 138GB 则不能被存储。 如果我们可以使最坏的情况接近平均情况,那就太好了。 双轨 EIP-1559解决此问题的自然方法是对临时成本和永久成本使用 EIP-1559 定价,但调整期有所不同。 对于临时成本,价格可以一次调整 10%以上。但是,对于永久性成本,将使价格调整慢得多。 如果我们采用 AMM 成本曲线机制作为基础,对于存储,我们可以考虑一条曲线,目标速率为每月 1GB,而成本的增加取决于我们比目标高出多少: 例如,每超出目标 1GB,存储成本就可能翻倍。在这种情况下,存储块价格可能需要 3 天左右的才能翻一番。如果存储增长超过 10GB,则存储成本将是正常价格的 1000 倍,在经济上无法继续存储。 有两种方法可以实现此目的: 1. 用 Gas 购买存储。也就是说,使用 SSTORE 创建新的存储插槽,像现在一样消耗 Gas,但是消耗的 Gas 量将是可变的。这样做的缺点是,它会形成(变相)激励措施,用户宁愿在 Gas 价格较低的周末补充存储空间。 2. 用 ETH 购买存储。交易(和调用)除了需要 Gas 外,还需要提供另一种资源(我们可以称其为 mana),该资源将采用与 Gas 相似的机制,但参数不同。这样做的缺点是使调用规则变得复杂,并且需要添加新的 CALL 操作码。 请注意,这里有一个混合选项: 3. 可以以 ETH 定价存储,但以 Gas 收费(因此,如果基本费用上涨了 2 倍,则填充存储插槽所需的 Gas 将自动减半)。我们可以将用于扩展存储的 ETH 排除在 EIP 1559 Gas 价格更新规则甚至是区块限制范围之外。 4. 将 Gas 更全面地改造为三个概念:Gas,执行点和存储点。1Gas=1wei; 分配 Gas 的交易只是意味着它正在将其某些 wei 转换为可用于支付资源的特殊形式。就 call 和 subcall 之间的传递方式而言,此形式的工作方式与 Gas 相同。 但是,AMM 现在管理两项成本:执行点成本和存储点成本。当执行过程处理当前消耗 N 个 Gas 的操作码时,它将花费 N 个执行点,这意味着需要 N* execution_point_cost 支付 Gas。填充存储槽需要 1 个存储点,因此需要 storage_point_cost 充入 Gas。 最后,还要注意,状态限期的路线图里有望删除退款。这是因为技术原因:存储插槽无法「变空」且资格获得退款,因此只能将它们设置为零,并且零记录必须保持该状态,直到该时期结束并且该状态可以到期为止。这大大降低了早期在存储租金尝试时遇到的复杂性问题。 特别感谢 @barnabe 在早期提出了类似的想法。 (责任编辑:admin) |