作者:NEST爱好者_九章天问
DeFi是指用智能合约实现的去中心化金融协议,包括资产交易、借贷、保险、各种衍生品等等;除信用服务外,现实中的金融服务都可以通过DeFi协议实现。这些协议都是去中心化、自动运转的,没有第三方机构在管理和维护,所以合约的风险控制便成为行业难题。
DeFi兼具了金融和科技双重属性,主要包含以下风险:
1. 代码风险。包括以太坊底层代码风险,智能合约代码风险,钱包代码风险等。比如当年著名的DAO事件,近期的Uniswap漏洞攻击问题,各类钱包被盗事件,都是代码风险造成的。
2. 业务风险。主要是业务设计过程中留有漏洞,被人合理攻击或操纵。比如当年FOMO3D被堵塞攻击,又比如dZx错误使用了不抗攻击的Uniswap预言机,被合理打压价格盗取资产,这类人称之为套利者。套利者对一个DeFi项目既有不利的一面,也有有利的一面。
3. 市场波动风险。DeFi在设计时缺少一些应对变量,导致市场极端情况发生出现穿仓。比如MakerDao在312的表现,主要就是市场极端波动风险造成的。
4. 预言机风险。预言机提供全局变量,是大部分DeFi的基础,如果预言机遭遇攻击或者出现停摆,则下游DeFi会陷入崩溃。我们认为预言机将成为未来DeFi最重要的基础设施,带有任何中心化风险的预言机,最终都会走向消亡。
5. “技术代理”风险。主要是指对智能合约和区块链不熟悉的普通用户,使用了中心化团队开发的“便利”交互工具,这一工具本身可能存在风险。
任何DeFi项目在设计时,都应将以上风险考虑进去。完整的流程不仅仅是文档内做好提示,还需要一些风险管理手段。这些手段大部分以去中心化的方式进行,少量以社区治理的方式完成(主要是指链上治理)。这里我们提出一个DeFi风险管理框架,主要分为事前、事中和事后:
事前:主要是对合约代码进行形式化验证,包含弄清楚合约使用的方法、资源甚至是指令的边界,以及这些方法、指令、资源在组合过程中的相关性影响,没有经过论证的方法或没有找到边界的组合坚决使用。这不是传统软件开发测试的思维,这是一个接近数学论证的理念。好的合约开发应该建立在已经论证过的方法组合上。
事中:事中主要是停机设计和异常触发设计,即合约对攻击行为能进行识别与干预,包含自动停机设计和治理停机设计。而异常触发是对合约运行过程中,超预期现象的一种控制管理;异常触发一般是自动的,通过异常触发修正一些风险管理变量。可以参见NEST预言机系统中的beta系数和防堵塞攻击设置,这是行业内率先考虑停机及异常触发的一个实践。
事后:事后风险管理包含几个部分,首先是代码出现漏洞,需要进行修正,一般通过链上治理,即DAO治理的方式。其次是治理资产本身遭遇攻击,此时需要进行合约分叉!这是一个行业忽视的盲点。其次是通过保险机制,对合约可能的风险进行保险,从而降低损失。最后,社区可以通过链上数据的追踪,与各类机构合作追踪损失。关于链上治理和合约分叉,可以参见NEST的设计,这是一个创新。
以上是我们对DeFi安全的一个系统框架,仅供大家参考。目前行业内对安全的理解,过于早期,也过于传统;如果不能转变思维,将边界、完备性、一致性、形式化验证、停机、异常触发、治理、分叉等新的思想引入,是不能适应未来发展的。