背景
在cpu资源非常紧缺的情况下,各大cpu租赁平台层出不穷。BM君也不甘寂寞,前几天万众瞩目的rex终于出了beta版了。本人迫不及待的下载、编译、安装了合约,试玩了一下。具体详见:rex Release Notes。我会为大家简略介绍下合约安装步骤、rex主要功能、rex的表结构等情况。
rex安装步骤
根据提示,必须安装以下工具:
eosio.cdt:1.5.0-rc1版本。用于编译合约,安装完成后,eosio-cpp命令用于生成合约的abi、wasm和wast文件。
nodeos:v1.5.0版本。nodeos也需要升级,以便支持rex
eosio.system合约:v1.6.0-rc1。本次rex的功能是集成在了eosio.system系统合约,因此,system合约需要重新编译部署。
创建eosio.rex账户:eosio.rex是rex的系统账户,用于存储rex市场的全部资金,也需要在初始化的时候创建。
安装过程我就不再赘述了,有问题可以留言给我,在玩之前要确保环境都正确。
创建eosio.rex账户
rex主要功能
1. deposit
在rex市场中,无论是想买卖rex代币,还是想租赁cpu和net,都先要充值eos进入rex市场中。
函数参数:
充值eos入rex市场owner:rex市场的账户
amount:冲进rex市场的eos金额
充值完成后,可以查看rexfund表查询该账户在rex市场里的余额。
查询账户在rex市场中有多少可用eos2. withdraw
如果不想玩了,从rex市场中提出eos,转账回余额
函数参数:
从rex市场提出eosowner:rex市场的账户
amount:提出rex市场的eos金额
3. buyrex
如果想将rex市场中的eos换成rex代币,就可以调用此函数。
tips:购买rex的账户,先得投票给不少于21个的候选节点,或者投票给一个proxy,否则买不了rex代币。
函数参数:
买入rex代币from:rex市场的账户
amount:想支付多少eos买rex
买入代币后,rexfund表中的eos可用余额减少,rexbal表中的rex_balance增加
买入前的eos和rex余额 买入后的rex和eos余额一个eos能买多少rex代币,是通过bancor算法计算的。初始的时候,1 rex=1 eos,无论买卖次数多少价值比例不变。只有当用户操作了租赁cpu和net的动作后,产生了额外eos收益,才会使rex与eos的兑换发生改变,rex代币是只涨不跌的。具体计算方法我后面的文章会讲,好奇的小伙伴可以先看看斜杠大神的文章,做一个大致的了解:EOS REX即将上线,CPU租赁大战即将开响
4. unstaketorex
账户里没有eos怎么办?可以用抵押的eos买rex代币。此操作将从账户质押中解除相应的cpu、net抵押,解除抵押的eos将用于购买rex代币,并在用户rexbal表中的余额体现。
函数参数:
解除抵押,购买rex代币 购买前 购买后owner:拥有抵押eos所有权的账户
receiver:实际享有抵押的账户
from_net:想解除net抵押的eos金额,用于买入rex
from_cpu:想解除cpu抵押的eos金额,用于买入rex
5. sellrex
买入rex后,想卖出rex,则需要等4天的成熟期才能卖出,这么设计是防止投机行为
函数参数:
卖出rex失败 账户里成熟的rex为0owner:rex市场的账户
amount:想卖出rex代币的金额
如果sellrex交易成功了,则账户的rex市场中可用的eos会增加。
6. rentcpu/rentnet
租赁cpu,愿意付出100eos去租赁cpu,3eos进入cpu贷款中,供后续续租使用。
函数参数:
租赁cpufrom:付eos租赁cpu/net的账户
receiver:享受租赁的cpu/net的账户
loan_payment:愿意付出租赁的eos数量
loan_fund:额外进入cpu/net贷款的钱,供续租使用
cpu增加了0.0299eos,租赁时间是30天,怎么计算100eos能租多少eos,我们在下节介绍rex表结构的时候,跟大家详细说明。
获得了租赁的eos7. fundcpuloan/fundnetloan
rentcpu/rentnet的时候,我们提到了一个额外的loan_fund,用于续租使用的。下面是官方关于loan_fund的详细描述:
loan_fund的作用我简单解释下意思:
在租赁cpu和net的时候,可以额外充入loan_fund金额,供之后的续租使用。
查表cpuloan/netloan,当balance >= payment时,30天租赁到期后,会自动续租。否则,balance里的金额会退回用户的rex市场账户。
fundcpuloan/fundloan函数是为了给balance充值,保证能顺利续租。
cpu_loan详情函数参数:
为loan_fund追加eos 追加前 追加后from:租赁的发起人
loan_num:cpuloan/netloan表中的号码,指明为哪笔续租充值
payment:愿意追加多少eos去loan_fund
8. defcpuloan/defnetloan
可以为续租基金充值,也同样可以提取续租基金。
函数参数:
从loan_fund提eos 提取后from:租赁的发起人
loan_num:cpuloan/netloan表中的号码,指明从哪笔续租提币
payment:从loan_fund提取多少eos
rex表结构
涉及rex的表有以下几个:
cpuloan:cpu租赁的单子,里面有详情,包括:付出的eos、获得多少cpu、续租基金余额
netloan:net租赁的单子,里面有详情,包括:付出的eos、获得多少cpu、续租基金余额
rexbal:账户在rex市场可用rex余额,包括:成熟可卖出的rex金额、各笔金额的成熟期等信息
rexfund:账户在rex市场可用eos余额
rexpool:rex资金池信息,包括:可借出的eos、已借出的eos、市场上rex总额等信息
rexqueue:sellrex时,如果可用eos不够,订单会进入该表pending
查表命令:
cleos get table eosio eosio <table_name>
我这里想着重介绍下rexpool表的信息:
rexpool详情total_rex:rex市场中所有的rex代币
total_lendable:rex市场中可用的eos(这里包括买rex的eos、以及cpu/net租赁的盈利eos)
total_unlent:可以被用于出租或者买卖rex获利的eos
total_lent:已经出租的eos
total_rent:所有租赁cpu和net的获利金额的总和
之前,rentcpu如何计算能租到多少cpu计算公式:
rented_tokens = payment * total_unlent / total_rent
后记
rex作为官方cpu租赁平台,志在解决cpu资源短缺的问题,本人用起来还是比较流畅。希望rex能尽快推出正式版,我这几天也会再研究下rex的源码,届时再更新一篇为大家深入介绍。
网友评论