SWARM-BZZ的联合曲线(Bonding Curve)
BZZ跟xBZZ的关系
BZZ跟xBZZ是两条链上1:1映射的Token:
1.增发、销毁在xBZZ所在的xDai chain上执行;
2.二级市场交易则是在xDai chain上锁定xBZZ然后在ETH上映射1:1的BZZ然后流通。
定义
Bonding Curve是一种通过买卖函数来发行Token的智能合约。
要增发BZZ,需要将xDai发送到Bonding Curve启动buy函数(增发功能),该函数会以xDai的数量计算xBZZ的平均价格并增发对应的数量然后转入指定的地址里。
sell函数则控制着销毁工作:需要先对Bonding Curve授权(参考UNISWAP),允许Bonding Curve自动划转想销毁得xBZZ的数量,然后触发该sell函数从钱包地址里面划走对应的xBZZ。Bonding Curve将自动计算当前的平均售价,并向发送对应数量的xDai。
缺点(不算缺点)
Bonding Curve对xBZZ的总量是有硬性限制的:
xDai总发行的数量。如果价格是每个xBZZ=1.92 xDai,那么增发的xBZZ不能超过xDai的总量。
关于价格挂钩与套利
Bonding Curve上的xBZZ铸币价低于市场价,用户选择铸造更多的xBZZ去市场换取更多的xDai,但是每铸造一枚xBZZ成本会逐渐上涨直到与市场价持平;
xBZZ的铸币价高于市场价的时候,则可以选择销毁xBZZ直接从Bonding Curve换取更多的xDai。
价格
每个xBZZ的发行价格(增发)随着发行的xBZZ数量的增加而增加。
例如Bonding Curve最简单的版本,指定每个xBZZ的xDai价格等于当前存在的代币数量。
更具体地说,要出售代币,价格等于当前代币的数量,但购买价格等于您购买后将存在的数量。例如,如果存在10个代币,那么出售1个将获得10个eth。如果您想购买第11个代币,您将支付11eth,依此类推。
买入会使您向上滑动价格曲线,而卖出会使您向下滑动。在上面的例子中,如果存在9个代币,那么我们知道购买另一个代币将花费10eth。但是,将代币出售到合约中将为我们赚取9eth。如果我出售另一个代币,它将为我赚取8eth。我可以再卖3个,然后降到5eth。但是如果我购买,它会再次将价格推高至6eth。所以价格是动态调整的。
连续性
实际上,一个人不会一次出售1个代币。相反,他们将分批销售以节省天然气成本。如果存在10个代币并且我想将3个卖回合约,会发生什么?它应该付给我多少钱?从以下3个看起来最合理的选项中选择:
1.它应该支付我10x3=30eth因为当前的售价是10eth。
2.它应该支付我8x3=24eth,因为在给合约3个代币后,价格下降到8eth。
3.它应该给我10+9+8=27eth,因为如果我一次支付1个代币,我就会得到报酬。
如果您选择选项1,您将面临不可持续的情况,因为合同只能用它已经拥有的eth支付给您。例如,假设有人购买了1个代币,然后另一个人购买了1个代币,然后第三个人购买了一个代币,最后第四个人购买了一个代币。合约将有1+2+3+4=10eth。现在所有4个人都将他们的代币转移给您,而您想以最高价格一次性出售它们:4eth。您总共需要16eth,但合同只有10eth需要支付。
如果你选择了选项2,你的工资就会过低。例如,如果你一次卖出1个,我们知道你会得到27个,那么为什么你要因为一次全部卖出而受到惩罚?正确答案当然是选项3。
Gas费
Solidity程序员设计卖出函数的非智能方法是一次遍历你的代币1个,卖出每个代币并让价格向下调整。这将花费与您自己做的相同数量的气体。所以这个实现是没有意义的。相反,我们将使用微积分一次性计算出正确的以太币数量。
计算
在上图中,eth中的价格曲线是P=Q。
假设存在Q0代币并且您希望购买Q1-Q0。您不会支付P0,因为它太低,而您不会支付P1,因为它太高。您需要一些与一次购买每个代币1具有相同效果的中点价格。
从基本的微积分,我们知道曲线下的面积是你将花费的eth总量,为了计算,我们只需取Q0和Q1之间的定积分。或者,我们计算原点和Q1之间的定积分,并从中减去原点和Q0之间的积分,得到红色标记为A的区域。价格函数的积分是:
现在让我们使用实数。假设Q0的值为3(暗示P0也是3),Q1的值为7(暗示P1也是7)。
为了计算A的面积,我们插入数字:
这意味着您必须支付的eth总量为20eth。但在我们购买之前,我们想知道我们为每个代币支付的平均价格是多少。这很简单:
使用微积分,绑定合约可以允许买卖任意数量的代币,而无需花费更多的gas,并确保合约始终能够履行其以太义务。
影响
现在我们知道它在概念上是如何工作的,我们将探索绑定合约的一些重大影响,使其比传统的ICO更酷:
1.如果买入和卖出函数遵循相同的曲线,则永远无法从合约中提取以太币。它必须保持100%完全保留。这意味着项目创建者必须专注于使他们的代币流行,从而使创建者和用户之间的激励保持一致。他们不能发起退出骗局。在某些情况下,可能需要在买入和卖出曲线之间创建价差。这意味着你卖出得到的以太币比你购买的要少。以太的差异是创作者的收入。例如,买入价为P=Q²,而卖出价为P=Q。对于项目创建者来说,这似乎是一种精心策划退出骗局的好方法。然而,对生态系统的兴趣增加仍然意味着更多的收入,因为销售是一个持续的特征。换句话说,流失比一次性销售产生更多的收入。
2.正如许多ICO所承诺的那样,绑定曲线实际上保证了早期买家能够以盈利的方式出售,前提是有更多的买家到达。它自然会奖励早期采用者并鼓励口碑营销。
3.代币买家有一个即时市场,这意味着他们不必等待项目创建者在所有主要交易所注册。但是,二级交易所仍将有助于生态系统,尤其是在买卖功能之间存在价差时。代币的价格也始终100%透明。
4.问责制:Vitalik Buterin建议将DAICO作为根据DAO管理ICO的一种方式,该DAO设置燃烧率并使社区能够冻结运营。绑定曲线模型确保受惊的社区可以通过出售所有代币立即让开发人员承担责任,从而将价格推低至零。到那时,即使买卖之间存在价差,市场对团队来说实际上已经枯竭。