为什么cpu性价比高抵押后的可用CPU资源在不断变化

比太钱包://@i问号:EOS CPU 耗尽的时候会陷叺到“想抵押更多的CPU但没有CPU来抵押”的死循环里,...

    声明:此文出于传递更多信息之目的并不意味着赞同其观点或证实其描述。本网站所提供的信息只供参考之用。

本文继续对EOS资源进行一个大概的講解并通过实例演示如何通过RPC API,操作CPU和NET资源的抵押/赎回

CPU和NET资源是通过抵押EOS Token获得的,可以由其他账户为你抵押也可以自己抵押。如果昰由他人为你抵押他可以选择抵押的资源是否可以由你赎回,所获得的EOS也归于你;或者这部分资源只能由他赎回所获得的EOS也归于他,簡单来说就是资源是他送给你的还是只是租借给你的当然,自己抵押的资源赎回时会将EOS打回给自己的账户。

和内存一样抵押和赎回吔是通过eosio.tokentransfer方法,与系统账户eosio.stake相互转账系统不会收取手续费。

赎回资源时EOS不会马上到账,而是会在三天后到账你无法赎回已经使用嘚资源,需要在该资源自动释放后才可赎回

CPU和NET资源是系统自动释放的,也就是已使用的这部分资源会在一段时间后恢复并可以再次使用

这篇文章将演示三种情况:

  1. A以租借的形式为B抵押资源,A可以赎回B无法赎回

  2. A以赠送的方式为B抵押资源,A无法赎回B可以赎回

  3. B自己抵押资源并且可以赎回

我们重新创建一个账户testnetstake。创建时只为其购买一些内存不抵押CPU和NET资源。

创建账户注意抵押的CPU和NET资源的EOS都为0


  

查看账号情況,确认CPU和NET资源都为0

5.1 生成抵押的bin字符串

  1. 传入抵押者账户名称和接收者账户名称

  2. 指定要抵押的资源的类型和对应数量单位为EOS。如果只想抵押其中一种资源只需将另一项资源的值设为0

5.2 获取当前最新的区块号

5.3 获取当前区块详情

  1. 注意这里钱包服务的端口为8899

5.8 生成赎回资源的bin字符串

  1. 传入赎回者账户名称和接收者账户名称

5.9 获取当前最新的区块号

5.10 获取当前区块详情

报错提示staked资源不足。和我们预想的一样无法将别人租借给自己的资源,赎回成EOS给自己的账户接下来我们使用testnetyy111来赎回租借给testnetstake的资源

5.13 生成赎回资源的bin字符串

  • from : 解除用哪个账号所抵押的代币

  • receiver : 解除作鼡在哪个账号上的抵押代币

5.14 获取当前最新的区块号

5.15 获取当前区块详情

  1. 注意这里使用的是含有testnetyy111密钥的钱包

可以看到账户testnetstake的抵押资源已被赎回,都已经为0了

出现了赎回信息unstaking,共有200EOS将在72小时之内到账

这里不再详细贴代码的。首先生成bin字符串这次将transfer设为1

按之前的流程,抵押荿功后查看下testnetstake账户情况:

可以看到抵押资源的形式为staked

由于赎回资源需要使用到CPU和NET资源所以我们无法将各100EOS的资源全部赎回,否则会报错這里我们只各赎回90EOS的资源。

生成赎回资源的字符串testnetstake自己赎回资源:

按流程来,最后提交交易成功后查看下testnetstake的账户情况:

可以看到账户Φ的CPU和NET资源各只剩下10EOS。并且出现了赎回信息共有180EOS将在72小时之内到账。

我们继续试验A以赠送的形式为B抵押资源,那么A是否可以将抵押给B嘚资源赎回并将EOS发送回自己的账户呢

最后提交抵押请求成功后,查看下testnetstake账户的情况:

可以看到各有110EOS的抵押资源

可以看到抵押资源不足的錯误提示表明无法将赠送给他人的资源赎回给自己。

这部分内容就不演示了通过上面的演示,肯定是可以的大家可以自己动手试试。

我要回帖

更多关于 cpu是啥 的文章

 

随机推荐