Defi世界的安全性思考

2020年是庚子年,与历史惊人的相似,每到庚子年的年份,大家居住的地球就如同一个高压锅突然被卸了气阀,各种幺蛾子事件层出不穷。 这才刚刚过去四个月,不光是自然灾害,包括人类社会,比如新冠病毒、股市崩盘,各种无法预料的事情层出不穷。区块链行业也不例外,这不,在2019年下半年作为以太网络上热点的Defi领域,也发生了各种事件。大家来回顾一下:

  1. 2月15日,有黑客利用 flash loan 的方式对 bZx 的资产进行了攻击,获得了大约 30 万美金的收益;
  2. 2月18日,黑客再次利用 flash loan,通过大额交易操纵 kyber 平台上价格的变化,再次从以 kyber 价格作为 oracle 机制的 bZx 平台获利66万美金的收益;
  3. 3月12日,传统金融市场的暴跌被传递到区块链币圈生态,并由此影响以存贷和交易为主的Defi生态。由于整个金融资产价格的暴跌,导致:
  • Defi 的全网锁定价值减少了4亿美金,24小时内下跌33%;
  • MakerDao、Compound等平台发生了大规模清算,清算量分别达到1000万美金和600万美金;
  • MakerDao 有价值832万美金的抵押品被0价格拍卖;并产生了500万美金左右的不良债务,通过后续拍卖MKR的机制来偿还;
  1. 4月18日,黑客利用 ERC777 与 Uniswap 兼容性的问题,通过重入攻击的方式,从 Uniswap 平台掳走了22万美金的资产;
  2. 4月19日,同样利用重入攻击的方式,黑客利用 imBTC 和 lendf.me 兼容性的问题从平台掳走了大约2500万美金的资产;

1月29日,锁定在Defi生态中的ETH达到了历史高点,为大约为323.5万个ETH,而在2月7日,锁定在Defi生态中的资产价值首度超过了10亿美金,如此高的价值,Defi自然而然受到了各类关注,其中包括黑客的目光,从而导致以太坊上 Defi 生态内安全事故的频发,影响了不仅是生态内的各个参与方,对于一直在提升性能和影响力的以太坊,也是不小的打击。
从更大层面角度来讲,对于有兴趣加入Defi生态的新用户,从品牌影响角度来看,是非常大的减分项,预计会在比较大的程度上减缓新用户加入Defi生态的步伐。在今后的日子里,不排除还会有相当数量的Defi平台受到攻击的时间发生,大致上大家可以按照Defi平台的资产排名来期待

目前看下一个的目标是AAve.com了?


那么,大家有没有什么办法来防止Defi安全事故的发生呢?

大家不妨把 Defi 的安全分为三层:

1. 金融系统级安全性

a) 传统金融市场风险的传导

此次三月份传统股票市场的熔断,是传统金融市场系统级风险酿成的事故。倾巢之下,焉有安卵。安全事故从传统市场传导到币圈,进一步影响到Defi,从而造成了3月12日黑天鹅事件,体现在了BTC以及其他数字货币价格暴跌,数字货币交易所杠杆交易大量爆仓,Defi协议大量清算,以及Defi最大的项目MakerDao不良资产产生的后果。
根据 BlockVC 的研究,从历史长期来看,BTC和股票市场的相关性是极低的。但3月初由于传统市场的流动性危机导致投资者疯狂抛售资产并套现,导致BTC和股票市场在过去的一个月内的相关性极大增加;而黑天鹅事件过后,此相关性又逐渐减弱并回到日常水平。
BTC在历史上与黄金的相关性并不是很强,但从今年一月份开始出现了增长,并在3月12日达到高峰,并一直保持了较高的峰值。虽然整体上BTC和黄金的相关度并不强,但其增长的趋势是很明显的。
这也从另外一个方面说明,BTC很有可能被传统资金作为一种避险资产进行资产配置。加上新冠病毒疫情后各国政府都拿出了流动性直接支撑经济,那么很有可能未来会有大量资金进入币圈。
Defi,尤其是Defi中的Dex,市场的参与者一直认为流动性是最大的问题。从这次的黑天鹅事件来看,流动性的快速进出所带来的传统金融的危机传导是一个不容忽视的点。数字货币本身的波动就非常大,由于投机资金的突然涌入或者抽出,将会放大其波动性。同时,由于传统金融市场体量远远大于币圈,在传统金融市场的小变动有可能造成币圈的大波澜。

