DeFi 研究之 Compound 白皮书


引言

加密货币和数字区块链资产市场已经发展成为一个充满活力的生态系统,由投资者、投机者和交易员组成,交换数以千计的区块链资产。不幸的是,金融市场的复杂性并没有跟上:参与者几乎没有交易资产时间价值的能力。

利率填补了那些拥有不使用的剩余资产的人和那些没有资产(具有生产或投资用途)的人之间的缺口;交易资产的时间价值对双方都有利,并创造了非零和财富。对于区块链资产,目前存在两个主要缺陷:

  1. 借贷机制极其有限,这导致了资产定价错误(例如,“scamcoin”的估值深不可测,因为没有办法做空它们)。
  2. 区块链资产的收益率为负,这是由于巨大的存储成本和风险(包括场内和场外),没有自然利率来抵消这些成本。这加剧了波动性,因为持有的积极性被打击了。

集中化的交易所(包括Bitfinex, Poloniex…)允许客户以保证金交易区块链资产,交易所内置了“借贷市场”。这些是基于信任的系统(你必须相信交易所不会被黑客攻击、携资产潜逃或错误地平仓),仅限于特定的客户群体,仅限于少数(最主流的)资产。最后,余额和头寸都是虚拟的;你不能移动链上的头寸,例如在智能合约或 ICO 中使用借来的以太币或代币,这使得 dApps 无法访问这些工具。

点对点协议直接促进了市场参与者之间的抵押贷款和无抵押贷款。不幸的是,去中心化给用户带来了巨大的成本和摩擦;在审查的每项协议中,贷款人都被要求发布、管理和(在抵押贷款的情况下)监督贷款提议和活动贷款,而且贷款履行通常是缓慢和异步的(必须为贷款提供资金,这需要时间)。

在本文中,我们引入了一个去中心化的系统,用于无障碍地借入以太坊 Tokens,没有现有方法的缺陷,使适当的货币市场能够运行,并创建了一个安全的正收益方式来存储资产。

Compound 协议

Compound 是以太坊区块链上的一个协议,它建立了货币市场。货币市场是一个资产池,根据资产的供求关系,通过算法得出利率。资产的供应者(和借款人)直接与协议交互,赚取(和支付)浮动利率,而不必与同行或对手方协商期限、利率或抵押品等条款。

每个货币市场都是独一无二的以太坊资产(如以太坊,ERC-20 稳定币如 Dai,或 ERC-20 实用代币如 Augur),并包含一个透明和可公开检查的账本,记录所有交易和历史利率。

供给资产

与交换或点对点平台(用户的资产被匹配并借给另一个用户)不同,Compound 协议聚合了每个用户的供应;当用户提供资产时,它就成为可替换资源。这种方式提供了比直接贷款多得多的流动性;除非市场上的每一项资产都是借来的(见下:协议鼓励流动性),用户可以随时提取他们的资产,而无需等待特定贷款到期。

提供给市场的资产由 ERC-20 代币余额(“cToken”)表示,它使所有者有权获得越来越多的基础资产。随着货币市场产生利息,这是借贷需求的函数,cToken 可以转换为越来越多的底层资产。通过这种方式,赚取利息就像持有 ERC-20 cToken一样简单。

主要用户场景

长期投资于以太和代币(“持有者”)的个人可以使用 Compound 货币市场作为他们投资的额外回报的来源。例如,拥有 Augur 的用户可以向 Compound 协议提供他们的令牌,并赚取利息(以 Augur 计价),而不必管理他们的资产、满足贷款请求或承担投机风险。

拥有代币余额的 dApps、机器和交易所可以通过 "扫荡 "余额来使用 Compound 协议作为货币化和增量回报的来源;这有可能为以太坊生态系统解锁全新的商业模式。

借款资产

