Bancor协议 - 通过智能合约实现加密tokens的持续流动性。
官网:bancor.network
白皮书:Bancor Protocol - Continuous Liquidity for Cryptographic Tokens through their Smart Contracts
开源合约:bancorprotocol
API:Bancor API
概要:Bancor是一个去中心化的流动性网络,为用户提供简单、低成本的买卖tokens的方式。Bancor的开源协议通过智能合约直接授权具有内置可转换性的token,允许集成的token立即相互转换,无需在交易中匹配买卖双方。Bancor钱包可以直接在钱包内实现token的自动转换,价格比交易所更容易预测,并且不会受到操纵。
Bancor协议的原型:起源于第二次世界大战之后,布雷顿森林体系的建立,以美元为中心的货币体系取代了黄金标准体系。美元与黄金挂钩,其他货币与美元挂钩。美元已成为中继货币,与本国货币形成可调汇率。各国交换黄金的先决条件是兑换美元。
核心合约:
- BancorNetwork,是bancor协议token转换的主要切入点。通过在单个事务中提供转换路径,运行在bancor网络中的任何token与其他token之间进行转换。
- BancorConverter,负责在token及其连接器直接进行转换。(中继代币)
- BancorFormula,不断重新计算价格,以保持tokens与连接器之间的余额。(自动定价)
Fomo3D 和 EOS RAM都使用了Bancor协议。参考:Fomo3D和EOS RAM背后的Bancor协议
Bancor协议解决的问题:
- 安全性:Bancor协议事务本质上是人与人之间的直接交易,避免了托管风险。
- 流动性:当用户发出新token时,无需为在交易所上市token付出太多代价,并且可以免费享受市场流动性。更大的流动性将带来从长尾中释放股息,增加影响力较小token的价值。
计算公式:
-
connector balance
:连接器余额 -
Smart Token’s outstanding supply
:智能token的供应量 -
CW
:connector weight,连接器比重。
其中,.
买入过程计算公式:
卖出过程计算公式:
有效价格:
转换器两端token转换计算公式:
价格计算的例子:
假如有一个新的智能token为BNT的供应量是10000个,一个连接器目前的余额为2500个,并且这个token的CW为50%,那个这个token可以转换为它的连接token为ETH,价格如下:
买入过程:
如果买家使用100个连接token兑换新的智能token。将收到多少智能token?
有效价格为:
即,1 Bancor = 0.5051 ETH。
卖出过程:
如果用户要出售100个智能token,相当于从连接器销毁,那个会转换成多少个连接token呢,换句话说连接器另一方需要支付多少连接token呢?
所以有效价格为:
即,1 Bancor = 0.4975 ETH。
转换器token转换计算:
假设现在转换器两端连接器token A余额为2500,token B余额为100,且CW都为50%。那么使用10token 能换得多少token A?
那么,有效价格为:
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:
- 按照用户配置的比重保持一个连接器(BNT)
- 如果要启动新token,请将其设为智能
中继token:
- 保持两个连接器(BNT + 任何ERC20 token),每个连接器具有50%的比重。
- 运行现有token向后兼容网络
中继代币如何工作的?
中继代币是一种具有两个连接器余额的智能代币,每个连接器余额的权重为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与传统交易所之间的主要区别:
- 没有交易对手。在集中式和分散式(DEX)加密货币交易所中,必须匹配买方和卖方才能执行交易。使用Bancor,每笔交易都直接针对智能合约执行。这意味着交易加密货币不需要实时匹配双方以满足需求; 相反,它可以由一方直接通过token的智能合约完成。
- 持续流动性。在传统交易中,代币的流动性直接与交易时买方或卖方的可用性挂钩。在Bancor网络上,无论交易量如何,都可以购买代币。这可以通过Bancor的自动定价机制实现,该机制每次购买时都会增加代币的价格和供应量。
- 不扩散。当人们试图购买代币而不是出售代币时,典型的交易所会有不同的价格,这被称为差价,是交易所在每次交易中赚钱的一种方式。在Bancor上,由于Bancor公式的算法价格计算,销售和购买代币的价格是相同的。
- 没有订单簿/可预测的价格滑点。 交易所需要订单簿,潜在买卖订单列表,以匹配买家。由于此列表是动态的,因此如果订单需要多个交易对手,通常很难确定价格滑点是什么,例如,如果有人想要购买更多的代币而不是任何一个人以期望的价格进行销售。Bancor没有订单,所有价格都使用公式计算,因此每笔交易的价格滑点都是提前知道的。
主要结论
- Bancor协议是一种算法而非一个公链,理论上来讲,任何支持智能合约功能的公链都可以通过智能合约实现这种算法,并发行相应的代币。
- Bancor协议要求,任何新代币的创建必须抵押一定数量的主流原生代币作为新代币的“准备金”(类似保证金的概念),后续用户的交易是和系统合约进行的,而非采用交易所的撮合制交易模式。
- Bancor协议采用“恒定准备金率(Constant Reserve Ratio)”策略促成价格发现,新代币的创建者需要抵押一定价值的“准备金”,并结合新代币当前供应量和准备金代币的余额实时调整新代币价格。
- 采用Bancor协议的代币可以直接获得跨币种交易的功能,是实现去中心化交易所的可行解决方案。
EOS RAM价格波动
主要由于EOS对Bancor Relay权重的配置,权重参数被设置为0.05%而不是50%,这引入了大量买卖的重大滑点,导致其波动性超出预期。
类似项目
- kyber.network:github - KyberNetwork 参考:三大去中心化交易协议对比
- 0xproject:github - 0x-monorepo
- airswap.io:github - airswap
- shapeshift.io:著名的Jaxx钱包,数字货币之间的交易使用的就是shapeshift。