Leap BlockChain

Bancor协议详解

2018-09-28  本文已影响25人  Jisen

Bancor协议 - 通过智能合约实现加密tokens的持续流动性。

官网bancor.network
白皮书Bancor Protocol - Continuous Liquidity for Cryptographic Tokens through their Smart Contracts
开源合约bancorprotocol
APIBancor API

概要:Bancor是一个去中心化的流动性网络,为用户提供简单、低成本的买卖tokens的方式。Bancor的开源协议通过智能合约直接授权具有内置可转换性的token,允许集成的token立即相互转换,无需在交易中匹配买卖双方。Bancor钱包可以直接在钱包内实现token的自动转换,价格比交易所更容易预测,并且不会受到操纵。

Bancor协议的原型:起源于第二次世界大战之后,布雷顿森林体系的建立,以美元为中心的货币体系取代了黄金标准体系。美元与黄金挂钩,其他货币与美元挂钩。美元已成为中继货币,与本国货币形成可调汇率。各国交换黄金的先决条件是兑换美元。

核心合约

Fomo3D 和 EOS RAM都使用了Bancor协议。参考:Fomo3D和EOS RAM背后的Bancor协议

Bancor协议解决的问题

计算公式

price = \frac {\text{connector balance}}{\text{Smart Token’s outstanding supply}\times {CW}}

其中,\text{Smart Token’s total value} = price \times \text{Smart Token supply}.

买入过程计算公式

\text{tokens issued} = supply \times \left(\left(1 + \frac {\text{connected token paid}}{balance}\right)^{CW} -1 \right)

卖出过程计算公式

\text{connected tokens paid out} = balance \times \left(1 - \sqrt[{CW}]{1- \frac{\text{tokens destroyed}}{supply}}\right)

有效价格

\text{effective price} = \frac{\text{connected tokens exchanged}}{\text{smart tokens exchanged}}

转换器两端token转换计算公式:

toAmount = toConnectorBalance \times \left(1- \left(\frac{fromConnectorBalance}{fromConnectorBalance + amount}\right)^{\frac{fromConnectorWeight}{toConnectorWeight}} \right)

价格计算的例子:

假如有一个新的智能token为BNT的供应量是10000个,一个连接器目前的余额为2500个,并且这个token的CW为50%,那个这个token可以转换为它的连接token为ETH,价格如下:

price = \frac{2500}{10000 \times {0.5}} = 0.5

买入过程:

如果买家使用100个连接token兑换新的智能token。将收到多少智能token?

\text {tokens issued} = 10000 \times \left ( \left(1 + \frac{100}{2500}\right)^{0.5} - 1\right) = 198

有效价格为:

\text{effective price} = \frac{100}{198} = 0.5051

即,1 Bancor = 0.5051 ETH。

卖出过程:

如果用户要出售100个智能token,相当于从连接器销毁,那个会转换成多少个连接token呢,换句话说连接器另一方需要支付多少连接token呢?

\text {connected tokens paid out} = 2500 \times \left(1- \sqrt[{0.5}]{1 - \frac{100}{10000}}\right) = 49.75

所以有效价格为:

\text{effective price} = \frac{49.75}{100} = 0.4975

即,1 Bancor = 0.4975 ETH。

转换器token转换计算:

假设现在转换器两端连接器token A余额为2500,token B余额为100,且CW都为50%。那么使用10token 能换得多少token A?

\text{token A amount} = 2500 \times \left(1- \left (\frac{100}{100+10}\right)^{\frac{0.5}{0.5}}\right) = 227.5

那么,有效价格为:

10 token A = 227.5 token B,即1 token A = 22.75 token B。

总结:

这个就是价格的算法,CW和Balance都是针对连接器来说的,跟供应量没有关系。按照正常的供需关系,买卖双方的价值应该是相等的,所以CW设为50%,那么,连接器两端的token的Balance应该要保持平衡。那个价格就是token之间供应量与流通量之间的比值。

Bancor协议就是一个token1 -> 连接 - > 转换 -> 连接 -> token2这样的过程,连接器为token之间的转换提供了通道,转换器则是为了平衡买卖双方。

中继代币

符合Bancor协议的token包括内置的非营利性做市商。主要有两种类型:

智能token

image

中继token

image

中继代币如何工作的?

中继代币是一种具有两个连接器余额的智能代币,每个连接器余额的权重为50%,可以包含任意数量的ERC20代币。Relay Token的主要功能是允许在每个连接器余额之间进行转换。

可以将Relay Token视为一个平衡秤,每一侧代表一个连接器的总供应量。从秤的一侧购买代币的方法是另一侧添加代币。Relay Token不知道市场认为每个连接器的公平价格是什么,它只知道秤的每一侧代表相同的价值量。例如,如果我们要创建名为ENJBNT的中继代币,其中一个连接器具有1000个ENJ代币的余额,另一个连接器余额为10,000个BNT代币,则中继代币将以1 ENJ = 10 BNT的值运行。如果有人试图从中继购买1 ENJ,他们将需要发送给Relay Token的转换器10 BNT代币。在该事务发生之后,中继中的代币供应发生变化,现在中继代币假定999 ENJ = 10,010 BNT。

每个事务都会更改连接器之间的转换率。这确保了连接器中保持的天平在数学上不会耗尽,因为天平一侧的代币供应减少,两侧之间的交换率增加,从而永远不会达到零。

这种模式的另一个好处是,天平任何一方的需求决定了它相对于另一方的价格。当一个连接器的供应减少时,价格会上涨。这允许市场确定中继代币的每一侧的价格。

与所有智能代币一样,当中继代币的计算转换率与其他交易所的价格不同时,套利者被激励在中继代币和其他交易所之间充当“流动性推动者”,确保转换率代表“实际”市场价格。

Bancor与交易所的区别

Bancor的运作类似于交易所,因为用户可以买卖代币,但实现这些行为的机制完全不同。

以下是Bancor与传统交易所之间的主要区别:

主要结论

  1. Bancor协议是一种算法而非一个公链,理论上来讲,任何支持智能合约功能的公链都可以通过智能合约实现这种算法,并发行相应的代币。
  2. Bancor协议要求,任何新代币的创建必须抵押一定数量的主流原生代币作为新代币的“准备金”(类似保证金的概念),后续用户的交易是和系统合约进行的,而非采用交易所的撮合制交易模式。
  3. Bancor协议采用“恒定准备金率(Constant Reserve Ratio)”策略促成价格发现,新代币的创建者需要抵押一定价值的“准备金”,并结合新代币当前供应量和准备金代币的余额实时调整新代币价格。
  4. 采用Bancor协议的代币可以直接获得跨币种交易的功能,是实现去中心化交易所的可行解决方案。

EOS RAM价格波动

主要由于EOS对Bancor Relay权重的配置,权重参数被设置为0.05%而不是50%,这引入了大量买卖的重大滑点,导致其波动性超出预期。

类似项目

参考

上一篇 下一篇

猜你喜欢

热点阅读