0%

eos | 资源的概念

最近 defi 挖矿的时候,经常遇到 cpu 不足,所以,在这里说一下其中的原理。


参考资料



资源分类


EOS的资源模型分为

  • CPU
  • NET(带宽)
  • RAM(内存)

RAM用于存储。RAM即内存,用来记录账户信息,包括账户余额、公钥、质押、投票、智能合约等。通常需要3KB-8KB的容量来存储个人EOS账户信息。RAM是可以随时买卖的,每笔收取0.5%的手续费,同时价格也是随RAM的稀缺程度时刻变动的。

CPU/NET是质押类型的资源。当EOS账户进行转账、投票等操作时,会消耗主网的算力和带宽,此时需要质押一部分EOS来换取CPU/NET,每天使用的算力和带宽会在24小时线性恢复。质押的EOS是可以随时赎回的,但是会存在72小时的冻结期。

  • 如果 RAM 提示不足,就需要购买,这个是消耗 EOS
  • 如果 CPU/NET 不足,可以通过质押,这个不消耗 EOS ,但是,所需 EOS 很多,也可以通过支付,具体看下面。

RAM

RAM指的是EOS主网上的内存资源。RAM是会被我们使用而被消耗的,比如我们创建一个EOS账户,会消耗掉大约4KRAM,如果我们在EOS上发一个TOKEN,大约会消耗掉180KRAMEOSDAPP的日常运行中,也是需要不断消耗RAM的,总的来说RAMEOS主网中一种很常用且珍贵的系统资源。

RAMEOS生态的影响RAM是整个EOS系统中最珍贵和常用的资源,它的定价机制会深刻影响整个EOS生态的秩序和发展方向。

BM曾经表达过:EOS主网应该对DAPP开发者设定较高的门槛,未达到标准的项目更适合运行在侧链之上。

主网RAM资源价格的合理体现,有利于让优秀DAPP运行在主网上,这样的生态分布对于EOS来说将是高效合理的。

反之,如果RAM的价格过低,将会有大量低质量DAPP充斥在主网上,无法让珍贵的主网资源得到最大化的应用。

能用市场这只无形的手来自动调节RAM价格是很有意义的,这也有利于促使EOS侧链的发展和繁荣。

同时RAM价格的合理体现也会让项目开发团队更珍惜资源,尽量减少不必要的浪费。

之前一些空气项目,是通过全网空投的形式,来作为营销手段获得市场认知和衍生收益的。而现在,RAM价格增长后,每次全网空投可能会消耗数万个EOS,这就形成了一个门槛,把一些粗制滥造没有实质价值的项目挡在了主网之外,相当于一定程度上净化了主网环境。

普通用户在RAM的使用主要是状态的存储,部分状态有了之后,再操作仅是修改RAM中存储的记录,因此重复的操作并不会增加RAM的消耗。但是作为开发商的智能合约,如果没有恰当的使用好RAM,那花钱真是如流水啊。

CPU/NET

恢复

CPUNET是都是抵押形资源,使用后24小时会完全恢复。但我们在使用过程中,经常会发现明明已经过去24小时了,可资源使用的数据量还是显示没有恢复。

EOS账户中,CPUNET的使用量数据,并不会自动更新。如果你的EOS账户最近一直没有新的操作,比如转账、抵押等等。那么它的资源使用量数据,一直都显示为一个固定的值,并不会更新。是不是感觉很坑爹呀。为什么就不能实时更新呢?其实关于实时更新这个事,还确实很难做到。

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

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

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

这笔交易才能进行。

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

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


资源获取


资源租赁

资源租赁,最典型的代表就是REXEOS持币者将闲置的EOS存入REX,而需要使用资源的人可以租用其中的EOS,存入的人赚取租金。REX会自动将租来的EOS转换成资源投入到租赁者的账号中。REX的租赁价格也是实时波动的,池中被租赁的EOS占比越高,价格越贵,写文章时的价格大约为支付1EOS可以租到4900EOS的资源,租期为一个月,按现在的CPU价格计算,花1EOS可以在一个月内每天转账1000次以上(不同的操作消耗资源不同,如果是最普通的转账可以转1400次左右),实际上大部分人是用不到这么多的,我想对于大多数人来说,租0.05就已经用不完的用了,按现状的EOS价格算相当于每个月只需要付出一块钱的资源成本,也可以看作是免费了。

因为要做 defi ,每天都涉及到大量的转账,所以,我切换到了 rex 方式,非常简单。

资源代付

而资源代付则是另一种形式了,部分dapp的合约会承担资源消耗,也就是不需要消耗用户的资源,那么在没资源时也照样可以使用;

另外以TokenPocket为首的众多钱包推出的顺畅模式,可以直接在没有资源的情况下支付EOS或其他币种购买使用次数,然后开启顺畅模式,之后你的交易消耗的资源都会由顺畅模式代为支付,这种形式的好处是按交易笔数收费,不像REX租来不管用不用钱都必须花,但是如果操作较多的话,肯定是REX成本要低很多。

原参考资料中有更多的细节,建议看一下。

请我喝杯咖啡吧~