SoK:去中心化金融(DeFi)
山姆M.维尔纳·丹尼尔·佩雷斯·刘易斯鱼脑* ,
Ariah克拉格斯-蒙特† ,多米尼克·哈茨*‡ ,威廉J. Knottenbelt * *皇家伦敦学院,†康奈尔大学,‡夹层
一个抽象—去中心化金融(DeFi),一种由区块链驱动的点对点金融系统,正在蓬勃发展。一年前,在DeFi系统中锁定的总价值约为6亿美元,而到2021年1月,现在的价值约为250亿美元。生态系统的疯狂发展使新移民很难理解其基本特征。在本知识的系统化(SoK)中,我们沿DeFi生态系统的主轴进行了描述。首先,我们提供DeFi原语的概述。其次,我们根据DeFi协议提供的操作类型对其进行分类。然后,我们继续详细考虑DeFi协议的技术和经济安全性,特别注意在DeFi设置中特别出现的问题。最后,我们概述了生态系统中的开放研究挑战。
索引字词-分散式金融,DeFi,以太坊,Cryp tocurrencies,
I. D E F I :金融2.0?
考虑关于分散式金融(DeFi)的承诺的两种观点。对于DeFi Optimist来说,DeFi代表了一项突破性的技术进步,它提供了一种新的金融架构,该架构非托管,无许可,公开可转让,(伪)匿名,并且具有潜在的新资本效率。根据这种观点,DeFi在原始比特币白皮书[1]的核心部分概括了承诺,将非托管交易的创新扩展到复杂的金融运营。DeFi悲观主义者的对比观点是,不受监管,容易受到黑客攻击的DeFi生态系统有助于促进不受约束的新颖形式的金融犯罪。例如,DeFi的伪匿名性质允许加密货币攻击者,骗子和洗钱者转移,清理并赚取资本利息。在某种程度上,DeFi乐观主义者和DeFi悲观主义者之间的争论转向了关键的道德问题。在本文中,我们没有为这一重要辩论做出任何贡献。相反,在本SoK中,我们寻求综合和评估DeFi的技术创新,从而使该领域的新手能够发现DeFi地形的基本特征和问题。
首先,我们必须清楚什么是DeFi。DeFi处于理想状态,具有四个特性。首先,非托管金融服务允许参与者在任何时间点对其资金进行完全控制。为了说明这一点,传统的金融和金融技术是基于监管模型的。例如,您的银行托管您的资金,您的股票托管在托管银行中,合同抵押品可能由托管人托管在托管账户中。无论好坏,您都必须信任这些保管人,并且需要为其保管服务获得报酬。相比之下,区块链机制为彼此不信任的代理提供了一种手段
无需信任的第三方即可进行合作。例如,可以在没有托管人的情况下持有链上资产,并且常规脚本功能(“智能合约”)可以在链上确定性和可验证地执行。在许多用途中,这允许抵押品在没有托管人的情况下在链上托管,这开辟了各种非托管应用程序。
其次,DeFi的无许可性质允许任何人与金融服务进行交互,而不会受到第三方的审查或阻止。第三,DeFi是可公开审核的,这意味着任何人都可以审核协议的状态-例如,它们完全协作/健康。第四,可以任意组合金融服务,以便可以创建新的金融产品和服务,类似于可以基于一些基本构建块构思新的Lego模型的方式。例如,这允许在遵循协议抵押规则的同时,对抵押品(及其中的可组合性风险)进行无缝的重新抵押。
DeFi的发展迅速,从2020年初的约6亿美元锁定总值(TVL)到2021年1月超过250亿美元,其中资本最多的用例是抵押贷款,约占TVL的48%,到2021年1月,分散交易所(DEX)占TVL的约34%[2]。反过来,这种上升导致去中心化密码资产交易所[3]的交易量达到24小时,首次超过了主要的集中式密码资产交易所[4]的交易量[5]。
然而,与任何新兴技术一样,DeFi的发展并非没有风险。仅在去年,DeFi就经历了20多个主要协议漏洞利用,导致资金损失超过1.3亿美元[6]。市场参与者显然愿意承担较大的财务风险,再加上任何行为者都可能编写未经审计甚至是恶意的智能合约(正是由于此类技术的分散性),使这种风险尤为严重。此外,部分地由于一旦组合在一起就出现了智能合约的复杂性,甚至有许多实例(例如[7],[8],[9],[10],[11])被审计了。被利用,使审计过程无法完美地防御利用。
此外,在技术层面,DeFi底层的区块链正面临重大挑战。在拥挤的时期,区块链交易费用已大幅上涨,相对简单的智能合约操作费用高达数百美元。交易成本的上涨使小额交易价格上涨,进而限制了可以使用第一层区块链的交易类型集。
1个
这项工作:在Sec中概述了DeFi的原语之后。二,我们做出以下贡献:
•协议系统化:我们根据六种操作类型对现有的DeFi协议进行系统化(第III节)。
•技术安全:我们将DeFi中的技术安全定义为无风险的盈利潜力,并将这组技术攻击分为三类。诸如智能合约漏洞之类的技术安全风险会破坏生态系统的健全性,从而限制了其可被委托资金的程度(第四节)。
•经济安全性:我们在DeFi的背景下将经济安全性定义为代理人的安全激励调整,并将经济攻击媒介集分为四个不同的类别。随着基本智能合约中编码的激励机制与现实接触,经济安全风险开始显现(第五节)。
•整体安全性:技术和经济安全性之间的区别不仅是表面上的,而且还清楚地表明,DeFi生态系统的发展类似于“两线战争”,而且其中一线可以合并以产生巨大效果。我们结合这两种观点,为DeFi提出了七个主要的开放式研究挑战(第六节)。
二。d Ë ˚F我P RIMITIVES
DeFi协议需要基础分布式账本,例如区块链,这是对等分布式仅追加交易记录。在本文中,我们主要将底层分布式分类帐层仅作为DeFi的输入,并向读者介绍现有工作(特别是[12],[13],[14],[15]),以更全面地介绍区块链。层本身。特别是,我们假设分类账具有一致性,完整性和可用性的基本安全属性[16]。如果没有这些安全属性,基于这种分类帐构建的DeFi协议本身将固有地不安全。
在本节中,我们提请注意并概述了底层区块链层的本质特征,这些特征与DeFi协议的安全性特别相关。
A.智能合约
最重要的规定是基础分类账提供使用智能合约的能力。这些程序对一组处理规则的编码进行编码,这些规则由区块链的共识规则强制执行,从而允许不信任方之间进行经济互动。智能合约依赖于作为基于交易的状态机的区块链,代理可以通过交易与智能合约进行交互。确认交易后,合同代码由网络中的所有节点运行,并更新状态。状态更新的基本成本以向发件人收取的交易费用的形式出现。例如,以太坊[18]区块链上的以太坊虚拟机(EVM)[17]是使用特定指令集执行任务的堆栈计算机。EVM保持固定
每条指令消耗多少气体(以太坊特定单位,表示计算成本)的映射。然后由发送方支付交易消耗的天然气总量[19]。
为了使DeFi协议在其之上起作用,智能合约必须具有某些属性。首先,它们必须具有足够的表现力以能够编码协议规则。大多数应用程序需要对条件执行和有界迭代的支持。智能合约还需要能够在同一执行上下文(通常是交易)中相互通信。最后,需要支持原子性,以确保没有执行会导致无效状态,即,事务要么完全成功(状态更新),要么完全失败(状态保持不变)。
当专门针对DeFi进行考虑时,智能合约的最显着特性是它们能够通过消息调用相互调用。这样就可以实现可组合性:可以将智能合约像Lego积木(“ Money Legos” [20])一样拼凑在一起,并可以构建复杂的金融体系结构。这类似于[21]中所设想的。尽管很有希望,但智能合约交互的副作用和所有可能交互的空间可能很大。金融应用程序中的这种复杂性给理解组成的智能合约的新兴安全属性带来了巨大的负担,否则将面临巨大的金融风险。我们将在第四节和第五节中对此进行更详细的讨论。
B.代币
智能合约的常见用途是实现令牌,可以用来代表资产,从以太[22]和其他加密资产[23]到合成资产或衍生品[24],还可以提供一些效用,例如参加选举的权利。令牌通过遵守标准令牌接口的合同来实现,从而允许协议轻松处理不同的令牌,而无需事先了解其实现。在以太坊中,令牌通常是通过标准化的ERC-20 [25]和ERC-721 [26]接口分别针对可替代和不可替代令牌[27]实施的,尽管也存在其他令牌标准[28],[29], [30]。公认的定义是,可替代令牌是可互换的[25],而不可替代令牌则是不同的[26]。举一个简单的例子,可替代的代币可以用来表示一种货币,例如美元,其中任何两美元等值。另一方面,不可替代的令牌可用于表示令牌化的艺术品,其中每件艺术品彼此不同。
C.交易执行
我们特别注意的基础区块链的功能是为用户提供进行交易的能力。当区块链网络参与者希望进行交易时,未确认交易的详细信息(例如交易成本,发送方,接收方,数据输入)首先会广播到对等网络,经过验证,然后存储在等待区域中(节点的内存池)。共识
2
然后被称为矿工的基础分类账的参与者部分地基于每笔交易所附的交易费用,选择将哪些交易包含在给定区块中。块中的事务按各个块的矿工包括它们的顺序依次执行。要详细了解此过程的工作方式,请向读者介绍[1],[17],[31]。
矿工选择在给定块中包括和不包括哪些交易的能力意味着矿工能够控制执行特定交易的顺序。反过来,这开辟了矿工以对他们有利的方式任意包括,排除和定购交易的可能性,从而产生了矿工的可提取价值(MEV)[32]。可以通过对交易进行重新排序和审查来获取定单优化费,如果有利可图,还可以插入矿工自己的交易。贿赂矿工进行此类交易重新订购的可能性会进一步加剧MEV的概念[33],[34]。我们将在第VB节中详细讨论这些问题。
D.外部代理和状态更新
协议可能依赖某些状态更新以保留协议安全性。在基于事务的系统中,除非外部触发事务,否则状态无法更新。但是,由于智能合约无法以编程方式创建交易,因此协议依赖于外部实体来触发状态更新。这些实体(称为“守护者” )通常通过获利机会来激励,以使围绕链上协议的某些操作自动化,从而有助于维护去中心化系统。例如,如果某个协议要求在满足某些条件的情况下清算抵押资产以偿还借入头寸,则该协议将激励管理者发起交易以推动这些行动。
F.治理
治理是指系统能够对参数进行更改的过程,这些参数确定了系统中参与者之间进行交互的条件[40]。可以通过算法或代理执行此类更改。尽管目前已有关于区块链的治理方面的工作更加广泛(例如[42],[43],[44]),但是对于可用于区块链和DeFi的不同机制的属性的理解仍然有限。
当前,用于治理方案的通用设计模式是由具有控制治理参数的仁慈独裁者实例化DeFi协议,该协议承诺最终会分散其治理过程。治理过程的这种分散化通常是通过发行治理令牌(例如[45],[46],[47],[48])来实现的,ERC-20令牌使令牌持有者有权参与协议管理nance通过投票,并可能提出协议更新。我们回到第五节中的治理。
三,D E F I P ROTOCOLS
现在,我们提供按其提供的操作类型分类的DeFi协议。提出的协议类型依赖于先前检查过的DeFi原语。图1显示了如何将DeFi原语与市场机制结合使用以构建协议的概念性概述。
分散式
分类帐
E.甲骨文
oracle是一种将脱链数据导入到其中的机制
抵押品
流动市场
智能合约代币
乙
一个
区块链虚拟机,以便智能读取
资产
可贷资金
合同。例如,这包括诸如ETH / USD之类的链下资产价格,或验证预测市场结果所需的链外信息,并受到各种因素的依赖。
Oracle治理
市场机制
套利
清算
交换稳定币
市场组合
DeFi协议(例如[35],[36],[37],[38],[39])。此类数据不是本地可在链上访问的。
Oracle机制因设计和风险而异,如[40],[41]中所述。集中式预言需要对数据提供者的信任,并且承担着提供者不诚实行为的风险,如果提供操纵数据所带来的回报是
协议协议协议可组合性
管理
衍生品第2层混合器
比诚实行事更有利可图。分散的预言家提供了一种替代方法。由于无法在链上验证脱链数据的正确性,因此分散式预言机倾向于依靠激励手段来准确,诚实地报告脱链数据,但是也有其自身的缺点。我们在IV-B和VD部分中详细介绍了Oracle操纵风险以及链上和脱链Oracle的缺点。
图1:DeFi生态系统中不同结构的概念性概述。
A.链上资产交换
促进数字资产交换的场所是更广泛的数字资产生态系统的重要组成部分,最早在2010年就出现了集中式加密资产交换[49]。
3
但是,集中式加密资产交易已经反复发生,容易受到几次重大攻击(例如[50],[51],[52]),并且缺乏公开的交易活动可验证性导致报告了虚假交易量[53], [54],破坏了集中交易的信任度。一类促进分散式链上数字资产的非托管交换的DeFi协议以分散交换(DEX)的形式存在[55],[56]。除了是非托管的,即交易所在任何时候都没有拥有用户资金的所有权之外,DEX还在链上结算所有交易,从而确保了对网络参与者的所有交易的公共可验证性。DEX与集中式对应项之间的另一个区别是,仅底层区块链本身具有资产,例如以太坊上的ERC-20令牌,可以交易。这是由于DEX依赖交易的原子性来确保其执行的正确性[57],因此与诸如比特币[1]或法定货币等外部资产的直接交互是不可行的。
确实存在一些解决此限制的解决方案,但存在限制其采用的缺点。诸如wBTC [23](包装的比特币)之类的包装代币可用于交易资产,这些资产不直接位于以太坊上,但由于其通常具有托管性质,因此这种方法与集中式交易所一样具有类似的安全问题。跨链解决方案也已设计[58],[15],但在撰写本文时,尚未在DEX中得到广泛采用。例如,原子交换本身就需要很高的延迟,在这一延迟上,一个方可以享有自由选择权; [59]等受管系统本质上要求用户信任治理的激励一致性; [58]等方法则需要中继,这需要中继维护成本可能很高,并且需要所需的中介机构对包装的资产进行超额抵押。
根据价格发现机制,DEX有不同的变体,例如订单簿DEX (包括单个[60],[57]和批处理结算[61],[62])和自动做市商(AMM)(例如, [63],[64],[65])。
1)订单簿DEX:在集中式金融交易中,订单簿是特定金融工具的买卖订单的电子清单,当匹配订单时执行交易。维护订单状态是一项计算量巨大的任务,考虑到区块链的设计(例如,以太坊虚拟机及其汽油价格机制[66],[67]),在链上托管此主机实际上是不可行的。因此,去中心化的订单簿交换可以使用链下订单簿,因此涉及某种程度的集中化,其中仅在链上执行贸易结算。想要执行订单的用户通常会预先签署一项交易,以允许DEX仅在满足用户指定条件的情况下执行交易。
订单可以手动匹配或通过算法匹配,对于前者,则要求接受者填写制造商创建的休息订单。手动订单匹配可以避免任何集中的中介机构在收货人和制造商之间进行无信任的交易,但这样做的代价是延迟时间增加,并且由于价格发现效率低下,导致流动性分散。更高效的订单匹配
可以通过算法实现,但是这涉及到信任集中式链外匹配引擎[60],该引擎通常易于操纵[32] [68]以公平的价格执行订单。
使用批量结算的不同订单簿方法可能有助于从算法上解决这些匹配问题。例如,[61]以类似于荷兰式拍卖的方式结算订单簿(批次以逐渐降低的价格结算,直到卖出的订单被填补)。这有可能会导致长时间的结算延迟。或者,交易可以通过分散管理者维护的周期性批次在算法上进行匹配[62]。在这里,匹配问题是由竞争的守护者解决的,他们在链上提交解决方案,协议从中执行最佳解决方案。如果这个守护者市场是竞争性的,那么交易就应该以公平的价格结算,尽管当守护者市场不具有竞争性时会出现问题[69],或者如果选择最佳守护者解决方案的方法可以发挥作用[70]。
2)自动做市商: 在传统金融中,市场制造商是流动性提供者,他们既通过自己的账本进行报价,也通过出价和要价来报价,同时从买卖差价中获利。最佳的做市策略迅速成为复杂的优化问题。相反,AMM通过简单的定价规则在算法上提供流动性,并使用链上流动性池代替订单簿。在算法博弈论中已经研究了AMM,例如预测市场中的对数市场评分规则(LMSR)[71]。尽管它们在传统金融中基本上尚未实现,但由于以下几个原因而在DeFi中变得很流行:(1)它们允许轻松地为次要资产提供流动性;(2)它们允许任何人成为做市商,即使市场回报不理想
在AMM流动性池中,两个或多个资产的储备被锁定在智能合约中,对于给定池,每个流动性提供者都接收新铸造的流动性代币,以表示他们提供的流动性份额。因此,通过与智能合约的资产流动性储备进行交易来进行交易,从而将流动性添加到一个代币的储备中,并从池中一个或多个其他代币的储备中提取。交易费用由流动性池保留,并与每个流动性代币持有者提供的流动性成比例地支付。流动性提供者必须放弃其流动性代币,以赎回其流动性和应计费用中的份额。
使用AMM,资产的价格是确定性的,并由公式而不是订单簿确定,因此取决于货币对每一侧提供的流动性的相对大小。如果流动性稀薄,则单笔交易会导致资产价格相对于整个市场大幅波动,套利者可以通过平仓价差获利。套利是指在不同市场买卖相同资产以从价格差异中获利的过程。进行此过程的各方是套利者,通常在DeFi协议中扮演关键角色。因此,套利用于确保AMM上资产的价格为
4
与公开市场上的价格持平。请注意,随着资产池的准备金比率随着流动性的增加和撤回而变化,流动性提供者在撤回其流动性份额时可能会收到与最初存入的比率不同的代币比率。对于AMM设计和潜在的做市机制的更集中分析,我们将读者引向[72],[73],[74],[75]。
B.链上资产的可贷资金市场
通过可贷资金(PLF)协议[76],[77]可以促进链上资产的借贷,这是指DeFi借贷协议,该协议为加密资产的可贷资金建立了基于分布式账本的市场。在PLF的上下文中,市场是指代币的总供应量和总借入量,其中可用(即,非借入)存款构成市场的流动性。与点对点借贷不同,在点对点借贷中,资金直接在各个代理商之间借出,而在PLF中,给定代币市场的存款在智能合约中汇集在一起。假设代币的市场具有足够的流动性,代理商可以直接从智能合约储备中借款。
考虑到区块链的假名匿名性质,要求借款人超额抵押其借款头寸,以保护PLF免于由于借款人违约而造成的财务损失。抵押是提供有价值的东西作为担保以偿还债务价值的过程。例如,在获得房屋抵押贷款时,房屋就是抵押品:如果借款人违约,他们可以出售房屋以偿还抵押贷款。通常,抵押使代理人可以在没有借方承担信用风险的情况下借入资产,即,由于借款人违背债务义务而遭受财务损失。通过发布x的抵押品以美元计,原则上代理商可以在另一项资产中借入最高抵押品价值的100%。如果代理商不偿还债务,则可以清算抵押物以偿还债务。通过这种方式,抵押可以同时确保贷方(可能是智能合约)可以收回其借出的价值,并为借款人提供了还款的动力。由于许多加密资产的历史波动性和流动性不足,应注意的是过度抵押通常要依靠它,例如对于100美元的借入价值,必须提供100美元以上的抵押。这样做的目的是确保即使相对于债务的抵押品价值大幅下跌,也仍然有足够的抵押品来偿还债务。在PLF中,借款人必须确保锁定抵押品的价值保持在一定的清算阈值之上,否则所谓的清算人(一种看门人)能够以折扣价购买锁定抵押品并关闭借款人的债务头寸。在清算情况下,已清算的借款人将获得抵押品减去任何未偿债务和产生的罚款[78]。
PLF可能以所谓的“快速借贷”形式提供超出超额抵押的划船功能的功能。这些提供了在一个期限内获得无抵押贷款的机会
交易,要求借款人在交易结束前偿还全部借贷金额和利息。Flash贷款利用了区块链的原子性(即,如果未在同一笔交易中偿还贷款,则交易失败),并提供了几个用例,例如分散式交易所套利和抵押互换。但是,它们也可以用于攻击[79]。
PLF中的借贷成本由向借方收取的利率确定,该利率由市场的基础利率模型确定。这些利率模型倾向于反映这样一种观念,即随着流动性变得稀缺,较高的利率应鼓励当前借款人偿还其债务,同时激励持有过多存款的人提供这些债务。
作为存款的交换,储户收到一个衍生代币,该代币反映出他在市场上所提供的全部资金中所占的份额。由于借款人支付的利息通常由智能合约保留,因此衍生代币持有者市场中总资金的相对份额将随着时间增加。因此,市场上的应计利息被支付给市场的储户,以作为提供流动性的补偿,同时协议规定保留一部分储备金来支付已支付的利息,以防止流动性不足[80]和市场压力。
C.稳定币
非托管稳定币是旨在相对于目标货币(通常是美元)保持价格稳定的加密资产,并试图通过其他经济机制来实现这一目标。截至撰写本文时,大约有十二种非托管型稳定币,其中最著名的可能是MakerDAO的Dai [37],该数字接近4 。截至2021年1月,市值达到380亿美元1 。请注意,托管的稳定币(例如USDT [81])不在DeFi的范围内,因为它们主要依赖于受信任的第三方进行操作,尽管它们可能是其他DeFi协议中使用的资产之一。
在分散的环境中,协议设计者面临的挑战是构建一种稳定币,该稳定币以经济安全和稳定的方式实现价格稳定,并且其中所有必需的参与者都可以从中继续获利[40]。价格稳定是通过使用链上抵押品来实现的,它提供了有抵押贷款的基础,稳定币可从中获得其经济价值。
非托管稳定币的核心组件如下[40]。
•抵押品。这是稳定币的主要价值存储。抵押品可以是外来的(例如Maker中的ETH [46],其中抵押品主要在稳定币外部使用,内源性的(例如,Synthetix中的SNX [24],其中抵押品被创建为抵押品或隐含的(例如, Nubits [82],其中的设计缺乏明确的抵押物存储。
5
•代理商。代理人在非托管稳定币中至少扮演两个角色:(i)风险吸收(例如,通过提供旨在吸收价格风险的抵押品)和(ii)稳定币用户。
•治理。总体上控制协议的机制和参数集(由代理执行或通过算法执行)。
•发行。一种控制稳定币发行或使用抵押品的机制(由代理执行或通过算法执行)。
•甲骨文。一种将区块链外部数据导入区块链的机制,例如价格信息。关于稳定币设计,模型和挑战的更完整讨论,请参见[40]。
D.投资组合管理
对于寻求最大化回报的流动性提供者而言,鉴于产生收益的期权的复杂而广阔的空间,这可能是一项繁重的任务。链上资产的管理因此可以通过用作分散投资基金的DeFi协议进行自动化,在该协议中,将代币存入智能合约,并在合同中编码需要与其他DeFi协议(例如PLF)进行交易的投资策略。DeFi的收益是通过利息(包括所产生的应计费用)和代币奖励产生的。对于后者,协议(例如PLF或AMM)将本机令牌分发给其流动性提供者和/或用户,以作为对提供存款和/或协议采用的奖励。从协议意义上讲,这些协议本机令牌奖励类似于权益,因为它们是参与协议管理的权利,并且通常代表对协议产生的收益的要求。代币奖励以分配的流动性交换的分配模型可能会因协议而异,但通常与代理在协议中提供的流动性成正比。因此,针对链上资产的智能合约编码投资策略是围绕不同协议的收益产生机制量身定制的,其唯一目的是收益聚集和最大化。实际上,资产的链上管理范围可能从令牌组合的自动重新平衡[83]到复杂的收益汇总策略[84]。代币奖励以分配的流动性交换的分配模型可能会因协议而异,但通常与代理在协议中提供的流动性成正比。因此,针对链上资产的智能合约编码投资策略是围绕不同协议的收益产生机制量身定制的,其唯一目的是收益聚集和最大化。实际上,资产的链上管理范围可能从令牌组合的自动重新平衡[83]到复杂的收益汇总策略[84]。代币奖励以分配的流动性为交换的分配模型可能会随协议的不同而变化,但通常与代理在协议中提供的流动性成正比。因此,针对链上资产的智能合约编码投资策略是围绕不同协议的收益产生机制量身定制的,其唯一目的是收益聚集和最大化。实际上,资产的链上管理范围可能从令牌组合的自动重新平衡[83]到复杂的收益汇总策略[84]。智能合约编码的链上资产投资策略是围绕不同协议的收益生成机制量身定制的,其唯一目的是收益聚集和最大化。实际上,资产的链上管理范围可能从令牌组合的自动重新平衡[83]到复杂的收益汇总策略[84]。智能合约编码的链上资产投资策略是围绕不同协议的收益生成机制量身定制的,其唯一目的是收益聚集和最大化。实际上,资产的链上管理范围可能从令牌组合的自动重新平衡[83]到复杂的收益汇总策略[84]。
E.衍生物
衍生工具是金融合约,其从基础资产的表现中获取价值。截至2020年11月,衍生品市场约占整个加密资产交易市场的60%[85]。尽管大约99%的衍生品交易量是通过集中式交易所实现的,但已经出现了许多提供类似功能的DeFi协议。我们列出了四种不同的基本派生类型:
•综合资产。这些旨在复制另一资产的收益,而无需直接在该资产中持仓。在DeFi中,合成资产通常在链上复制链下资产(例如,Maker和Synthetix [24]等协议中的美元)。虽然目前使用较少,
构造合成资产的另一种机制是使用AMM,这些AMM制定动态的投资组合再平衡策略来复制衍生产品收益。这些与传统金融中的合成证券投资保险相似(见[86]中的第13章),在[87],[88]中使用固定产品市场庄家进行了更具体的研究。
•期货。这些功能有助于将来以约定的价格和时间买卖基础资产。期货在DeFi中几乎没有采用。这可能是由于基础加密资产的高波动性导致难以确定交易者编写期货所承担的风险。
•永久掉期。这些类似于期货,但是它们没有设定的到期日期或结算时间,是专门为加密资产市场创建和推广的[89]。这些更受欢迎,因为它们允许交易者决定(通常是每天进行交易,例如[90]),以通过在交易头寸不足的情况下提供资金交易来保持头寸。由于频繁发现价格,与期货相比,永续交易的价格通常更接近标的物。而且,由于平台要求交易者所发行的抵押品少于100%,因此永久性股票比交易基础本身更具资本效率。
•选项。这些使购买者可以选择执行合同,而使卖方有义务履行合同。例如,卖方可以在未来两周以18美元,000美元的价格购买比特币。然后,该期权合约的购买者可以在两周后选择行使该期权。如果比特币交易在$ 17的价格,000,买家将有$ 1的潜在收益,000减去费用。这是欧式看跌期权的一个示例。有许多不同的期权类型和交易策略[86]。当前,期权的DeFi市场还很早,只有基本的看涨期权和看跌期权(例如[91],[92]),但没有杠杆期权头寸,这会带来更大的资本效率问题。
在DeFi衍生设计中,有一些要点和问题需要进一步讨论:
a)杠杆:在DeFi中,协议通常会过分套用,以减少违约的可能性(例如,使用稳定币或可贷资金的协议)。这使得这些协议的资金效率低下,因为需要存入比借入更多的价值。因此,衍生品可以形成一种替代方案,其中交易者仅需提供一部分资本以通过例如使用永久或期权来交易标的物的价值。此外,诸如dYdX之类的平台允许交易者利用其头寸。这增加了衍生产品价格变动的风险。但是,尽管集中式替代方案依赖于已建立的风险管理系统,但在没有其他形式的投资者验证的情况下,DeFi替代方案仍必须依赖较高的抵押物比率。
6
b)结算:可以实物设定衍生工具,即标的资产被转让,也可以现金结算,即,行使衍生工具时的价差以某种货币结算。通过锁定交易智能合约中的资产,两种形式的结算都可以在DeFi中自动执行。现金结算通常更具资本效率,因为它只需要锁定价格变动中的差异,例如,不同时间点之间的永久和期权合约。当资产在链上可用时,以物理结算的衍生品是最有可能的(例如,Opyn中的以太坊期权[91])。
c)交易:类似于其他DeFi资产,衍生产品可以通过AMM或订单簿DEX进行交易。订单簿风格的DEX交易与集中交易非常相似,衍生产品价格发现的有效性主要取决于充足的流动性。但是,具有到期日固定的衍生产品(如期货和期权)很难在AMM上定价。大多数AMM平台(例如Uniswap [3])不考虑资产中的时间维度。这会特别引起期权交易方面的问题,因为期权的价值会随时间衰减(以θ为单位))。期权的价格会随着时间的流逝而下降,具体取决于标的物的价格。更细微的AMM设计(如[93])旨在纳入这样的时间维度。AMM中的键合曲线仍然不了解基础价值和期权价值之间的其他关系。因此,期权的AMM价格不能反映实际的期权价值,因为它依赖于流动性提供者和交易者来校正价格。通过AMM中更复杂的价值功能(如Balancer [48]),可以复制将基础资产和衍生产品组合到单个资产中的策略[88]。
F.第二层上的DeFi
第二层是指旨在促进区块链扩展(即第一层)而又不改变第一层的信任假设且不修改共识机制的一组协议。第二层协议以各种形式出现,也许最值得注意的是作为支付渠道和支付渠道网络。有关第二层协议的详细概述,请参阅[14]。
汇总是基于DeFi可伸缩性的基于第二层方法的核心。中心思想是,将要在第一层进行的合同的计算和存储在第二层进行,并在链上声明第二层合同的操作是什么。乐观汇总是一种汇总,其中每个声明都在没有随附证明的情况下发布,以保证声明的有效性。通过发布防欺诈[94],[95],可以证明该断言是不正确的。仲裁提供了这种汇总机制的示例[96]。另外,在撰写本文时,Bancor [97]正在测试Arbitrum [96],[98]上的部署。
zkRollups(使用零知识证明的汇总)是另一个变体。中心思想是类似的,使用链下证明器,该证明器能够将大型计算(即,交易的批处理)压缩为较小的有效性证明[99]。这样的有效性证明提供了证明第一层状态的证据。
过渡是正确的。StarkWare的Cairo平台寻求提供一种Turing完整的EVM,以生成用于常规计算的STARK证明。可以通过DiversiFi [100]找到STARK与第一层的现有集成,据称提供9 ,每秒000个事务。整合中的计划混凝土包括在StarkWare和dYdX之间[90],其中dYdX的永久合同将移植到第二层杠杆老化zK-Rollups。这些zkRollups是一种第二层交易压缩机制,其中将数百个交易捆绑为一个交易[101],可以使交易按链提交,目的是减少每笔交易所需的天然气。zkRollups在Loopring的第二层DEX设计中也很重要,该设计在链外执行大多数计算,仅在链上广播DEX的状态根[102]。
G.保护隐私的混音器
混合器是防止跟踪加密货币交易的方法。这对于保护用户隐私很重要,因为交易分类帐否则就是公共信息;但是,这也意味着它们可能被用来掩盖非法资金的来源。混合器通过开发资产的“屏蔽池”来工作,这些资产在进入池之前很难追溯。它们通常采用以下两种形式之一:(i)混合来自多个来源的资金,以使单个硬币不易被追溯到单独寻址(也称为“ coinjoin”,例如[103]),或(ii )使用交易有效性的零知识证明(例如[104],[105])直接屏蔽交易内容。混音器本身既是类似DeFi的应用程序,又可以包含在其他DeFi协议中。2
IV。牛逼技术小号ECURITY
我们将DeFi安全风险定义为技术风险代理商是否可以通过利用区块链系统的技术结构来产生无风险的利润,例如交易的顺序和原子执行。在当前的区块链实施中,这与(1)在单个交易中操纵链上系统对任何人都是无风险的,以及(2)在同一区块内操纵交易对矿工产生该交易的矿工来说是无风险的相吻合。块。通过利用技术结构,底层的区块链系统没有机会让市场或其他代理商在这种利用过程中采取行动。我们确定了DeFi协议的技术安全风险范围内的三类攻击:利用智能合约漏洞的攻击,依赖于区块中交易执行顺序的攻击,
2我们计划在本文的后续版本中进一步讨论这些内容。7
技术安全
如果攻击者无法通过利用协议的技术结构,任何交互协议或基础区块链来牺牲协议或其用户的利益来获得无风险收益,则DeFi协议在技术上是安全的。技术漏洞的一个共同特征是它们发生在一个块内。
表I概述了过去使用DeFi协议的技术安全漏洞。在该漏洞所属的攻击类别的背景下,我们将这些漏洞的子集作为实际示例进行讨论。
A.智能合约漏洞
智能合约是任何DeFi协议的核心,其实施中的任何漏洞都可能使它们处于亏损状态。智能合约漏洞已在文献[106],[107],[108]中进行了广泛讨论,因此,我们将不提供所有已知漏洞的详尽列表,而将重点放在已在DeFi中利用的漏洞上。上下文。
再入。如果将合同委派给不受信任的合同(如果合同的状态被部分修改),则该合同有可能受到漏洞攻击的威胁,方法是使用足够大的气体限制对其进行调用[109]。一个简单的例子是带有提现功能的合同,该合同检查用户的内部余额,向他汇款并更新余额。如果接收方是合同,则接收方可以反复重新输入受害者的合同以耗尽资金。
尽管这种攻击已经众所周知,但已针对DeFi协议成功使用了多次。我们简要介绍了其中两种攻击。
dForce:此漏洞利用最突出的例子之一就是针对dForce协议[110],该协议具有PLF功能,该协议于2020年4月耗尽了大约2500万美元的资金[111]。攻击者利用作为ERC-777令牌[28]的imBTC [112]进行攻击。与ERC-20令牌不同,ERC-777令牌的特殊之处在于,当接收者收到资金时,它们具有一个钩子来调用接收者。这意味着任何ERC-777令牌都将间接导致接收者控制执行。在dForce攻击中,攻击者使用这种重新进入模式来反复增加其借贷能力,而没有足够的抵押来支持其借贷头寸,从而有效地消耗了协议的资金。
imBTC Uniswap池:再入攻击的另一个示例是在imBTC Uniswap [3]池上。尽管Uniswap不支持ERC-777令牌[64],使用上述重入攻击却消耗了价值约30万美元的令牌的imBTC池。
这两种攻击在DeFi应用程序中均显示出一种常见的攻击模式:基于利用协议的互连性来识别和利用攻击媒介,而其中的可组合性风险通常未被充分检查。在实践中,通过使用静态分析工具[108],[113],可重入漏洞通常很容易检测和修复。
防止此漏洞的主要方法有两种:(1)使用重新进入防护,防止对给定函数的任何调用直到其执行结束,或者(2)在将执行控制权传递给不受信任的合同之前完成所有状态更新。
整数操作。几乎每个DeFi应用程序都以某种方式操纵货币金额。这通常不仅涉及对余额进行增减,而且还涉及转换成不同的单位或货币。我们介绍了两种最常见的整数操作问题类型。
在文献[114] [115]中已广泛研究的第一个问题是整数上溢和下溢。在溢出或下溢且没有正确检查的情况下,EVM不会引发任何异常,直到在某种操作(例如,发送令牌金额的交易)中使用该值之前,此类溢出可能一直未被检测到。这通常会导致交易失败并导致智能合约行为异常[107]。
第二个问题是整数操作期间的单位错误。尽管原则上应该进行单元操作,但编程语言和虚拟机的表达能力受到限制,以及不良的开发实践,都导致了与此类算术运算有关的问题。在撰写本文时,用于开发DeFi应用程序的主要语言是Solidity [116],它的系统类型有限,不支持操作员重载。此外,EVM仅支持单一类型(32字节整数),并且不内置对定点数字的支持。为了解决此限制,每个协议决定使用10的任意幂作为其基本单位,通常为10 18,并且所有计算均以此单位为单位。但是,由于类型系统的局限性,大多数程序最终只能使用32个字节的整数,并且在不同缩放比例的两个单元上进行算术运算不会被编译器捕获。这些缺点在实践中可能会导致重大损失,如以下示例所示:
YAM:在2020年8月,YAM协议[117]在很短的时间内锁定了价值近5亿美元的代币,它意识到存在一个与算术相关的错误。将两个按比例缩放到其基本单位的整数相乘,结果不按比例缩小,从而使结果的数量级太大[118],[119]。这阻止了治理达到法定人数,并将所有资金锁定在该协议的金库合同中,有效地无限期锁定了价值超过750 000美元的代币[120]。
逻辑错误。智能合约中有许多漏洞源于简单的编程错误。尽管逻辑错误绝不是智能合约所独有的,而是任何类型的软件所共有,但由于智能合约的不变性是系统的基础,因此对智能合约的后果要比许多其他类型的软件严重得多,并导致无法弥补的财务损失。
我们将介绍一些导致重大财务损失的逻辑错误,以强调
8
遇到的问题:
bZx:尽管经历了两次独立审核,但由于琐碎的逻辑错误[122],2020年9月,作为借出协议的bZx协议[121]遭受了超过800万美元的损失。bZx协议使用其自己的ERC-20令牌,这些令牌通过锁定抵押品来铸造并偿还以赎回锁定的抵押品。与其他ERC-20令牌一样,bZx令牌允许用户转移令牌。但是,由于逻辑错误,当用户向自己转让代币时,所转让的金额只会有效地添加到其余额中,而不能正确地从余额中扣除,从而使用户可以随意将其代币数量加倍。然后,创建的令牌可用于提取攻击者从未拥有或锁定的资金。
Opyn: 2020年8月,期权交易协议Opyn [91]协议因逻辑错误使用户多次重复使用相同的资金而遭受了370,000美元以上的损失[123]。Opyn允许用户行使其认沽期权,要求他们出售代币(作为期权所有权的证明)以及要出售的基础资产的数量。作为回报,用户从充当流动性提供者的金库中获取抵押品,通常以稳定的硬币形式。处理合同行使逻辑的智能合约允许用户从多个金库中执行,但无法正确更新从金库中执行后收到的基础资产的数量。结果,攻击者可以向合同发送少量基础资产,并按其选择所允许的价格出售尽可能多的资产,从而直接造成资金损失。
尽管这些只是智能合约逻辑错误的两个实例,但表I中发现的其他大多数错误也是非常简单的错误,在开发过程和专业合约审计中都被忽略了。我们将在第六节中讨论这些问题的潜在缓解技术。
B.单笔交易攻击
我们将可以成功执行的攻击称为单事务攻击,而与了解其他未决交易无关。此类攻击利用了交易原子性和智能合约的可组合性。
治理攻击。实施一些分散式治理机制的协议往往依赖于治理令牌,这使令牌持有者有权对协议升级进行提议和投票。协议升级是通过可执行代码形式的提案进行的,治理令牌持有者可以对提案进行投票。为了建议协议更新,提议者必须持有或已委派了所需数量的管理令牌。对于要执行的协议,需要最少的投票数,通常称为法定人数。
攻击者可能获得足以提议和执行恶意合同代码并窃取合同资金的治理令牌数量[124]。鉴于通过PLF的快速贷款和AMM的掉期可以轻松获得大量的治理令牌,这种攻击实际上已被执行[125]。
单事务三明治攻击。在单笔交易三明治攻击中,攻击者操纵瞬时AMM价格,以利用使用该价格的智能合约。攻击者不是在前后运行其他用户的交易,而是建立不平衡,利用依赖于操纵价格的可组合合同,然后逆转不平衡以抵消第一步的成本。整个序列可以在无风险的单笔交易中自动执行。弥补失衡需要大量资金。在具有紧急贷款/造币的系统中,所有代理商都有效地具有这种访问权限,尽管我们强调,无论是否存在快速贷款/造币,大型资本持有人仍然可以进行这些攻击。实际上,这种类型的攻击已经发生过多次[126],[127]。为了防止这种操纵,AMM包含交易可能产生的限制数量(或最大滑点),尽管这只能防止超过该数量的操纵。
以下示例突出显示了实际发生的严重单笔交易三明治攻击:收获:就没收资金而言,最突出的单笔交易三明治攻击是针对Harvest协议执行的[128]。攻击者从Uniswap那里获得了5000万美元的USDT紧急贷款,并利用部分资金在Curve [47](AMM)上造成了USDC和USDT流动性储备的不平衡,从而提高了AMM的USDT虚拟价格。由于Harvest协议将Curve上USDT的价格用作链上的先知,因此攻击者能够通过存入60来铸造Harvest LP代币(即,流动性提供者为了交换资金而收到的代币)。600万美元USDT,然后撤回Curve的不平衡并提取61 。来自Harvest的100万美元。攻击者能够提取的USDT多于存入的USDT,因为在提取时,Curve给出的USDT价格低于存款价格,因此,在提取期间,一个Harvest LP代币的价值大于USDT。攻击者重复了此攻击32次,总共耗费了$ 33 。协议资金的8m。
C.交易定单攻击
在传统的金融,行为前方运行是指基于对市场未来的交易的非公开信息采取行动有利可图。在区块链的背景下,交易的前端运行是指提交仅在其他未决交易之前执行的交易[68]。由于根据块中的订购顺序依次执行交易,代理可以通过在受害者交易之前执行交易来从财务上受益于预先运行一个或多个交易。类似地,代理可以继续运行,从而可以在之后执行事务。一些指定的交易。由于大多数以太坊矿工是按照其汽油价格订购交易的[129],因此代理商可以相对于某些目标交易设定更高或更低的汽油价格,以使其交易分别在目标之前或之后执行。如果有多个代理尝试在同一笔交易中进行前端管理,则前端运行
9
导致优先天然气拍卖(PGA)[32],即竞争性交易费用竞标以获得执行优先权。我们将涉及在单个块中进行前向和/或后向运行从而破坏DeFi协议的技术安全性的攻击称为事务排序攻击。请注意,攻击者不必是矿工即可执行以下攻击,但是如果攻击者是矿工,则可以无风险地进行此类攻击。
流离失所攻击。在置换攻击中,攻击者会先执行一些目标事务,而攻击的成功与否取决于目标事务是否随后执行[68]。这种攻击的一个简单示例是,攻击者抢先注册了域名[130]的交易。
转移攻击的另一种媒介适用于订单簿DEX,交易所参与者需要在其上提交交易以取消现有订单。如果用户在可以执行订单之前提交了交易以取消由于价格变化而导致的未执行订单,则攻击者可以先执行取消交易并执行订单。在DEX的背景下,鉴于套利机器人广泛存在以执行优先权参与PGA的情况下,这种抢先行为的成功尤其有可能[32]。
此外,当发件人打算在单笔交易中赚取无风险利润时,它很容易受到广义领先者的转移攻击[131]。这些漫游器会解析内存池中所有未确认的交易,试图识别,复制,修改并最后对可能导致领先者产生财务利润的任何交易进行前期处理。易受通用领军者攻击的交易示例将报告一个错误,作为一个错误赏金计划的一部分,要求获得奖励[132],并试图从可利用的智能合约中“挽救”资金[131],[133]。
多事务三明治攻击。在“夹心式攻击”中,攻击者在执行一些其他目标交易之前和之后更改AMM的确定价格,以从AMM流动性储备的暂时失衡中获利。在简单的情况下(例如Uniswap),AMM的瞬时价格仅仅是AMM储备的比率,并且可以通过更改比率(例如,通过提供单面流动性或通过AMM进行大量掉期交易)来创建不平衡。这些AMM就是这样设计的:交换会产生不平衡,如果不平衡,则会激发套利者执行反向操作来平衡AMM池。
攻击者可以通过尝试将相邻交易设置为在交换之前设置不平衡,并在交换之后关闭不平衡,从而将另一个用户的交易作为目标(例如,从触发另一个用户交换中的大滑坡中获利)[129],[ 134]。这可以通过在交易中设置较高的汽油价格来提前运行用户的掉期交易来实现,从而产生不平衡。通过为关闭不平衡的交易设置较低的汽油价格,攻击者可以使用户的交易回溯并完成攻击。请注意,设置高低交易费用确实可以
协议丢失审核攻击日期参考
bZx 0 。35m✓TX三明治2020年2月15日[135] bZx 0 。63m✓TX三明治2020年2月18日[136] Uniswap 0 。30m✓重新进入2020年4月18日[137] dForce 25 。00m✗Reentrancy 2020年4月19日[111] Hegic 0 。05m✗逻辑错误2020年4月25日[138]平衡器0 。50m✓TX三明治2020年6月28日[139] Opyn 0 。37m✓逻辑错误2020年8月4日[123]任0 。75m✗逻辑错误2020年8月12日[118] bZx 8 。10m✓逻辑错误2020年9月14日[7]突出15 。00m✗TX三明治2020年9月29日[140] MakerDAO-✓治理2020年10月26日[125]收获33 。80m✓TX三明治2020年10月26日[10]百分比0 。97m✓逻辑错误2020年11月4日[141]奶酪库3 。3m✓TX三明治2020年11月6日[142] Akropolis 2 。00m✓重新进入2020年11月12日[8] Value DeFi 7 。00m✗TX三明治2020年11月14日[126]起源7 。00m✓再入2020年11月17日[11] 88mph 0 。01m✓逻辑错误2020年11月17日[143]泡菜19 。70m✗逻辑错误2020年11月21日[144]复合机10 。80m✓逻辑错误2020年12月2日[145]封面9 。40m✓逻辑错误2020年12月28日[9]
表I:DeFi协议中的经验技术安全利用的概述。所包含的攻击明确地限于技术攻击,并且排除了可能已经发生的任何故意的协议欺诈。请注意,截至漏洞利用时,每个漏洞利用所扣押的资金金额均以美元计价,并且不考虑可能已追回的任何损失。
不能保证攻击成功,因为最终取决于交易的矿工来确定执行顺序。如果攻击者不是各自的AMM的流动性提供者,而不是流动性接受者,则可以执行此攻击的变体[129]。攻击者可以预先运行受害者交易,该交易将令牌A交换为令牌B,并消除流动性,使受害者面临更大的滑点。随后,攻击者可以后台运行受害者交易,并重新供应先前提取的流动性。在将B交换为A的第三次交易中,攻击者获得B的利润。三明治攻击的正式分析在[129]中给出。
。E CONOMIC安全
如果利用代理可以利用协议的激励结构来牺牲协议或其用户的利益来实现意想不到的利润,则我们将DeFi安全风险定义为经济的。经济风险本质上是经济设计的问题,不能仅通过技术手段来解决。举例说明,尽管这些攻击可能在单个交易中或在结构非常差的系统中无风险(允许该攻击),但并不能解决它们,例如,仅添加一定的时间延迟以确保它们不会在同一时间执行限制(例如,在管理提案中使用快速贷款作为增加投票权的一种方法[124])。
减轻这些攻击的唯一方法是设计更好的协议激励结构。这种攻击的一个共同特征是它们并非没有风险,并且涉及跨许多事务或块进行的系统操纵。
10
经济安全
如果DeFi协议在所有交互代理之间调整激励措施,使得非技术利用在经济上不可行,则DeFi协议在经济上是安全的。
经济合理性。考虑经济安全攻击类别的主要假设是经济合理性。按照标准的博弈论方法,我们将玩家i的策略表示为s i 。策略是针对代理知道其可能到达的每个决策节点(等效地,信息集)的操作的计划。例如,一种策略将定义代理在发现被抵押不足的协议中时采取的行动。一项战略小号1 ,我∈§我的球员我严格主宰另一个战略小号2 ,我∈§我如果不考虑其他代理人的行为,策略小号1 ,我总是会导致较高的回报的代理权。然后将经济合理性定义如下。
经济合理性
代理人是理性的,只要他们永远不会扮演严格控制的策略。
而且,关于理性的常识意味着所有行动者都不知道任何行动者会扮演严格控制策略。尽管大多数经济安全分析应考虑具有最大利润目标的攻击者,但考虑具有其他目标的攻击者也很重要。例如,只要成本适中,希望关闭系统的攻击者就可以决定进行攻击。从这个意义上说,经济安全取决于系统中断的代价太大。
激励兼容性。激励相容性最初是博弈论中的一个概念(例如[146],但是作为一个概念,它已经在加密经济学尤其是DeFi的背景下有所适应。
以下的[147],代理可以被认为是DIF ferent的类型,这是通常表示θ∈ Θ。代理报告其类型的游戏设计师,与文献报道的类型通常表示为θ 。机制是从一组报告的代理人类型到一组结果Y的映射,即f (θ ):Θ →Y ,其中,结果被视为包括商品x∈X的分配和货币t∈的转移Ť 。在完全信息的情况下,社会选择函数将代理商的真实类型θ映射到商品分配x∈X。一个机制是激励相容剂是否可以做没有更好的比报告自己的真实类型的游戏设计师,即θ (θ )= θ 。
在密码经济环境中,激励兼容性采取一种适应形式:如果激励代理人按预期执行该机制,则该机制就是激励兼容的(例如参见[148])。
加密经济激励兼容性
一种机制(或协议)是激励兼容的iff代理,可以按照协议设计者的意图激励他们执行游戏。
在[40]中考虑的激励相容性背景下的一个中心问题是由系统实施的机制的可持续性(即,由系统产生的激励是否可使该系统在经济上长期安全稳定) 。在[40]中,对于稳定币,这分为激励安全性问题和经济稳定性问题,激励性安全性问题包含在我们的经济安全概念中,经济稳定性问题是经济上安全的系统是否真正发挥作用的另一个问题。设计者所期望的理想平衡。
我们主要关注本文中的直接安全性问题。然而,除了稳定币以外,与经济稳定性类似的问题也适用于其他协议。例如,当设计使用动态投资组合(并实现为AMM池)构建的合成衍生产品时,一个挥之不去的问题是,这些设计在极端条件下如何能够很好地复制衍生产品收益。相比之下,当市场发展太快而无法实现战略再平衡时,传统市场中的综合投资组合保险可能会崩溃(参见[86]中的第13章)。AMM池旨在在更短的时间范围内进行重新平衡,因此在这里可能具有优势,但在其他重新平衡领域中也不理想。
A.超额抵押作为安全
抵押是确保协议中经济安全的主要手段之一。如第III-B节所述,在没有强大身份或法律追索权的无信任系统中,超额抵押会为偿还贷款创造经济诱因,或者至少可以确保贷方免受损失。随着资产价格随时间变化,这些系统通常允许自动去杠杆化:如果代理人的抵押担保水平(抵押品价值/借贷价值)低于协议定义的阈值,则系统中的套利者可以减少代理人的借贷风险。以折扣估值返回部分抵押品。目的是使系统充分抵押或具有偿付能力。
但是,超额抵押并非没有风险。例如,如[124],[149]中所探讨的,金融危机时期(对抵押资产价格持续存在负面冲击)会导致市场流动性薄弱,流动性不足,尽管采用了自动去杠杆化流程,但贷款仍可能被抵押不足。例如,在这种情况下,清算人(一种看门人)发起清算可能无利可图。如果发生这种情况,理性的代理人将不偿还债务,因为这会带来更大的收益。
当借入的资产具有内生的价格影响时,例如,当其价格受系统中其他代理人的决定影响或可操纵时,就会产生另一种去杠杆风险。例如,在基于杠杆市场的非托管稳定币(如Dai)中就是这种情况(Dai是通过将其“借入”抵押品而创建的,类似地,必须将其返回以随后释放抵押品)。如[150],[151]中所述,此类稳定币可能会产生去杠杆化的反馈效应,从而导致稳定币本身的波动性。在不稳定的地区,稳定币将趋向于缺乏流动性,并且价格会升值(更多的是因为需要购买
11
清算),这可能迫使投机经纪人利用自己的头寸支付溢价,以降低杠杆作用。这导致其抵押品的提用速度比预期的要快,这使得系统总体上不那么健康,并可能导致抵押品不足。后来在戴(Dai)的“黑色星期四” [152]中直接观察到了这一点。如[151]中进一步讨论的那样,这种稳定币要求不相关的抵押资产要完全稳定,以免受去杠杆效应的影响,因为稳定区域与子市场有关(即,代理商期望抵押资产价格升值)。但是,当前不相关的资产主要是集中/托管的,这对非托管设计提出了挑战。
矿工可提取价值带来的威胁
许多区块链协议的假设是,区块奖励足以激励“正确的”矿工的行为。但是,如果MEV超过区块奖励,则存在共识层风险。MEV最简单的例子是硬币的双重消费,这在基础层激励中通常被考虑。DeFi应用程序产生了许多新的MEV来源。例如,[32]中探讨了(1)DEX呈现了不同交易对之间的原子套利机会,(2)杠杆市场(如Dai)上建立的稳定币在清算杠杆头寸中呈现了套利机会,如[150]中所述。 ]。同样,利用清算机制的其他协议(如PLF)也会创造MEV机会。进一步,当激励矿工重新排序或排除基于其他链发生的跨链支付的交易时,就会产生MEV [153]。这些并不详尽;另外,矿工还可以通过许多其他方式操纵DeFi协议以提取价值。值得注意的是,这些不仅仅是假想的问题,实际上已经被观察到了,例如[154],[155]。
MEV威胁的实用性已在[32]中得到了强调,其中介绍了偷偷摸摸和时间强盗袭击的普遍危险。在削弱攻击中[156],敌方矿工将挖出具有高MEV的区块,同时保留一些可提取的价值,以激励其他矿工将其计算工作引向敌方链。在限时攻击中[32],攻击者从先前的某些块中分叉,并且预期来源MEV可以提高计算能力并进行51%的攻击,直到实现预期的MEV。因此,时间匪徒攻击是共识层的风险,并且可能是历史上的链上行动的直接后果,这可能会使矿工在稍后的某个时刻受益。进一步的威胁是,随着时间的推移,矿工可能会合谋建立更多的MEV机会,例如,审查交易以补充危机中的抵押品,从而造成更多的清算事件,如[150]中所述。这与黑色星期四的事件非常相似,在该事件中,内存池操纵导致Maker [154]中无效的清算拍卖。
C.治理风险
协议治理通常引入更新系统参数,甚至重新定义整个合同的方法。在许多
在这种情况下,这可能是系统随时间演变的必要组成部分。但是,治理也可能引入影响安全性的操纵向量。DeFi协议的规范通常与治理令牌的持有者绑定,治理令牌通常可以被视为协议中的份额。在治理具有很大的灵活性来更改系统的系统中,一个重要的问题是治理令牌的价值来自何处。该协议的一个典型目标是通过使用系统现金流量补偿治理,从而激发其治理令牌持有者的良好管理。在这种情况下,治理令牌的价值来自未来的折算现金流量。另一个可能性是治理直接与底层用户保持一致,例如,因为它们相同。
但是,如果这些激励措施的规模不足,则治理令牌的价值可能来自不太理想的令牌用途,例如,以向监管者提供外部利益但可能损害系统的方式来影响协议的变更。例如,Cream治理增加了高风险但紧密持有的抵押资产,可以说虽然有利于他们,但有损于协议的利益[157]。[158]中描述了另一种间接提取抵押品价值的假想治理攻击。在这种情况下,治理可能与激励机制不兼容。而且,如果来自激励兼容来源的治理令牌的价值崩溃,那么激励兼容范围也会缩小,并且可能会形成一个新的州长联盟来攻击该协议,这可能会有利可图。鉴于可以通过快速贷款和PLF获得治理令牌的便捷性和低成本,这变得越来越成问题。需要保护协议中的少数人权利的其他复杂因素也出现了,例如,建立限制,以使大多数州长不能单方面改变游戏规则,例如,窃取其他少数人或用户的所有价值。
[40]中开发的类似于资本结构的模型可以更广泛地应用于DeFi协议,以围绕这些问题对治理安全性和激励兼容性进行建模。如在那些模型中可以理解的,这些问题本质上是由于伪匿名环境中可能没有外部追索权(例如法律)来与(理想化的)传统金融设置相比来抑制攻击和操纵。此外,[40]推测,在完全分散的稳定币中,有多类利益相关方,并且在治理设计上具有高度的灵活性,因此不存在长期的激励兼容均衡库。直觉上,在这样的系统中会产生无政府状态的成本,这可能负担太多。在这种情况下,理性的代理人会选择不参与。然而,
D.市场和Oracle操作
作为脱链信息的提供者,甲骨文构成了DeFi协议的基本组成部分,尤其是在采购价格信息时。但是,重要的是要区分(1)被操纵但正确提供的价格
12
甲骨文和(2)甲骨文本身被操纵。当我们介绍每种形式的操纵时,请注意,后者可以实质上建模为单独的治理型风险,如[40]中所述。
1)市场操纵: 我们希望量化由于潜在市场中的价格操纵而产生的经济风险,同时假设甲骨文遵循最佳实践的实施并且是非恶意的。如果价格操纵可以实现利润,则对手可以操纵资产在一定时期内的市场价格(链上或链下),例如,通过在使用作为甲骨文的市场价格。如第四部分所述,即时AMM价格很容易以接近零的成本进行操纵,因此,不应将其用作价格预言。即使我们假设预言不是AMM的即时价格,市场操纵问题仍然存在。在这种情况下,无论是在AMM中(例如,来操纵时间加权平均价格)或通过在订单簿中填写未履行的订单。取决于资产的市场是厚还是薄,攻击者大幅改变资产价格的成本分别会更高或更低。这种攻击的一个例子是通过操纵资产的价格来触发清算,如[150]中稳定币的讨论。攻击者可以通过以折扣价购买已清算的抵押品或通过推测清算螺旋来做空抵押资产来获利。这种攻击类似于传统市场中的空头挤压。但是,与单事务三明治攻击不同,上述攻击并非没有风险,一旦失败,可能给攻击者带来重大损失。特别是,
为了说明这种攻击的可能性,历史上流动资金稀少的稳定币DAI的临时价格为1美元。在主要的集中式加密资产交易所Coinbase Pro上,在大约20分钟的过程中花费了30欧元,然后恢复了其预期的1美元固定汇率[159]。因此,部分基于Coinbase签署的价格的加密资产价格预言复合开价饲料[160]报告的DAI价格为1美元。23到化合物在短时间内。该事件触发了(可能是错误的)价值约8900万美元的抵押品清算,使清算的复合借款人损失了23%(来自不平衡的DAI价格)加上5%的额外费用(复合清算激励,即按价格出售抵押品的折扣)清算期间)对其清算资产进行清算。
2)Oracle操纵:集中式oracle是一个单点故障,尽管受信任的执行环境[161],但如果动机足以操纵数据馈送的源头,则它们仍然容易受到提供商恶意攻击。分散的价格预告片可能会使用链上数据,尤其是在DEX(特别是AMM)上使用加密到加密的价格数据。但是,如第IV-B节所述,即使在价格下跌之后,也可能通过故意造成的不平衡和市场交易清淡来操纵价格
使用时间加权平均价格来补救技术安全问题。此外,链上DEX oracle本身无法为链外资产和法定货币定价。例如,可以通过DEX oracle在稳定币中引用加密资产价格,但这面临着相同的内在问题:然后,我们依赖于稳定币(可能被操纵或失败)进行数据馈送。
如[40]中讨论的,存在用于链下数据的分散式oracle解决方案。但是,它们还不是完美的解决方案。这些往往依赖于席林角点游戏,在该游戏中,代理商对正确的价格进行投票,如果他们的投票偏离了共识,他们就会被激励反对削减股份。但是,如果无法客观地验证共识决策的正确性(如本例),则将激励与共识联系起来,就像在凯恩斯选美比赛中一样,为博弈论的攻击铺平了道路。广泛使用的分散式Oracle,例如Chainlink [162],试图通过汇总来自多个来源的数据馈送(例如,通过计算中位数)并依靠信誉系统来管理可靠的来源,来缓解此问题。但是,这些系统仍然可能遭受类似的游戏理论问题。
VI。ø PEN ř ESEARCH Ç HALLENGES
第四节和第五节中提出的技术和经济安全问题在DeFi中存在许多开放的研究挑战。
A.可组合性风险
可以很容易地重复令牌化资产,并在DeFi协议之间互换,类似于重新假设。这提供了构建复杂的,相互关联的金融系统的潜力,但仍具有使代理商面临可组合风险的危险,而这种风险目前尚未被量化。可组合性风险的一个示例是使用快速贷款来操纵即时AMM,并在财务上利用这些AMM作为价格馈送的协议。在过去的攻击中(例如[10],[163],[142])已经反复利用了这一点。许多协议仍在努力采取足够的保护措施来解决这一风险。
可组合性风险的广度远远超出了即时AMM操纵产生的负面外部性。例如,对于以下类型的利用漏洞对连接系统的影响,仍然存在未解决的问题:用于执行恶意协议更新的管理令牌的累积,确保价格稳定性的非托管稳定币激励机制的失败以及PLF系统的失败溶剂。但是请注意,该列表并非详尽无遗。随着更复杂的令牌包装结构激发更高程度的协议互连性,这些问题变得越来越重要。例如,
13
最近的工作[76],[164]开始探讨协议之间的相互依赖;但是,DeFi研究在分类和形式化模型以量化可组合性风险方面仍然存在重大缺口。由于必须对集成协议有一个整体的看法,因此提出了这个问题:技术和经济风险都可能导致失败。对于任何协议设计者而言,确保协议组成的安全性几乎是不可能的,这对DeFi的发展构成了重大挑战。
B.治理
我们确定了治理方面的重要研究方向:•通常,在各种系统中对治理的激励相容性进行建模。例如,建立模型,寻找平衡点并了解系统中其他主体的反应。文献[40]中的模型是在稳定币的背景下开始的,另外还讨论了如何扩展到其他DeFi协议。此外,围绕通过cadCAD之类的工具来模拟和形式化治理激励的讨论也很多[165]。•正式探索如何通过快速贷款和PLF借用治理令牌来实现技术安全。
•从经济安全的角度,正式探讨了通过PLF借用治理令牌使激励兼容性进一步复杂化的问题。
•通常,如何构建治理奖励以奖励良好管理的激励措施:例如,内在对金钱的奖励,每票奖励对每个代币持有人的奖励以及良好管理的度量。
•在具有灵活治理的系统中,正式评估少数群体代理人的保护。
C.神谕
我们重点介绍有关oracle设计和安全性的一些开放挑战。请注意,在许多情况下,oracle问题也可能与治理问题直接相关,因为通常情况下,调速器的任务是选择使用的oracle。
•如何构建预言激励机制以保持激励机制兼容性以报告正确的价格。这在某些方面类似于治理设计,并且需要考虑可能有利可图的博弈论操纵。
•设计和评估各种Oracle强化方法的安全性:例如,中值器,信誉系统以及基于链上可验证指标的报告价格基础。
D.矿工可提取价值
我们确定了MEV的重要研究方向:•开发量化MEV机会水平的方法。随着我们在下面的扩展,我们希望这个问题在计算上很困难。
•开发方法论以量化MEV的负面外部性,例如,从每区块浪费的天然气,天然气价格上涨的压力。
•设计机制,以防止由高MEV激励引起的共识层不稳定风险。
• MEV机会的出现如何内生地影响DeFi协议内代理商的行为。在[40]中的稳定币的背景下开始了对此的模型。
•开发机制以保护协议免受时间盗版攻击的威胁,这些攻击试图重写最近的交易历史记录,例如,其目的可能是触发协议清算并从中获利。
关于最后一点,[150]指出,甲骨文价格有效性可以与最近的区块哈希绑定,以防止此类重新排序提取协议值,尽管以其他方式可能会给协议的经济安全带来成本。
我们推测,矿工优化他们在一个区块中提取的MEV的问题是NP难题,而且很难估算。为此,将问题的简化版本简化为背包问题是非常容易的,在该问题中,每个事务的MEV都是固定的。注意,虽然背包问题是NP难题,但很容易近似。实际上,我们期望矿工问题的更现实的版本比背包困难,因为矿工选择的交易顺序也会改变交易的MEV(即,交换两个元素可能会改变其在背包中的权重)。
已经出现了几种针对基于MEV的攻击的防护措施。一种采取基于信任的暗池的形式,其中未确认的事务被路由到由挖掘池[166],[167]托管的允许的内存池,该池被信任不会提取MEV。但是请注意,这是在挖掘系统的权力下放目标的,因此可能会引入其自身的问题。第二种方法试图通过限制某些重新分配系统的DeFi角色来包含MEV,这样可以提取价值到允许的代理集(例如[168])。例如,只有被许可的代理人才能在协议中执行清算。请注意,这类似地引入了分散化问题和信任假设。第三个建议是创建MEV拍卖,出售提前决定交易订单的权利,因此,将预期价格放在领先位置[169]。这提供了可能返回到网络的价值。但是,这也不是没有缺点。如[170]中讨论的那样,这样的协议将减少将MEV提取(通常是一个非常困难的优化问题)转变为专业化行业的摩擦,该行业最终将长期提取更多MEV。MEV拍卖的概念由Flashbots研究计划[171]进一步发展,该计划提出了一种机制,矿工通过该机制将寻找交易中最有利可图的订单的任务委托给称为搜索者的第三方代理商。随后,搜索者参加了密封的竞标拍卖,并竞标了其交易包,以供下一个区块中的矿工使用。已经开发出一种MEV以太坊客户端的概念验证的第一版实施方案[172]。制定和评估这种折衷方案仍然是一个悬而未决的问题。
14
机制。
E.程序分析
在学术界[113],[108],[174]和行业[175],[176]中都有大量工作[173]用于分析智能合约错误和漏洞。尽管智能合约分析工具不断改进,但智能合约漏洞利用的数量和规模并未显示出减少的迹象,相反,它变得越来越频繁。尽管程序分析工具不是灵丹妙药,并且不能阻止所有漏洞利用,但是表I和第四节中讨论的漏洞利用暗示着有些重复出现的模式可以自动检测并防止。我们认为,程序分析方面的改进可能会阻止我们看到的许多漏洞。
当前的程序分析工具主要可以分为两类:(1)用于检查程序不变性的全自动工具和(2)用于检查用户定义属性的半自动验证工具[174],[177],[178]。尽管后者允许以无法完全自动化的方式来验证业务逻辑,但是它们通常对于安装来说并非易事,并且需要了解软件验证的知识,这限制了它们对具有足够资源的项目的使用。另一方面,可以非常容易地设置和运行的全自动工具通常专注于单独检查单个合同的属性[108],[114],[176],[179],例如未检查的例外。或整数溢出。但是,它们还没有发展为包含智能合约的可组合性质,这使得此类工具无法推断出由于智能合约外部发生的变化(例如,甲骨文返回的价格突然变化)而导致问题发生的情况。此外,大多数工具几乎没有理由智能合约的语义属性,例如特定执行路径如何影响其ERC-20令牌余额。我们相信,在这些方面的改进将使审核员和开发人员可以更有信心地分析和部署合同,从而减少技术安全漏洞的数量。
F.抵押不足的贷款
作为保护协议免受假名代理人不偿还贷款所造成的损失的一种手段,超额抵押是DeFi协议的基本组成部分。但是,从获取到资本的角度来看,超额抵押的贷款价格昂贵,尤其是与通过传统银行贷款获得资金的成本相比。过度抵押限制了一系列富裕代理人的资本准入,并导致无法在其他地方雇用过多抵押品的机会成本。
在DeFi中,非抵押贷款仅以快速贷款和授信额度的形式存在,前者仅在单笔交易期间可用,而后者则需要强大的身份和对某些法律制度的信任,这会使当事方承担责任。违反合同的情况(例如,Aave的信用授权[180])。尽管对抵押品减少机制进行了研究[181],[182],但我们
找出新方法的研究空白,该方法为代理商提供了通过其他形式的贷款获得流动性的能力。一种简单的形式就是更改用作证券的资产,例如,借款人可以抵押诸如域或其他数字商品之类的不可替代资产。
但是,另一种有趣的欠合作贷款形式可以是启动资金。在2017/18年度的ICO浪潮中,很少有项目能够将产品投放市场。建议在此之后进行改进。DAICO就是一个例子,在DAICO中,投资者可以通过向具有预定“抽头”的智能合约中提供资金来为新组织提供资金,随着时间的推移可以从中提取资金。如果项目进度不符合预期,投资者将能够提取资金[183]。随着时间的推移,这可以进一步与向投资者分配治理令牌相结合。
G.匿名和隐私
目前,DeFi协议的匿名性和隐私性是一个尚未得到充分研究的领域。用户隐私本身就很有价值,同时又帮助恶意用户逃避其行为的后果,这之间存在着紧张关系。目前,大部分的DeFi交易发生在以太坊上建立的协议中,其中代理最多具有伪匿名性。这意味着,如果可以将代理的真实世界身份链接到链上地址,则可以观察到代理通过该地址执行的所有操作。尽管零知识证明[184],[185]和多方计算[186],[187]的最新进展具有许多前景,但在DeFi的背景下,这些技术尚未获得关注。主要的摩擦点之一是这些技术的大量计算成本,这使得它们在DeFi上下文中的使用和部署非常昂贵。底层区块链计算成本的降低将成为DeFi协议可以广泛部署隐私保护技术的关键。
七。ç ONCLUSION
在本文中,我们提供了第一个基于DeFi的SoK,这是一个日益复杂的金融应用系统,面临着自身的安全风险。我们从两种观点介绍了DeFi:DeFi Optimist和DeFi Pessimist,随后系统地,详尽地检查了DeFi的工作原理。首先,我们列出了DeFi的原语,然后根据它们提供的操作类型对现有的DeFi协议进行分类。我们通过区分技术和经济安全风险来检查协议所面临的安全挑战。通过这样做,我们能够将理论上提出的和/或实践中发生的攻击系统化为攻击类别,这些攻击要么依赖于代理商通过利用区块链的技术结构来产生无风险利润的能力,要么就博弈激励机制进行博弈。协议以牺牲协议为代价获得利润。最后,我们提请人们注意需要全面了解技术和经济风险的开放研究挑战。
15
再次参考DeFi Optimist和Pes simist的观点,我们没有权衡道德上的权衡,而是提出了一套评估它的工具。尽管DeFi可能具有创建未经许可且不受监管的金融系统的潜力,但开放安全挑战形式的阻力仍然很大。但是,最终,DeFi与挑战之间的融合使DeFi成为值得进行技术和经济安全研究的领域。