1. 首页 > 产业新闻 > 节能环保

EOS钱包开发:抵押和赎回NET与CPU带宽

  • 计算NET带宽价格
  • 计算CPU带宽价格
  • 抵押EOS获取NET带宽
  • 抵押EOS获取CPU带宽
  • 赎回NET带宽与获取赎回金额
  • 赎回CPU带宽
  • 现在我们能对RAM进行交易了,还差的NET、CPU交易将是本章重点。

    同样,交易NET、CPU贷款的前提是我们需要知道它的价格,即买1KB NET带宽和1ms CPU带宽需要抵押多少EOS,赎回1个EOS能获得多少NET、CPU带宽。这就需要我们去链上查询数据库获取相应的实时的数据,再进行计算拿到价格。下面的我们来一步步实现,最后展示在项目中的相应源码。

    RPC和eosjs都没有提供API直接获取价格,那我们讲解获取带宽的价格呢?我们可以通过特定的规则去计算NET、CPU带宽的价格。

    在前面“详解与获取RAM、NET、CPU资源数据”章节的学习中我们已经可以获取账号的网络资源详情了,包含NET宽带抵押金额和NET宽带总量。通过这个算法即可获取到NET宽带价格了。

    输出如下

    可以看到连接到的测试网络计算得到的NET价格为0.00178442,单位是EOS/KB/Day。

    另外,修改config配置连接到主网后计算的价格是“0.0004887”左右。所以测试网络和主网的NET带宽价格相差很大。

    计算CPU带宽价格的方式与NET带宽类似,我们直接看测代码。

    输出如下

    可以看到连接到的测试网络计算得到的CPU价格为0.0094,单位是EOS/ms/Day。

    另外,修改config配置连接到主网后计算的价格是“0.2148”左右。所以测试网络和主网的CPU带宽价格相差很大。

    抵押EOS获取NET带宽的API我们已经使用过了,在创建账号的时候我们为别人创建的账号就需要为它购买一定的NET带宽,现在我们在来单独调用抵押的API。由于现在需要交易,所以会使用资源,因此我们切换到测试网络进行测试。

    特别注意:

    • 若只买NET带宽,那么“stake_cpu_quantity”该字段必须设置,且一样须带有四个小数位,即“0.0000 EOS”。
    • 若只买CPU带宽,那么“stake_net_quantity”该字段也必须设置,且一样须带有四个小数位,即“0.0000 EOS”。

    在运行之前先记录下来账号“lixutest1111”的网络资源数据。

    运行测试代码后查看NET带宽数据如下

    可以看到EOS可用余额减少了一个,NET带宽抵押的EOS多了一个,总量从18280KB增加到了18867KB,增量是587KB。

    刚才计算的每KB NET大约花费0.00178442个EOS,所以1个EOS大概能买到NET 1/0.00178442=560KB。这个计算的结果和链上获取的结果587KB相差无几。因为NET价格会随着市场波动而变化,所以导致结果有一点点偏差,这是不可避免的。另外我们在购买NET的时候,需要输入的是EOS数量,然后根据NET价格转换成他当前能购买到多少KB RAM,再进行交易。

    抵押EOS获取CPU带宽的方式与抵押EOS获取NET带宽一样,下面的我只给出代码,它的原理与获取NET带宽一样。

    正常情况下我们都是一起购买NET与CPU带宽的,需要前端同时传来抵押EOS购买NET的量,与抵押EOS购买CPU的量,然后设置上stake_net_quantity与stake_cpu_quantity相应的值。

    赎回需要用到另外一个API?,它与抵押的API相对应。传递的数据结构一样。

    在运行之前先记录下来账号“lixutest1111”的网络资源数据。

    运行测试代码后查看NET带宽数据如下

    可以看到赎回NET带宽后EOS可用余额并没有增加,而用于NET带宽抵押的EOS的数量由101减少到了100,总量也由18877KB减少到了18680KB。那么问题来了,NET宽带资源已经被扣了,但是赎回的EOS没有到账,这是为什么呢?

    之前已经说过了,在赎回宽带资源的时候,存在三天的赎回期,因此我们的赎回交易已经完成了,但是需要三天后EOS才会到账。那么我们需要将此数据显示给用户查看。讲解获取赎回的金额数据呢?

    再使用cleos工具查看账号“lixutest1111”的账号信息,如下

    可以看到“refund_request”字段数据中包含了“net_amount”字段的数据有“1.0000 EOS”,这正是我们赎回的EOS。之前没有赎回金额的时候,该字段为null。

    因此我们获取该字段数据返回给前端,用于显示赎回金额。

    单独赎回CPU带宽也是可以的,与单独赎回NET带宽一样。下面的我们看看同时赎回NET与CPU带宽的方式。

    运行测试代码后查看宽带资源数据如下

    可以看到赎回NET、CPU带宽后EOS可用余额并没有增加,而用于NET带宽抵押的EOS的数量都减少了一个,宽带资源也相应地减少了。

    再来看看账号“lixutest1111”赎回期中的赎回金额

    在controllers文件夹下编辑netResource.js文件,实现获取NET与CPU的价格、抵押和赎回NET与CPU带宽的功能。

    将获取NET与CPU的价格、抵押和赎回NET与CPU带宽的接口绑定到路由。

    编辑views文件夹下的netResource.html文件,实现NET与CPU抵押和赎回的表单显示。

    对NET与CPU的价格、抵押和赎回NET与C

    PU带宽的表单进行网络请求处理与页面渲染。

    项目源码Github地址

    版权声明:博客中的文章版权归博主所有,未经授权禁止转载,转载请联系作者(微信:lixu1770105)取得同意并注明出处。

    未经授权禁止转载、改编,转载请注明出处!

    本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/chanye/jieneng/32386.html

    联系我们

    在线咨询:点击这里给我发消息

    微信号:wx123456