那么,如何尽量避免传统金融传导的风险呢?不妨从以下几个方面来进行思考:

  • 适当控制杠杆的比例,以及利率、LVT等因素。当相比传统金融市场有更有更高的杠杆、更高的存款利率和更低的贷款利率时,资金自然会往币圈走,这也是币圈吸引传统资金的一个比较重要的形式。但如果为了吸引资金而不合理得设置这些值,忽视了投机资金的大量涌入所会带来的风险,那么,可能传统市场的一只蝴蝶扇动的翅膀,会成为Defi世界的风暴。
  • 在引入或者合成传统金融市场资产时,需要谨慎。某些Defi的协议,能通过模拟传统金融资产的价格变化从而进行交易,如UMA、Market等。先不谈这些方式是否会对传统资金产生吸引力从而进入币圈,这些被模拟的传统资产,势必会将传统金融资产的波动带入币圈,并叠加上币圈资产本身的波动性,从而加大震荡。假设08年的时候Defi已经成熟,当年房地美的资产被引入了币圈的话,必将一地鸡毛。反过来看,SEC一直对比特币ETF没有放开的一个重要原因,就是SEC觉得比特币价格波动太大且容易受到操控,其投资安全性还没有得到完整的验证。
  • 更多的引入非投机类的资金,此类资金的拥有者可能人数众多,但单用户价值较低,然而其资金目的不是投机而是投资,相对来说会更稳定。比如,最近看到的zefi等项目就是此类。

Defi世界和传统金融世界是无法绝对分割的,但传统金融世界是有一系列的法律法规和运营规则作为保障的,而作为一个社区自治且低监管甚至无监管的行业,其能得到的支撑、用户属性和传统金融行业完全不同。作为Defi的从业者,引入安全的资产,是需要放在第一位考虑的问题。

b) 币圈以及Defi 金融市场的系统安全性

除了从传统金融市场传导来的系统安全性问题,Defi作为币圈的一个金融体系,也有其自身系统安全性的问题。
数字货币的借贷无疑是币圈发展最迅速的一个方向之一,包含了场内场外的抵押借贷、交易所的杠杆交易借贷、Defi中的借贷等。除了文章开始提到的defi借贷发展的迅速程度外,包括BlockFi、Bitgo、Babel、Matrixport、RenrenBit在内的场外借贷服务商每家的在贷余额都是以“亿”美金计量的级别;BUSD在过去数月就发行超过1亿美金、USDT从3月份开始已经增发了15 亿美金,这些都可以反映交易平台内部稳定币借贷的热烈程度。
众多信贷渠道使整个币圈的金融体系,也包括Defi自身杠杆率畸高。虽然没有外币增量资金的明显增加,但圈内存量资金借助场内场外的杠杆推动了今年年初的主流币行情,同时也因为各种原因的叠加(获利出场、提前套保兑现、传统金融市场抛售、USDT流动性枯竭)下最终产生了黑天鹅的硬着陆事件。

除了高杠杆带来的黑天鹅,大家还有可能碰到Defi自身的系统性问题还可以考虑以下几个例子:

  • 目前币圈大量使用USDT,而USDT背后的资产质押问题始终欲盖弥彰。岁月安好的时候一切都好,那如果哪天USDT暴雷了呢?会对Defi世界产生什么样的影响?
  • Synthetix、Maker都是用自己的平台币SNX、MKR来确保在平台上发行的验收资产的价值。如果哪天他们的平台币不能确保其发行的资产价值了呢?
  • Dai本身价值的波动会不会导致Dai的各类衍生Dai通证的波动加剧?

Defi体系内的系统安全性,除了3月份发生的黑天鹅事件外,其他并没有暴露出来,但是大家都知道,不愿意发生的事情在区块链世界里总是会发生,因此大家需要特别留意这方面,并且做好万一时候的plan a、b、c。

2. 资产级别安全性

Defi作为金融平台,必然是需要和各类资产打交道。此时,资产本身的安全性就是重中之重。当然,在不同的项目中,对资产的“安全性”会有不同的理解。比如:

  • MakerDao的ETH单抵押版本上线了很久,才决定用多抵押的方式生成Dai(当然这也有项目开发进度的原因)。而多抵押上线后,也只是非常保守的增加了BAT作为可以接受的一个资产。在黑天鹅事件后,也是通过社区投票,才决定上线USDC作为抵押,且其稳定费率相对ETH和BAT的稳定费率极高。
  • Compound至今只有8个可以存贷的数字货币。
  • 反过来,大家看到,lendf.me接连上线了USDT、imBTC、HUSD、BUSD等有争议的或者刚上线的资产,而恰恰就在imBTC上出了问题。

一个数字资产的安全性,涉及到几个方面:

  • 该资产的token模型:包括发行量、资产分布,该资产的接受度等参数,以确保该资产是否具有良好的流动性,以及价格不被操纵,运作不被操纵的健壮性;
  • 该资产本身的智能合约的安全性;
  • 如果是映射或者衍生资产的话,那么该资产的底层资产的安全性如何;

时间是证明一个资产是否资产的最终因素,一个长时间没有出问题的又被广泛接受的资产,才是一个“安全”的资产。

