【solitidy】bancor协议

56次阅读

共计 2132 个字符,预计需要花费 6 分钟才能阅读完成。

https://www.jianshu.com/p/376… 官网白皮书开源合约 API

介绍
历史由来
它是在 1940 年 -1942 年间由凯恩斯、舒马赫提出的一个超主权货币的概念,可作为一种账户单位用于国际贸易中,并由英国在二战后正式提出。然而,由于美国实力在二战后一枝独秀,Bancor 方案并没有在布雷顿森林会议上被采纳使用。但应用这一思想的 Bancor 算法则继续延续了其生命力。Bancor 算法由 Bancor Network 项目提出应用,旨在采用公式来设定好数字资产间的兑换价格。那么回到班柯算法,他的创作者是一群凯恩斯经济学的追随者。通过代码实现和升级了 bancor 的设计理念。他的最完美最终形态,是一种自动定价的一篮子货币。你随便给我一个币,然后我会根据我篮子里面你这种币的储备量给你定价卖 bancor 给你。然后因为篮子里的货币是铁索连舟连在一起的,并且是根据供需达成的人机交易公式定价,既没有利用竞价规则炒作的风险,也没有任何空手套白狼的做多做空工具,更没有任何被挪用的可能。具有非常牛逼的鲁棒性。
基本概念

connector token:用来做抵押发币使用,具有一定的价值,如:eth、btc。

smart token:发出的新币,如 erc20 规范的代币。

算法公式
CW 公式

connector balance:连接器余额

smart token total values:智能代币总余额

价格公式

connector balance:连接器余额

Smart Token’s outstanding supply:智能 token 的供应量

CW:connector weight,连接器比重

智能代币买入

token issued:应该获得的智能代币数量。

connectd token paid:应该付出的连接代币的数量。

智能代币卖出

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 算法。

第一重:以 EOS 为母币,Ramcore 为衍生币;

第二重:以 RAM 余量为母币,Ramcore 为衍生币;

bancor.network

BancorNetwork:BancorNetwork 是 bancor 协议 token 转换的主要切入点。通过在单个事务中提供转换路径,运行在 bancor 网络中的任何 token 与其他 token 之间进行转换。

BancorConverter,负责在 token 及其连接器直接进行转换。(中继代币)

BancorFormula,不断重新计算价格,以保持 tokens 与连接器之间的余额。(自动定价)

正文完
 0