现如今,区块链上的借贷市场已经成为了最流行的去中心化金融(DeFi)应用场景,通过 MakerDAO、Compound 以及 dYdX 产生的借贷总额已经超过了 6 亿美金。链上借贷甚至有潜力取代传统的借贷方式。但是事实看起来要更复杂:它同时还对权益证明共识机制(PoS)产生着威胁。
权益证明(PoS)是工作量证明(PoW)的一种替代共识算法,工作量证明是通过哈希算力来保障区块链的正常运行,而权益证明是通过链上抵押的数字资产的数量来保障区块链的共识。去年一年中启动的绝大多数区块链项目都是采用的 PoS 共识算法(Tezos、Algorand、Cosmos 等等),在接下来一年里还会有更多使用 PoS 机制的区块链项目。
PoS 系统的安全是由网络中抵押的数字货币的数量保障的。在大多数的 PoS 算法中,只要抵押数量中的 2/3 是由诚实的参与者拥有的,该区块链系统就可以被认作是安全的。
现在试想一下,如果你是一个 PoS 系统的破坏者,你会怎么做呢?
可以想到有两种攻击手段:一种是,你掌控网络中至少 1/3 的抵押总量,但是这种方式难以操作并且成本昂贵;另一种方式是,你可以试图说服当前的抵押者们停止抵押,并且将其投放于其他更易于侵入的网络中。
第二种方式理论上听起来很有吸引力,但是你如何才能说服当前抵押者们停止当前的抵押呢?有一个很简单的办法,那就是给他们提供更具有吸引力的收益。
PoS 能够正常运行的基础是抵押者们能够通过抵押获得激励,也就是说他们只有当抵押的激励奖励足够丰厚时才愿意参与抵押。但是,如果他们可以在其他地方获得更好的回报,那么你应该能够猜到,一个经济上理性的抵押者会放弃当前抵押而将抵押的通证放在能够获得更高回报的地方。如果系统中的通证源源不断的从抵押系统中抽出,整个网络的安全性就会大打折扣。
从字面上理解,链上借贷应用是链上抵押的直接竞争者,也就意味着它在与整个系统协议的安全性做对抗!
模拟抵押博弈
通过基于代理人的模拟仿真(agent-based simulation)这一技术是目前能够对以太坊 DeFi 项目进行建模模拟的最好手段。使用基于代理人的模拟仿真方法,你可以将模拟大量的代理人采取不同的策略和风险侧写来进行独立的博弈模拟。通过观察系统是如何演化的(并且使用不同的参数重复试验数千次),你可以得到在不同场景下的网络表现出来的统计学信心值。
来自 Gauntlet 的 Tarun Chitra 在他最新的论文中对此做了详尽的讨论。
他假定网络中的抵押者都是经济学上的理性人,在分析了链上借贷与 PoS 抵押之间的交互关系之后,得出了抵押与链上借贷间的竞争均衡。(经济学理性的意思是:每个代理人都有一个资产投资组合,或是借出资产、或是持有资产、或是交易资产,且每个代理人的投资风险侧写不同。他们会重新平衡自己的投资组合中的资产,以最大化调整风险之后的投资回报。)
抵押中的 ETH 数量与借出中的 ETH 数量对比
上图是一种场景下的模拟,它模拟了 ETH 在 Compound (译者注:以太坊上的一个抵押借贷应用)上的数量(橙色曲线)与以太坊网络中抵押的 ETH 数量(蓝色曲线)的变化关系,它是建立在类似比特币的区块奖励通缩模型的假设之下的。
这张图主要说明了:在开始时,大多数的 ETH 持有者们会将 ETH 进行投票而不是用于金融借贷。但是随着时间流逝,抵押能够获得的区块奖励越来越低,与参与抵押借贷产生的收益比较越来越没有吸引力,所以几乎所有用户都会重新重新平衡自己的投资策略,将 ETH 投入到 Compound 的抵押借贷中。(你可以忽略最开始的时候借贷曲线和投票曲线的那段波动,那是随机初始化过程造成的。)
Tarun 做出了几种理论上封闭形式的预测,这些预测已经通过了仿真验证。但是最重要的是:使用通缩模型的 PoS 链是不安全的。如果 PoS 链上的区块奖励数会随着时间降低,那么长此以往,几乎所有的资产都会用于抵押借贷,而不是链上投票。
我们可以更进一步:如果攻击者们知道了这点,他们会怎么做呢?
如果攻击者设计了一个链上借贷市场并且提供更丰厚的利率,这会驱使抵押投票的用户转向参与抵押借贷。之后,一旦链上的抵押投票池被抽干,攻击者们就可以轻松进入抵押市场并且占据主导地位。
当然了,在 Compound 中,降低借入利率的方式仅仅需要简单的从资产池中源源不断的借出就可以了。之后,风险模型就会自动向上调整利率。只要攻击者源源不断的借出资金,借出利率就会不断上升,就会有越来越多的投票抵押者转向金融借贷市场,PoS 网络的安全性就会越来越差。这可能会导致雪球效应:当市场观察者们看着网络中的总抵押量在降低时,他们会开始做空 ETH,这就更加加重了 Compound 市场上的借贷需求。你可以把整个抵押网络看作是一件毛衣,攻击者只需要拉一根毛线:利率。随着攻击者拉这根毛线,毛衣开始脱线,这根线越拉越长,不需要太久,攻击者就会让整个毛衣脱线。
当然,攻击者需要通过 Compound 借入资产才能完成这一攻击,也就意味着他必须要投入抵押物来进行借贷。但是,如果他们用 USDC 或锚定比特币作为抵押,那么攻击者在攻击网络时, ETH 对他来说就没有价格风险。在 PoW 链上采用这种攻击方式则需要较大的链外资产的空头头寸。但是在 PoS 网络中,攻击者可以在对冲其所有价格风险的同时执行这类攻击,所有风险都无需经过任何人的许可,所有的攻击都发生在链上。
这是一个令人震惊的结论!乍看起来 DeFi 和共识机制是完全正交的两套机制,但是事实上,链上金融借贷市场会对 PoS 共识的安全性造成很大影响。
这对 PoS 意味着什么呢?
首先,让我们花点时间来思考一下:有一句废话,图灵完备的区块链系统是十分复杂的!将智能合约加入到区块链系统中看起来应该是一个在应用层的决策。但是智能合约系统催生了像 Compound 这种复杂的市场,它们以一种潜移默化的方式影响着整条链的安全性(可以参考 PoW 长程攻击或者分叉攻击的例子)。我们在聊区块链的时候经常会谈到”第一层(Layer 1)“或者”第二层(Layer 2)“,但是这个概念是不同于传统计算的 OSI 分层模型的。就现在而言,区块链设计满是漏洞百出的抽象模型。
这同时也在提醒我们:我们不能一直假装区块链是一个封闭的系统,它的激励系统也不只是面向系统内部的。区块链系统过于复杂,很难在”理想环境“下进行分析。就这方面而言,我们对 PoS 系统的真正的安全性知之甚少。
只要 PoS 网络处于一个开放的生态系统中,任何一个链上借贷市场都可以通过提供更高的收益率来影响其安全性。事实上,即便是这个系统不直接支持智能合约(像 Cosmos 的 ATOM),如果该链上的抵押资产能被通证化并且能够跨链转账,另一条链上的通证化借贷市场依然能够产生同样的影响!
这到底是不是杞人忧天呢?
我们刚刚已经谈过了如何进行主动攻击,攻击的资金成本对你来说可能太高了。但是即便是没有人想要作恶,这一攻击依旧可能发生!可能只是一个 VC 投资的项目,想要压低自己的利率提高竞争力,却无形之中对整条链的安全性造成了影响。不论如何,对系统影响的结果都是一样的:造成了共识层的不安全。
PoS 系统该如何应对呢?
笼统来看,PoS 系统有两个选项可以应对这种攻击:要么迫使链上借贷市场限制其利率;要么提高链上抵押的收益率,为抵押者们提供更高的回报,来和链上借贷市场进行竞争。
第一种方案看起来太中心化了。这对非联盟链的系统来说是不可能的方案,即便这么做了,借入者和借出者们依旧可以通过链下的形式或者侧链的形式来设立利率。
唯一现实一点的策略是,可以防御性地使用灵活的货币政策,在必要时提供有竞争力的抵押回报率。任何固定的通货膨胀机制都容易受到这种攻击,那是因为攻击者总是确切地知道他们需要在借贷市场补贴多少利率就可以把网络中的抵押者们吸引过来。
这种防御性手段类似于中央银行调整利率以实现其经济目标。PoS 网络必须将其增发率的调整用作调节实时市场压力的工具。
从这种意义上来讲,以太坊确实处在一个很好的时代,因为它没有承诺任何固定的货币政策。但是从今往后,所有的 PoS 网络都应该重视考虑这一权衡。对于社区治理,链上治理以及链下治理都是可行的,但是如果 PoS 协议的网络想要保证长治久安,它必须要采取灵活的货币政策。
信息披露:Gauntlet 是蜻蜓资本的投资组合公司。
感谢 Tarun Chitra,Ivan Bogatyy 以及 John Morrow 对这篇文章的批评指正。
原文链接:
https://medium.com/dragonfly-research/how-defi-cannibalizes-pos-security-84b146f00697
评论