1,摘要
通过本文学习,可以获得以下目标:
1)了解BANNCOR协议的基本原理;
2)通过举例熟悉BANNCOR算法的效果。
2,BANCOR算法的来源
在20世纪40年代,英国经济学家凯恩斯提出采用30种有代表性的商品作为价值锚定发行国际货币Bancor的构想。而其他国家或机构再以Bancor为价值锚定发行各自的货币。然而这一方案没有得到实施,取而代之的是美元成为国际货币。
Bancor算法能够真正进入大众的视野里,可能要归功于EOS项目。由于EOS项目在RAM分配中采用了优化后的Bancor算法,并将RAM的价格爆炒到了很高的价位,凭借EOS项目在区块链领域的强大运营宣传能力与影响力,Bancor算法广为流传。
3,BANCOR协议的基本思路
在以太坊上发行的大量ERC20-Token是没有价值锚定的,其价值完全依赖于项目方的技术与运营能力,若项目失败了,则通证(TOKEN)价值就很可能归零。
若利用智能合约的强大而灵活的“资金流转控制”能力,在通证合约中控制着一定量的储备金,让通证与储备金之间拥有一定的兑换能力,那么Token的价值就可以储备金为连接器代币,而不完全依赖于项目方。通证持有者也就不用承担项目失败或者项目方可能诈骗跑路的风险。
在以太坊平台上,显然ETH的价值与公信力最大,是最佳的储备金与连接器代币(Connector,又称锚定物),不过其他有价值的通证也可以作为连接器代币,而且连接器代币可以有多个。
若通证与连接器代币之间的兑换算法采用了Bancor算法,又符合ERC20标准,则被称为智能通证(Smart-Token) 。为了简单起见,以下的论述以ETH作为连接器代币举例说明。购买与售卖Token的过程如下:
“购买者”发送一定量的ETH到Token合约地址,触发了合约代码自动执行"购买功能代码",获得对应数量的Token;
“售卖者”发送一定量的Token到Token合约地址,触发了合约代码自动执行“售卖功能代码”,获得对应数量的ETH。
若AToken与BToken都是以ETH为连接器代币的智能通证,那么Token持有者无需通过交易所,仅仅凭借智能合约提供的买卖与兑换功能,就能实现AToken与BToken的自由兑换,比如AToken-->ETH-->BToken,多种智能通证之间通过共同的连接器代币串接起来,就形成了一个价值网络(Bancor Network)。
用于去中心化流动性的 Bancor 网络可以作为中心化交易所的替代,用于连接到网络中的任何代币,并带来诸多积极意义。例如,一个带有两个连接器的智能代币,其 CW 值为 100%,其功能类似于去中心化代币交易对。我们将这种智能代币称为中继代币。中继代币允许用户通过一个即时的两步过程在两个连接的代币之间进行转换,即使用其中一个连接器代币购买中继代币,然后立即将其出售给另一个连接的代币。由于定价算法,这将导致中继代币相对于连接器代币的价格上升(由于购买),和中继代币相对于连接器代币的价格下降(由于出售),这与预期完全一致。如前所述,中继代币的挂牌价格不太可能长久地与外部交易所中任何一个连接器代币的价格明显抵触,因为套利机会鼓励套利者在中继代币相对于连接器代币的价格与其在其他市场上的价格趋于相同。这种特殊的智能代币配置允许不符合 Bancor 协议的现有标准代币(没有连接器)也可以向后兼容(换句话说,通过中继代币与网络中的每个代币进行转换),从而增强了可行性并接触到流动性网络。
4,BANCOR的计算公式和举例
4.1 BANCOR的基本计算公式
计算公式涉及多个参数,解释如下:
Token的供应量【Smart Token's Supply】,简称Supply;
Token的价格【Smart Token's Price 】,简称Price;
Token的总市值【Smart Token's Total Value】,简称TotalValue;
储备金余额【Connector Balance】,简称Balance;
储备金固定比率【Connector Weight】,简称CW。
计算公式如下:
CW = Balance / TotalValue = Connector Balance / Smart Token's Value;
TotalValue = Price * Supply = Smart Token's Price * Smart Token's Supply ;
Price = Balance /(Supply * CW)= Connector Balance / (Smart Token's Supply * Connector Weight)
举例:若当前AToken的发行量为1000,报价为0.5个ETH兑换1个AToken,那么AToken的总价值为500个ETH,但是储备金余额可能并没有500个ETH,比如为250个ETH,那么CW则为0.5(50%)。
4.2 Token买入计算公式及举例
Token买入计算公式:
- Token_Return = Supply *((1 + ETH_Paid / Balance)^ CW - 1)
举例:若当前AToken的发行量为1000,储备金余额为250个ETH,CW为0.5,那么当前的报价则为0.5个ETH兑换1个AToken;现在Bob想花750个ETH购买AToken,带入公式:Token_Return = 1000 *((1 + 750 / 250)^ 0.5 - 1)= 1000
即Bob花了750个ETH购买了1000个AToken,本次购买的平均价格为0.75个ETH兑换1个AToken,比初始报价已经高了许多。Bob的购买行为推高了AToken的报价。若Bob接着购买同样数量的AToken,则需要付出更多的ETH代价,每一笔购买都会继续推高AToken的报价。
4.3 Token卖出计算公式及举例
Token卖出计算公式:
- ETH_Return = Balance *(1 - (1 - Token_Paid / Supply)^ (1 / CW))
举例:在Bob的那笔交易完成后,AToken的发行总量为2000个,储备金余额为1000个ETH,CW维持不变、仍然为0.5,那么通过公式可以计算当前的报价为1个ETH兑换1个AToken;现在Alice想卖掉1000个AToken,带入公式:ETH_Return = 1000 *(1 - (1 - 1000 / 2000)^ (1 /0.5))= 750
即Alice 卖掉了1000个AToken,获得了750个ETH,本次购买的平均价格为0.75个ETH兑换1个AToken。因为Bob的购买行为推高了AToken的报价,而Alice是在Bob的购买行为之后卖掉了AToken,所以Alice卖到了相对较高的价位。假如没有Bob的购买行为,回到AToken的供应量为1000的那个时候,Alice卖掉全部的AToken,也只能获得250个ETH。
bancor_protocol_whitepaper_en.pdf 白皮书的公式如下:
我们代入举例场景看看结果是否一致?
ETH_Return = 250 * ((1+ 1000/(2000-1000)) ^ (1 /0.5) - 1 )= 750 个;
如果代币余额和总供应量取交易发生后的结果数量,则这2个公式的计算结果是一致的。
ETH_Return = 1000 * ((1+ 1000/2000) ^ (1 /0.5) - 1 )= 1250 个;
如果代币余额和总供应量取交易发生前的结果数量,则结果明显是错误的。所以,辉哥认为白皮书的公式描述不够严谨。
5,BANCOR不同连接器权重与供需关系分析
图1显示了智能代币的价格,对CW的不同值的变化。简要讨论一下插图案例:
【辉哥备注】
Supply - 智能代币的结余供应量【Smart Token's Supply】,是指连接器外所有用户持有的智能代币总量。
Quoted Price - 智能代币的报价【Smart Token's Price 】
实际上,用3.1的公式是无法实现价格的平滑处理的,实际公式为3.3下一章的微积分公式。
(a)第一种情况是CW = 100%,在这种情况下,不管需求如何变化,智能代币的价格完全跟随于连接代币准备金的变化,两者的相对值不会发生变化。价格实际上与其连接代币的准备金挂钩,智能代币成为该值的一种代理。这可以比作金本位,一种货币制度,发行机构承诺将货币兑换成一定数量的黄金。例如,直到1971年,美元一直以每盎司35美元的汇率盯住黄金。
(b)第二个线性情况是CW = 50%,其中智能代币价格随供应量线性移动(随着连接器准备金而增长或收缩)。 当智能代币的需求较低时(即当出售量大于购买量时),智能代币价格会下降;当需求量较高时(即当购买量大于出售量时),智能代币价格会上涨。这种关系是供求关系的典型运作方式,唯一的例外是,智能货币的供应不是固定的,而是由需求决定的,而且在价格上涨时也不会稀释单位价格。
【辉哥备注】从智能合约买智能代币的量 > 当卖智能代币给智能合约的量时,就是需 > 供(从智能合约外部用户的视角),Supply上升,智能代币的价格线性上升。
(C) 第三个非线性的例子是,CW在0%到50%之间,这显示了价格和供给之间的相似增长关系,但是随着供给的增加,价格曲线增长得更加迅猛。图表显示了CW = 10%的特定价格曲线。低于10%的CW会比这个反应更强烈(更尖锐的指数曲线),而高于10%的CW会随着接近50%而相对地趋于线性(b)。
(D)最后一种非线性情况,CW在50%到100%之间,其中价格和供应之间的增长关系曲线增长力度不及(b),这意味着智能代币的价格对供应变化的反应越来越少,直到达到我们在(a)中看到的持平的100%关系。具体图表显示了CW = 90%的价格曲线。
从理论上讲,智能代币也可能具有大于100%的CW,但是,这是代币随着需求增加而变得更便宜的特定情况,并且超出了本讨论的范围。
6,BANCOR常见问题和解答
6.1 智能代币,连接器代币 的定义和区别
【智能代币(Smart Tokens )】
智能代币是Bancor协议的核心。它们的运作类似于常规代币,在ETH区块链上使用的符合ERC20标准[5],但也要包含额外的逻辑,即允许用户通过它的智能合约直接购买和出售代币,价格通过程序自动调整以反映供求关系。实际上,智能代币拥有一种内置的流动性机制,确保它们可以持续地为兑换为其他代币。
【智能代币连接器(Smart Token connectors)】
智能代币连接器可以被视为分布式、自主、透明和可预测的做市商,而不是交易所。智能代币通过程序自动调整它们的价格,来管理它们的连接器准备金,以保持它们与智能代币的总市值之间的比率是恒定的。
【锚定代币(connected token)】
每个智能代币都配置了连接器模块,这些模块持有它连接的另一个代币作为准备金(例如,BNT智能代币有一个连接到ETH的连接器,它持有ETH作为准备金)。ETH此时就是连接器代币。
【代币网络(token network)】
智能代币可以实现自己和它们的连接代币之间进行即时兑换。这个功能足以使智能代币即时兑换为一定数量的以类似的方式连接到同一网络的任何其他代币。通过这种方式,智能代币可以连接到无限数量的代币,从而创建一个分布式的流动性网络,该网络可能由数百万个代币组成,这些代币都可以以不断计算的价格自动地相互兑换。
【中继代币(Relay Token)】
具有两个连接器的智能代币,其总CW恰好为100%,其功能类似于分布式代币兑换币对。中继代币允许用户在两个连接代币之间互相兑换,通过两步操作实现,即购买一种代币,立即出售另外一种代币。
【流动性代币(Liquid Tokens)】
具有组合连接器总权重低于100%(更典型的低于20%)的智能代币成为流动性代币。可能有一个或者多个连接器。例如,BTN具有单个权重为10%的ETH连接器。流动性代币可以使用连接器代币买卖(使用Bancor公式计算它相对于连接代币的价格),并且可以自适应调节供应量,在购买时增加,出售时减少。
【代理代币(Proxy Token)】
具有一个连接器占100%权重的智能代币。
【组合代币(Array Token)】
具有三个或者更多连接器权重为100%的智能代币。
【糖果代币(Bounty Tokens)】
具有单个尚未激活连接器的智能代币(当前连接器准备金为0),可以向早起持有者(例如社区支持者)发放将来会发行的代币。
【网络代币(Network Tokens)】
由多个(>2)智能代币持有作为连接代币的智能代币,BNT就是一个网络代币,也是一个流动性代币。
6.2 BANCOR生态系统角色
【交易者】
持有、兑换和支付智能代币的终端用户
【智能代币发行者】
发行智能代币,配置初始供应量、价格、连接器权重CW和管理智能代币初始发行的人员、公司、社区、组织或基金会。还包括将现有ERC20代币连接到Bancor网络的中继代币的创建者。
【资产代币化者】
将代理代币或者组合代币映射到实体资产或者其他区块链上代币的创建者。这允许智能代币连接到更广泛的资产,如比特币、法定货币、黄金或其他新兴的区块链代币。
【套利者】
监控Bancor流动性网络与外部交易所或者其他智能代币的价格,并且通过套利消除价差的交易者。套利者通过消除价差获得奖励,因此是Bancor生态系统的重要参与者。有关Bancor协议中套利机制的进一步说明,请参见第3.6节。
7,参考
(1)【超越白皮书4】Bancor 算法的数学、经济学解析与参数测算
(2)bancor.network官网
(3)10张图带你看懂Bancor协议
(4)【白皮书】Bancor协议:通过智能合约为加密货币提供持续流动性(附PDF下载)
(5)EOS“带货”Bancor算法,但大多数人并未真正读懂它
(6)【TokenClub研究院】Bancor协议研究报告
辉哥整理了BANCOR的系列知识分享,列表如下:
(1)【白皮书】Bancor协议:通过智能合约为加密货币提供持续流动性(附PDF下载)
(2)【易错概念】以实例形式深入浅出讲透BANCOR算法
(3)第二十四课基于以太坊的交易所BANCOR算法实现-转换算法框架
(4)第二十五课如何开发自己的BANCOR去中心化交易平台?
(5)第二十七课如何从BANCOR.NETWORK去中心化交易所兑换ENJIN通证
如有需要的同学下载测试工程的可加入知识星球下载。