搜索

如何设计一个最简单的去中心化稳定币

2020-08-11 14:33:11
356 0 0


 

一段时间以来,这个问题一直萦绕在我的脑海中。直到上周,受到MakerDAOUniswap等项目的启发,我茅塞顿开,在这篇文章中,我将回顾以下部分:

1.计划的稳定币设计,这里称为USM(“极简美元”)

2.它极简的四种操作:mint/burn(创建/兑换USM稳定币)fund/defund(创建/兑换相关的“投资代币”FUM)

3.我遇到的最大设计障碍,以及我提出的解决方案;

4.一个大约200Python的概念证明实现。

这只是为了做个有趣的尝试,只要它不会无辜损失用户的钱,成为一个真实实现的话会很酷。

(:本文仍为草稿,可能会有所修改。)

 

A.基本理念:无风险的USM +高风险的FUM

 

最简单的可行的稳定币是依靠ETH池创建/赎回代币。将价值n美元的ETH(在铸造时)存入池中,铸造出n个新的“USM”稳定币,或者从池中烧掉mUSM换取价值m美元的ETH(在燃烧时)

(为了方便,将使用Ethereum,但设计是与平台无关的。)

为什么这个方案行不通呢?

首先,要想知道xETHn美元,你需要一个或多个价格预言机。这一点我们稍后再谈,几乎所有的稳定币都需要这个,所以即使是最简单的设计也需要它。而更大的问题是ETH的价格波动。

假设ETH200美元,在池中存入10ETH就能铸造出2000USM。假设ETH跌至150美元,烧掉你的2000USM,但是,池中已经没有足够的ETH(你应该得到2000/150=13.33ETH,但池中只有10ETH)

抵押品池的价值下降,以至于无法清算未偿付的债权(代币)。这对稳定币投资者和金融业来说是一个非常熟悉的问题。当你的伞不断地收缩和膨胀时,你如何保持干燥?

最简单的解决方案也很常见:对池进行超额抵押—给它一个安全缓冲,用更多的ETH赎回未偿还的USM

这样做,我们的系统需要一种方式,让其他参与者—“投资者”—把ETH加入到池中(以换取第二个代币FUM),并激励他们这么做。

让我们尝试两种激励方式:

手续费:对铸币/烧钱操作收取少量费用,并分红给投资者。 杠杆:可以建立一个有市场风险的ETH(它的价值随ETH的价格涨跌),支持一堆USM代币,这些代币的唯一目的就是避免这种风险(价格保持在1美元)

所以我们将把所有的市场风险都抛给投资者:

稳定币用户存入有风险的ETH,收回无风险的USM; 投资者存入风险较大的ETH,收回风险更大的FUM

这又是一个熟悉的金融技巧——“分级”风险。

现在,在创建/赎回USM代币的mint(ETH->USM)burn(USM->ETH)操作之上,我们添加了fund(ETH->FUM)defund(FUM->ETH)操作来创建/赎回FUM

 

B. 一个简单的例子

 


ETH价格200美元:

A10ETH存入池中,铸成2000USM(我们暂时不计算手续费) B进行投资操作,存入另外5ETH以换取1000FUM,初始定价为1美元。

-池包含15ETH(10个和5个加在一起),价值3000美元 - A拥有价值2000美元的2000USM - B有价值1000美元的1000FUM

ETH涨到220美元:

- 15ETH的池现在价值3300美元 - A2000USM仍然值2000美元 - B1000FUM1300

ETH跌至170美元:

- 15ETH2550美元 - A2000USM2000美元 - B1000FUM550美元

ETH跌至100美元:

- 15ETH1500美元 - A2000USM2000美元 - B1000FUM-500美元

面对ETH价格的大幅下跌,B的资金被证明是不足的:

无论如何池都缩水了(pool_value < usm_outstanding),不再有足够的ETH来赎回A的所有USM,加上B也损耗了。

 

C. 为什么缩水是不好的

 

这意味着并不是所有的USM持有者都可以赎回他们的USM来为ETH兑换:

稳定币不再是“完全支持的”。只要用户不同时全部撤出(“银行准备金业务”),那就没问题,但是…

