区块链行业流行一句话「Don’t trust, verify」,然而实际上,并不是每个交易者都会亲自参与验证,因为验证者必须是一个全节点,而成为全节点成本并不低。新型加密货币协议 Coda 通过使用 ZK-SNARKs 零知识证明实现了一种人人可成全节点和验证人的加密货币网络。

采访 / 撰文:LeftOfCenter

每个人都在说区块链世界中的底层公链赛道缺乏创新的亮点,每个等待主网上线的公链新手都面临着巨大的挑战。你确定这样的信息是准确的?实际上,有不少新锐项目正在快速浮出水面,比如这个:今年 4 月,来自硅谷的区块链公司 O(1) Labs 获得了 1500 万美元融资,不乏明星风投机构付出真金白银,包括 Accomplice、Coinbase Ventures、Paradigm、General Catalyst 和 Dragonfly Capital。

那么,O(1) Labs 究竟有何独到之处能够获得这些区块链顶级风投的青睐?

事实上,O(1) Labs 的核心优势是旗下产品 Coda。作为一种新型的加密货币协议,它宣称可将区块链从几百 GB 压缩到只有几条推文的大小,从而以同等性能达到支持手机和浏览器运行全节点,最终为越来越臃肿的区块链「减肥」。

Coda 表示,之所以能实现这一点,得益于其核心技术优势,即使用 ZK-SNARKs 零知识证明压缩数据的解决方案。

也许你听过将 SNARK 技术应用于安全和隐私保护,但你可能不知道 SNARK 还能被用于数据压缩,而它的高级版「SNARK 递归组合」则可更加高效的为区块链减肥。ZK-SNARKs 零知识证明,原本是以一种隐私和安全实现为人所知,比如著名的安全隐私货币 Zcash 就是使用的该技术,然而,Coda 却将零知识证明用于数据压缩,最终实现区块链扩容和高度去中心化的加密网络。

以上这个介绍读起来就几句话,但是如若从根本解释清楚其原理及实现方式,却需要多篇世界顶级密码学家论文的解释和证明。

好在链闻记者近日在 Dragonfly Capital 于北京举行的 Dragonfly Capital Crypto Summit 上见到了 Coda 创始人兼 CEO Evan Shapiro。我们抓住了他,与他共同乘坐大巴车前往某一会议的途中,在北京拥堵的三环路上,用了 40 分钟时间,请 Evan Shapiro 用最简单易懂的语言,向链闻的读者说清楚:

  • ZK-SNARKs 零知识证明的运作原理是什么?
  • 零知识证明的高阶版 SNARK 递归组合到底是一种什么神奇的存在?
  • 以及,为什么说「Snarketplace」零知识证明市集是 Coda 经济模型中最有意思的部分?

「ZK-SNARKs 零知识证明」本身极其难懂,和北京高峰期的路况一样让人头疼,但是 Evan Shapiro 的讲解却清晰明白,这足够成为链闻的读者们了解「用零知识证明实现区块链减肥」这个创新实践的入门教材。

Enjoy~

注:采访内容在不影响原意基础上有所编辑。

与扩容新玩家 Coda 创始人同乘大巴:迅速读懂如何用零知识证明实现区块链减肥Coda 创始人兼 CEO Evan Shapiro

1、请用简单的方式介绍 Coda 到底是做什么的?

Coda 是一种新型加密货币协议,以实现更加去中心化的加密货币为目标,目前来说,达到真正去中心化的加密货币只有比特币和以太坊两个,然而实际上,你很难以一种真正去中心化的方式去使用它们,因为下载一个区块链全节点都需要很长的时间。每秒只能处理大约 10 笔交易,需要几周时间才能下载一个以太坊节点。

我们看到一种可由任何人验证的加密货币协议的未来趋势,实现这种未来的第一步是通过向每个人提供一种不可撤销的公共分类帐本和状态的功能。

Coda 作为一种新型协议,旨在实现一种可由用户参与验证的软件开发成为可能。和随着交易增长而变得越来越臃肿的巨型区块链节点不同,Coda 通过使用 ZK-SNARKs 零知识证明为区块瘦身,可将区块链的大小从几百 GB 压缩到只有几条推文的大小,从而以同等的性能达到支持手机和浏览器运行全节点,同时保证高度的安全性,最终实现一种可信、无需允许和人人可访问和加入的加密货币网络。