Compound 允许用户在以太坊生态系统的任何地方,使用 cTokens 作为抵押品无摩擦地从协议中借款。与点对点协议不同,从 Compound 借款只需要用户指定想要的资产;没有谈判条款、到期日或融资期;借款是即时和可预测的。与提供一种资产类似,每个货币市场都有一个由市场力量决定的浮动利率,它决定了每种资产的借贷成本。

抵押品价值

协议持有的资产(由 cToken 的所有权表示)被用作从协议借款的抵押品。每个市场都有一个从 0 到 1 不等的抵押因子,它代表基础资产价值中可以借入的部分。流动性差的小盘资产具有较低的抵押因子;它们不能提供良好的抵押品,而流动性高、市值高的资产具有较高的抵押因子。帐户底层资产的余额乘以抵押因子的总数等于用户的借款能力。

用户能够借到但不超过他们的借贷能力(的资产),而且一个账户不能采取任何会使借贷资产总值超过其借贷能力的行动(例如借贷、转移 cToken 抵押品或赎回 cToken 抵押品);这可以保护协议免受违约风险。

风险和流动性

如果账户的未偿还借款价值超过了他们的借款能力,则部分未偿还借款可以按当前市场价格减去清算折扣的方式被偿还,从而换取用户的 cToken 抵押品; 这激励了套利者生态系统迅速介入以减少借款人的风险,并消除协议的风险。

可以平仓的比例,即平仓因子,是指借入资产中可以偿还的部分,取值范围为0~1,如25%。 清算过程可能会继续调用,直到用户的借贷量小于其借贷能力。

任何拥有所借资产的以太坊地址都可以调用清算功能,将其资产交换为借款人的 cToken 抵押品。由于两个用户、两个资产和价格都包含在 Compound 协议中,清算是无摩擦的,不依赖于任何外部系统或订单簿。

主要用户场景

无缝地持有新资产(无需出售或重新安排投资组合)的能力给了dApp消费者、交易员和开发者新的超能力:

  • dApps 无需等待订单完成,也无需要求链下行为,可以借入代币用于在以太坊生态系统中使用,比如购买 Golem 网络上的计算能力
  • 交易员可以使用他们现有的投资组合作为抵押,通过借入 Ether 为新的 ICO 投资融资。
  • 希望做空代币的交易员可以借入代币,将其发送到交易所并出售代币,从被高估的代币下跌中获利。

利率模型

Compound 协议采用了一个利率模型,该模型在每个货币市场中基于供求关系实现利率均衡,而不是(要求)单独的供应商或借款人必须就条款和利率进行谈判。根据经济理论,利率(货币的“价格”)应该随着需求的增加而增加;当需求低时,利率应该低,当需求高时,反之亦然。每个市场 a 的利用率 U 将供给和需求统一为一个变量:



需求曲线通过治理被编码,并表示为利用率的函数。例如,借款利率可能类似于以下情况:



供应商赚取的利率是隐性的,它等于借款利率乘以利用率。

流动性激励结构

该协议并不保证流动性;相反,它依赖于利率模型来激励它。在对资产的极端需求时期,协议的流动性(可提取或借入的代币)将下降;当这种情况发生时,利率上升,刺激供应,抑制借贷。

实现和架构

Compound 货币市场的核心是一个账本,它允许以太坊账户提供或借入资产,同时计算利息,这是一个时间函数。该协议的智能合约将公开访问,机器、dapp和人类将完全免费使用。

cToken 合约

每个货币市场都被构建为实现 ERC-20 令牌规范的智能合约。用户的余额以 cToken 余额表示;用户可以通过向市场提供资产来铸造(mint(uint amountUnderlying)) cTokens,或为基础资产赎回(redeem(uint amount)) cTokens。cTokens 和基础资产之间的价格(汇率)随着时间的推移而增加,因为资产的借款人会产生利息,等于:



随着市场的总借款余额增加(作为借款人利息增长的函数),ctoken和基础资产之间的汇率会增加。




利率机制

Compound 货币市场由利率定义,统一适用于所有借款人,随着供求关系的变化而调整。