实际上延迟兑换者最终可能会两手空空,这一事实激励持有人更早的兑换——导致潜在的银行挤兑。

FUM投资者B的损失,同样也可能会促成一个糟糕的反馈循环,一旦出现下跌迹象,他们就会选择退出。

由于FUM的价格已如此之低,甚至是负值,新投资者可能会以极低的价格购买FUM,这会严重地削减了早期投资者的资金。

这篇文章剩下的大部分内容都是关于如何避免这些情况,这是有意义的,因为除了“保持1美元”外,防止/处理抵押品贬值和基金投资人出局是稳定币设计中最基本的挑战。

 

D.更多关于mint/burn/fund/defund的细节

 

这个系统有三个动态部分:

ETH价格上下变化,改变池的价值。 mint/burn操作,创建/销毁USM(同时向池中添加/从池中删除ETH) fund/defund操作,创建/销毁FUM(同时添加/移除ETH)

有关这些操作的更多详情:

锚定美元:注意在正常运行的情况下(特别是:不低于1美元,价格预言机准确)mint andburn应该保持USM与美元挂钩,让用户在任何时候可以立刻用1美元兑换价值1美元的ETH,除了少量手续费。这个过程挑战在于如何保持系统资本化。

债务比率是这方面的关键度量:usm_outstanding / pool_value

当这个比率超过100%(或者超过我们指定的MAX_DEBT_RATIO,比如80%)时,系统可以通过禁用撤资和烧币操作来限制它,直到它下降,例如因新的投资者进入。

但以这种方式取消赎回,无论是频繁的还是偶尔短期的,都将损害用户对金融体系和价值锚定的信任。USM在交易所的交易价格可能开始低于1美元……可能会有所缓解,但也可能不会。没有人会把赌注押在一个实验系统上。

铸币/烧币的具体机制很简单:投入n美元的ETH,收回nUSM(减去手续费),反之亦然。投资/撤资的机制更为巧妙。

基本模型是,这些操作会改变FUM的数量,但不会改变它的单价,它只是池的多余缓冲区的美元价值:

buffer_value=pool_value-usm_outstanding/fum_outstanding

例如(还是不计算手续费):

假设池中有15ETHETH价格为220美元,池的总价值为3300美元,未偿付的USM2000枚,FUM1000枚。

然后:

-负债比率= $2000/$3300=60.61% -缓冲值=$3300-$2000=$1300 -FUM单价=$1300/1000=$1.30

C将另外13ETH(价值2860美元)投入池中,得到2860美元/1.30美元=2200个新铸造的FUM。现在:

-池中有28ETH,价值6160美元 -仍有2000USM未偿付 -3200FUM未偿还 -负债比率=$2000/$6160=32.47% -缓冲值=$6160-$2000=$4160 -FUM单价=$4160/3200=$130

ETH价格降到200美元:

-28ETH价值5600美元 -2000USM未偿还,3200FUM未偿还 -负债比率=$2000/$5600=35.71% -缓冲值=$5600-$2000=$3600 -FUM单价=$3600/3200=$1.125(下跌)

C取走其2200FUM中的1000(价值:1000*$1.125=$1125),收回$1125/ $200=5.625ETH:

-22.375ETH价值4475美元 -2000USM未偿还,2200FUM未偿还 -负债比率=$2000/$4475=44.69% -缓冲值=$4475-$2000=$2475 -FUM单价=$2475/2200=$1.125(不变)

 

E.FUM的价格

 

当池的资金缩水时,在第一个例子中,FUM的单价暴跌到-0.50美元。我们不能以负的价格或接近0美元的价格投资/撤资。

在这种情况(例如,当债务比率>MAX_DEBT_RATIO)下最简单的处理方式是:

1禁用撤资(池需要资金) 2为了基金运营的目的,在资金价格上加一个溢价,保持资金价格>$0

但思考良久后会发现,有很多不同的方式来定义这种溢价,我在整个系统工作的7天里有5天是用来探索它们的。细节不在这篇文章的讨论范围之内,但简而言之,到目前为止我最喜欢的规则是:

