南京绿林国际酒店欢迎您!

DeFi安全事件频发,DeFiner如何保证用户资金的安全

时间:2020-05-19 08:55

DeFiner开放金融平台基于Solidity语言编写的以太坊智能合约。这些智能合约是我们非托管分布式储蓄合约的核心组成部分。为确保合约的安全、可靠,我们遵循以下最佳实践。

以下是我们为测试和安全保证所做的基本准备工作。我们为不同的网络环境编写了迁移脚本,以确保迁移自动化和顺利进行。此外,我们还有一个独立的开发人员来为单元和集成测试创建测试用例。同时,我们进行了Gas成本分析来控制Gas限制。持续进行必要的集成测试,并确保测试代码覆盖率超过80%。

DeFiner为不同的网络编写迁移脚本。这使我们能够在这些网络上快速部署我们的合同。这些网络包括:

在truffle框架中编写测试用例来测试合约的每个功能。在这个测试中,将使用TypeChain和truffle。TypeChain可以更高效、更快速地编写测试用例。我们编写单元测试用例和集成测试用例,以确保代码的质量。

建立了一个持续集成(continuousintegration,CI)测试环境,代码或测试用例中有变动时测试合约。在这种持续集成中,生成代码覆盖率报告。

2020年3月8日,我们完成了DeFi储蓄账户的所有功能,并进行代码冻结。之后,我们开始专注于测试和改进。进行了单元测试、集成测试和系统测试。

在DeFi储蓄代码开发冻结后,我们立即开始单元测试,验证智能合约的每个单元是否按设计执行。

我们还执行了集成测试,将独立的单元进行各种组合来测试。这样我们就可以发现集成单元之间可能的交互错误。

编写单元和集成测试用例主要针对本地Ganache实例。由于我们将使用Compound 作为外部合约,我们还在主网分叉Ganache测试合约。这让我们可以模拟智能合约在以太坊主网的行为。

因为近期出现了多起DeFi安全事件,以太坊智能合约的安全至关重要。为了提高合约安全性,我们将采取以下最佳实践。

我们将在testnet上发布产品,允许用户和德凡团队在testnet环境中测试合约。这一步将使我们能够提高代码的质量,并找到在前面的步骤中没有发现的错误。

Solidity有一些代码检测工具,我们将使用“Solhint”和“Solium”来检测代码。这些工具将帮助提高代码质量,并从代码中消除一些小问题。

Surya工具有助于理解和区分合约行为。我们将生成不同的Surya报告并进行分析,以确保代码的质量。这些报告包括:

完成上述所有步骤后,我们将对合同进行第三方外部安全审计。我们会根据我们的预算和对方的资质选择最好的外部安全审计公司。在安全审计之后,我们将进行测试版发布。

我们会使用高级安全审计工具来查找极端情况。Echidna是市场上最好的模糊测试者之一,可确保合约的不变量按照预期工作。这些工具用许多随意的输入来测试合约,并报告不变量测试的所有失败。

我们会在Beta测试版发布之前公布我们的bug悬赏计划。这是邀请白帽黑客测试合约,向我们报告发现的任何漏洞。

在外部安全审计和模糊测试之后,智能合约的安全性获得较高的信任度。我们将在以太坊主网上发布产品的beta版,让普通用户尝试和测试产品。同时,我们将邀请白帽黑客继续提高智能合约的质量,并组织beta版发布后的bug悬赏活动。