当我们还沉浸在新年的喜悦当中时,2022年2月3日,却发生了一起足以令世界震惊的盗窃案。据比特安舆情监测中心显示,连接以太坊和Solana两大区块链的主要桥梁——虫洞(Wormhole)遭到黑客攻击,损失达12万枚wETH(约合3.2亿美元)。
这是成为DeFi史上披露出来的第二大的黑客事件。而仅仅过去三天,2月6日,Meter.io 跨链桥遭遇黑客攻击,损失达到 430 万美元!三天两起安全事件的发生,金额数大,我们不禁要问,DeFi为何又成为了黑客的提款机?
随着去中心化金融(DeFi) 市场的发展,“风险”成为焦点。首先,需要知道的是,去中心化金融(DeFi)是指建立在区块链网络之上的一系列金融产品和服务,它是一个开源、无需许可、去中心化的金融系统,但 DeFi 产品的不同风险维度在很大程度上仍未得到充分研究。
今天,比特安特从另外一个维度,借由这几天的黑客事件来详细讲述下除了黑客攻击,DeFi还有哪些风险值得注意。

一:内在协议风险
DeFi 平台以智能合约的形式存在,这些协议的动态是 DeFi 应用程序中最重要的风险维度之一。内在协议风险是指默认嵌入在协议设计中的风险机制。
DeFi 中的内在协议风险有各种形式。在 Compound 或 Aave 等 DeFi 借贷协议中,清算是一种将借贷市场的抵押品维持在适用范围内的机制,清算允许参与者在无抵押头寸中参与本金。滑点是曲线等自动做市 (AMM) 协议中存在的另一种情况,曲线池中的高滑点条件可能会迫使投资者支付极高的费用以消除提供给协议的流动性。
比如清算风险,因为DeFi协议中的加密抵押品容易受到市场波动影响,并存在债务头寸在市场波动中出现抵押不足的风险,继而诱发清算机制,造成用户遭受进一步损失。
二:外生协议风险
除了内在协议风险, DeFi 交易通常会受到改变协议预期行为的外生因素的影响。这些风险包括利用 DeFi 协议底层机制的攻击,例如预言机操作、闪贷攻击或利用智能合约逻辑中的漏洞来进行攻击。最近在Cream Finance和Badger DAO等协议中的漏洞被黑客利用凸显了外生协议风险会影响 DeFi 的发展。
三:治理风险
DeFi 的一个独特方面是,去中心化治理提案控制着 DeFi 协议的行为,并且通常是其流动性构成变化影响投资者的原因。例如,改变 AMM 池中的权重或贷款协议中的抵押比率的治理建议通常有助于流动性流入或流出协议。从风险的角度来看,DeFi 治理的一个更令人担忧的方面是许多 DeFi 协议的治理结构日益集中化。
尽管 DeFi 治理模型在架构上是去中心化的,但其中许多项目是由少数各方控制的,这些各方可以影响任何提案的结果。这方面并不像看起来那样令人担忧,因为许多能够影响 DeFi 治理投票结果的治理者之所以处于该位置,仅仅是因为他们积极参与并与 DeFi 生态系统保持一致——这是利益一致的明显标志。

