Bancor评级:算法能否解决加密货币流动性问题?
从人们需求的角度来看,大多数的需求会集中在头部,而分布在尾部的需求是零散的小量的需求,这部分少量的需求会在需求曲线上面形成一条长长的“尾巴”,将这些少量需求累加起来就会形成一个比头部需求还大的市场。
1 背景介绍
普通的代币通过ICO方式发行,并在交易所得到相应的流动性,由于在当前加密数字市场存在较为显著的长尾现象(前10%的代币占整个代币币值的95%,占所有交易量的99%), 令许多新币或者市值较小的代币无法获得足够的流动性。
Bancor的设计从理论上给这部分缺乏流动性的代币提供一个可以进行买卖交易的地方 ,即用智能合约充当做市商这样的一个角色,用户可以直接跟智能合约进行买卖,通过一定的算法实时报价,模拟了一个代币买卖环境,里边的币价随着用户不断买入而增高,随着用户不断的卖出而下跌。
与传统交易所相比,Bancor的设计有几点不一样的地方 (只考虑在智能合约进行买卖,不考虑存在外部交易市场的情况)。
2 与普通交易的区别
第一
通过数学公式模拟的市场环境是一个绝对理想主义的定价体系,即价格与供应量遵循某一人为定义的函数关系,而现实世界由于供应量无法随时调整,价格与供应量无法形成一一对应的关系,两者的定价机制存在很大的不同。
普通的ICO供应量是人为先确定的,再通过市场需求(使用需求和投机需求)的变化带动价格的涨跌,价格预测存在一定不确定性。Bancor协议的原理是通过市场需求确定供应量和对应的价格,当代币价格在市场可承受范围之内,市场需求不断上升时,代币会不断被释放出来,同时由于价格的上升,会使得市场需求降温,早期买入者选择卖出获得收益, 人们可以根据系统上代币的出售数量准确预测价格涨跌幅度,使得市场更具可操控性。
第二
滑点交易,完美的根据数学公式进行报价的系统使得代币没有价格承载量,即同一笔交易,交易量的大小会导致最后成交的价格不同。
由于跟智能合约的交易不是传统的撮合买卖方的交易,可以将其当成普通的交易分开为独立、不在同一时点、价格不同的两个智能合约交易,称为 异步流动性 。
传统的交易其实是一个双想要的问题 ,即买方和卖方对同一事物在同一时点达成一致的价格协商,当交易深度不足时,订单成交的可能性将会降低(传统交易所会通过将风险转嫁给做市商的方式来提高成交率,然而做市商也会出于平衡风险头寸的考虑,无法百分百保证当前市价的订单成交),而 异步流动性降低了达成交易所需的门槛。 与此同时,用户需要为滑点买单,因为即使是微小的一笔买入量(卖出量)也会使得价格上升(下降),量越大价格变动越大,而一个流动性越强的市场,交易对价格的冲击相对越小,买卖双方的合作可以抵消掉这部分的价格冲击。即使当很多人使用智能合约进行买卖,使得价格波动总是在一定范围内,但由于类似于单机的交易,个人总是要承担自己买卖的数量带来的市场价格的波动。
除此之外,由于曲线的人为设定,并不一定能反应市场价格和数量方面的需求关系,存在失真。 从这个方面说,bancor协议并不适合于形成一个成熟的交易市场, 但它对早期流动性缺失和项目交易启动能提供一定的帮助。
第三
代币的发行和回收(即使是先前募资发行的那一批代币,也可以卖回智能合约)根据市场需求进行,能较好的反应市场需求,不会稀释到单价,减少超发、滥发的情况发生。
由于合约里边储备的价值总是有限的且小于代币的价值,当市场不再有买入量时,先兑换的人总是能兑到较高的价格,因此 当市场对代币不看好时,人们会倾向于先变现,因此容易发生挤兑。
第四
传统做市商通过双边报价的价差获取收益,bancor协议买卖曲线是同一条,不存在价差问题,即买入价与卖出价相等,减少了中间费用。
3 bancor算法的数学原理
在bancor的设计中,存在两个池, 一个是connector,一个是smart token,可以理解为一个是储备金池,一个是代币池,储备金池里的资金可用于用户向智能合约卖出代币时兑换出储备金。
根据bancor白皮书,
在bancor的另一份资料中,对函数进行了较为详细的推导。假设smart token的总价值为SP(S为供给量,P为价格),储备金率为F,储备金总价值为R,即R=FSP,对于任一无穷小的购买量dS,需要支付PdS的储备金,即dR=PdS,同时对R=FSP进行微分,得到
令α=1/F-1,
由此得出代币的实时价格公式。 可以看出,当CW取不同值时有不同的函数曲线,其中CW取值越小,价格波动越剧烈。
用户向智能合约购买T个代币,即将原有供应量推高到+T,需要付出的代价为E,利用积分公式,
从价格公式不难看到,随着供应量的增加,价格在不断上涨, 决定曲线的关键是储备率CW,通过更改CW可人为定义曲线的形态。 从币价上涨逻辑来说,由需求推动供给增加,可以抑制过度发行造成价格下降,有效调节市场需求和供给的关系。但是从满足市场需求来说,这种变动模式会被投机者利用,在早期买入大量代币,过度哄抬价格,使得真正有需求者需要付出很高的成本,当成本收益比变大时导致市场需求被抑制,不利于生态的扩大和发展。
除了单个储备池的普通模式,bancor协议还提出了两个储备池的模式, 其中,令牌的两个储备池权重之和为100%的模式称为中继令牌,该模式可用于为两种已存在的令牌提供兑换通道。例如,A、B是分别和X相互连接的两个令牌,用户可以通过将A换成X,将X换为B实现A和B的互换。
4 EOS RAM的数学解析
Bancor协议出来后为项目提供了一种新的定价思路和交易模式, 为缺乏流动性的代币赋予一定的投资价值 ,当然也可以将某一无法流通的资源代币化,再加入bancor算法,通过市场流动性促进资源的有效利用, eos在这方面做出了尝试。
我们知道,在EOS网络中,目前提供使用的资源有两类, 一类是RAM,购买型的;另一类是CPU和网络带宽,抵押型的。 把EOS理解为区块链操作系统,CPU和网络带宽是跟时间相关的,一定时间内你可使用的CPU和网络带宽是有限的,可使用量和你抵押的EOS数量相关,随着时间的流逝,CPU和网络带宽会慢慢恢复,抵押的EOS在不用时可以全部退回。
而RAM其实就是我们常说的内存。由于EOS是0.5s一个区块的高速运转,系统中的账号信息、智能合约执行信息的当前状态是存储在内存中的,因此这些信息需要长期占用内存。当存储账号状态的空间不足即RAM不足时,某些交易及其他操作就无法执行。例如你虽然余额中有足够的EOS,但RAM不足,你仍需要先购买RAM才能部署智能合约。
RAM的交易机制采用Bancor算法,通过中间令牌RAMCORE来保证EOS和RAM之间的交易流通性。从EOSIO代码看EOS->RAM的交易,是通过EOS->RAMCORE, RAMCORE->RAM来实现的,反之一样。 以下为RAM公式推导过程
EOS->RAMCORE:
RAMCORE->RAM:
一般情况下RAMCORE都是远远小于A的, 即A-RAMCORE=A
将第二个式子代入第一个式子整理得到RAM和EOS的关系式
所以,当有用户买入RAM时,B和C的变化情况为
那么,
由此我们可以知道, 无论RAM市场如何波动,B和C的乘积几乎时保持不变的 ,即BC=64*1024*1024 KB*100万EOS,即67108864000000,设为G,那么
最终,计算单个EOS能兑换RAM的数量,
则,RAM的价格函数为
用excel表格拟合出RAM的价格变化图
由于后边数值差距过大,将已出售的数量最高设定为50G,具体价格走势如图所示
ram的历史价格走势如下图所示
从6月19日开始ram的价格完美按照设定的函数逐步升高,并在14日后到达某一价格点快速回落,后边价格一路走低,截至发文,ram的价格为0.065EOS/KB。可以看到,ram所设定的函数曲线, 当已出售的量到达某一点时价格处于极大风险值中,此时系统再出售或回收数量极小的ram,都会引起价格疯狂的上涨或下跌, 不利于价格在高位保持。同时这种特性在场外市场还没建立的情况下,无法保持ram更好的流通,同时更容易被投机者操控价格。
目前ram已经通过了扩容方案,eos社区希望用增加供应的方式降低价格,截至发文达RAM的总数为89.4G。我们将ram的供应量分别设定为69G和74G,并画出相应的函数图像。
我们同样将已出售的量定为50G以下,得到如下函数曲线。
从函数图像上的反应可以看到这种解决方式只能暂时延缓ram价格再次飙升的时间,且随着扩容,ram到达极限值的价格波动会更大,风险更高。
由于ram始终是属于稀缺资源,当开发者们持续在eos上进行开发,将来仍不可避免会面临系统资源使用成本极大的问题(由于投资炒作使得真正的开发需求得不到满足,尽管目前的RAM使用率并不高)。除非改变中间令牌RAMCORE的储备率,进而使得价格曲线发生改变。然而从bancor曲线的定义来看,越平缓的价格波动需要越高的储备率,这意味着项目方需要越多的资金锁定在合约里供用户兑换,显然这对项目方来说是不利的。 从这个层面来说,ram采用bancor的中继算法无法使得eos的生态可持续、稳定的发展,可能只会成为投资的温床。
5 总结
Bnacor算法为通证的流通和升值创造了一个新的逻辑 ,从理论上说可以为缺乏流动性的通证带来一定的流动性或者作为新通证的启动方式,然而这种方式是存在缺陷的,除了文章开篇提到的一些缺陷之外,储备池的模式还存在其他的漏洞,例如,储备货币价格波动。当储备货币大幅贬值,有可能使得供应量越大价格越高的设定并不成立。这些特点使得这样的市场不足以成为一个较为成熟和完善的市场,这一点其实bancor的创建者也注意到了,因此在 其白皮书上反复提到了bancor算法定价市场作为一个套利市场的存在 。
如果一个通证的流通市场想要走向成熟的话,仍不可避免要有普通交易市场的融入,使得真正的市场需求和价格达到平衡,从而系统可以稳健的发展。同时,在设计bancor曲线时也有诸多考虑的因素,需要结合通证属性和项目方的需求进行设计。
参考文献
[1] EOS智能合约开发(十二)EOSIO购买RAM中Bancor协议算法分析
https://blog.csdn.net/jambeau/article/details/81366689?utm_source=blogxgwz9
[2]bancor_protocol_whitepaper_en
[3]Bancor Conversion Function