当债务比率>MAX_DEBT_RATIO时,投资操作(投入ETH换取新的FUM)需要至少按min_fum_buy_price计算支付,即在债务比率超过MAX_DEBT_RATIO时对应的以ETH计算的FUM单价。

一旦债务比率回落到低于MAX_DEBT_RATIO, min_fum_buy_price将被清除,基金操作将再次以正常的FUM价格进行(buffer_value/fum_outstanding)

如果你想知道所有细节,可以了解这个例子(如果不是,你可以跳过它):

再从15ETH计算,ETH价格$220,价值:$3300,包含2000USM, 1000FUM:

-负债比率=$2000/$3300=60.61% -缓冲值=$3300-$2000=$1300 -FUM单价=$1300/1000=$1.30

ETH价格跌至100美元:

-15ETH价值1500美元 -2000USM未偿还,1000FUM未偿还 -负债比率=$2000/$1500=133.33% -缓冲值=$1500-$2000=-$500 -FUM理论单价=-$500/1000=-$0.50

因为债务比率已经上升到MAX_DEBT_RATIO=80%以上,我们设置min_fum_buy_priceETH下跌至80%时。

在这个例子中,当ETH价格达到$166.67时,当buffer_value(15*$166.67)- $2000=$500,因此FUM价格是$500/1000=$0.50=0.003 ETH

此时D投入$600ETH。因为min_fum_buy_price=0.003,D支付0.003 ETH(0.30美元)FUM的单价,而不是负理论价格-0.50美元。所以D得到6/ 0.003=2000枚新铸造的FUM:

-此时ETH价格$10021ETH价值$2100 -2000USM未偿还,3000FUM未偿还 -负债比率=$2000/$2100=95.24% -缓冲值=$2100-$2000=$100 -理论上的FUM价格=$100/3000=$0.0333 -min_fum_buy_price=0.003ETH(计算约为$0.30)

如果ETH进一步下跌至60美元:

-21ETH价值$1260 -2000USM未偿还,3000FUM未偿还 -负债比率=$2000/$1260=158.73% -缓冲值=$1260-$2000=-$740 -FUM理论价格=-$740/3000=-$0.2467 -min_fum_buy_price=0.003ETH($0.18)

D再次投入6ETH=$360,同样得到6/0.003=2000FUM

ETH计算,D的融资利率与以前相同(min_fum_buy_price=0.003ETH),但当ETH降至60美元时,以美元计算的利率更便宜(0.003ETH=0.18美元,之前是0.30美元):

-此时27ETH价值$1620 -2000USM未偿还,5000FUM未偿还 -负债比率=$2000/$1620=123.46% -缓冲值=$1620-$2000=-$380 -理论上的FUM价格=-$380/$5000=-$0.076 -min_fum_buy_price=0.003ETH($0.18)

无论如何,最简洁、最安全的确保投资者投入合理的(主动的)资金的方式,还有进一步研究的空间。目前大致的方式是,当系统资金不足时,FUM的价格应该低到足以吸引新的投资者进入,但又不能低到彻底折损老的投资者。

(Elliot Olds的一个伟大建议:在这些情况下,债务比率>MAX_DEBT_RATIO,即系统需要资金时,使FUM购买价格随时间下降。

这样就避免了min_fum_buy_price高于投资者的预期系统因缺乏资金而消亡。随着价格的不断下降,投资最终会到位,即使其价格会大大削减现有FUM持有者的风险/回报。新资金到位后,USM的烧币将会恢复,这应该会让USM持有者安心,并对锚定美元的汇率抱有信心。)

 

F.系统其他部分

预言机使用什么价格(ETH/USD,系统依赖的唯一外部数据),这是一个其他人可能更想了解的问题。在我的思考中,我建议使用Uniswap的其他几个稳定币价格的平均值:USDTUSDCPAXDAITUSD

投资USM->FUM:让投资支持USM作为一种投资方式(因此,USM->FUM),连同ETH (ETH->FUM),可能是个好主意。特别是当ETH的价格下降时,也就是当投资者花费USM可能比ETH更好的时候。