3. 应用/协议级别安全性

Defi是由一个个相关的协议和应用模块所组成的“积木组合”,其整体的安全性,取决于所有的积木中安全性最差的那一个。应用/协议级别的安全性,又可以分为四个层次:

a) 代码安全

每个应用或者协议其本身代码的安全质量,是安全性的最基础保证。由于目前智能合约本身底层的不够完善,需要靠开发人员更多的关注安全方面的内容。
同时,大家也建议代码必须经过有经验的安全团队的审查。针对审查报告,不放过每一个细节(即使只是warning),并时刻关注区块链底层的变动所可能带来的安全性上的改变。

在Defi世界中,代码的安全性,是比开发速度更为关键的一个指标。这是创业者,尤其是缺乏前期资金支撑的创业者,所必须理解并接受的事实。

b) 跨协议安全性

前面说过,Defi是“积木组合”, 整体的安全性,取决于所有的积木中安全性最差的那一个。那么,如果自己的应用或者协议,调用了其他应用或者协议的接口,那么对方协议是否安全,调用了对方的接口后是否安全,甚至扩大到整体defi相关项目安全性的评估,都是需要关注的。
比如4月份发生的两个重入攻击事件,其实在多个月以前,相关的审计团队就已经对 ERC777 所可能产生的重入事件提出了警告(https://github.com/ConsenSys/Uniswap-audit-report-2018-12#31-liquidity-pool-can-be-stolen-in-some-tokens-eg-erc-777-29),但当时 ERC777 并没有实际应用,所以这个警告被忽略了,导致了第一次重入事件 Uniswap 的损失。而在发生这个时间后,Lendf.me 团队明显没有第一时间反应过来并作出反应,从而导致自己大规模的损失。这件事情上,除了对 imBTC 这个资产安全性把握不够外,也说明对于其他defi 相关项目安全性关注度的缺失。
从目前业界的情况看,多数项目会关注自身合约的安全性(但显然审计对于多数创业企业来说还是成本太高),绝大多数项目并没有特别关注被调用方的安全性,更不用说在调用接口后安全性的变化分析了,大家建议由Defi的参与者组成安全联盟,彼此分享、督促对于安全性的认知、分析和推动。

c) Oracle的健壮性

Oracle的健壮性其实是跨协议安全性的一个特例,但这个特例显得如此重要,不得不拿出来单独说。
文章开头提到的2020年过去的4个月发生的五个事情中,有三个是与 Oracle 相关的,还有一个则事实上起到了保护 Defi 的抵押资产没有被全部清算的正向作用。Defi 处理的是各类资产,而资产总有价格,价格总要从一个地方来,这就是 Oracle 起到的作用。那么这个 Oracle 涉及到的价格来源之地的安全性、可行度、健壮度,以及价格源的通路的安全性、可信度和健壮度,无一不想到最终的平台安全。

任何一个Defi项目,在完善自身的代码和运维规则前,最需要完善的是使用的Oracle的机制。

d) 运营安全

代码的安全,体现了“code is law”中的law的严肃性,那么,从另外一方面说,从来就没有完美的、安全的代码。代码是人写的,人总会出错的。黑客和白帽,一直是在“道高一尺、魔高一丈”的循环机制下彼此争斗。
作为项目方,除了关注代码的安全外,也需要通过运营上的努力,也即传统意义上的“风控”,对于项目的运作灌以安全的因素。而此类因素,恰恰是各个Defi的项目方严重缺失的,揪其原因,就是因为Defi中的“De”,让大家普遍认为,无法通过运营上的努力来解决这方面的问题,不然,“De”就变成了“Ce”,就偏离的Defi的教旨了。

将代码用运营的安全因素固定下来(并随时可以补充),同时通过社区化的运作(当然先期由项目方进行部分中心化运作未尝不可),完全可以解决上即使不是全部,也能覆盖80%以上的安全性问题。

MakerDao可以作为一个合适的正向的例子,大家可以从他们的运营和社区运作规则上学到很多。

每个不同的Defi项目和协议,其风控的领域和规则是不一样的,而风控规则,可能是不同Defi项目的核心竞争力,那么,风控规则或者数据的非开源,配合上协议代码的开源,既能解决项目公开透明的诉求,又防止了开源下直接copy-past代码另起炉灶对源项目方带来的损失,会是一个比较好的方向。

大家看到,已经有社区在对Defi的安全性做了量化的评估(https://defiscore.io/),虽然还存在各种不足,但已经是一个良好的开端。

期待Defi的各个参与方能对Defi的安全性有更强的了解,让市场上有越来越能全面评估Defi安全性的工具和产品,进而带动Defi社区最佳实践和规则的演变,让Defi成为所有人都能放心使用的金融工具。

向现在的Defi建设者和用户致敬。

推荐阅读更多精彩内容