2、听起来 Coda 主要竞争优势是技术,那么 Coda 用到了哪些独特的技术?

Coda 协议的核心在于 zk-SNARK 的使用,具体来说是 SNARK 递归组合。

首先解释一下 zk-SNARK 零知识证明,是一种类似哈希函数的加密原语,它提供一种计算证明,让验证者不必知道任何相关信息的情况下,相信某个论断是正确的,也就是说,验证者如果使用相同数据运行计算,也可得出相同的结果,但验证者不必亲自运行它。因此,我们可使用 zk-SNARKs 验证任何计算,例如验证一个区块中的交易,然后创建一个该交易的 SNARK。该 SNARK 可证明一个区块交易历史记录的准确性,而无需显示所有交易,这可有效地将一个区块的大小压缩到单个 SNARK 的大小(大约为 1kB)。SNARK 可验证所有规则以达成共识。

如果一个 SNARK 的生成不是诚实的,则是无效的。网络上任何人都可以通过 Raspberry Pi 或智能手机等设备即刻查验该内容。

然而,为每一个区块生成一个 SNARK 证明并不是一个完美的解决方案,因为随着生成的 SNARK 证明越来越多,这将导致其线性增长,尽管程度要比现有的区块链小得多。

因此,Coda 采用一种SNARK 递归组合来解决这个问题,SNARK 递归组合是指为多个 SNARK 证明创建一个 SNARK 证明,可将这些 SNARK 证书以递归结构链接在一起,实现了让区块链保持约 20kB (SNARK +尾部 Merkle 路径)的恒定大小。

因此,每生成一个新区块,都会创建一个新的 SNARK 证书。通过创建包含此前证书的单个 SNARK,用户可以在某种意义上创建单个「巨型」SNARK,不仅可证明该区块链的整个交易历史(这意味着从创始区块跳至当前状态的所有证明),同时还保持单个证书的恒定大小。

现今各大协议将吞吐量提高到数千笔交易 / 秒,将会产生大量需要验证的数据,因此会出现增长速度超过验证速度的局面。SNARK 可将 Coda 区块链保持在恒定大小,因此可减少验证交易所需的数据,将数据压缩至多个数量级的水平,从而让实现高吞吐量成为可能。

3、 zk-SNARK 零知识证明技术一直被用于隐私和安全保护,我们从来不知道它在数据压缩方面的能力,竟然可以用于区块链扩容上。事实上,Vitalik 曾经发布过一篇研报谈到 zk-SNARKs,可将以太坊链上交易吞吐力从每秒 15 笔交易提升到每秒 500 的交易量。那么,你觉得作为一种链上扩容方法,它比其他扩容方法好在哪里?

比如说分片技术,其实它不能解决所有问题,目前分片还有一些限制,比如速度特别慢,并且还引发了其他的问题,导致使用加密货币变得很复杂。我的意思是,加密货币本来就很复杂了,但现在分片技术让它变得更加复杂了。在还未实现之前承诺要实现的功能之前,想要实现单个数据库的交易速度也不会很快实现。不过我觉得所有这些不同的扩容解决方案将会共存,但是,它们各自的水平和效果不同。我认为当 Eth2.0 一旦启动,用户将会觉得非常难用,可能会将更多的人推出系统之外,同时,也让更多人望而却步。

4、你认为以太坊会采用 Coda 类似的解决方案进行扩容吗?

我觉得以太坊不大可能使用 Coda 类似的解决方案,因为这是两种完全不同的协议,其运作原理完全不一样,以及还有旨在有效实现零知识证明的众多加密原语、哈希函数、公钥加密学等不同的选择。

此外,我们的技术协议也是基于零知识工作原理的,这些东西如果要改,变动会非常大。因此,我觉得以太坊并不会采用我们这种以一种轻节点的下载方式实现零知识证明扩容解决方案,如果要采用零知识证明,我觉得以太坊倒有可能在顶层采用它。

5、目前或未来,Coda 具体使用场景和用例是什么样的?

Coda 定义了一种新型协议,允许开发者开发可由用户参与验证的软件,无需下载数百 GB 数据,也无需委派授权,让终端用户通过浏览器或通过应用轻松触达区块链。

想象一款应用程序,比如超轻量级别钱包,终端用户无需相信开发者就可执行验证过程,通过运行任何设备,包括智能手机、浏览器或功能手机,成为一个验证节点。