(请注意,USM->FUM投资操作对ETH池中的金额没有影响,即使扣除了手续费。它只是销毁了一些用户的USM,并给予他们新铸造的FUM作为回报,而不动ETH池。)

限价购买订单:该设计的一个有前景的补充是一个投资选项,用户可以以“6ETH铸造2000FUM”或“600USM铸造2000FUM”的选项下限价购买,如果价格下降到指定的比率就会触发。

这相当于在投资op中添加了一个可选参数:

max_price_in_eth/max_price_in_usm

这样的设计可以在资金池的缓冲区之上,提供第二道防线。而且,由于ETHFUM的价格很可能是密切相关的,以美元计价的投标应该比较稳定。

按照我们这里的目标(以及Uniswap)的精神,治理应该是最小化的:“部署后就忘记”。

设计中没有包含冻结/撤回功能:如果需要修复这个部分,应该启动一个新的智能合同,用户可以选择迁移到新版本。我能想到的唯一受管理员限制的操作是指定一个“自愿升级”合同,这样用户就可以选择将他们的财产自动转移。

其他非美元挂钩的币种应该比较容易:唯一的挑战是找到一个好的价格来源,例如,ETH/EUR。事实上,比特币比欧元硬币更容易使用,因为ETH/BTC很容易从Uniswap获得。存入ETH时需要选择:

a)造币厂:0.025(或当时ETH/BTC的汇率)BTC-pegcoins”,与BTC挂钩,就像USM与美元挂钩一样;

b)基金:1 ETH的“比特币基金”——押注ETH/比特币,就像FUM是押注ETH/美元一样。

 

G .面对攻击

 

只是一些初步想法:

预言机操纵价格。如果攻击者可以操纵价格来源,他们可以打破锚定,低买高卖,抽干资金池。

预言机是该系统最明显的弱点,随着ETH在池中的增长,它将成为更大的目标。对我们有利的是,这是许多其他系统/智能合同的共同弱点,所以我们可以利用这一点。

一个明显的处理方式是使这四种操作中的一部分或全部延迟:例如burn的逻辑可以是“给USM,等一个小时,拿回ETH”,而不是“给USM,拿回ETH”。这虽然影响用户体验,但可以对抗价格操纵,值得一试。

USM系统对实时价格非常敏感。一些可能的方法可以降低这种灵敏度:

a)启动和执行之间的延迟,如上所述。 b)随机分配这个延迟,例如,“你的铸币将在下一个小时的随机时间以ETH/USD的价格进行加工。” c)取较大数量的源价格的平均数:例如,多个平台上的多个稳定币。 d)更高的手续费。下面示例代码中的往返买卖手续费为0.6%,但这只是一个概念证明。 e)一般来说,在某种程度上,是许多连锁系统共同面临的挑战,值得遵循它们的最佳实践。

ETH的价格下降。抵押品担保体系崩溃最明显的方式就是抵押品贬值。然而,在这个系统中,贬值似乎在一定程度上得到了控制。在超过MAX_DEBT_RATIO的情况下,赎回被禁止,如果ETH暴跌,系统就会停止,直到注入新的资金。

FUM持有者当然会损失大部分资金,但这是一种补偿风险,就像借款人拖欠贷款一样,而不是像大型保险公司破产那样的系统性失败。

特别是,只要1预言机的价格仍然准确,2新的投资者总持续出现,USM的锚定美元的会应该可以抵御ETH的价格下跌。所以预言机的价格似乎更脆弱。

 

转载自

https://www.8btc.com/media/626411



 




