你好,我是不羁,一名程序员,带你玩转EOS智能合约开发。如果你对EOS智能合约感兴趣,欢迎关注我的专栏。
简介:昨天发表了一篇《关于Fibos项目的浅见》,引起了大家的讨论,不羁非常感谢大家的支持。从昨天的讨论中,不羁也意识到了昨天文中表达不清楚的地方,所以今天特意再补一篇文章,把那些模糊的地方表达清楚。
Fibos是什么
首先澄清的一点是,Fibos是一个独立的链,它并不是
所宣传中的EOS的侧链;它利用
了EOS的源码
,加入Fibjs这个javascript虚拟机(
就是解释并运行javascript代码的东西),形成的产物。
Fibjs所添加的Fibjs这个虚拟机部分,不会影响到共识协议层,它只是对EOS源码中的合约的执行层做了修改,我画了一张图EOS网络和Fibos网络中BP节点执行合约的对比图,供大家参考:
合约的执行是各个出块节点的工作。
可以看到,右侧Fibos网络的Js智能合约
运行在Fibjs虚拟机
中的,通过Js和C++的连接层
调用到原本的C++接口。
Fibos项目主要的工作就在连接层
这块儿,就是把js
的接口与C++
接口绑定起来。
被bancor
算法神化的IBO
先说说ICO
,项目集资方发行一种新的token,投资人可以用现有的主流货币(一般是BTC
或者ETH
)按照一定的比例兑换token,这个比例是由项目集资方事先定好的,并公布出来。为了刺激投资人尽快投资,一般会设计成阶梯形变化的兑换比例,投资的越早,兑换比例越高。比如某个项目的募资比例设计是这样的:前1000ETH,1ETH可以兑换10Token,之后的1000-3000ETH
,1ETH只能兑换8Token,再之后的3000-5000ETH
,兑换比例为1:6,募集5000ETH
结束。
当ICO结束后,有时候,投资人可能要等一段时间才能拿到token,有时候投资人可以立即拿到Token,完全看集资方是怎么设定的。不过拿到了Token本身并没有什么价值,要等着新的Token上交易所了,才可以交易,才有价值。
那么IBO
是什么呢?它相比ICO
有两个不同:
IBO的兑换比例也是越早参与的,可得的兑换比例越高;只不过这个兑换比例不是阶梯性变化的,是根据
bancor算法
动态调整的,bancor算法形成的兑换比例变化曲线更为平滑一些。比如Fibos项目,用户可以随时用EOS兑换成FO,当剩余FO量越少,兑换比例也越低,这个变化是很平滑的第二个不同是,IBO模式下,投资者可以立即得到新Token,并且可以自由地与投资的原有货币进行兑换。比如Fibos项目,用户兑换完FO之后,可以随时再兑换为EOS,只不过,因为兑换比例是动态调整的,在兑换回去之后,已经不是原来的比例了,你可能赚了,也可能亏了。
IBO模式,相比于ICO,提高了token的流动性,新发行的token,从参与IBO的那一刻起就变成流动的了。
这对于投资者来说,是有一定的好处的,如果看着苗头不对,可以随时兑换回原有货币。
然而,对于集资方来说,如果集资方想割韭菜,仍然很方便。以Fibos为例,如果它想割韭菜,它只需要在市场比较热的时候,把大量的FO兑换成EOS就可以了,这会导致FO兑换EOS的比例大跌,等到投资人想撤回的时候,只能以较低的比例兑换为EOS了。
所以IBO,并没有那么什么神奇,只不过是一种流动性更高的融资方式,它和ICO一样,对项目方集资方没有任何约束力。
Fibos的跨链转账是怎么回事
Fibos的IBO过程,因为是一个EOS和FO相互过程,而EOS和FO属于不同的网络,那它是怎么兑换的呢?
这就是Fibos文档中所说的跨链转账
了。不过这里的跨链,并不是Fibos和EOS网络上协议层的跨链,它采用给账户记账的方式实现转账。也就是,它的这种方式仅适用于资产兑换,与侧链和主链的网络层通信实现跨链转账不是一码事,这与我们前面说的Fibos不是EOS的侧链
这一观点是一致的。
好,我们看看Fibos的IBO过程到底如何实现的:
- 首先,Fibos在EOS网络创建了一个账号叫做:
fiboscouncil
。投资人转账的EOS资金都是进到这里的,转账的时候,在memo里填上在Fibos网络
中的账号(也就是用FO钱包创建的FO账号) - 有一点需要明确,
Fibos官方
可以从EOS网络检测到fiboscouncil
已经有多少EOS了,也可以检测到它所有的入账记录。 - 每当Fibos官方在检测到
EOS网络上fiboscouncil账户
有资金转进来了,并且交易的memo里填写了FO账号
,Fibos官方
便给你的FO账号
发放等量的fEOS
,这里的fEOS
我给的叫法,Fibos官方
把这个也叫做EOS
,其实它已经不是原来的EOS
了;它是Fibos网络
中的EOS,并不是EOS网络
中的EOS
,你把真正的EOS
转给了fiboscouncil
账户,Fibos官方
就给发放了等量的Fibos网络
中的EOS(后面我会把它叫做fEOS
),它能不能兑换成EOS网络
中的EOS
token,只能由Fibos官方
说了算,没有任何约束保证。 - 然后你就可以用FO钱包把
fEOS
兑换成FO了,它们都是在Fibos网络
中的代币,这个兑换就是同网兑换了。Fibos网络
中的兑换合约
知道FO的总量和当前的余量,同时也知道有已经有多少fEOS
参与兑换了,所以兑换合约
就很容易利用bancor算法
计算出当前的兑换比例,从而完成兑换。 - 这个过程之后,EOS网络上
fiboscouncil
账户里的EOS增加了,这个账号属于Fibos
官方,它可以随时支配这个账户里的资产;另外,用户在EOS
网络中的EOS减少了,在Fibos网络
中增加了相应数量的FO
。
上面就是所谓的IBO的过程。
在IBO过程中,用户也可以随时把FO
兑换为EOS
,方法正是与上面的过程相反的,简单的描述就是:
- 通过
FO
钱包把FO
兑换为fEOS
- 通过
FO
钱包把fEOS
转给fiboscouncil
账号,这个账号与上面的EOS网络中的fiboscouncil
账号不同,这个是Fibos网络
中的,只不过名字与EOS网络
中的一样。Fibos官方
检测到Fibos网络中的fiboscouncil
账号进来了fEOS
,就知道有人想转出了,并且用户的EOS网络
账号就在memo里,于是Fibos
官方就用EOS网络中的fiboscouncil
账号,向用户的EOS网络账号
转入EOS- 至此就换成了
FO
兑换为EOS
的全过程。
相比你会发现,整个过程的中心就是fiboscouncil
账号,FO网络和EOS网络各一个fiboscouncil
账号,名称相同;所谓跨链转账,不过是这两个账号相互倒腾的结果。让我们来进一步简化上面的描述:
-
EOS
兑换为FO
的过程是,用户把EOS
转给EOS网络中的fiboscouncil
账号,然后Fibos网络中的fiboscouncil
账号给用户发放fEOS
,而后用户用FO
钱包就可以在Fibos网络
中把fEOS
兑换成FO
-
FO
兑换为EOS
的过程是,用户使用FO钱包
把FO
兑换成fEOS
,然后把fEOS
转给Fibos网络中的fiboscouncil
账号,然后EOS网络中的fiboscouncil
账号向用户发送EOS
兑换时的注意事项
不管FO到底怎么样,都会有人想要去玩一玩,如果你也要玩,一定要分清楚FO钱包
里的EOS
到底是什么。
上面把FO钱包
中的EOS叫做fEOS
,因为它不是真正的EOS,然而FO钱包
却把它叫做EOS
。
这很容易让人误解,以为FO钱包
里的EOS
是真正的EOS
,于是就有人直接把FO钱包
里的fEOS
转移到交易所的EOS
地址了。造成了资产丢失。
正确的做法是要严格按照Fibos
官方给的方法做,收款方填写fiboscouncil
账号,memo里填写你的EOS网络里的账号
,这样Fibos
官方才能从它EOS网络中的fiboscouncil
转出EOS给你:
结语
本文有点偏技术,可能读起来有点烧脑,我自己在写这篇文章也花了九牛二虎之力,差不多用了5个多小时。
其实逻辑貌似并不复杂,可能我个人的语言能力还有待提高。
如果你能读懂,我非常欣慰,功夫没有白费。如果没有读懂,也不怪你,说明我还要加紧修炼表达能力。
感谢你的阅读!我最近有个项目要忙,可能要停更一周左右。一周之后,给大家一个小小的惊喜,敬请期待。