四:潜在的区块链底层风险
DeFi 协议对其底层区块链有一定程度的基础设施依赖。特定区块链上的共识机制等可能会成为该平台上运行的 DeFi 协议的漏洞。一个典型的例子是权益证明(PoS)网络中所谓的验证者卡特尔,其中许多验证者串通起来影响网络中的奖励分配,并可以有效地阻止 DeFi 协议的运行。
五:市场风险
有时倾向于痴迷于协议和基础设施方面,反而忽略了该领域的市场风险。例如,如果资产价格在向矿池提供流动性时发生巨大差异,则对非稳定币 AMM 矿池也有着很大影响。另一个例子是资产价格的突然崩盘,这可能会引发资金池中大量流动性的流失,从而导致严重的滑点风险。
DeFi 协议的可编程性意味着它们可以对传统市场风险因素(例如波动性和价格)做出本能反应,从而产生影响投资者头寸的级联效应。DeFi 中的风险管理之所以如此具有挑战性,是因为它与金融工具中的传统风险管理理论不太相符。几十年来,资本市场一直围绕着波动性等市场因素的风险管理模型而发展。
现在,通过用自动化金融技术(智能合约)取代这些中介机构, DeFi 实现了前所未有的金融自动化水平,但也引入了我们以前从未见过的新风险向量。
DeFi作为新起之秀,如何控制和规避风险,真正做到零风险,还有很长的一段路要走。在此期间,比特安审计呼吁:
在我的gem中,我需要yaml并且在我的本地计算机上运行良好。但是在将我的gem推送到rubygems.org之后,当我尝试使用我的gem时,我收到一条错误消息=>"uninitializedconstantPsych::Syck(NameError)"谁能帮我解决这个问题?附言RubyVersion=>ruby1.9.2,GemVersion=>1.6.2,Bundlerversion=>1.0.15 最佳答案 经过几个小时的研究,我发现=>“YAML使用未维护的Syck库,而Psych使用现代的LibYAML”因此,为了解决
我在Rails工作并有以下类(class):classPlayer当我运行时bundleexecrailsconsole然后尝试:a=Player.new("me",5.0,"UCLA")我回来了:=>#我不知道为什么Player对象不会在这里初始化。关于可能导致此问题的操作/解释的任何建议?谢谢,马里奥格 最佳答案 havenoideawhythePlayerobjectwouldn'tbeinitializedhere它没有初始化很简单,因为你还没有初始化它!您已经覆盖了ActiveRecord::Base初始化方法,但您没有调
我有用于控制用户任务的Rails5API项目,我有以下错误,但并非总是针对相同的Controller和路由。ActionController::RoutingError:uninitializedconstantApi::V1::ApiController我向您描述了一些我的项目,以更详细地解释错误。应用结构路线scopemodule:'api'donamespace:v1do#=>Loginroutesscopemodule:'login'domatch'login',to:'sessions#login',as:'login',via::postend#=>Teamroutessc
我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是
目录第1题连续问题分析:解法:第2题分组问题分析:解法:第3题间隔连续问题分析:解法:第4题打折日期交叉问题分析:解法:第5题同时在线问题分析:解法:第1题连续问题如下数据为蚂蚁森林中用户领取的减少碳排放量iddtlowcarbon10012021-12-1212310022021-12-124510012021-12-134310012021-12-134510012021-12-132310022021-12-144510012021-12-1423010022021-12-154510012021-12-1523.......找出连续3天及以上减少碳排放量在100以上的用户分析:遇到这类
我正在写一篇关于在Ruby中几乎一切都是对象的博客文章,我试图通过以下示例来展示这一点:classCoolBeansattr_accessor:beansdefinitialize@bean=[]enddefcount_beans@beans.countendend所以从类中我们可以看出它有4个方法(当然,除非我错了):它可以在创建新实例时初始化一个默认的空bean数组它可以计算它有多少个bean它可以读取它有多少个bean(通过attr_accessor)它可以向空数组写入(或添加)更多bean(也通过attr_accessor)但是,当我询问类本身它有哪些实例方法时,我没有看到默认
我去了这个website查看Rails5.0.0和Rails5.1.1之间的区别为什么5.1.1不再包含:config/initializers/session_store.rb?谢谢 最佳答案 这是删除它的提交:Setupdefaultsessionstoreinternally,nolongerthroughanapplicationinitializer总而言之,新应用没有该初始化器,session存储默认设置为cookie存储。即与在该初始值设定项的生成版本中指定的值相同。 关于
我有一个类unzipper.rb,它使用Rubyzip解压文件。在我的本地环境中,我可以成功解压缩文件,而无需使用require'zip'明确包含依赖项但是在Heroku上,我得到一个NameError(uninitializedconstantUnzipper::Zip)我只能通过使用明确的require来解决问题:为什么这在Heroku环境中是必需的,但在本地主机上却不是?我的印象是Rails自动需要所有gem。app/services/unzipper.rbrequire'zip'#OnlyrequiredforHeroku.Workslocallywithout!class
我在Ruby程序中有两个URI。一个肯定是绝对URI,另一个可能是绝对URI或相对URI。我想在第一个的上下文中将第二个转换为绝对URI,所以如果第一个是http://pupeno.com/blog第二个是/about,结果应该是http://pupeno.com/about.有什么想法吗? 最佳答案 Ruby的内置URI和Addressablegem,做这个简短的工作。我更喜欢Addressable,因为它功能更全面,但URI是内置的。require'uri'URI.join('http://pupeno.com/blog','/
我将gem推送到rubygems.org,当我执行“geminstall(gem)”时出现此错误:ERROR:Whileexecutinggem...(NameError)uninitializedconstantPsych::Syck我可以执行“gembuild(gem).gemspec”来生成本地gem,然后geminstall(gem).gem并且安装正常。我还可以将gem放入我的Rails应用程序的Gemfile中,并带有指向Github存储库的指针,这也可以。我试过在多台计算机上安装gem(来自rubygems.org,它们都遇到相同的错误。我不知道是什么原因导致从r