本文由 每日token谈 项目研究团队出品,转载请注明出处
前言
对代码的监测和验证一直以来是一个巨大的痛点,据估计这个代码验证服务将会是万亿级别的市场。传统代码检测都是简单试运行,但是简单的试运行仅仅能够找到能够跑出来的错误,但是找不到隐性的错误。比如研发人员开发了一套自动驾驶系统,搭载这个系统的自动驾驶汽车能够顺利运行起来,但是不代表黑客不能入侵并且控制这辆汽车。
以前这个问题并不是那么严重,因为代码都是开源的,没人能够找到代码里面可能存在的漏洞,但是区块链的系统代码是完全开源的,这就存在了很大的问题:黑客能够仔细研究代码去寻找里面的漏洞。
前段时间EOS被360爆出巨大漏洞导致一波小瀑布、历史上导致以太坊分叉的The DAO事件、还有以太坊虚拟机被查出来的大量的小漏洞等,这些问题都可能导致巨大的经济损失,可能前面还很看好的项目,生态都已经建设起来了,没几天一个大新闻出来,整个系统被攻破,那就不是简单的修复漏洞能够解决的问题了。
Certik
Certik团队出身名门,是形式化验证的专家。在Certik诞生之前,团队成员曾经开发了世界上第一个并发验证系统CertikOS,这个OS是NSF(美国国家科学基金会)一个计算项目中的核心组成部分。
Certik目标是建立一个形式化验证平台,希望从数学上来证明一个区块链生态系统是不存在漏洞的。通过智能标记将代码按层分解,再通过代币激励分布式协作,完成对代码的验证,让智能合约和区块链达到无漏洞并且能够抵御黑客的攻击,最终建立完全可信的智能合约和区块链生态。
Certik的出现为了解决三个主要问题:
1、验证什么?传统的验证仅仅是列出一些特性,如没有堆栈溢出等错误,这些还是不够的。
2、如何让验证规模化?传统验证方式是一群码农研究代码,曾经11个科学家花费一年才完成7000行代码的研究,这方面的成本实在太高。
3、如何让大众信任这个验证?设计一个验证方法很困难,但是让大家相信这个不确定的东西的正确性是更困难的一件事情。
平台功能
为了解决上述问题,Certik设计了下面几个特性:
1、智能标记:通过深度学习算法,对分布式系统的代码达到语义层面的理解,并对代码语言形成自动标记。
2、按层分解:在此之前Certik团队已经做到能够对代码模块化验证。通过对代码的分解能够将几万行的代码分解为小的模块进行验证,利用分布式协作能够大大提高验证的效率。
3、可接入的验证引擎:被分解的代码模块更容易被这些接入的引擎完成自动检验,Certik平台也希望有更有效的引擎被设计和接入这个平台完成代码的审计。
4、机器可检查的验证对象:Ceritk 平台希望建立机器可检查的验证对象,这样未来的代码审计能够直接使用机器进行验证,从而大幅度提高效率。
5、认证DApp库:提供经过代码检验的Dapp的代码给开发者参考、学习,从而提高整个区块链社区的代码质量。
6、定制化认证服务:对于有特殊需求的Dapp,会有专门的专家提供定制化的服务,帮助提高代码质量。
代币经济模型
代币名称:CTK
Certik采用PoP(proof-of-proof)共识机制,任何人可以建立证明、验证证明、改进验证算法,将算力用于有效的计算(验证代码)上,并通过这些工作获得代币奖励。
在生态中会有五个角色。他们分别是消费者、赏金猎人、检查者、智者和使用者,下面我们分别介绍这五个角色在生态中所做的事情。
1、****消费者(customers):上传需要检测的代码,并支付一定的CTK。这些代码会广播到网络中被检测,最后得到一个检测报告,或者根据服务需求平台提供定制化服务。
2****、赏金猎人(bounty hunters):这些赏金猎人首先需要有一定的代币,锁定后成为节点,通过提供计算资源,完成验证的建立和广播等任务,获得代币奖励。
3、检查者(checkers):检查者记录交易并且检验验证对象,只有在检查者完成检验的之后赏金猎人才能获得奖励,检查者也在其中分到一些代币奖励。
4、智者(Sages):智者就是接入验证引擎的人,他们用自己的引擎检验这些被广播到网络的代码,获得代币奖励。
5、使用者(users):使用者能够支付代币浏览Dapp库中的代码,也可以使用平台上的服务。
说起来有些角色是可以同一在一起,比如赏金猎人和检查者,但是Certik这样设计能够保证角色之间相互监督、制衡,最后建立一个可持续的生态。
项目团队
Certik目前有三位核心成员,由CertiKOS的创始团队发展而来,CertikOS是一个耐黑客并发操作系统的创始团队组成,这个系统是建立可以免与软件漏洞的网络物理系统的一个重要里程碑。Certik团队规模目前已经扩大到20名,有来自谷歌、Facebook和Free轮的高级软件工程师和研究科学家等技术型人员加入。
邵中教授作为耶鲁大学计算机科学系教授,一直活跃在国内的各类计算机学术论坛活动中,雷锋网曾经对其报道:
《最牛华人“程序员”邵中,全世界程序员的命运都可能因他而变》
(https://www.leiphone.com/news/201606/h2FgJy0ChIyhn1BV.html)
可以看出来,Certik现在的团队构成仍以技术人员为主,主要和项目仍处于开发阶段有关,但是项目的落地、社区运营、营销推广仍需要商业人士的规划和主导,团队未来是否会增加相关领域的核心成员,仍需要持续关注。
Demo
对于代码检测,Certik还提供了一个Demo视频
在视频中,代码的检测非常简单,首先是上传(upload),用Certik提供的标注语言,标注需要检测的部分进行检测。
检测后会得到一个检测报告,报告中会给出分数和错误的代码位置,最后根据提示修改代码。
后面Demo中还检测了当时TheDAO事件的代码,我们可以看到这些代码出现的问题,如果有Certik,TheDAO事件可能就不会发生。
总的来说,项目通过人工智能标记将大块代码分解,广播到网络交给不同的人去处理,最后得出检测报告,帮助改进代码,提高社区的代码质量。
项目官网:https://certik.org
※ ※ ※
更多项目讨论和开车,可以扫码添加下方微信