最终可能出现的用例有:一个可让用户确切查看数据去向和访问者的社交网络,一个可确保密码安全性的浏览器扩展,比如例如 HTTPS 锁;一个不是基于种族或经济状况来显示的可证的广告;;隐私合规自动化(比如 GDPR);完全可验证且可审核的选举。

6、今年 9 月,加密货币交易所 Coinbase 透露即将增加对 17 种加密货币的支持,其中之一是 Coda,其他还包括一些明星区块链项目,你觉得 Coda 在 Coinbase 上架的可能性有多大?

我认为这是对 Coda 的背书,但我们提前并不知道这个。我们非常尊重 Coinbase 的选择,今年 4 月,Coinbase Ventures 还对我们进行了投资,此外,此前, Coinbase 托管、钱包、USDC 和 Libra 的相关业务负责人 Emre Tekişalp 也加入了 我们的团队 O(1) Labs ,负责 Coda 的商务拓展。可以说,Coinbase 以各种方式在支持 Coda 的生态系统。

但我觉得最为重要的一点是,Coinbase 以上线并支持所有符合其技术要求和合规要求的代币为目标,这为监管机构提供了一种清晰的标准,即哪些项目是合法的。

7、在 Coda 网络经济模型中有哪几种角色,它们分别出于什么动机工作,从而维持网络运转?

在 Coda 网络中,主要有两种角色:Staker 和 Snark-workers,分别对应区块链系统中的两种基础角色,区块生产者和验证者。

其中,Staker 对应的是 Coda 网络中的区块生产者,类似于 POW 中的比特币矿工或 POS 中的验证者角色,在 Coda 网络中,任何人都可以通过质押 Coda 的代币选择成为区块生产者,从而获得区块奖励的机会。

而 Snark-workers ,作为 Coda 网络中的全节点,它们通过压缩 Coda 网络中的数据和生成 zk snarks 交易证明,从而起到负责监测和验证交易的诚实性的职责。

在 Coda 网络的经济系统中,区块生产者 Staker 需从名为「Snarketplace」的市集中购买这些 Snark 证明,这就产生了一个二级激励机制,从而将一部分区块奖励让渡给付出劳动的 Snark Worker 们,以奖励他们帮助压缩交易节点。

这个叫做「Snarketplace」的市集是面向 snarks worker 的,其中既有挖矿的元素,也包含经济动力学,它是整个 Coda 网络系统中最有意思的部分。在「Snarketplace」市集中,所有全节点互相竞争并出售 zk-SNARK 证明,任何人都可加入,随着市场动力和竞争的加剧,zk-SNARK 证明的费用将会逐渐降低,这将对 Coda 网络中的终端用户也会有有利。

8、目前处于哪个阶段?开发进度如何?主网将什么时间上线?

过去两年来我们一直在开发协议,测试网已经于今年 7 月上线,我们还成立了测试网顾问委员会,旨在推进 Coda 协议的开发,其中 Cosmos 研究总监 Zaki Manian、前 Tezos 开发者 Luke Youngblood 将担任前两名技术顾问。Testnet 顾问委员会将使我们能够更快地迭代到主网候选人。

我们一直在进行测试,目前正在测试所有的核心功能,以确认这些核心功能如期运转。

此外,我们的社区建设也在开展,目前,有 120 多人下载节点运行,其中 50 多个是技术型用户。我们希望能够进行更多的对抗性测试,以创建更好的开发者工具。

我们预期是明年早些时候主网上线。

9、Coda 开发了自己的公链,那么,未来是否考虑过跨链呢?

跨链非常重要,Coda 的核心功能就是这些 Snarks 零知识证明,验证大量数据,不过目前这不是我们考虑的优先级,未来我们肯定会考虑跨链方面的事情。

10、Coda 是否支持智能合约?

Coda 主网发布期,会支持一些有限功能的智能合约,比如标准化代币、时间锁定等功能。
未来当然会加入更全面的智能合约功能,但鉴于我们的时间表和优先级,在上线时,将只定位一小部分使用且易于推广的功能。

11、和大部分区块链项目选择的编程语言不同,Coda 选择了函数式编程语言 OCaml ,使用这种语言有什么优势?

OCaml 是静态类型的函数式编程,能保证安全性和清晰度,这对于快速迭代并保持正确性至关重要。OCaml 的类型系统更易于编写正确的程序,同时,我们觉得,人们会越来越适应函数式编程。