Quantstamp项目分析

Quantstamp是一个基于以太坊网络智能合约的安全审计协议,它的目的是为了解决智能合约的安全、审计的问题。

一 智能合约存在的问题

安全问题:

智能合约就是一段程序,程序出现bug和漏洞是很正常的。事实上也出现了好多因智能合约漏洞而导致损失大量数字货币的例子。这是一个必须处理的问题。

审计问题:

目前验证智能合约需要通过专家来审计,这个过程是昂贵且容易出错的。随着区块链的普及,后续智能合约的数量必将指数级增长,智能合约出错所导致的成本也将变得越来越大,这也迫切需要有一种能够更好地对智能合约进行审计的方案。

以上两个问题就是Quantstamp打出处理的问题。痛点确实存在,也很迫切,如果安全无法确保,则区块链的资产一切就无从谈起。安全的问题是非常显眼的,这是一个必须解决的问题,对于这个问题的处理肯定不只有Quantstamp这一个方案。我们必须要参考多个实现方案,权衡之后才可以判断哪个最佳。当只有一个选项的时候,我们当然很容易先入为主,产生偏见。

二 Quantstamp解决方案

下面要先看看Quantstamp打算如何利用区块链去解决这个问题。

Quantstamp协议分为两个部分:

1)一个用于检查Solidity 程序的自动、可升级的软件验证系统。
2)一个用于激励人们找到智能合约漏洞的奖赏系统。

更加具体的场景如下:

  • 智能合约的创建者创建了一个合约(创建者必须拥有一定量的QSP币用于奖赏后续对智能合约有贡献的参与者)。
  • 贡献者提交一些关于此智能合约可靠性、安全性的代码(获得一定的QSP币)。
  • 验证者(矿工)提供算力,运行Quantstamp的验证节点(获得一定的QSP币)。
  • bug发现者提交bugs,终止智能合约(获得QSB币)。
  • 合约使用者,使用安全审核过后的结果-合约。
  • 投票者,基于QSP令牌的投票机制是治理的核心。

这个设计很简单:

在利益的驱动下,人们自发地去校验智能合约的安全问题。

三 如何改进智能合约

提升智能合约的基础设施

1. 协议允许终端用户直接提交校验程序

由下而上的校验机制,防止了之前由上而下的单一节点的失误所带来的巨大损失。

2. 激励矿工去运行校验节点

优化智能合约开发者的开发过程

智能合约的开发者将智能合约提交到Quantstamp网络去进行校验,得到私人报告和公开的报告和一份已经校验过的智能合约。通过利益去驱动Quantstamp网络去校验智能合约,通过成本去提高开发者的代码质量。


优化智能合约开发者的开发过程

四 相关的技术

下面稍微看看Quantstamp用到的一些技术。
主要包括前沿的校验算法+区块链技术。

校验协议(Validation​ ​Protocol)

校验协议是审计证明(proof-of-audit)的一部分,运行在校验节点中。这里描述了一个囚徒困境的问题。

如果一个黑客发现了bug,他究竟是选择通过Quantstamp去接受赏金,还是等待未来发动一次攻击呢?

攻击者想要通过攻击安全漏洞获得收益,他必须假定没有其他验证者不会发现相同的错误。由于未协调验证者的数量很大,所以其他验证者很可能会发现错误,并为了获得奖励而报告并修正错误。

安全校验引擎(Security​ ​Audit​ ​Engine)

从输入输出去看待Quantstamp协议:

输入:奖励+未校验的智能合约
输出:报告+校验过的智能合约+奖励

安全校验引擎(Security​ ​Audit​ ​Engine)

整体架构一览(Architectural​ ​View)

包括三个部分:

  1. 校验过后的智能合约
  2. Quantstamp网络(QN)
  3. Quantstamp报告
整体架构一览

谍报技术(Tradecraft)

包括了计算机辅助推理工具(SAT solvers和SMT solvers)、模型检查(Model-checking)、静态程序分析(Static​ ​program​ ​analysis)、Symbolic​ ​execution​ ​and​ ​Concolic​ ​Testing(主要作用就是找程序的bug)

增量发版和订阅模式(Incremental​ ​releases​ ​and​ ​the​ ​subscription​ ​model)

这个没什么好说的,普通的软件现在都是增量发版的。

Bug发现者(Bug​ ​Finders)

激励、奖赏开发者去对代码进行审查,找到智能合约的bug。开发者是对整个智能合约最熟悉的一群人,Quantstamp协议也必须调动这部分人的积极性。这里有一个问题:开发者会不会因为个人利益,故意制造一些bug,然后后面通过提交bug来获得二次收益?这个顾虑应该没有,因为最终为这些bug付款的就是开发者所在的公司/组织,这个公司/组织会根据Quantstamp去分析这个bug最终归属在哪个开发者。

安全揭露策略(Security​ ​Disclosure​ ​Strategy)

为了避免攻击者以安全报告、安全校验库作为线索去发现智能合约的安全漏洞,Quantstamp必须确保安全报告的加密性,要在安全库公布之前让智能合约的漏洞得到修复。

分布式并行SAT(Distributed​ ​and​ ​Parallel​ ​SAT)

以太坊/Solidity的一些共有的脆弱点( Common​ ​vulnerabilities​ ​for​ ​Ethereum/Solidity)

五 融资计划

融资计划

六 团队分析

团队成员除了一堆博士教授头衔,很难看出什么东西。整体的印象还是比较靠谱。

康奈尔大学的Richard Ma博士
Vajih Montaghami博士
美国滑铁卢博士候选人
顾问:
Vijay Ganesh博士,UF Waterloo助理教授Evan Cheng,Facebook工程总监
Dr. Derek Rayside,P. Eng。,副教授

总结

智能合约的安全、审计问题确实存在,而且随着区块链的普遍应用,智能合约的数量也将指数递增。Quantstamp提供了一种分布协作、自下而上的处理机制,即在利益的驱动下,人们自发地去校验、审计智能合约。技术上没有什么创新的地方,主要是使用已有的技术进行组合使用,也就是说技术上的风险不大,所以做出来是没有问题的。

特别强调,人们往往会担心这样的问题:验证者发现bug之后,会不会选择不接受赏金,并利用安全漏洞获得更大的收益?
根据囚徒困境原理,发现问题的校验者会选择修正错误尽快获得奖励。因为协同、勾结所有知道这个漏洞的人不去修正错误这个任务的成本是非常大的,是不可能完成的任务。

整个Quantstamp项目是逻辑自洽的,是可以自圆其说的。

我现在只是从白皮书对Quantstamp进行了分析,分析的肯定不全面。后面还需要从更多的维度去分析项目,并关注项目的进度。

你可能感兴趣的:(Quantstamp项目分析)