Compound基础知识

货币有时间价值,因为钱会产生利息。区块链产生了很多的数字资产,但现在这些资产大部分只能直接交易,无法交换时间价值,所以,借贷的实现就变得很重要了。

Compound 是一个开放协议,想要实现数字资产的借贷。它想让你在区块链世界里更容易借钱。借钱是很基础的需求。有的人有额外的资产,放着没用,有的人可能自己没有资产,而这些资产往往具备生产或者投资的价值,如果能让这两部分人互相借贷,那对双方来说都有好处,最终它会创造一个非零和的财富增长。

官网:https://compound.finance/

中心化的交易所提供一些保证金交易,但需要你信任中心化机构,同时对可借贷的资产类型也有很大的限制,通常只有一些主流的币种。同时,这种中心化的方式无法在链上做借贷,这样对于智能合约来说,就没办法接入这套机制了。Compound 想要提供另一种不同的借贷协议,让整个链上的体验和流程变得更简单、更流畅。

货币市场

Compound 协议让开发者可以基于以太坊建立各种各样的货币市场(money market)。

所谓的“货币市场”,其实就是一个个的币池,每个币池里只有同一种 ERC-20 的币,协议通过算法来决定这个池子里的币借贷的利率是多少。简单点说,这个算法会基于人们对这个币借贷的供需关系自动计算出利率。例如在 Dai 这个货币市场里,目前放贷可以收取的年利率是 2.29%,贷款需要付出的年利率则是 8.69%,这些利率对每个人都一视同仁,而且每时每刻都可能处于浮动状态。

不管你是来贷款还是放贷,你都是在跟 Compound 协议直接打交道。这一点跟那些点对点的借贷协议不太一样。在点对点的方案里,借贷双方会做匹配,然后你需要跟找你借钱的人(或者借你钱的人)进行沟通,双方自己商定好借款的利率、到期时间和抵押物品等等。而在 Compound 协议里,每个 ERC-20 代币都有一个属于自己的借贷市场,里面包含每个用户在这个市场里的余额,以及各笔生效的借贷交易,乃至每段时期的历史利率,等等。

Compound 协议包括三个主要的合约:

  • MoneyMarket 合约:负责主要的借贷逻辑的实现,包括了一系列的操作函数,比如放贷(SUPPLY)、提现(WITHDRAW)、借贷(BORROW)、偿还贷款( REPAY BORROW )、 清算(LIQUIDATE)等。
  • InterestRateModel 合约:提供借贷利率的计算模型。
  • PriceOracle 合约:用来提供各个 ERC-20 代币的价格信息。比如这个合约可以通过排名前十的交易所得出一个币的当前价格,为其他合约所调用。

最主要的合约是 MoneyMarket。在最简单的形式下,一个货币市场的 MoneyMarket 合约,就相当于一个 ERC-20 合约,这个合约会维护一张表,里面记录每个用户持有币的数量,也就是余额,余额同时也会随着时间计算利息。Compound 引入了一个低 gas 费的方法来更新合约内的用户余额。每当用户借贷或者放贷的时候,合约会自动更新余额表格里相应资产的条目。此外,Compound 还会根据这张记录余额的表格来计算目前借贷和放贷各自的利率应该是多少。

币的放贷(Supplying Tokens)

针对某个 token,Compound 会把所有放贷用户提供的同类 token 聚合起来,统一借出给不同的用户。 这样做的好处是能集中提供更好的流动性,同时用户也可以随时提现自己放贷出去的资产,不需要等到借贷合约到期才能收回钱。在一个货币市场里,用户的余额会基于供应这个 token 的利率来计算应记利息。用户可以实时查询自己的余额(包括应计利息),当用户发起一笔交易更新余额的时候(比如放贷、转账、提现),应计利息就会转成相应的 token 资产付给用户。

应用场景:

  • 以太坊生态内的长期投资者(比如一些机构),可以利用 Compound 协议来完成投资的额外收入,赚一些利息。这个额外收入不需要你自己管理资金、完成借贷合约或者承担投机风险。
  • dApp、机器或者是交易所,如果有额外的 token 余额,那也可以放到 Compound 协议上增加一点收入,更充分的利用资金。这个有可能为以太坊生态解锁另一种完全不同的商业模式。

币的借贷(Borrowing Tokens)

Compound 让用户通过抵押品的信贷额度无缝地从协议上借钱。你只需要看自己要借哪个币,不需要和别人沟通还款日期、利率,就能马上借钱。借款是实时且可预测的。每个货币市场都有一个由市场决定的浮动利率。要把自己手上的币放贷出去或者找 Compound 借币,直接跟平台交互就可以。

Compound 协议强制应用了一条规则,即每个账户必须拥有足够的余额能够偿还借款的额度,叫做抵押率(目前平台上这个数值是 1.5x)。每个账户无法做出任何会使「余额/借款额度」低于「抵押率」的行为,比如再借更多的钱或者把抵押款的余额提现。要增大或者重置抵押率,用户可以全额或者部分偿还借款。任何被 Compound 持有的余额,包括用户用来做抵押品的余额,同时也会产生正常的应计利息。

风险与清算

如果一个用户提供的抵押资产,除以他们信用额度所借的款项,低于抵押率,那他们的抵押资产就可以(通过借款资产)被购买,出售的价格是当前市场价格减去清算折扣(liquidation discount)。这个机制会激励系统里的套利者,去快速减少借款人还不了的借款资产的短缺,从而降低协议的风险。

