FIBOS 链上的资源的获取是通过链上的治理币来完成的(对于 FIBOS 主链来说是 FO),其模型分为两种:
- 抵押型(CPU、NET)
- 消耗型(RAM)
抵押型资源(CPU、NET)
在 FIBOS 中抵押型资源有两种:
- CPU:表示消耗的链上的计算资源,单位是毫秒(ms)
- NET:表示消耗的链上的网络带宽,单位是 KB
抵押型的资源需要用户在链上使用治理币来抵押才能获取资源,进行抵押后的治理币不可进行转账等操作,只有经过解抵押操作治理币才能进行正常转账,而解抵押的周期为 3 天。当然,如果进行解抵押操作,也就意味着释放了使用之前已抵押资源的权利。抵押型的资源可以自己给自己抵押,也可以给他人抵押。
链上的哪些操作需要抵押型的资源呢?
广义上来讲,在 FIBOS 链上进行的所有操作都需要消耗抵押型资源:调用智能合约,代币转账,创建新账户,包括抵押资源本身等等。所有与链上合约的交互都需要消耗抵押型资源。
抵押型的资源会不会消耗完?
既然是称其为『资源』就说明它是会消耗完的。但是不同于消耗型的资源,抵押型资源的『消耗』只是表示的是在一个时间段内资源被消耗完全。
举个简单的例子:
某用户 A 抵押了 2.0000 FO 的 CPU 以及 1.0000 FO 的 NET 资源,假设他抵押的这些资源足够进行 5 笔转账,在今天下午 16:00,A 执行了 5 笔转账消耗完了自己的抵押型资源。也就意味着再进行第 6 笔转账会失败。但是在 24 小时之后,A 『消耗』之后的资源会得到恢复,A又可以继续进行转账了。
当然,链上真正的抵押型资源的抵押和消耗要比上述例子要复杂一些。一个账户所拥有的抵押型资源能够真正允许他在链上执行多少操作并不是一个固定的值,这个是和全网的资源总抵押量和整个网络的拥堵程度是有关的。假设一个账户所拥有的 CPU、NET 资源是固定的,如果全网的总抵押量越高,他能执行的操作也就越少,网络越拥堵(单位时间内链上交易的多少)他能执行的操作也越少。
回到上边的例子,也就意味着:
A 所拥有的 2.0000 FO 的 CPU 以及 1.0000 FO 的 NET 资源,满足他在今天下午 16:00 执行 5 笔操作,即便他什么操作也没有执行,也有可能这些资源在 18:00 的时候能够满足他执行 3 笔 或者 10 笔转账操作,而这具体取决于链的当前情况。
如果抵押型的资源全部消耗完了呢?
如果在单位时间内的抵押型资源消耗完成,可以等待到下一个资源使用周期(24小时),之前消耗的资源达到恢复周期,从而继续使用已恢复的资源;
也可以继续使用治理币来进行抵押来换取资源。
消耗型资源(RAM)
RAM 属于 FIBOS 链上的消耗型资源,主要用于链上的存储消耗。某账户使用了链上的智能合约存储空间就需要消耗该账户所拥有的 RAM。
RAM 该如何获得?
在 FIBOS 链上,RAM 是需要使用治理币来进行购买的。FIBOS 的系统合约有一个基于 Bancor 算法的交易市场,用户可以使用治理币进行 RAM 的购买和卖出。用户可以给自己购买 RAM,也可以给其他账户购买 RAM。
哪些场景会消耗 RAM?
- 某用户给未持有该币种用户的转账:例如 A 用户给 B 用户转账 FO 代币,而 B 用户并未持有 FO,则该笔转账会消耗 A 用户的 RAM。原因是在于,链上所有的持币信息是存储于智能合约的,当前链上并没有 B 用户的持币记录,A 给 B 转账需要使用合约存储来保存这一持币记录,因此需要消耗 RAM。但是,A 如果再给 B 转账就不再会消耗 RAM了,因为 B 已经拥有这部分存储,至于这部分存储存的是 100 FO 还是 10000 FO 并不会占用多余的存储;
- 多签提案:发起多签提案需要消耗提案者的 RAM;
- 调用需要占用存储的非系统智能合约;
- 创建新账户;
- ……
RAM 可以被释放吗?
RAM 是可以被释放的。例如,发起多签者的多签被执行之后,或者被否决之后,该提案将不再占用智能合约的存储空间,对应的 RAM 会得到释放。该账户可以将未被使用的 RAM 在 RAM 交易市场中卖出以换回治理币。
FIBOS 的新账户创建
FIBOS 的账户机制不同于比特币或者以太坊的地址,FIBOS 新账户的创建是依赖于 FIBOS 的旧账户的。也就是说,FIBOS 中每一个新账户的创建都是由已存在的账户来操作的。
已存在的旧账户需要给新创建的账户购买 RAM,抵押 CPU 和 NET 才能保证新账户能够正常进行各种链上操作。
FIBOS 的账户只能被创建,不能被销毁。
FIBOS 的超级节点投票机制
FIBOS 中的超级节点(BP)是整个链上非常重要的角色,承载着区块产生,升级系统合约等责任。在 FIBOS 网络中,只有排名前 21 的超级节点具有生产区块的权利和义务,其余排名靠后的节点作为候选节点,排名上升后也会开始生产区块,生产区块是能够获得治理币的奖励的。
而超级节点的排名是由治理币的持币用户投票来决定的,而投票的票权是由用户所抵押的 CPU 和 NET 决定的。也就意味着,一个用户所抵押获得的 CPU、NET资源越多,它的票权就越大。超级节点可以获得各个用户的投票,根据总票权来决定自己在全部超级节点中的排名。