除了闪电贷,bZx 事件还给 DeFi 带来了哪些启示?

DeFi 合约到底该不该设置管理员密钥?

撰稿:LeftOfCenter

本周加密圈子最引入注目的要属 bZx 攻击事件了。

就在两天前,一名聪明的黑客通过对几个 DeFi 协议进行了简单的操作,区区十几秒就获得了价值 35 万美元的 ETH 的套利收益

简单来说,某个操纵人通过「闪电贷 Flash Loan」从去中心化数字货币衍生品交易平台 dYdX 借出了 1 万枚 ETH,使用其中 5500 ETH 在 Compound 借出 112 WBTC,另外使用 1300 ETH 到 bZx 上开了 5 倍 ETH 空单(即,使用其中 5637 ETH 兑换 WBTC),由于 Uniswap 池子中可兑换的 WBTC 有限,为了继续完成这笔兑换操作,WBTC 价格被拉高,与此同时,操纵人再把从 Compound 借到的 112 WBTC 卖出,获得约 6800 ETH,然后归还了最初借到的 1 万枚 ETH (6800+3200,注:3200=4500-1300)。在这个过程中,获利等价 36 万美元的 ETH。

这次事件将 DeFi 推至风口浪尖,并让人开始关注到「闪电贷 Flash Loan」这个新物种,这次套利行为之所以能成功,正是因为黑客利用了这种 DeFi 世界的新模式,不需要任何抵押物,只要借贷和还款在一个区块时间完成即可,一时之间,「闪电贷 Flash Loan」成为了热门话题。

此前,链闻曾经发布「贷款协议 bZx 被操纵让闪电贷走红,读懂 13 秒必须还款的闪电贷的秘密」 一文,对闪电贷这种模式进行了完整的介绍。

除此之外,此次事件还引发了我们对去中心化保险、管理员密钥等问题的广泛讨论。

DeFi 合约到底该不该设置管理员密钥?

在事件发生后,bZx 动用管理密钥冻结攻击者的 51.34 WBTC,这个操作引发了广泛争议,一方面,项目方如果不这么做,必然会损失惨重,但如果这么做,则会让人怀疑掌握了管理密钥的 DeFi 项目是真的去中心化吗?如果项目方拿着密钥升级合约然后跑路怎么办?

进一步来看,这是一个「对 DeFi 合约到底应不应该设置管理员密钥(admin key)」的问题。

目前主要有这样几派观点:

一派观点认为,从管理团队的角度来看,设置密钥是十分必要的。因为 DeFi 合约存在不可预测的风险,如果没有任何弥补措施,那将会引发极大风险,比如著名的 theDAO 事件

2016 年,黑客利用 DAO 代码中的漏洞盗取了约三分之一的 DAO 资金,最终社区通过硬分叉方式回滚交易,索回丢失资金,同时也让最初的以太网络分叉成现在以太经典和以太坊。

事实上,目前大部分 DeFi 项目都设置了管理员密钥。

根据 DeFi 观察者 Chris Blec 针对多个 DeFi 项目调研整理出一份 **「DeFi 管理员密钥风险评估」清单 **,目前大部分 DeFi 项目都设置了管理员密钥,根据不同需求,权限控制也各不相同,有些采用的是 Time Lock 方式,有些则是采用的是多签的方式。

DeFi 观察者 Chris Blec 整理的「DeFi 管理员密钥风险评估」清单

不过,并非所有 DeFi 项目都设有管理密钥。Uniswap 和 Instadapp 就没有设置管理员密钥,意味着这两个项目的团队无法控制用户的资金。

一般来说,只要是可升级式的智能合约都会设置管理员密钥。大部分团多握有私钥都是为了对智能合约进行升级。通过密钥对合约进行升级完善,在项目发展早期,管理员密钥确实有存在的必要。

不过需要思考的是,用户将资金投入到设有管理员密钥的项目具有一定风险,对于用户来说,会有足够大的动机参与进来吗?

另一派观点则认为,如果管理员密钥被认为是合理的,那这些 DeFi 项目和 Coinbase、币安或 Bitmex 这个 CeFi 中心化交易所相比,又有什么区别呢?

DeFi 团队一旦拥有管理员密钥,意味着团队拥有对用户资产完全和任意的控制权,虽然密钥的大部分功能都是用于团队「升级」合约,但「升级」合约意味着,团队对合约进行任何更改,甚至可以通过更改规则拿走用户的资金,这相当于修改宪法了。

用户应注意 DeFi 协议的风险。是否真正去中心化一个明显的标识就是团队是否有单方面对合约进行升级的能力,如果有,那么说明该 DeFi 协议实际上是中心化的。

去中心化保险

此次 bZx 攻击还让人开始注意另一个 DeFi 的重要领域,即去中心化保险业务。

随着加密货币行业逐渐变得成熟,各类基础设施开始涌现。早在去年,就出现了一大批保险服务提供商,此次 bZx 攻击导致损失了 35 万美元的 ETH,那么是否保险业务可以派上用场了呢?

