https://www.jianshu.com/p/376...
官网
白皮书
开源合约
API
介绍
历史由来
它是在1940年-1942年间由凯恩斯、舒马赫提出的一个超主权货币的概念,可作为一种账户单位用于国际贸易中,并由英国在二战后正式提出。然而,由于美国实力在二战后一枝独秀,Bancor 方案并没有在布雷顿森林会议
上被采纳使用。但应用这一思想的 Bancor 算法则继续延续了其生命力。Bancor
算法由 Bancor Network
项目提出应用,旨在采用公式来设定好数字资产间的兑换价格
。
那么回到班柯算法,他的创作者是一群凯恩斯经济学的追随者。通过代码实现和升级了bancor的设计理念。他的最完美最终形态,是一种自动定价的一篮子货币。你随便给我一个币,然后我会根据我篮子里面你这种币的储备量给你定价卖bancor给你。然后因为篮子里的货币是铁索连舟连在一起的,并且是根据供需达成的人机交易公式定价,既没有利用竞价规则炒作的风险,也没有任何空手套白狼的做多做空工具,更没有任何被挪用的可能。具有非常牛逼的鲁棒性。
基本概念
-
connector token
:用来做抵押发币使用,具有一定的价值,如:eth、btc。 -
smart token
:发出的新币,如erc20规范的代币。smart token
可以连接多个connector token
,此时smart token
也叫转换token
,用于connector token
之间的转换。 -
余额
:价格 x 供应量 = price * supply
算法公式
CW公式
-
connector balance
:连接器余额 -
smart token total values
:智能代币总余额
CW取值
-
cw = 100%
随supply
(smart token供应量)的增加,price(smart token 价格)不变。 -
cw = 50%
随supply
增加,price
线性增加。 -
cw = 0-50%
随supply
增加,price
指数增加。例如EOS RAM的定价机制的cw=0.0005。随着supply
增加,price
涨的飞快,让supply
的峰值只能涨到定点。 cw = 50%-100%
价格公式
-
connector balance
:连接器余额 -
Smart Token’s outstanding supply
:智能token的供应量 -
CW
:connector weight,连接器比重
智能代币买入
-
token issued
:应该获得的智能代币数量。 -
connectd token paid
:应该付出的连接代币的数量。 -
supply
:当前的智能代币供应量(数量)。
智能代币卖出
-
token destroyed
:卖出的智能代币数量 -
connected tokens paid out
:应该收获的连接币数量。
有效价格
用A个connect token 转换成B个smart token
-
connected tokens exchanged
:A -
smart tokens exchange
:B
转换器两端token转换计算公式
举个例子,现在将Atoken 转换成 Btoken
-
fromConnectorWeight
:Atoken的CW -
toConnectorWeight
:Btoken的CW -
fromConnectorBalance
:Atoken的余额 -
toConnectorBalance
:Btoken的余额 -
amount
:使用amount个Atoken用来转成Btoken -
toAmount
:能获取到的Btoken的数量
疑惑?
上面的公式都给出来了,按照智能代币买入公式,如果一开始supply = 10000,balance = 2500,cw = 0.5
;用100个connector token买了198个smart token。那此时supply和balance的值应该变化成多少?通过计算验证得出:supply = 10000 + 198;balance = 2500 + 100
;
案例
php的bancor计算公式
public function buy(){
$supply = $this->get["supply"];
$balance = $this->get["balance"];
$paid = $this->get["paid"];
$cw = 0.5;
$token = $supply * (pow(1 + $paid / $balance, $cw) - 1);
$price = $paid / $token;
ApiFunc::api_export([
"token" =>$token,
"priceBefore" => $balance / $supply / $cw,
"priceEnd" => $price
]);
}
public function sell(){
$cw = 0.5;
$supply = $this->get["supply"];
$balance = $this->get["balance"];
$token = $this->get["token"];
$paid = $balance * (1 - pow(1 - $token / $supply, 1 / $cw));
$price = $paid / $token;
ApiFunc::api_export([
"paid" => $paid,
"priceBefore" => $price,
"priceEnd" => ($balance - $paid) / ($supply - $token) / $cw
]);
}
EOS RAM的Bancor算法
引用
RAM做了二重Bancor算法。Ramcore作为smart token,连接着2个连接connector token。如下:
-
第一重
:以EOS为母币,Ramcore为衍生币; -
第二重
:以RAM为母币,Ramcore为衍生币;
需要注意的是,EOS RAM设置的cw值为0.0005。这样价格会快速增加,导致Ramcore的supply只能达到指定峰值。实现supply固定。
bancor.network
- BancorNetwork:BancorNetwork是bancor协议token转换的主要切入点。通过在单个事务中提供转换路径,运行在bancor网络中的任何token与其他token之间进行转换。
- BancorConverter,负责在token及其连接器直接进行转换。(中继代币)
- BancorFormula,不断重新计算价格,以保持tokens与连接器之间的余额。(自动定价)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。