DeFi狂热后的危机带来什么教训?本文作者在文中呼吁 DeFi 项目审慎地检查项目的安全模型并开诚布公、充分地告知用户其中的安全风险。考虑到这篇文章的实际成文时间(早于 2 月 ETHDenver 活动),作者对 DeFi 领域已经陷入狂热的警告可谓具有先见之明。
bZx 攻击事件在 ETHDenver 活动期间发生,后来 Curve 项目似乎也出了些问题。攻击事件结束了,但 DeFi 的故事还没有结束,也不该结束。为了让 DeFi 走向成熟,也该好好感受一下作者在本文中的大声疾呼。
本文源于2020年2月我在 ETHDenver 发表的一场演讲。
不知你是否看过《乖仔也疯狂(Risky Business)》,这是一部由汤姆·克鲁斯主演的成长电影。戏中的他在父母离家后卷入了一系列的麻烦,他必须自己动手解决问题,然而这只会造成更多的麻烦。这段旅程之所以可爱,是因为长着一张娃娃脸的阿汤哥太天真了,一刻也没有闲着。如果他年纪再大一点或更幼稚一点,那他的选择就太没责任心了,任何人都无法宽恕。
密码货币行业跟这部电影多有相似之处。我们逃避了许多本该直面的事情,也拒绝从既往的错误中汲取教训,甚至拒绝承认智能合约也不是完全信得过。等到真的把事情搞砸,又拿理想主义和不够成熟来给搪塞他人。
但是,天真并不能降低风险,而且随着时间的推移,这套说辞也不会再被接受。如果我们真想得到人们的尊重,而非颜面无存,就不该再这样装傻卖萌,掩盖行业的实际风险。
遗忘历史之人终将重蹈覆辙
前事不忘,后事之师,但如果不吸取教训,看过就忘,那一定会重蹈覆辙。现状就是这样,只要研究一下智能合约攻击,就会发现这只是同一种攻击在一遍一遍又一遍地重演……
如何才能真正降低风险?
1. 自我意识 2. 警惕 3. 感激 4. 偏执
总而言之,我们需要一种文化来减少和降低风险:
自我意识:我们应该意识到我们自己和我们的行为对周围的人以及更广阔的世界所产生的影响。
警惕:我们应该保持警惕,在风险导致负面结果之前就觉察到它们,无论是对我们自己还是周围人的风险。我们也应该积极寻求信息,以减少 「未知的未知」。
敬畏:我们应该敬畏这些系统的复杂性,并敬畏我们所拥有的力量,以及我们能对周围真实存在的人产生的影响。
偏执:我们应当保持一种深层次的恐惧、偏执和怀疑。否则长久以来只能寄希望于装可爱了。
何为风险?
风险就是坏事发生的可能性,即事情不按预期发展的概率。当你期待着一件事情的发生时 —— 期待着大赚一笔、期待着拯救世界、或做出一款令人称奇的产品 —— 然后实际发生的事情却刚好相反。
风险无处不在,而我们推理风险的能力却非常糟糕。
我读过太多关于互联网进化的内容。早期的互联网建设者真是一群过于乐观的理想主义者,虽然我们今天仍生活在他们创造的成果中,但他们从未想象过 Google 和 Facebook 能有如此之大的影响力和控制权。
https://nymag.com/intelligencer/2018/04/an-apology-for-the-internet-from-the-people-who-built-it.html
Lanier:最初的广告演变成了大规模的不间断行为干预过程,每个人都处于设备的监视之下,并在精心设计的刺激下潜移默化。这一可怕的事情早已被科幻作家所预见,Philip K. Dick 或《1984》就直接描绘了这样的场景。尽管存在这么多警告,我们依然步入了这样的世界,在数字网络的统治之下创造了大规模的行为矫正机制。而这样做是因为我们希望同时成为棒棒的社会主义者和棒棒的自由主义者。
我们需要对可能发生的一切有所觉察,如此才能尝试减轻我们面临的风险,甚至是深层次的道德风险。我们并不想自己想象的那样,在连接每一个人并创造一个新的去中心化的世界。事实上,我们正在创造一个超级高效的隐私侵犯系统,而全世界每一个人都难逃魔爪。
所有风险
风险的种类五花八门。有些乃金融市场所独有,而有些风险则专门针对密码学货币和智能合约。
DeFi 最有趣也最可怕的一点是,它将上述两种本身就具备风险的事物结合在了一起。我们将它们放在一起,掰开揉碎,然后又出于某种侥幸心理,希望一切都没有问题。
真想要不出问题,就别偷懒啊你们。
每当这些系统相互连接,彼此依赖,或者互相叠加时,你就处在巨大的风险中。我们喜欢将 DeFi 想象成 「DeFi 乐高(Lego)」,但如果它的基础不牢固,它实际上就是 「DeFi 叠叠乐(Jenga)」 了,而我们也会摔得鼻青脸肿。
每当有人未遵守协议时,你也会处于风险之中。DeFi 确实消除了一些交易对手方的风险,但你仍然无法避免由流动性、滑点、以及老土的以讹传讹带来的风险。如果一个处理着数百万美金用户存款的 DeFi 系统可以升级,那你简直秒秒钟都是几十万上下啊。
如果你还没有关注 Chris Blec 的 Twitter,赶快去关注!他正在做一项研究,试图确认这些可升级的智能合约是如何保证安全性的。仅仅依靠一枚私钥么?(这是在拷问 bZx,因为他们在 2018 年已经承诺使用了多签加治理的解决方案。)是什么在保护智能合约的代码不被更改或控制?又是什么在守卫着这些钱?大部分(我们就不说全部了)这些 DeFi 智能合约都是可升级的。而且 ······ 请注意!人们还会被钓鱼 —— 即便那些控制着复杂的智能合约系统的人也不例外。
风险的范围如此之广,以至于我们难以承受,更别提管理这些风险了。太多的事情威胁着个人、系统、乃至这些相互交织的系统。
这些风险对于 DeFi 的生态系统而言意味着什么?它能有多糟呢?
2020 年 2 月 15 日:Fulcrum / bZx
好吧,在我此次演讲的同时(2020 年 2 月 15 日,美国标准时间上午 9:50)发生了一件糟糕的事情,人们还在尝试确认这是不是对智能合约的攻击或者对漏洞的利用。据估算,攻击者通过某些复杂的手段获利大约 35 万美金。然后,更多的细节浮出水面,而事情也变得越发复杂。两天后,类似的攻击再次发生,而这次攻击者获利 65 万美金。
译者注:作者在这里指的是 2 月 15 日发生在 bZx 协议上闪电贷攻击事件。
然而,在我看来,这次事件究竟源于黑客攻击、利用、漏洞还是市场操纵都无关紧要。总之,发生了一些意料之外的事情。而每当金融市场发生意料之外的事情时,很少是好事。要是这种事情发生时还有一方赚到了 35 万美元,那通常意味着有另一方损失了 35 万美元。
发生这些攻击的原因是某些 #DeFi 系统以各种方式相互连接、依赖和构建。而当作恶者在所有这些不同的平台上合并头寸时,TA 赚到了一大笔钱。但是,某些人赚的盆满钵满的背后,是另一些人在大亏特亏。
来自 Aave 的 Stani 在 Telegram 中转发了这条行家的消息,详细说明了可疑的漏洞是什么。尽管分析听起来头头是道,但结局仍然让我感到困扰:
「然而,如果上述分析无误,那么这听起来一点也不像一次攻击。它并非合约中的漏洞 —— 而是一套复杂的套利 / 市场操纵计划,横跨了 4 个最知名的 DeFi 网站,而非一次攻击。」 Stani 分享的信息,尽管不是他写的
译者注:bZx 闪电攻击事件始末可看 由 PeckShield 提供的分析。
打住打住,这太荒谬了!「我们的智能合约没有被黑!我们不是用不安全的方式写了糟糕的代码,只是我们的代码被用来做了不安全的事!」 这像人话吗?
这就是为什么我说我们需要更加勤奋和偏执,而不要拿法律术语来当挡箭牌,更别想着用花哨的词语来掩盖现实。试图从技术上或法律上来推卸责任并不会改变已经发生的事实,也不会对受害者有所补偿。相反,专注于创造安全可靠的产品以防止意外的发生,并保护用户的资产不受损失,才是重点。
注释:后来发现攻击是通过 操纵 / 利用 系统来辅助发动的,但真正的突破点还是在代码本身的错误上。
不管怎样!在发生攻击的那个清晨,Phil Daian 像往常一样发表了一些富有先见之明的想法。如果你还不认识 Phil,容我介绍一下,他在这类事情上做了大量的研究。他在 Devcon 4 上的演讲就是关于智能合约安全的。他指出了以下几点:
「安全性不仅仅体现在代码能否按照设计运行,还包括产品的设计应当为用户提供哪些属性。以太坊社区在前一方面表现出色,而后一方面则因为 #DeFi 的利润丰厚而做得一塌糊涂。仅仅因为你的代码正常运行并不能代表你的系统安全无虞。」来源:Phil 在某个安全 Telegram 群组内的言论
这是我们所有人都应当首先考虑的事情,我没有其它需要补充的内容。
尽管我们能从这轮攻击中收获良多,但考虑到 bZx 团队早在 2019 年 9 月就被预先警告过这类攻击方式了,教训实在是过于惨痛:
太长不看:由于在没有验证回报率的前提下依赖了一个链上的去中心化价格预言机,DDEX 和 bZx 很容易受到原子化价格操纵的影响。这将导致 DDEX 在 ETH/DAI 市场中损失流动的 ETH,以及 bZx 损失所有的流动性资金。幸运的是,实际上尚未有资金蒙受损失。—— samczsun
Sam Sun —— 一位安全研究员、白帽、也是一名出色的智能合约黑客 —— 写了一篇关于 DDEX 和 bZx (又名 Fulcrum) 的文章,在文中他研究了如果操纵它们所依赖的喂价方式会有什么后果。(需要说明的是:他负责任地向合适的团队披露了漏洞,并在修复过程中协助他们,就和他在帮助 0x、Curve、ENS、Kyber、Cheeze Wizards、Livepeer、Authereum、以及其他团队时一样。