写在前面
- 本文涉及到bancor名词可能会让部分不熟悉bancor的同学看着有些confuse,先把区别写在前面:
bancor plan: 可以理解为凯恩斯提出的“国际清算同盟计划”
bancor protocol / bancor协议: 可以理解成bancor机制的核心算法
bancor.network:基于bancor协议的智能合约实现的去中心化交易所
- 另外本文中关于token使用的「发行」一词的意思可以参考以下伪代码(相当于mint):
function issue(address _user, uint _amount) {
balances[_user] += _amount;
totalSupply += _amount;
}
bancor诞生的背景
二战之后,凯恩斯为了遏制美元称霸世界提出的“国际清算同盟计划”中的重要计划,也有人称其为「bancor plan」。这个计划主张多边清算,取消双边清算。而bancor本身在这个计划中,也是各国账户的记账单位。
而bancor的初始分配则以二战前三年的进出口贸易平均值计算,这样加上英联邦的殖民地,英联邦可以分配到的bancor多达35%,可以让英国在战后黄金储备耗尽的情况下,和美国共享国际金融的领导权。
而bancor plan所倡导的多边清算,在区块链token化兴起的今天,被用来解决token市场的长尾效应。目前,几乎每一个项目都要发行自己的token,目前大交易所都采用撮合交易的方式,即买和卖同时都有需求,交易才能发生。因此一些关注度小的token都有很大的流动性风险。
什么是bancor协议
bancor协议不依赖于双边需求匹配,其运用连接器 (connector)作为桥梁,实现了异步价格机制。即用户可以随时按照自动计算得到的价格,把某一种token卖给”连接器”拿出抵押物(通常是eth)或者换取其他token;买过程也一样。(这里说卖给了连接器并不恰当,大家可以理解成把token发送给连接器,再由连接器来实现兑换的逻辑)。
token发行方可以锁定一些ETH在连接器中并自定义CW(connector weight, 连接器权重,以前也叫CRR,即恒定准备金率),发行出一定数量的自己的token,bancor里称之为智能代币(smart token)。一般如果买需求增加,smart token的价格就会相应升高;卖需求增加,smart token的价格会相应下降。至于涨跌幅度,可以根据项目方对自己token的定义结合项目需要,通过自定义CW来实现控制。
未来用户也可以锁定一些smart token来发行新的smart token。这样就会形成一个价值网络,在这个网络中的token都可以以某种路径实现双向兑换,且因为异步价格机制,因而并不依赖买卖需求双边匹配。
在这样的机制保证下,即使是关注度小的token也没有流动性风险,释放token市场的长尾潜力。
bancor协议中的名词解释
bancor协议的白皮书中涉及到很多名词,先做一下解释:
- connector(连接器):可以认为连接不同token的兑换桥梁;
- connector token(连接器代币):可以理解成抵押物。比如在bancor网络中token发行的最初阶段,就是通过锁定ETH来发行smart token的。在“抵押ETH发行token”这个过程中,ETH就是connector token。(当然在bancor的具体实现中,是通过ETHER TOKEN实现的,下详述)。
- smart token(智能代币):理解成你想要发行的TOKEN。还是用“抵押ETH发行token”这个过程为例,smart token就是那个想要发行的token。
- CW(连接器权重): 理解成调节价格敏感系数的参数。买入smart token时价格上升,卖出smart token时价格下降,但是涨跌幅度不是一个固定的值,可以用CW调节。
上图中可以看到:不同的cw值对应的smart token价格随供应量不同表现出的不同走势。
当cw为1时,价格恒定;cw为0.5时,价格随供给量成线性变化;当价格分别为10%和90%时,价格随供给量的增加,一个表现为敏感,另一个表现为不敏感。这样的曲线走向和经济学中的价格弹性有异曲同工之妙。(笔者在旁边标注的 Es E s 表示的就是价格弹性系数)。
bancor中涉及到的数学证明
在bancor的白皮书中有提高,smart token的价格公式为:
我们对上面的公式做个变形,用R表示
connector balance
(比如说ETHER),用S表示
smart token
的供给量,用F表示
CW
, 最后用P表示智能代币的价格。
那么整个市场上的smart token的市值上限就是S*P
,根据上面的公式定义,得到R = FSP,变换成之前的公式也就是
当用户想购买非常少数量的
smart token
,用
dS
表示,那么该用户就需要支付
PdS
,而用户正是connetor token作为支付货币,因此
connector balance
增加的
dR
=
PdS
。
这样我们又得到了一个公式 (F是一个常量) :
继续往下推导: