对话时间:8 月 4 日 11:00
对话嘉宾:
顾荣辉,CertiK 联合创始人,哥伦比亚大学计算机科学系助理教授
Rudy Lu,InfPool 无限矿池合伙人,BTCU 高校区块链技术社区创始人

CertiK 顾荣辉:PoS 机制更高效与轻量级,但需要持续完善安全性


重要观点:

  1. 公链的安全性是相比智能合约安全更重要的问题,它是区块链可信赖生态的基石
  2. PoW 的资源消耗过大,效率不够高,也不适用于新的公链。新的公链很容易被黑客利用在网络规模未成之前进行 51% 攻击
  3. PoS 机制可以理解为“一定量的币一票”,相比于 PoW 更加高效,更轻量级,更适用于新兴公链和对性能有较高需求的合约 /DApp。但 PoS 机制实现起来复杂度更大,依赖的工具链更长,在安全性上需要做出更长足的努力

以下为对话原文整理:

Rudy:Hello,各位听众中午好,欢迎来到 ”PoS 百家谈“ 的第 2 期。PoS 百家谈是由全球超级节点服务商 InfStones 主办的系列访谈活动,邀请大咖一期一会,畅聊 PoS。我是本期的主持者,InfPool 无限矿池合伙人 Rudy Lu。本期我们荣幸邀请到的嘉宾是 CertiK 联合创始人顾荣辉教授!

顾荣辉教授毕业于清华大学,于 2016 年在耶鲁大学获得计算机科学博士学位,并在耶鲁大学获杰出论文奖并获 ACM 学位论文奖提名。现今是哥伦比亚大学计算机科学系助理教授。顾教授是操作系统、软件安全以及形式化验证方面的专家,是 CertiKOS——世界上第一个被完全证明的并发操作系统内核的主要设计者和开发者。

我和顾教授还是清华校友哈哈,师兄好~

顾荣辉:师弟好。

Rudy:CertiK 专注于用形式化验证科技为智能合约和区块链应用及协议提供代码安全解决方案,已与 Binance、Kucoin、OKEx 和 Huobi 等世界顶级数字资产交易所,以及 NEO、ICON、Terra 和 QuarkChain 等公链建立战略合作伙伴关系,据称已经保护了超过 45 亿美元的资产免受损失。

顾荣辉:现在已经保护超过 62 亿美金的数字资产了。

Rudy:哈哈哈,数据增长太迅猛了。

CertiK 基金会近期宣布建立公链 CertiK Chain,目标构建一个更值得信赖的区块链生态系统 (a more trustworthy blockchain ecosystem for all),CertiK Chain 怎样结合自身项目的安全技术优势,又为何选择 DPoS 作为共识机制呢?这都将在今天和顾教授的访谈中找到答案。

问题一:关于 Certik

Rudy:我在谷歌搜索 CertiK 会发现官网是这么介绍的:排名第一的区块链与智能合约审计(#1 in Blockchain and Smart Contract Auditing),但国内的朋友可能还对 CertiK 不太了解,先请顾教授介绍一下 CertiK 吧~

顾荣辉:好的,CertiK 源自实验室的科研项目,当时我和耶鲁的邵中教授想从语言和系统层面解决软件系统的安全问题,构建 “没有漏洞、无法攻破”的可验证系统。2015 年我们提出了“深度规范 DeepSpec”的概念,并用这套技术做了 CertiKOS。CertiKOS 是第一个被完全验证的并发式操作系统内核,最后被部署到了未来机器人 Landshark 上,由谷歌工程师组成的白帽团队在评测报告中称其是“无懈可击的”。

之后区块链世界安全事故频发,我们意识到区块链这项革命性的技术对安全领域提出了新的挑战,于是创建了 CertiK,旨在应用“深度规范”技术来保护区块链世界。

我们的安全验证服务从 2018 年五月上线以来,已经和 Binance,Huobi,OKEx,Gate.io 等多家交易所达成了安全战略合作, 服务范围包括传统的渗透测试,智能合约验证,节点安全,和定制化公链安全解决方案。已经合作了众多知名项目,比如 Ethereum, NEO, TUSD, PAX,IoTeX, Crypto.COM, Terra 等。完毕。

上面的回答比较官方一点,我争取以比较简单易懂的方式回答下面的问题。

Rudy:「无懈可击的」就非常易懂。

顾荣辉:原词是「unbreakable」。

Rudy:您刚刚提到区块链世界安全事故频发,可以给我们举举例子吗,CertiK 所从事的安全验证服务对于区块链世界有多重要呢?

顾荣辉:像我之前所说,区块链技术与安全领域提出了很多新的 挑战。比如很多公链 / 合约代码都是开源的,并且一旦形成共识则很难更改,即使发现代码有漏洞。

比如最知名的 TheDAO attack,最后是通过 hard fork 来解决的,对社区也造成很大的伤害。

Rudy:是的,那次硬分叉令人印象深刻

顾荣辉:在这种挑战下,可以理解为,如果代码有漏洞,那么最终一定会被黑客发现并利用。

很多人信仰区块链技术,将大量资产放在区块链世界,并高喊着“code is law”,我相信没有人想看到黑客可以利用漏洞,操作代码,继而控制这些去中心化资产。

CertiK 军事级的安全保护对区块链世界是迫在眉睫的。如果说普通的代码的安全系数是 80% 话,传统的安全技术可以达到 90%,那么 CertiK 的深度规范可以将安全系数提高到 95% 甚至更高。

CertiK 顾荣辉:PoS 机制更高效与轻量级,但需要持续完善安全性

这是一个用 CertiK 的验证服务预防 TheDAO attack 的演示图。我们可以通过数学的方法证明代码的安全性,或者找到可能的安全漏洞,这项技术是目前安全保障最高的技术。

Rudy:刚刚的回答非常 impressive,让大家见识到了 CertiK 的实力。

CertiK 团队除了顾教授是哥伦比亚大学的助理教授,另一位联合创始人邵中教授是耶鲁大学教授,还有的媒体上更是称他为“华人最牛程序员”。您的团队包括您在内有多位国际名校教授坐镇,您觉得 CertiK 在哪些领域拥有行业顶尖的技术优势呢?

CertiK 顾荣辉:PoS 机制更高效与轻量级,但需要持续完善安全性

顾荣辉:首先在软件系统验证领域,我们 2016 年发表的 CertiKOS 在 2019 年的今天,依然是这个领域最先进的成果。我们可以提供军事级的安全服务,包括基于 CertiKOS 的节点安全方案。

同时,我们的联合创始人邵中教授也是程序语言设计领域的专家,SML/NJ 就是他在普林斯顿时期与贝尔实验室联合开发的。这是我刚才在 SML/NJ 的网站上找到的,应该是拍摄于 1994 年。

CertiK 顾荣辉:PoS 机制更高效与轻量级,但需要持续完善安全性

中间就是年轻的邵中教授,照片上还有多位大神,大家有兴趣可以认认看。

Rudy:珍贵的资料。

顾荣辉:为了从语言层面解决智能合约的安全问题,在邵中教授的带领下, CertiK 团队与耶鲁大学和哥伦比亚大学的科研团队共同开发了 DeepSEA 语言,目前已经获得了 IBM 区块链、以太坊基金会、量子链基金会的科研资金支持。

Rudy:可否请顾教授介绍一下 CertiK 安全验证在市场上的一些实际应用案例,CertiK 为他们发现了什么问题,避免了多大的损失?

顾荣辉:CertiK 已经为超过 200 多位客户提供了安全服务,包括智能合约项目,公链,稳定币和交易所等。目前为止,CertiK 的深度规范技术已经保护了近 62 亿美金的去中心化资产,比如 BNB,TUSD, PAX 等,未出现一次安全事故。

因为没有发生过安全事故,所以我不清楚具体避免的损失。这里我举一个发币合约的例子吧。

在铸币时,合约会检查已有的币总量加上新铸币的总量,少于一个规定的值,看上去很常规, 当时这份合约也通过了某服务商的人工审计。

但是我们的验证工具发现,如果传入的新铸币的数量(一个参数)非常大,币总量加上新铸币的总量可能会发生溢出,使得结果小于规定的值,进而导致可以无限增发。

这个漏洞,人工很难发现,但是却无法逃过验证工具的审查。如果我们没发现这个漏洞,那么对于项目方可能是毁灭性的打击,也会造成投资人的巨额损失。

问题二:公链的潜在安全问题

Rudy:我注意到您之前曾在一次问答中提到,区块链技术面临的潜在安全危险在“公链的安全”上。当时那次没有深聊,咱们不妨接着聊一下,您觉得公链可能有哪些潜在的安全性问题呢?

CertiK 顾荣辉:PoS 机制更高效与轻量级,但需要持续完善安全性

顾荣辉:

我认为公链的安全性问题主要分为以下几点:

1) 密码学算法安全:包括了签名、验证签名、hash 等,以及代码迭代时的漏洞排查等等;

2) 共识机制安全性,比如 51% 攻击等;

3)功能安全性,比如 TheDAO attack;

4)工具链安全性,比如编译器或者执行环境的漏洞;

CertiK 的技术主要针对 2,3,4,我们并未涉及 1 的领域。像我之前所说,智能合约的安全问题较为简单,门槛也较低。2,3,4 就非常困难了,比如 CertiKOS 其实是 2016 年的成果,到今天也是独一份,可见技术的难度。

我这里在多加两句关于功能安全性的问题。功能性安全指的是代码的实现满足开发者的意图,简单的排查一些安全隐患是不能解决这个问题的。首先需要准确表述开发者的意图,这里就需要我们的“深度规范”的概念了,我就不展开说了。

Rudy:CertiK 的形式化验证工具不仅在智能合约上,在公链的代码上也可以得到很好的使用吗?

顾荣辉:是的,CertiK 已经与多条公链开展了安全合作,包括 Binance Chain, Waltonchain 等

Rudy:现在 CertiK 也建立了自己的公链 CertiK Chain,目标构建一个更可信赖的区块链生态系统,请问 CertiK Chain 在安全性上有哪些特殊的设计呢?

顾荣辉:

首先 CeriK Chain 是“端到端”安全的:

1) DeepSEA 在语言层面减少合约漏洞的发生概率并可接入形式化验证服务;

2) DeepSEA compiler 是被验证过的,保证编译过程没有引入 bug;

3) CertiK VM 为编译后的 bytecode 提供安全的执行环境;

4) CertiKOS 为节点提供安全保障。

Rudy: 从语言,到编译器,到执行环境,到节点运行。

顾荣辉:总结的很到位。

其次,CertiK Chain 不仅仅是一条安全的公链,他还可以作为整个区块链世界的安全基石。其他公链都可以依赖 CertiK Chain 和 CertiK 的服务提高安全性,对安全需求较高的合约 /DApp (比如去中心化交易所)可以通过跨链技术在 CertiK Chain 上执行,防止受到可疑合约的干扰或攻击等。

Rudy:明白,跨链到 CertiK 运行安全要求高的 DApp,跨链会使得 CertiK Chain 有极强的扩展性。

问题三:PoS 机制优势、问题及解决办法

Rudy:我注意到您刚才总结公链的安全性问题,第 2 点是共识机制安全性。咱们的访谈系列名叫「PoS 百家谈」,您觉得 PoS 机制的优势在哪里?现在是否还存在安全性问题?是否可以找到办法解决问题?

顾荣辉:PoW 的资源消耗过大,效率不够高,也不适用于新的公链。新的公链很容易被黑客利用在网络规模未成之前进行 51% 攻击。

PoS 机制可以很好的解决上述问题,但也有不足之处,比如无利害关系问题,这个问题可以让恶意矿工有机可趁,引起硬分叉,需要用不同的协议进行约束和规范,比如以太坊使用了 Casper。

PoS 相比 PoW,实现更为复杂,在功能安全性和工具链安全性上有更多隐患。目前最好的解决办法,还是使用 CertiK 的安全服务吧。

Rudy:

是的,还有现在比较流行的 Slush 机制解决无利害问题,不过确实 PoS 更加复杂,可能也是它不太消耗资源的代价吧。

顾荣辉:世界上没有免费的午餐。

Rudy:近期 CertiK Chain 的测试网已上线,InfStones 也是测试网首批验证人(节点)之一。我们发现 CertiK Chain 采用了 DPoS 共识机制,请问 CertiK Chain 在做共识机制的选择时出于什么考虑在 PoS 与 DPoS 中选择了后者呢?

顾荣辉:不同于 PoS,DPoS 的 token 持有者并不投票验证区块,而是投票去选举代表,由代表来验证区块。

因此 DPoS 的矿工是协同工作,而不是相互竞争来生产制造区块。以部分集权为代价提高出块时间,有拓展性强、网络资源消耗小、共识时间短、吞吐量高等优点。缺点是功能安全性及节点安全的隐患更大,更为负责。不过这点正是 CertiK 的优势所在,所以我们选择了 DPoS。比如节点安全,CertiK Chain 会使用 CertiKOS 作为节点的运行环境,可以提供一站式的安全保障。我们也希望之后和 InfStones 合作,在更多的节点上部署 CertiKOS。

Rudy:感谢您的补充。InfStones 也是极为看重节点运行安全的全球节点服务商,希望与 CertiK 的安全技术优势多合作。

顾荣辉:已经有合作了,期待进一步的合作。

问题四:Staking 与矿机挖矿的异同、作用

Rudy:好的最后一个问题,说起 PoS/DPoS 公链就难以不讨论 Staking (投票挖矿),这也是最近非常火热的概念,您如何看待 staking,它与矿机挖矿有哪些异同,会给项目的生态带来什么?

顾荣辉:这里我尽量用最易懂的方式来解释,可能不是完全准确。

就像中本聪在比特币白皮书里所说,去中心化的共识难点在投票权上,理想状态下是“一人一票”,但网络上很难定义或验证“人的身份”,防止伪造。所以 PoW 共识其实可以理解为是“一 CPU 一票”,这里通过验证“CPU”的算力,来验证“CPU 的身份”,所以矿机和矿场才应运而生。

与通用 CPU 不同,矿机就是专门来投票的 CPU,挖矿的过程就是矿机通过算力证明自己合法投票权的过程。

PoW 问题就是资源的浪费与效率的低下。但是我仍然认为 PoW 是简洁和优美的,这些问题是比特币共识必须的代价,也是值得的代价,毕竟没有免费的午餐。但是 PoW 并不适合所有的去中心化应用,也并不适于所有的公链。

PoS 机制可以理解为“一定量的币一票”,相比于 PoW 更加高效,更轻量级,更适用于新兴公链和对性能有较高需求的合约 /DApp。但像之前所说的,PoS 失去了 PoW 的简洁与优美,实现起来复杂度更大,依赖的工具链更长,安全隐患也更大。这也是我们成立 CertiK 初衷之一。

问题五:DeepSEA 语言与 Move 语言对比评价

Rudy: 有听众给我私聊了几个问题,时间的关系我挑选一个向您提问:CertiK 在语言层面做了创新做出了 DeepSEA 语言,Libra 最近也推出了 Move 语言,请顾教授比较评价一下两种语言吧。

顾荣辉:这个问题很好,我们曾专门写了一篇文章来作对比。点击此处查看文章

我在这里稍微解释一下主要的区别:

  1. MOVE 也强调了形式化验证,和 DeepSEA 都是“验证友好”的,区别是 DeepSEA 可以对接到我们的深度规范验证引擎上,很多情况下可以给出自动的证明;

  2. MOVE 的编译器目前没有提到任何安全保障,DeepSEA 的编译器是完全验证过的,保证不会引入新的漏洞。

大家有时间可以读一下我们的文章,写的更加全面。多谢大家的问题,非常感谢 @Rudy@InfPool 的主持与提问,非常开心。

Rudy:好的,之后的整理稿中我们也会加上文章的链接~感谢顾教授今日的精彩回答。由于时间的关系,今日的访谈也走到了尾声。稍微总结一下:

公链的安全性是相比智能合约更重要的问题,它是区块链可信赖生态的基石、CertiK 与 CertiK Chain 在安全验证作出的贡献,以及与其他公链的合作,将会为区块链生态的价值保驾护航。

PoW 问题是资源的浪费与效率的低下,但是顾教授仍然认为 PoW 是简洁和优美的,PoS 更加高效与轻量级,但实现起来复杂度更大,依赖的工具链更长,安全隐患也更大。好在如同 CertiK 这样的团队以及其他贡献者们,会在安全性与其他方面继续为 PoS 的完善作出努力。

InfStones 很荣幸成为 CertiK Chain 的首批节点之一,未来也将继续关注 CertiK 主网动态,等待 CertiK 开放 Staking 之后,InfPool 无限矿池也会第一时间接入,为大家提供给 CertiK 进行投票挖矿的渠道。

再次谢谢顾荣辉教授 ,感谢您今天能做客 InfPool 无限矿池「PoS 百家谈」,祝 CertiK Chain 发展顺利!谢谢各位参与 InfPool 无限矿池”PoS 百家谈“,这是我们的第 2 期,我们下期再见!

顾荣辉:再次感谢大家!