BANCOR算法详解及代码实现
1)题目: 【区块链技术工坊22期】BANCOR算法详解及代码实现 2)议题: 1)BANCOR算法的特点和优劣势 2)BANCOR算法和举例 3)如何加入BANCOR.NETWORK交易所 4)如何开发自己的BANCOR去中心化交易平台? 3)嘉宾:
创业股平台 CTO,尖晶投资技术赋能中心副总经理, HiBlock技术社群上海合伙人,电子科技大学硕士毕业, 10年华为/中兴 产品.研发经验,深耕区块链应用。 4)活动定位 由HiBlock,创业股平台和兄弟区块链社群共同主办的区块链技术工坊,深度分享区块链知识,实现小会技术交友。区块链技术工坊坚持4F原则:
目前小规模通证交易痛点:
1,没有对手风险,所有的交易都是人机交易,买家不需要去找卖家,卖家不需要去找买家,交易信息公开透明。 2,不同于中心化交易所的撮合定价,BANCOR协议的定价是根据真实供需公式定价公开透明可预测; 3,没有竞价这个环节,不依赖流动性。刷单,刷交易量,刷净流入,净流出等操作都是无意义的。
1 轻松创建 Token Bancor 使创建数字资产变得更容易,解放用户生成 Token 的巨大潜力。这些token 还提供便宜的访问服务,这些服务之前都是很昂贵的,或者其他方式无法访问的。 2 模块化工具包 Bancor 协议建立了唯一的标准从而使多种应用场景变得可能。由于智能代币能够将其他智能代币作为储备,它们可以被用来作为新的金融,银行或其他货币解决方案的模块,这些模块能够向它们自己乃至整个生态系统传递价值。 3 嵌套估值 通过在储备中持有一个预先存在的代币,智能代币与相关资产有一个预先的估值。因此,由于与这些预先储备的代币的联系,智能代币的建立,或直接或间接的与更大的价值相连接(这些预先存在的代币所代表的价值)。生态系统的长期演变是开放的,对于 Bancor 协议来说,网络可能会设定它们对投机或波动性的偏好。 4 互联的框架 通过帮助一些非常小的实体和网络在无须牺牲个体独特性的前提下共享和交换资源,智能代币使它们连接成一个更大的网络。
1 连续流动性 用户总能通过智能合约在网络中直接购买或出售代币,即便市场中只有很少或者没有其他买家或卖家。因为价格会根据兑换规模进行调整,所以总可以使用特定价格来兑换代币。Bancor 协议有效地使得流动性与交易量脱钩。 2 没有内置手续费 默认情况下,智能代币不会对它们执行的兑换收取费用。用户承担的唯一费用是处理下层区块链易所需的费用(例如,以太坊的 gas)。虽然智能代币的发行者可能为通过他们的特定智能代币进行的兑换设定可选的使用费(称为捐赠)。 Bancor 协议不会为了获取运营利润而收取兑换费用,而是从代币网络的扩展以及用户数量的增长中获利。 3 可调整的价格敏感度 大量连接器余额和高权重的带来的影响,是使得智能代币价格对大宗交易导致的短期投机和价格波动更不敏感。例如,一个 CW 为 10%的智能代币,相当于交易所里一个占代币市值 10%的订单。这种灵敏度可以通过 CW 和连接器余额进行调 整,以实现特定智能代币的预期配置。 4 没有价差 Bancor 公式在处理买单和卖单时使用同样的价格计算方法。这与传统交易所不同,传统交易所的买入价格总是低于卖出价格。买卖价差,即所谓的价差,是传统的做市商赚取利润的原因。如上所述,Bancor 协议不会为了运营而获得这种利润, 另外为了鼓励采用该网络,可能会引入去中心化的价差,从而使所有参与者受益。 5 价格可预测 智能代币的价格算法是完全透明的,允许用户在执行兑换之前预先计算他们想要兑换的有效价格。这与传统的以订单为基础的交易所形成了鲜明对比,在传统交易所,大量订单可能导致价格不可预测地下滑至明显不同的水平。 6 兼容 ERC20 智能代币是与 ERC20 兼容的代币(尽管具备额外的功能),它们与现有的代币应用程序(如钱包或 DApp)无缝集成,因为它们符合流行的 ERC20 代币标准。此外,任何现有的 ERC20 标准代币都可以通过带有连接器的智能代币连接到 Bancor 网络,这使得 Bancor 协议向后兼容现有的 ERC20 代币。
5.3.2.1 单点失效 对于 Bancor 协议建立的去中心化交易所,都是用代币合约来处理交易。虽然说明面上是去中心化交易所,但是需要在合约中设立超级管理员权限。当有账户存在超级管理员权限时,整个代币生态极容易发生单点失效。超级管理员权限是把双刃剑。在 Bancor 事件中,黑客利用了管理员权限盗取代币,而项目方也正利用了管理员权限来降低损失。不过我们认为,开发者依然可以通过良好的代码设计来降低代币和协议合约对管理员的依赖。 5.3.2.2 牺牲交易深度 Bancor 协议的问题是价格曲线调节参数完全受项目方控制,参与而且鼓励价格投机,越早买入的人越容易获利。买盘能够推高价格,同时买盘也会降低价格,一旦曲线上升停滞容易发生「踩踏」造成较大的波动。所谓牺牲深度带来流动性。 5.3.2.5 参数被操控问题 Bancor 算法根据参数 CW 的不同,以及构造关系不同,会产生不同的数学图形,或杠杆效果。比如常见的四类图形,如 3.2.2 节 4 张图所示。市场对价格变化的预期几乎完全基于 CW,因为它决定了价格曲线。那么如果项目中途改变 CW 参数呢?RAM 和 FIBOS 项目都发生过这一的情况,只不过一个是简单粗暴,一个是有其他参数配合的「合理解释」的。这类风险也是目前 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%)。
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的报价。
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。
网址: https://www.bancor.network/communities/5a174bc0171b0100018276b3/currency
核心点为需要存入10万美元等值的BNT智能代币。
1000个CLOB可以兑换多少个TKN1? SmartTokenAmount = SmartTokenTokenSupply ((1 + ConnectorToken / ConnectorTokenBalance)^ CW - 1)�= 1000 (( 1 + 1000 / 90000 )^ 0.9 - 1 )�=?9.99446694706181297191051400502(个TNK1)
9.994466947个TKN1可以兑换多少个ETH呢? connectorTokenAmount = ConnectorTokenBalance (1 - (1 - SmartTokenAmount / SmartTokenTokenSupply)^ (1 / CW) ) connectorTokenAmount = 10 (1 - (1 - (9.994466947 / (1000 + 9.994466947)))^ (1 / 0.1) )�= 10 (1 - (1 - (9.994466947 / (1000 + 9.994466947)))^ (1 / 0.1) )�= 10 (1 - (1 - (0.00989556603929837667128805564395))^ (1 / 0.1) )�= 10 (1 - (1 - (0.00989556603929837667128805564395))^ (1 / 0.1) )�= 10 (1 - 0.99010443396070162332871194435605 ^ 10 )�= 10 * (1 - 0.90533655025365121589722721359431)�=?0.94663449746348784102772786405694(个ETH) 兑换结论:1000个CLB可以兑换0.946个ETH 按照假设的市价,两者的价值均为1000元左右,符合期望。
省略运行部分。
参考记录文章: https://learnblockchain.cn/2018/09/30/9fc78f8f5773
【白皮书】Bancor协议:通过智能合约为加密货币提供持续流动性(附PDF下载) https://www.jianshu.com/p/cbfb9abf8e07 【易错概念】以实例形式深入浅出讲透BANCOR算法 https://learnblockchain.cn/2018/09/17/fe48ed1f38cd 第二十四课 基于以太坊的交易所BANCOR算法实现-转换算法框架 https://learnblockchain.cn/2018/09/21/875ba83002dc 第二十五课 如何开发自己的BANCOR去中心化交易平台? https://learnblockchain.cn/2018/09/30/9fc78f8f5773 第二十七课 如何从BANCOR交易所兑换ENJIN通证 https://learnblockchain.cn/2018/10/11/617103393dc6
本次活动照片:
本次实录纪要由ELLA小姐姐记录,转发务必注明出处及本段信息。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!