EOS入门教程 | 第三章:CPU、NET、RAM到底是什么

CPU&NET | 资源量显示不准是怎么回事?

这一节主要是讲解CPU、NET资源的一些细节。负责的和你讲,看完之后最大的作用只是满足你的好奇心,,,如果不感兴趣,可以跳过~ 不会影响之后的阅读

CPU和NET是都是抵押形资源,使用后24小时会完全恢复。但我们在使用过程中,经常会发现明明已经过去24小时了,可资源使用的数据量还是显示没有恢复。这又是怎么一回事呢?

剩余资源为何显示不准确?

在EOS账户中,CPU和NET的使用量数据,并不会自动更新。如果你的EOS账户最近一直没有新的操作,比如转账、抵押等等。那么它的资源使用量数据,一直都显示为一个固定的值,并不会更新。是不是感觉很坑爹呀。为什么就不能实时更新呢?其实关于实时更新这个事,还确实很难做到。还记得之前计算可用资源量的公式吗?(见下图)


由于全网抵押量,一直是一个变量。特别是当有大户进行操作的时候,反映到我们的可用资源量波动是非常大的。就算事实同步,这个数据一直在变也是没什么意义的,而且还要同步还要浪费网络资源。与其这样,CPU和NET资源的显示干脆就放弃了同步。

我相信,在未来全网资源基数足够大了之后。我们普通用户在进行一些简单操作,根本就不用再考虑资源够不够的问题。

资源如何恢复

CPU和NET资源的恢复周期是24小时。但并不是24小时后一次性复原,而是逐渐的线性恢复。由于每个用户获得资源的数量也是动态变化的。 所以在资源消耗后,实际系统的判定并不是将资源恢复,而是逐渐减少上一次操作消耗。每过一小时,之前操作的消耗减便减少1/24。直到24小时候后,计算消耗为0。在进行操作的时候,只有:

新交易的消耗资源量 + 之前交易之后所记录下来的资源使用量 <= 系统分配的资源总量

这笔交易才能进行。

将资源恢复的规则这么设计,其实也是为了能更合理的分配资源。毕竟我们每个用户的资源分配量,本身就一直在变。这里有些绕,我举个例子大家就清楚了。假设现在抵押资源的人比较少,我用了1个EOS,获得了500ms的CPU资源(1EOS = 500ms)。就在此时,我进行了各种操作花掉了480ms的资源。而在下一秒,突然有大户进行了资源抵押。系统能分配给我的资源一下子从500ms降到了50ms(1EOS = 50ms)。但我已经消耗了480ms,那我此时应该有-430ms的cpu(没错就是负数)。

到了一个小时以后,如果我恢复1/24的资源,就是20ms。这就相当于我之前价格,获得了当下的资源。这么做的话,一定会导致整个网络资源数变大。而这显然是做不到的。所以EOS用减少之前的消耗,代替了恢复。这么做,可以保证系统的总资源量,一直是恒定的。

 RAM | 这到底是个什么东西

这一节主要是讲解RAM资源的一些细节。同样如果不感兴趣,可以跳过~不会影响之后的阅读

RAM为何物?

在我们的电脑中,RAM是运行内存。相比较硬盘,他的速度更快,但储存是暂时的,断电后内容就会消失。在EOS中RAM扮演的角色有些不同,它被作为主储存层,用来储存所有的数据。这种做法,相当于是让储存速度更快的内存(RAM)充当了硬盘的功能。在牺牲一些能源消耗的同时,能大幅的提高性能。在RAM中存储数据库,可以让读取数据的速度更快。

知道了RAM的作用,那我们在使用过过程中。都有哪些操作需要消耗RAM呢?与其说一些具体操作。不如通过他作为储存的性质去理解。

啥时候消耗?

硬盘大家平时都接触过,EOS的RAM的本质和硬盘实际差不多。我们现在把硬盘的储存空间比喻成一间仓库的储存空间,把数据比作一件件的货物。那么什么时候需要消耗存储空间呢?自然是仓库要放货物的时候。比如注册账户的时候,系统要记录这个账户的信息。第一次投票的时候,需要记录你投票的选择。第一次收到其他代币的时候,需要记录这个合约的一些信息等等。这里要注意的是,如果是别人主动给我的转账(前提是这币你手里没有),那么RAM是他出的。在我们清空这个合约的币之后,RAM还会返还给他(联想到仓库,不存东西了自然退租呀)。但如果是我们自己领空投,那么RAM需要自己出。

啥时候不用?

这时候你可能问,啥时候消耗这也挺好理解的呀,你干嘛非要举个例子呀。哈哈,举例子真正的原因是想让你清楚,什么时候不消耗RAM。假设你在仓库里放了一些白菜,但是最近你白菜吃腻了。于是你把白菜换成了同样体积的辣白菜。请问:这时候你还要给仓库付租金吗?答案是不需要,因为占的地方还那么大。吧白菜变成辣白菜的操作,换做内存中就是更新了一下数据。所以更新数据也是不需要占用RAM的。这里面更新数据的操作有:更新币余额,更换私钥,更新投票状态,更新...记住,只要是更新。都不需要消耗RAM。

 感谢金马哥的指导。EOS入门教程持续更新...  

参考文章:

阿华 | EOS上CPU/带宽资源使用量是如何计算的 https://bihu.com/article/1794010054

阿华 | EOS账户中的 RAM消耗在哪里了 https://bihu.com/article/1880755371

荆凯 | EOS的CPU/带宽恢复周期是多久?https://bihu.com/article/731634


「力场 lichang.io」公链挖矿第一社区!



教程其他内容:

EOS入门教程 | 前言:如何阅读次教程

EOS入门教程 | 第一章:EOS是什么? 

EOS入门教程 | 第二章:EOS的账户是什么?

EOS入门教程 | 第二章:账户系统,小老弟与老大哥的区别

EOS入门教程 | 第三章:资源,驱动“云电脑”的燃料

EOS入门教程 | 第三章:CPU、NET、RAM到底是什么

你可能感兴趣的:(EOS入门教程 | 第三章:CPU、NET、RAM到底是什么)