热门回帖
热帖推荐
牛头大哥
牛头大哥
管理员 船龄 1年
【提问有奖】SUP:MOV超导治理的社会性实验,欢迎来聊!
SUP:一场MOV超导价值捕获的社会实验9月14日,MOV正式发布超导协议治理代币SUP。SUP是MOV超导的价值捕获Token,是MOV的重要组成部分,SUP将拥有MOV超导的治理权,在未来可以决定超导协议交易手续费率,决定超导协议流动性池(即交易对)的上线/下线,决定超导协议的发展方向(通过对协议升级方案的提案和投票)等等。SUP是一场有意义的社会实验,它的未来由社区决定,由众多拥有SUP的用户决定。依托于MOV超导产品的持续迭代和升级,SUP也将体现其巨大的价值。分发机制&流动性挖矿:据悉,SUP总量为10万枚,自比原侧链Vapor72576000区块高度起,完全通过去中心化的方式分发给MOV超导中的流动性提供者,团队无预挖、无预留、无私募,预计一个月分发完毕。9月17日起,MOV将开放BTC/BTM、ETH/BTM、BTC/ETH、USDT/USDC、USDT/DAI、USDC/DAI以及SUP/BTM7大流动性池。各流动性池的权重如下:流动性挖矿开1天后,超导将上线SUP/BTM流动性池,开启SUP交易。并为SUP提供流动性提供最高的权重奖励:用户通过流动性挖矿获得的SUP将会有两种选择:即刻获得or延迟满足。1.即刻获得即马上获得SUP,并可进行交易;2.延迟满足需要使用延迟满足合约锁定一定周期再获得,但可获得高于当前数量数倍的奖励:将即将获得的SUP锁定3个月,3个月后收获1.5倍的SUP将即将获得的SUP锁定6个月,6个月后收获2.1倍的SUP将即将获得的SUP锁定12个月,12个月后收获3.3倍的SUP流动性挖矿开始1周后,超导协议20%的手续费将用来回购销毁SUP。SUP将每周回购销毁一次。Roadmap:第一阶段:初始分发初始在BTC/BTM等6个池中进行挖矿BTC/BTM,ETH/BTM,BTC/ETH,USDT/USDC,USDT/DAI,USDC/DAI第二阶段:上线SUP/BTM流动性池超导将上线SUP/BTM流动性池,开启SUP交易,并开启SUP/BTM池挖矿。第三阶段:开启SUP的回购销毁流动性挖矿开始1周后,超导协议20%的手续费将用来回购销毁SUP。SUP将每周回购销毁一次。第四阶段:后流动性挖矿阶段流动性挖矿结束后,SUP的回购销毁将持续进行,SUP进入通缩状态。超导协议将会搭建相应的治理面板,将治理权交给SUP持有者,SUP持有者可以:决定超导协议交易手续费率决定超导协议的手续费分配方案(如LP与SUP回购的分配比例)决定超导协议流动性池(即交易对)的上线/下线决定超导协议的发展方向(通过对协议升级方案的提案和投票)嘉宾介绍:长铗,比原链创始人,巴比特创始人。早期比特币爱好者;区块链“不可能三角“理论提出者。朗豫,比原链CEO。AMA时间:9月16日,周三,下午3:00SUP流动性挖矿要如何参与?收益如何计算?有何应用场景?SUP能否促进社区治理良性发展?国产公链未来的DeFi布局会走向何方?更多关于SUP,MOV,流动性挖矿以及DeFi的问题,欢迎来聊!提问有奖:AMA结束后嘉宾将选取“最有价值提问奖”5名,每人给予150BTM(约100RMB等值);此外,嘉宾还将随机抽取“幸运提问奖”10名,每人给予75BTM(约50RMB等值)。如何参与AMA?在本主题帖下直接回帖提问即可参与,嘉宾将在活动开始后上线回答,欢迎大家围观讨论!如何进群交流?微信扫下方二维码添加链节点小助手(微信号:btc5520),回复“AMA”,小助手直接邀请进群,快进群跟小伙伴们一起交流探讨吧!特别鸣谢:ChainNode首席合作媒体:巴比特;金色财经;火星财经;星球日报;陀螺财经;币快报;coinvoice和猎云财经对本期AMA的支持!
1 天前 | AMA 85933 207
箫剑
箫剑
副船长 船龄 2.7年
兄弟们,是时候离开这里了,山高水长,后会无期!
微信群里的币友们,找我聊天可以,聊比原,别怪我不搭理你们!
16 分钟前 | BTM/比原链 15500 86 0
箫剑
箫剑
副船长 船龄 2.7年
耐心等待,看看官方会给个啥解释吧
要是不满意,老铁们往死里喷!!
21 小时前 | BTM/比原链 13572 70 0