任何拥有借款资产的以太坊账户都可能全部或部分地参与到这种清算流程,用他们的资产去交换借款人的抵押资产。因为这两类用户和这两类资产,所有价格信息都可以在 Compound 的协议里面看到,所以清算是无摩擦的,不需要依赖任何外部的系统或者 order book。

应用场景:

  • 这种不需要买卖或者更改自己的投资组合就能持有新资产的能力,会让 dApp 的用户、投资者和开发者都能拥有新的“超能力”:
  • 不需要等订单完成、或者执行任何的链下操作,dApp 就能从以太坊上借到钱、并且立即在以太坊上使用这些借到的钱。比如在 Golem 网络上购买算力。
  • 投资者可以进行新的 ICO 交易,通过借入 eth,以原有的投资组合作为抵押资产。
  • 投资者如果想要做空一个币,可以先借入这个币,然后再把币卖给交易所,然后从币价的下跌中套利。

治理

社区治理已经取代了 Compound 协议管理员,这是朝着完全权力下放的重要一步。权力下放的主要目标是使协议能够发展成为具有弹性的金融基础设施,而没有可知的弱点,也无需依赖任何团队。 通过这种方式,协议可以随着整个加密生态系统的增长而继续扩展,并且可以永久存在或至少伴随着以太坊。

COMP代币

COMP 是在 Compound 治理中具有 1:1 投票权的代币。 以太坊钱包中的 COMP 代币持有人可以使用 COMP 治理合约中提供的函数将投票权委托给自己或任何其他以太坊地址。Compound 协议只能由 COMP 代币持有者及其代理升级和配置。 协议的所有潜在更改,包括增加新市场或调整系统参数(如抵押因子或利率算法),都必须通过治理智能合约中指定的提案和投票过程。委托投票权的接收者(称为代理人),无论他们是 COMP 持有人本身还是其他地址,都可以提案、投票和执行提案以修改协议。 你可以在 Compound 治理面板上看到当前的代理列表。

  • 代理列表:https://compound.finance/governance
  • COMP代币地址: 0xc00e94cb662c3520282e6f5717214004a7f26888
  • 治理合约地址: 0xc0dA01a04C3f3E0be433606045bB7017A7323E38

治理的核心概念

  • COMP - ERC-20 代币,用于指定用户的投票权。 用户钱包中的 COMP 余额越多,他们对提案的授权或投票就越重。
  • Delegation 委托 — COMP 持有人只有在将投票权委托给某个地址后才能投票或创建提案,这个地址可以是COMP 持有人自己也可以是其他人。
  • Proposals 提案 — 提案是可执行的代码,可修改协议及其工作方式。 为了创建提案,必须至少有所有 COMP 的 1%委托给该地址。现有总计 1000 万个 COMP,因此用户必须将至少 100,000 个 COMP 委托给其地址。 提案存储在 Governor 智能合约的 “proposals” 映射中。 所有提案的投票期均为 3 天。 如果提案者在整个投票期间未维持其投票权重,则任何人都可以取消该提案。
  • Voting 投票 — 用户将投票权委托给其地址后,便可以对单个提案投票赞成或反对。 提案处于“有效(Active)”状态时可以进行投票。 投票可以使用 castVote 立即提交,也可以使用 castVoteBySig 离线签名稍后提交。 如果大多数票(达到 4%的委托 COMP 的法定人数,即 400,000 COMP)对某个提案投票赞成,则该提案将在时间锁中排队。
  • Timelock 时间锁 — 所有治理和其他管理操作都必须在时间锁中停留至少 2 天,然后才能在协议中实施。每个 cToken 合约和 Comptroller 合约都允许 Timelock 地址修改。Timelock 合约可以修改系统参数、逻辑和合约,以 “延迟时间、选择退出” 的升级模式进行修改。

Compound 的未来

Compound 的未来还是要取决于是否有开发者在它上面搭建新的服务,特别是跟 dApp 这块结合起来的话,可能会有不一样的想象空间。就像白皮书里提到的那样:任何 dApp、机器或者交易所,如果有额外的 token 余额,都可以放到 Compound 协议上更充分的利用资金。这有可能为以太坊生态解锁另一种完全不同的商业模式。

如果有一个 dApp 运转得很好但是找不到商业模式,而且它合约里沉淀了大量的 ERC-20 token,那它就能借助 Compound 的货币市场做借贷赚一些钱。有点像很多互联网公司利用自己的业务回收现金流,然后把钱拿出去做金融化的运作来挣钱,比如我们一次性交会员费的健身房、购买消费卡的电商、要用车先给押金的租车公司、支付宝等等。

我在 Compound 的 discord 频道里看到了他们在聊的几个有趣案例,可以分享一下。比如有人在 Compound 的协议上搭建了一个很有趣的小应用叫 poolTogether,被称为一款“不会亏钱的彩票应用”。这个应用是这样运作的:你找 poolTogether 买一张彩票,你付的钱就会被锁进一个智能合约里,poolTogether 把所有人买彩票的钱都聚合起来,再放到 Compound 上面去做借贷,等到彩票开奖结束后,所有借贷产生的利息都归中奖的那个人拥有,同时每个人都能拿回自己买票的本金。

这是个非常有趣的应用,因为只要越多的人买彩票,把自己的钱存在一起,那么中奖的利息奖金就会越大,越有吸引力,产生一个正循环。有人还根据这个应用开了另一个脑洞:同样的模式能不能拿来作为支持自己喜欢的 up 主/歌手/偶像的方式?粉丝们把钱存在一起生利息,利息最后分给自己想要支持的 up 主。

参考资料