事实上,去中心化保险服务提供商 Nexus Mutual 在 Fulcrum 平台上部署了活跃的保险池,不过这并不意味着 bZx 此次事件可以获得索赔。

和传统保险模式相同,Nexus Mutual 有需要人为操作的理赔评估,还可以检查潜在的欺诈行为。但和传统保险不同在于,传统保险公司可以拒绝保险购买者,但 Nexus Mutual 则无需许可,这意味着 Nexus Mutual 不能以任何方式进行歧视。

DeFi 目前存在 3 种类型的风险,第一种是技术风险,第二种是外部风险,第三种则是经济激励失败风险。显然,NexusMutual 承保范围只包括第一种技术风险,而非后两种,因此虽然 Nexus Mutual 针对 Fulcrum 设立了保险池,但不能进行索赔。

然而,即使不属于索赔范围,Nexus Mutual 社区还是针对此次事件发起了投票,虽然最终以决绝索赔而告终,但 Nexus Mutual 在此次事件中的反应也让人印象深刻,发起的投票活动说明了,Nexus Mutual 利益相关者拥有完全的自主权,是真正的去中心化。

正如 Nexus Mutual 创始人和首席执行官 Hugh Karp 在项目官方 Discord 频道所指出,虽然这是一起价格预言机操纵事件,而且不存在智能合约漏洞问题,这说明拒绝索偿是完全合理的,但是社区会员有完全酌情决定权支付(或拒绝)索偿。这种讨论能为 Nexus Mutual 带来更大的价值,它建立了社区信任,证明了 Nexus Mutual 完全是由社区控制,从而可以鼓励用户购买保险。

相对于 Nexus Mutual 需要复杂繁琐的去中心化治理流程,期权形式的 DeFi 保险可能是一种更好的服务,这也让大家把目光聚焦在后起之秀 Opyn 上。

最近上线没多久的 Opyn 是一种期权形式的保险,目前仅为 Compound 存款保提供险服务,如果 Compound 合约遭受攻击时用户依旧可以取回本金和利息。对于 Compound 的用户,可以在 Opyn 购买以 oToken 当前价格定价的期权,期权的卖方可以在价格下跌时保护 Compound 上的存款,当 Compound 合约受到攻击,资金被偷走时,通过执行期权,Opyn 用户仍然可以将其本金和利息拿回。Opyn 基于 Convexity 协议开发,非托管且无需信任,因此不需要保险索赔和风险评估方,DeFi 开发者可通过集成 Opyn 以为平台用户提供保险服务。

虽然尚不支持 bZx,但 Opyn 这种期权模式显然是一种更加适合 DeFi 业务模式的保险。因为承保范围可与黑客入侵无关,承保人可随时要求从保险提供商的 iETH 代币(bZx 上的用户存款)中兑换保险费。

提出索赔也很简单,没有复杂的审批治理流程,用户只需将 iToken 和 oToken 发送到 Opyn 智能合约中,即刻就可获得保险费。只要 iToken 可转让,用户就可以行使索赔权。

期权模式的保险显然更适合 DeFi 领域,因为用户可以精确地知道参数以及保险执行的事件,也没有复杂的治理流程,一目了然。

事实上,Opyn 最近就「接下来希望 Opyn 支持哪些平台」的问题发起一项调研,针对 DSR 中的 DAI、dYdX、Aave 和 bZx 发起投票,最终闪贷平台 Aave 以 48.8% 的票数获得最多支持。

与过去黑客事件不同的是,这次事件带给我们的影响远不止丢失一笔资产这么简单,它更引发了我们对去中心化、治理、如何抵御风险等问题的思考,也是一种对平台设计的检阅,只是检阅的代价并不小, 35 万美元。从这个角度来看,确实可以说是一种聪明的赏金活动了

DeFi 开放、无需许可的特性意味着无限可能,就像是蛮荒的狂野西部,野蛮生长又迸发着无限活力,来势汹汹,势不可挡。

而各种可无限组合的协议搭建出来的货币乐高,将导致更加复杂的情况发生,这意味着巨大的风险和套利的漏洞,吸引着最为聪明的头脑来疯狂套利掘金。

35 万美元的套利行为只是开始。就在今天下午, bZx 再次遭到用闪电贷进行套利的黑客行为,攻击者使用了 Synthetix 交易,目前 bZx 又一次暂停了协议。

bZx 黑客事件更是一次代价高昂的学习经验。这次事件给我们的警醒是,作为 DeFi 项目方,不仅应该不断检视产品设计,考虑到可能的风险。同时,DeFi 作为一个复杂系统,就像是一个在成长的生物一样,势必会变得越来越复杂,基元也会越来越丰富,这意味着在不远的将来,会暴露出更多的新问题,这就要求 DeFi 从业者应该从整体上思考和其他组件之间的交互、利益驱动和可能存在的风险,从而从整体上提高整个 DeFi 生态的安全性和鲁棒性。

参考来源

发表评论: