美文网首页区块链研习社
【一五一十】 资源用光了怎么办:浅说EOS的资源恢复方式

【一五一十】 资源用光了怎么办:浅说EOS的资源恢复方式

作者: 荆凯_EOS42 | 来源:发表于2018-06-17 15:15 被阅读76次

    昨天提到了一个问题:如果账户的CPU,带宽和RAM资源用光了怎么办? 但是受篇幅所限,只是简单下了结论,没有展开来说。 今天的文章,我们继续聊一下EOS中资源耗尽之后的恢复方式。由于今天发文时间刚好在回老家的飞机上,

    无法查看发文状态,所以如果格式之类有问题,还请多多包涵,我晚点会改正。

    image

    两类不同的资源

    CPU/带宽资源,和RAM资源存在诸多不同之处。 - 计费方式不同: 前者是抵押多少,赎回时候能够收回多少EOS;后者是根据市场价格,赎回RAM时候的价格,可高可低。 - 是否可转让:CPU跟带宽资源可以租赁给别人使用;而RAM资源不可以,只存在占用、释放两种状态,无法租赁给他人。 除此之外,两类资源的使用和恢复方式也有所不同。我们来简单了解一下。

    RAM与仓库租赁

    可以简单的理解为:RAM是固定的,是不可再生资源,除非继续提升供应量,不然,RAM就只有那么多。

    类似于你去到一间大的仓库,你付费租了其中一小部分的空间,用于存放你的物品;
    如果空间用光了,只有继续付费,购买更大的空间。

    RAM资源用光了,就是用光了,如果想要继续使用的话,就只好继续抵押EOS,来购买新的RAM。

    CPU,带宽,回转寿司店

    而CPU和带宽资源, 虽然一定时间内,你可以用的是数量仍然是有限的,但是,它们的供应是持续的。

    比如,你去了寿司店吃回转寿司。在这一轮,也许回转寿司已经全部吃光了;但是,只要这家店还想继续做生意,就会继续供应寿司;那么,你等待一段时间之后,仍然是有寿司可以吃的。

    CPU和带宽资源也是一样。虽然一定时间内,供应量就是那么些,但是,CPU跟带宽的资源是流动的,可以理解为是可持续供应的资源。

    只要节点还在运转,那么,CPU资源就会持续存在。虽然你在上一个周期里面,已经把分配给你的份额用光了,但是,你还是后续有CPU资源可以继续使用。

    简单说,按照我目前的有限理解,就是CPU跟带宽的资源是具有恢复期的,至于恢复期是多长,我原先以为是24小时,不过按照我目前的理解程度,对于恢复期还无法下定论。

    总额不变,可用量增加

    假设节点的硬件水平是固定的,那么,单位时间内的总CPU跟带宽资源是固定的。

    假设,你的EOS所占的总的份额也不变,那么,单位时间内,分配给你的总的可用CPU跟带宽也是固定的。这一点应该容易理解。

    那么,我们所说的恢复是什么意思呢? 可以理解为,你已经使用过的CPU跟带宽的数额,会随着时间而衰减。就是说,随着时间推移,你上周的时候,可能显示的使用量是50%,而现在,计算你已经用过的资源也许就会变为25%。

    用总的配额,减去你已用资源的数量,就是你当前可以用的资源了。

    https://eosflare.io/account/blockchainpm

    resource-limit-12.png

    例如,图中显示的红框部分,就是我某个账号的cpu跟带宽使用情况。我们过一周时间再来看看是否会有所变化。

    取消再抵押,如何计算?

    有朋友问道:如果我cpu跟带宽快用光了,那么这时候我赎回EOS,等EOS三天后转到了账户里,我再重新抵押换取资源,是不是就可以恢复了?

    这一点我还在尝试中,我的理解很可能会有错,希望一起探讨。我先说一下我的看法。

    不过按照目前阅读代码得到的理解,这样做应该没有什么用处。因为,你的帐号使用了多少资源,会记录下来;取消抵押之后这个记录仍然存在;

    三天后重新抵押的时候,既然你的使用记录仍然在,那么,考虑到时间恢复的因素,你的可用资源量,仍然也只会比你刚开始时候的可用资源量多一点点,而不会清零重计算。

    不过,有一个方式也许会生效:

    你的某个账户 A 取消了质押,然后将取回的EOS转给另外一个账户,B。B重新抵押之后,可以得到这部分资源。

    当然,这种情况的使用场景比较狭窄,仅仅是作为探讨列在这里。

    问题与参考

    资源模型部分,复杂而有趣,不是几篇文章能够完全写完写清楚的。

    我也是边探索这个黑盒子,边分享自己的探索体会。

    欢迎同好一起交流探讨,我的微信号是:shuke0327.

    就我目前所知,还没有见到文章明确写到这部分,昨天晚上到现在还在翻查代码,对于资源限制这部分仍然没有完全明白。也请做过研究的同学指教。

    关于资源计费和配额的代码主要在 resource_limits.cpp, resource_limits_private.cpptransaction_context.cpp 这几个文件中。

    随着EOS研究者们对资源模型的深入理解,你一定会发现,我所写的内容肯定会存在很多错误的地方或者理解不当的地方,还请不吝赐教。

    相关文章

      网友评论

        本文标题:【一五一十】 资源用光了怎么办:浅说EOS的资源恢复方式

        本文链接:https://www.haomeiwen.com/subject/evfweftx.html