每一个货币市场,每个利率的历史记录由利率指数捕获,该指数在每次由于用户铸造、赎回、借入、偿还或清算资产而导致的利率变化时计算。

市场动态

每次交易发生时,该资产的利率指数都会被更新,以复利的方式计算自上一次指数以来的利息。自上一次指数以来的利息,使用该期间的利息,以 r*t 为单位,使用每个区块的利率计算:



市场的未偿还借款总额会更新,纳入自上一指数以来累积的利息:



部分应计利息被保留(留出)作为准备金,由 reserveFactor 决定,范围从 0 到 1:



借款人动态

借款人的余额,包括应计利息,只是当前指数除以用户余额上次检查点时的指数的比率。

cToken 中每个借款人地址的余额被存储为一个帐户检查点。帐户检查点为 Solidity 元组 。这个元组描述的是在最后一次将利息应用到该账户时的余额。

借款

希望借款且在 Compound 中存储有足够余额的用户可以在相关的 cToken 合约上调用 borrow(uint amount)。该函数调用检查用户的账户价值,并给予足够的抵押品,更新用户的借款余额,将代币转移到用户的以太坊地址,并更新货币市场的浮动利率。

借款的计息方式与第3.2节中计算余额利息的方式完全相同;借款人有权在任何时候通过调用 repayBorrow(uint amount) 来偿还未偿贷款。

清算

如果用户的借款余额由于抵押品的价值下降而超过了他们的总抵押品价值(借款能力),或者借入的资产价值增加,则可以调用公共函数 liquidate(address target, address collateralAsset, address borrowAsset, uint closeAmount) 功能清算,它以略高于市场价格的价格,将调用用户的资产交换为借款人的抵押品。

如果用户的借款余额由于抵押品价值下降或借入资产价值增加而超过其抵押品总价值(借款能力),则可以调用公共函数,该函数将调用用户的资产换成借款人的抵押品,价格略有下降。 比市场价好。

如果一个用户的借贷余额超过了他们的总抵押品价值(借贷能力),由于抵押品的价值下降,或借款资产的价值增加,则可以调用公共函数,这个函数以略高于市场的价格,交换调用者的资产来换取取借款人的抵押品。

价格反馈

价格预言机维持每种支持资产的当前汇率;Compound 协议将设定资产价值的能力委托给一个委员会,该委员会从前10个交易所汇集价格。这些汇率被用来确定借款能力和担保要求,以及所有需要计算账户等价价值的职能。

审计

Compound 协议默认不支持特定的令牌; 相反,市场必须被列入白名单。这是通过一个管理函数实现的,supportMarket(address market, address interest rate model) 函数允许用户开始与资产交互。为了借到一项资产,必须有一个来自价格预言机的有效价格;为了使用资产作为抵押品,必须有一个有效的价格和一个抵押品因子。

每个函数调用都通过一个策略层进行验证,这个策略层被称为 "Comptroller"; 该合约在允许用户操作之前验证抵押品和流动性。

治理

Compound 将从协议的集中控制(例如选择每个资产的利率模型)开始,随着时间的推移,将过渡到完整的社区和相关方控制。 协议中的以下权限由 admin 控制:

  • 上一个新的 cToken 市场的能力
  • 更新每个市场的利率模型的能力
  • 更新预言机地址的能力
  • 提取 cToken 储备的能力
  • 选择一个新的管理员的能力,比如社区控制的 DAO;因为这个 DAO 本身可以选择一个新的管理,所以管理可以根据相关方的决定随时间发展

总结

  • Compound 为以太坊资产创建了正常运行的货币市场
  • 每个货币市场的利率是由基础资产的供求决定的;当对一种资产的借贷需求增加,或者当供给减少时,利率就会上升,从而刺激额外的流动性
  • 用户可以向货币市场提供代币以赚取利息,而无需信任中央机构
  • 用户可以通过使用他们在协议中的余额作为抵押来借用代币(使用、出售或再借出)


写评论,请先登录