原文标题:《什么是最简单的去中心化稳定币?》 本文作者 Jacob Eliosoff 为加密货币基金 Calibrated Markets 的管理负责人,Calibrated Markets 是 Trevi Digital Assets Fund 的 GP,该基金研究比特币和相关加密货币,并进行长期投资。 Calibrated 由 Jacob Eliosoff 进行管理,Jacob Eliosoff 是一位计算机程序员,自 2013 年秋季以来一直从事该基金的工作。 文章经白计划 Yaoyao 编译整理,内容有所删减。 一段时间以来,这个问题一直萦绕在我的脑海中。直到上周,受到 MakerDAO 和 Uniswap 等项目的启发,我茅塞顿开,在这篇文章中,我将回顾以下部分: 计划的稳定币设计,这里称为 USM(「极简美元」);它极简的四种操作 :mint/burn(创建 / 兑换 USM 稳定币) 和 fund/defund(创建 / 兑换相关的「投资代币」FUM);我遇到的最大设计障碍,以及我提出的解决方案;一个大约 200 行 Python 的概念证明实现。这只是为了做个有趣的尝试,只要它不会无辜损失用户的钱,成为一个真实实现的话会很酷。
基本理念 : 无风险的 USM +高风险的 FUM 最简单的可行的稳定币是依靠 ETH 池创建 / 赎回代币。将价值 n 美元的 ETH(在铸造时) 存入池中,铸造出 n 个新的「USM」稳定币,或者从池中烧掉 m 个 USM 换取价值 m 美元的 ETH(在燃烧时)。
为什么这个方案行不通呢 ? 首先,要想知道 x 个 ETH 值 n 美元,你需要一个或多个价格预言机。这一点我们稍后再谈,几乎所有的稳定币都需要这个,所以即使是最简单的设计也需要它。而更大的问题是 ETH 的价格波动。 假设 ETH 是 200 美元,在池中存入 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。 一个简单的例子 ETH 价格 200 美元: A 将 10ETH 存入池中,铸成 2000USM。(我们暂时不计算手续费) B 进行投资操作,存入另外 5 个 ETH 以换取 1000 个 FUM,初始定价为 1 美元。 池包含 15 个 ETH(10 个和 5 个加在一起),价值 3000 美元A 拥有价值 2000 美元的 2000USMB 有价值 1000 美元的 1000FUMETH 涨到 220 美元: 15ETH 的池现在价值 3300 美元A 的 2000USM 仍然值 2000 美元B 的 1000FUM 值 1300 元ETH 跌至 170 美元: 15ETH 值 2550 美元A 的 2000USM 值 2000 美元B 的 1000FUM 值 550 美元ETH 跌至 100 美元: 15ETH 值 1500 美元A 的 2000USM 值 2000 美元B 的 1000FUM 值-500 美元面对 ETH 价格的大幅下跌,B 的资金被证明是不足的 : 无论如何池都缩水了 (pool_value < usm_outstanding),不再有足够的 ETH 来赎回 A 的所有 USM,加上 B 也损耗了。 为什么缩水是不好的 这意味着并不是所有的 USM 持有者都可以赎回他们的 USM 来为 ETH 兑换 : 稳定币不再是「完全支持的」。只要用户不同时全部撤出 (「银行准备金业务」),那就没问题,但是… 实际上延迟兑换者最终可能会两手空空,这一事实激励持有人更早的兑换——导致潜在的银行挤兑。 FUM 投资者 B 的损失,同样也可能会促成一个糟糕的反馈循环,一旦出现下跌迹象,他们就会选择退出。 由于 FUM 的价格已如此之低,甚至是负值,新投资者可能会以极低的价格购买 FUM,这会严重地削减了早期投资者的资金。 这篇文章剩下的大部分内容都是关于如何避免这些情况,这是有意义的,因为除了「保持 1 美元」外,防止 / 处理抵押品贬值和基金投资人出局是稳定币设计中最基本的挑战。 更多关于 mint/burn/fund/defund 的细节 这个系统有三个动态部分 : ETH 价格上下变化,改变池的价值。mint/burn 操作,创建 / 销毁 USM(同时向池中添加 / 从池中删除 ETH)。fund/defund 操作,创建 / 销毁 FUM(同时添加 / 移除 ETH)。有关这些操作的更多详情 : 锚定美元 : 注意在正常运行的情况下 (特别是 : 不低于 1 美元,价格预言机准确),mint and 和 burn 应该保持 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。 例如 (还是不计算手续费): 假设池中有 15 个 ETH,ETH 价格为 220 美元,池的总价值为 3300 美元,未偿付的 USM 为 2000 枚,FUM 为 1000 枚。 然后 : 负债比率 = $2000/$3300=60.61%缓冲值 =$3300-$2000=$1300FUM 单价 =$1300/1000=$1.30C 将另外 13 个 ETH(价值 2860 美元) 投入池中,得到 2860 美元 /1.30 美元 =2200 个新铸造的 FUM。现在 : 池中有 28ETH,价值 6160 美元仍有 2000USM 未偿付3200 个 FUM 未偿还负债比率 =$2000/$6160=32.47%缓冲值 =$6160-$2000=$4160FUM 单价 =$4160/3200=$130当 ETH 价格降到 200 美元 : 28ETH 价值 5600 美元2000USM 未偿还,3200FUM 未偿还负债比率 =$2000/$5600=35.71%缓冲值 =$5600-$2000=$3600FUM 单价 =$3600/3200=$1.125(下跌)C 取走其 2200 个 FUM 中的 1000 个 (价值 :1000*$1.125=$1125),收回 $1125/ $200=5.625ETH: 22.375ETH 价值 4475 美元2000USM 未偿还,2200FUM 未偿还负债比率 =$2000/$4475=44.69%缓冲值 =$4475-$2000=$2475FUM 单价 =$2475/2200=$1.125(不变)FUM 的价格 当池的资金缩水时,在第一个例子中,FUM 的单价暴跌到-0.50 美元。我们不能以负的价格或接近 0 美元的价格投资 / 撤资。 在这种情况 (例如,当债务比率 >MAX_DEBT_RATIO) 下最简单的处理方式是: 禁用撤资 (池需要资金)为了基金运营的目的,在资金价格上加一个溢价,保持资金价格 >$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)。 如果你想知道所有细节,可以了解这个例子 (如果不是,你可以跳过它): 再从 15 个 ETH 计算,ETH 价格 $220,价值 :$3300,包含 2000USM, 1000FUM: 负债比率 =$2000/$3300=60.61%缓冲值 =$3300-$2000=$1300FUM 单价 =$1300/1000=$1.30ETH 价格跌至 100 美元 : 15ETH 价值 1500 美元2000USM 未偿还,1000FUM 未偿还负债比率 =$2000/$1500=133.33%缓冲值 =$1500-$2000=-$500FUM 理论单价 =-$500/1000=-$0.50因为债务比率已经上升到 MAX_DEBT_RATIO=80% 以上,我们设置 min_fum_buy_price 为 ETH 下跌至 80% 时。 在这个例子中,当 ETH 价格达到 $166.67 时,当 buffer_value 是 (15*$166.67)- $2000=$500,因此 FUM 价格是 $500/1000=$0.50=0.003 ETH。 此时 D 投入 $600 的 ETH。因为 min_fum_buy_price=0.003,D 支付 0.003 ETH(0.30 美元) 每 FUM 的单价,而不是负理论价格-0.50 美元。所以 D 得到 6/ 0.003=2000 枚新铸造的 FUM: 此时 ETH 价格 $100,21ETH 价值 $21002000USM 未偿还,3000FUM 未偿还负债比率 =$2000/$2100=95.24%缓冲值 =$2100-$2000=$100理论上的 FUM 价格 =$100/3000=$0.0333min_fum_buy_price=0.003ETH(计算约为 $0.30)如果 ETH 进一步下跌至 60 美元 : 21ETH 价值 $12602000USM 未偿还,3000FUM 未偿还负债比率 =$2000/$1260=158.73%缓冲值 =$1260-$2000=-$740FUM 理论价格 =-$740/3000=-$0.2467min_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 价值 $16202000USM 未偿还,5000FUM 未偿还负债比率 =$2000/$1620=123.46%缓冲值 =$1620-$2000=-$380理论上的 FUM 价格 =-$380/$5000=-$0.076min_fum_buy_price=0.003ETH($0.18)无论如何,最简洁、最安全的确保投资者投入合理的 (主动的) 资金的方式,还有进一步研究的空间。目前大致的方式是,当系统资金不足时,FUM 的价格应该低到足以吸引新的投资者进入,但又不能低到彻底折损老的投资者。 (Elliot Olds 的一个伟大建议 : 在这些情况下,债务比率 >MAX_DEBT_RATIO,即系统需要资金时,使 FUM 购买价格随时间下降。 这样就避免了 min_fum_buy_price 高于投资者的预期系统因缺乏资金而消亡。随着价格的不断下降,投资最终会到位,即使其价格会大大削减现有 FUM 持有者的风险 / 回报。新资金到位后,USM 的烧币将会恢复,这应该会让 USM 持有者安心,并对锚定美元的汇率抱有信心。) 系统其他部分 预言机使用什么价格 (ETH/USD,系统依赖的唯一外部数据),这是一个其他人可能更想了解的问题。在我的思考中,我建议使用 Uniswap 的其他几个稳定币价格的平均值 :USDT,USDC,PAX,DAI,TUSD。 投资 USM->FUM: 让投资支持 USM 作为一种投资方式 (因此,USM->FUM),连同 ETH (ETH->FUM),可能是个好主意。特别是当 ETH 的价格下降时,也就是当投资者花费 USM 可能比 ETH 更好的时候。
限价购买订单 : 该设计的一个有前景的补充是一个投资选项,用户可以以「6ETH 铸造 2000FUM」或「600USM 铸造 2000FUM」的选项下限价购买,如果价格下降到指定的比率就会触发。 这相当于在投资 op 中添加了一个可选参数: max_price_in_eth/max_price_in_usm。 这样的设计可以在资金池的缓冲区之上,提供第二道防线。而且,由于 ETH 和 FUM 的价格很可能是密切相关的,以美元计价的投标应该比较稳定。 按照我们这里的目标 (以及 Uniswap) 的精神,治理应该是最小化的:「部署后就忘记」。 设计中没有包含冻结 / 撤回功能 : 如果需要修复这个部分,应该启动一个新的智能合同,用户可以选择迁移到新版本。我能想到的唯一受管理员限制的操作是指定一个「自愿升级」合同,这样用户就可以选择将他们的财产自动转移。 其他非美元挂钩的币种应该比较容易 : 唯一的挑战是找到一个好的价格来源,例如,ETH/EUR。事实上,比特币比欧元硬币更容易使用,因为 ETH/BTC 很容易从 Uniswap 获得。存入 ETH 时需要选择 : 造币厂 :0.025(或当时 ETH/BTC 的汇率)「BTC-pegcoins」,与 BTC 挂钩,就像 USM 与美元挂钩一样;基金 :1 ETH 的「比特币基金」——押注 ETH/ 比特币,就像 FUM 是押注 ETH/ 美元一样。面对攻击 只是一些初步想法 : 预言机操纵价格。如果攻击者可以操纵价格来源,他们可以打破锚定,低买高卖,抽干资金池。 预言机是该系统最明显的弱点,随着 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 的价格下跌。所以预言机的价格似乎更脆弱。 概念验证实施 我编写了一个简单的 Python 命令行实现,虽然会有 bug,还需要进一步的修改,但它已经足够让您了解系统是如何工作的。下面是一个来自上面例子的副本镜像操作示例 : 来源链接:medium.com —- 编译者/作者:白计划 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
实例解读:如何设计一个简洁的去中心化稳定币?
2020-07-20 白计划 来源:链闻
LOADING...
相关阅读:
- 宇泽谈币:8.2比特币早间行情分析轮涨效应下币圈市场热闹非凡2020-08-02
- 以太坊正在为超过400美元的价格做准备; 这就是将其推向更高的原因2020-08-02
- 比特币交易价格突破11,000美元2020-08-02
- 分析师:模糊的加密资产将飙升,交易者的雷达上应该有比特币,以太2020-08-02
- Kriptosteel:值得拥有吗?2020-08-02