对话Scroll张烨、Cysic Leo Fan:证明者网络和 zk 硬件加速

原文作者:ECN

原文来源:ETH中文

引介

这是去中心化 Rollup 访谈系列第三期,本集从 “去中心化证明者网络以及硬件加速” 的角度探讨 rollup 去中心化。我们邀请到了 Scroll 联合创始人 Ye Zhang 以及 Cysic 联合创始人 Leo Fan,针对 ZK 电路、硬件加速具体是在加速什么什么、一个开放的去中心化证明者网络是怎么样的、zk 生成的挖矿市场与比特币的 PoW 挖矿机制的区别等等这些社区关注的问题进行了讨论。同时 Ye 和 Leo 都分别分享了他们团队在 prover 网络和 zk 硬件加速市场做的一些研究以及将来的部署。

GPU

Host: Franci

本期嘉宾:

  • Scroll 联合创始人 Ye Zhang, twitter @yezhang1998
  • Cysic 联合创始人 Leo Fan, twitter @leofanxiong

往期

第一期:如何去中心化 Rollup?

  • Arbitrum 研究员 Patrick McCorry

第二期:共享排序器和 L2 共识

  • AltLayer Network 创始人 Yaoqi Jia
  • Scroll 研究员 Toghrul Maharramov
  • Starknet Exploration Lead Abdelhamid Bakhta

预告

第四期: 数据可用性和去中心化存储

  • EthStorage 创始人 Qi Zhou

收听

点击订阅 Podcast,了解更多:

https://ecnpodcast.fireside.fm/decentralized-rollups-series-3

Youtube:

https://www.youtube.com/watch?v=_cOqoStrRvQ

小宇宙:

https://www.xiaoyuzhoufm.com/episode/648f1f04a328ba2d981524e2

时间戳

– 00:46 Zhang Ye 介绍

– 01:27 Leo Fan 介绍

– 02:45 解释零知识证明

– 05:27 zk-Rollup 中使用的 zk 电路是什么?

– 07:05 ZK 电路与硬件加速之间有关联吗?

– 09:10 硬件加速是在加速什么?

– 12:16 Prover 在 zk-Rollup 中扮演什么角色?

– 14:48 介绍 Scroll 在做的事情

– 16:19 去中心化 prover 网络,保证网络的可靠性以及激励市场提高 proof 生成的效率

– 21:06 Scroll 目前对于去中心化 prover 的计划与进展

– 26:55 主要的硬件方案有哪些,Cysic 的路线图

– 29:24 Scroll 会如何考虑硬件加速方案?

– 32:19 zkp 硬件加速市场的供给和需求

– 35:43 zk 生成的挖矿市场与比特币的 PoW 挖矿机制有什么区别?

– 40:20 怎么理解硬件加速有利于 prover 网络的去中心化?

嘉宾介绍

Ye

我叫 Zhang Ye,是 Scroll 的 Co-Founder。我主要做的是 ZK Research。具体而言就是 ZK Hardware Acceleration (ZK 硬件研究),怎么通过硬件去把 prover 这个过程做快。以及一些 crypto 和数学的一些算法,就是 magical 背后的一些数学原理。最近专注在 zkEVM,Scroll 要构建的一个 zkEVM 的 zk-Rollup Network,要和 EVM 兼容,所以更 focus 在应用上。以及其他的一些相关的协议研究。

Leo

我是 Leo Fan,是 Cysic 的 Co-Founder。我之前是在 Cornel 拿的 PhD,是密码学方向。我跟 Ye 一样,都是做这种算法研究的。我之前的 research 偏后量子密码的研究,然后最近几年才开始做 ZK 相关的算法研究,之类的。Cysic 是要用硬件来加速零知识证明的 “证明生成” 的过程,使这个不再成为大家的一个 bottleneck。

访谈部分

零知识证明解读

解释零知识证明

Ye

从最基本的一些概念讲起,先解释一下零知证明这个概念。零知证明主要干的一件事情就是,有两个角色:一个叫 Prover 证明者,一个叫 Verifier 验证者。证明者可以向验证者证明某一个 statement,而不泄露自己知道的一些秘密的一些消息。我给些具体例子,理解这个 statement 究竟是什么,这个 information 可能是什么。

假设你在一个班级里面,老师发一道数学题,比如说解一个方程,然后 A 把这个方程给解出来了,B 没有解出来。A 呢希望向 B 炫耀说我解出来这个解。一个直接的方法就是他直接把这个结果告诉 B,但是这样的话,B 也会知道这个方程的解,所以他达不到 “既不泄露这个方程的解,又向 B 证明知道这个方程的解” 的目的。所以这就是一个典型的案例,通过零知识证明 A 可以向 B 证明,我知道这个方程的解,然后同时不泄露这个方程的解具体是什么。

然后用一个更 blockchain 的例子,哈希。比如说哈希的 output 是 0,A 可以向 B 证明说我知道某一个输入,一个 pre-image (预映射),使得 hash 这个 preimage 输出是 0。因为之前的话,你可能需要 proof of work,需要很多的算力才能找到这个 preimage,才能找到这个 0 的 mapping (映射)。A 可以向 B 炫耀说我知道这个 pre-image,但不泄露具体的内容是什么。

或者更 blockchain 的一些案例,零知识证明可以增加区块链隐私这个特性。因为 blockchain 的公开这个透明性也带来很多隐私的问题。比如我给你发的每笔交易都需要广播到一个公开的网络里面。因为那笔交易需要包含 A 给 B 发了多少钱,每一笔交易都是都是公开透明的。这样有好处也有坏处,坏处就是没有任何的匿名性可言。你给一个人发了一笔钱以后,你立刻知道他的地址对应的很多 link。那么通过零知识证明,你可以给一笔交易 attach 一个proof,证明该笔交易是有效的,而不泄露这笔交易的具体内容。

之后的话,就像 zk-Rollup 这样的应用,又可以给区块链增加这个可扩展性。它可以把很多笔交易打包在一起,生成一个证明。

这大概就是零知识证明的概念和一些应用。

zk-Rollup 中使用的 zk 电路是什么?

Ye

具体什么叫零知识证明的电路呢?这有关你究竟是怎么使用零知识证明。刚才介绍零知识证明的概念,你可以证明一个东西而不泄露其中的秘密。接下来就是你怎么真的去给一个 program 生成这种证明呢?这就牵扯到零知识证明的具体计算过程。

比如说刚才的方程也好,或者说 hash 也罢,他都是在证明一个 function 的 input。在起始的 input 之下,得到了某一个 output。所以相当于,你要证明这整个 program 的运行是对的,但是你需要给他生成一个比较数学、比较 crypto 的一个密码学的 proof。

那首先,比如说我们传统地写一个 program,可能用 C++ 或各种 high-level 语言去写。同样地,对 ZK 而言也是一样的,如果你要给一个程序生成一个 proof,那你首先需要把这个程序通过 ZK 的语言(他不是C++,他是一种特殊 ZK 的语言),把它 (encode) 编码出来。

然后这个具体语言是一个非常数学,有点类似汇编,但是更数学的一个语言。只能包含比如说乘法、加法和一些最基本的一些门操作。然后去把你原始的 program 用这种格式表示出来。然后当你把这个程序用这个特定的 ZK 电路这个语言给写出来以后,你再运行一套密码学的算法就可以生成证明。

简而言之,如果你要想给一个 program 生成证明,那这个 program 再用 ZK 这个语言重新写出来,这种 encoding 的方式就叫 ZK 的电路。

zk 电路与硬件加速之间有关联吗?

Ye

这是一个很好的问题,因为经常大家提到电路的时候会想到芯片,或者说一种物理上的电路。但其实 ZK 的电路是一种代数电路,它是 program 的一种代数的编码。所以你可以理解为,ZK 电路就是一堆数学的 A 乘 B 等于 C 这样的东西。它和你拿到一块电路板这种是完全不一样的。

但是也有一些相似的地方,比如你写 ZK 电路的时候,也要从基本的门电路开始搭。因为很有限,只能用加法、乘法和一些基本的框架搭,然后它有自己的 layout。所以如果仔细思考的话,有很多相似的地方,但是具体计算过程完全不一样。

ZK 电路比较强大的一点是因为,它是一些数学上的东西,比如它可以验证 A 乘 B 等于 C 等等这样的一些数学的关系。但物理电路更多是你从一个 input 运行通过一个芯片,然后得到你的结果。

所以这是一个区别。比如说你要在电路里面做 A 除以 B 等于 C,你可能要写一个除法器,你要真的输入 A、输入 B,然后除法,得到 C。但是你在写 ZK 电路时,只用假设上天给了你 A、B、C 三个 witness,你只要证明 B 乘 C 等于 A 就可以了。这个就是 ZK 电路和物理电路的一个区别。

硬件加速是在加速什么?

Ye

然后通常大家讲的硬件加速,其实不是加速 ZK 电路这个过程,因为 ZK 电路只是你的原始程序的另一种表示方式。就是你原始有个哈希,我现在用 ZK 电路写了一个哈希,它还是一段程序,它只是用 ZK 电路写出来的一个程序而已。

但你实际运行的是什么呢?是你把这个程序/这个 ZK 的电路作为 input,去跑一个密码学的算法 —— ZK 的算法。这个算法本身需要很长的时间,比如说几个小时或者说上天。它可能在运行椭圆曲线,多项式的一些计算,因为这是一个具体的密码学算法,它要把这个电路变成一个 proof。然后这个过程非常的密集,而且需要的时间很多。这时候才需要一个加速器,去加速生成 proof 的这个过程,而不是写电路的过程。

所以写电路你更多可以想象成一种 program 的 pre-processing,它要预处理这个 program 变成一个电路。因为只有当你拿到这个 ZK 电路的时候,你才可以给它生成 proof。但实际加速的是这个生成 proof 的过程,就是假设你已经有 ZK 电路,然后你要写一个 proof。这时候你需要一个 ASIC,需要 GPU 去把整个计算 proof 的这个过程给生成出来。

所以这就是区别,你加速的是这个已经有了 ZK 电路以后生成证明的过程。

Leo

ZK 里面的电路就相当于我们用另外一种表达方式,来表达 ZK 可以理解的这样一个数学的抽象模型。然后把这个数学抽象的模型拿去用相应的 back-end,再生成相应的proof。在这个 back-end 生成 proof 的时候是需要硬件加速的,就是 ZK 的电路跟我们的硬件加速实际上是两个不同的事情。只是说我们可以通过硬件加速来提高整个 ZK 证明生成的效率。

Ye

刚才忘记补充一点,最初问题是说,如果不同的 ZK 电路能不能用同一套加速,肯定是可以的。因为不同的 ZK 电路,比如说不同的哈希、不同的程序,都是你要把它写成不同的电路。所以说只是 ZK 电路不一样。

但是就像 Leo 说的,其实它加速的过程是有了电路以后生成证明的过程。但生成证明那个算法是一个 deterministic (确定性) 的一个 crypto 的算法。也就是说它处理任何的电路都是同一套算法,所以你相当于用 ASIC 加速了这个生成证明的过程,但是不同的电路都是你不同的输入。相同的加速器是可以加速不同的 ZK 电路的。

Prover 网络的中心化和去中心化

Prover 在 zk-Rollup 中扮演什么角色?

Ye

我先简单介绍一下 zk-Rollup 大概解决了什么问题。它解决了以太坊的扩容问题。以太坊是一个 P2P 的网络,非常的去中心化,里面的每个交易需要传到每个节点,每个节点都需要执行一遍。但是越去中心化,效率就越低,因为它的节点成千上万,可能每个节点都要算相同的计算。这样的话会导致整个网络非常昂贵,而且处理交易很有限。

zk-Rollup 核心思想是说我可以把一大堆的交易从 layer 1 拿到线下来。然后我可以生成一个 ZK proof,这个 proof 可以证明一万条交易是对的,就是生成一个小的 proof 证明一万条交易是对的。这样的话,我们不用把这一万条交易发在以太坊网络里面,我们只需要把这一万条交易发在 Scroll 的网络里面,然后 Scroll 去生成一个 proof。只要把这个小小的 proof 以及一些其他的一些数据递交上链,以太坊只要验证完这个 proof 就可以知道这一万条交易都是对的。

这样相当于以太坊的整个网络不是在算一万条交易,而是在验证一个非常小的 proof,所以它比之前会会高效非常多。假设以太坊一秒钟只能处理十条交易,但每一条交易都是在验证一个 proof,而每一个 proof 又可以证明一万个交易是对的。那相当于你可以把它可扩展性提高一万倍。当然这个是比较浅显易懂的说法,还有很多具体的问题。但是这就是核心思想,把一堆交易生成一个 proof,把 proof 上链,然后让每个节点去做验证。

那这时 prover 扮演什么角色呢?首先 zk-Rollup 需要一个出块节点,比如说需要接受这一万条交易,出块;然后需要一个证明节点,prover 需要去把这一万个交易生成一个 proof。它主要是证明 zk-Rollup 网络每个块的有效性,然后为之生成 proof。

这个 prover 可以是中心化的,也可以是去中心化的。但目前来说,大部分都是相对来说比较中心化,因为它可以用很多 GPU。算 proof 是一个比较确定性的一个过程,就是我有块,然后你跑这个算法,然后帮我算出来就好了。它是一个相对来说比较固定的一个过程,所以说它通过比如分布式,或者说一些其他集群等等方式都可以生成出来的。

介绍 Scroll 在做的事情

Ye

Scroll 想做的事情就是搭建一个 ZKEVM 的 zk-Rollup。什么是 ZKEVM 呢?我刚才提到的,我们要给一万条交易生成一个 proof。那么回到了之前提到的怎么生成一个 proof 呢?首先要把你要证明的那个程序用 ZK 的语言去表达出来。ZKEVM 其实就是用 ZK 的语言把 Etherian Virtual Machine (EVM) 这个东西用 ZK 语言写了一点。因为很久以前大部分的人做 zk-Rollup 生成 proof,它只能给特定的用例,比如 DEX 给转账生成证明,所以你只要把转账的逻辑编码成 ZK 语言就好了。

但是我们现在想做的事情是一个通用型的网络,而且我们不希望那些写合约,写 solidity 的人去用 ZK。所以说我们构建了一个 EVM 的 ZK 版本。这样的话对开发者而言所有的体验和以太坊是一模一样的。他们依旧面临的是 EVM,但是我们实际是会把 EVM 的逻辑写成 ZK 语言。然后在证明的时候,证明所有的EVM 交易都是对的。

更简单的理解就是 Scroll 是一个吞吐量更高,更快、更便宜,但是安全性和以太坊一样的一个网络。它的神奇在于我们可以接受交易,然后生成 proof。而不是说把它广播,然后让节点形成共识这样。所以 prover 在里面扮演一个证明每个块有效性的作用。

去中心化 prover 网络,保证网络的可靠性以及激励市场提高 proof 生成的效率

Ye

这是一个很好的问题。为什么我们一定要去中心化证明者市场呢?就像你说的,其实我们自己算也是完全可以的,并且目前大家都是这样做的。但为什么我们一定要想做这样一个网络呢?有这些好处:

首先它保证了网络可靠性。因为 zk-Rollup 核心思想就是如果 scroll 或者 layer2 要把整个网络关掉,不再运行节点、处理交易。用户依旧有能力去生成 proof,把钱从 layer1 提现出来,拥有这样一个能力。如果说我们 prover 由于中心化,导致宕机了,或者出现很多的问题,这时整个网络的可靠性和鲁棒性是形成问题的。所以相当于如果你有很多去中心化的备份的话,就是相当于永远有 prover 在帮你生成 proof。

第二点。像我说的,计算是确定性的,它不同于 proof of work,它没有随机性,你只要把这个东西做快就好了。但是我们希望能够形成一种正循环,希望社区永远越 build 越好。因为 proof 生成得越快,将来在 layer1 提现的时间会越短,最终确定性会越短。所以我们希望把这个 proof 的时间做得越来越短。

而当且仅当构建一个 prover 的开放市场时,大家才会涌入。比如说像 Cysic 或者其他 ASIC 的公司,他们都在构建越来越好的 Zk prover。当越来越多人去构建越来越好的硬件,最后就会帮我们的平台去完善。因为假设这不是一个开放市场,只有我们自己产生 proof 的话,那做到一个程度可能已经没有动机,或者说我们永远需要雇佣更好的人去完善设计,去缩短最终确定性时长、减少开销。

但我们一旦把证明者市场打开,会激励更多的人把这个东西做的更快。我觉得这是一种正向的激励,有利于把你的 proof 做的越来越快,甚至比如说有 ASIC 以后可能能做一些更 crazy 的事情。所以就相当于激励把这个做快十倍再快十倍,因此会创造更多更新的一些可能性。

Leo

我觉得 Ye 刚才已经总结很好。现在 ZK 是整个区块链里面非常火的话题,有各种各样的应用,整个 ZK prover 的需求实际上是很大的。其实 Cysic 从一开始也是 open design 的。我们也是时不时会发布一些我们的数据,然后吸引整个社区大家一起来构建更好的 ZK 硬件,从而来帮助这些 ZK 项目,让他们不再有性能上面的瓶颈。

现在我们预估整个的市场虽然还很早期,但是我们是非常乐观的,我们觉得这是一个非常大的市场。这也是我们一开始投入那么多,先做 FPGA,后面变成 ASIC 的最重要的一个原因。

Scroll 目前对于去中心化 prover 的计划与进展

Ye

我们目前第一阶段的关注点还是推出我们的主网版本。就是我们先把我们的 ZKEVM 和 zk-Rollup 构建出来,然后先有一版稳定运行的主网版本。

同时我们团队自己内部在构建一些非常快的 GPU 方案,我们计划会把这个东西开源,然后任何人都可以去跑这个 GPU。并且我们其实已经发布了两篇学术论文,一篇是关于怎么用 ASIC 加速 ZK,以及我们也跟一些学术机构合作,华中科大、清华以及其他的学校合作。有一些开源的 GPU 论文,所以大家可以随时去看这个架构怎么设计。我们目前优化的方向就是怎么去把我们 ZKEVM 用 GPU 加速特别快。并且为了让 prover 比较去中心化,我们优化的目标是如何能把我们的 prover 算法能适用到非常廉价的 GPU上。因为比如说很早以前大家用 1080,然后后面可能又有 2080,后来有越来越好的 GPU。我们现在的一个优化目标就是如何能让 1080 这些更便宜的 GPU 也可以运行我们的 prover 算法。这样的话,可能就会有更多的人能参与进来,这就是我们一个大的目标。

关于对 prover 这块的具体计划,现在有一些 high level 的设计理念:我们不希望永远是最快的那一个 prover 会赢。因为它是一个确定性的算法,如果有人用 ASIC,有人用一种神奇的硬件,它能打败其他所有人的速度的话,那它永远会拿走所有的奖励。但这样的话,你的系统会变成一个比较脆弱的状态。相当于你永远依赖于最快的一个 prover,如果有一天这个 prover 离开你的生态,那对它来说是一个非常严重的破坏。我们是希望有更多备份。所以我们的设计理念是在一个时间窗口内,你可以相对合理地去提交 proof,只要你在这个时间线内提交就好。所以你用 ASIC 或一些其他的方式,可以节省你的能耗和一些成本。然后我们慢慢过渡,把这个时间窗口慢慢缩短,随着整个算力提升等等。这是我们的设计哲学。

但具体的计划我们还在制定,先保证稳定运行我们的网络,然后再去慢慢地让一些去中心化实体加入进来,之后再去把它完全打开。但我们的 GPU 之后所有人都可以访问和直接用,而且性能非常的好,并且也有开源的文档去支撑。

另外想补充的一点就是我们有三个价值导向:neutrality (中立性)、openness (开放性) 以及 community driven (社区导向)。我觉得去中心化 prvoer 是 community driven 和 openness 的一部分。

以太坊网络很强是因为它有一个非常巨大的社区,我们也一样,我们希望构建我们自己真正的社区。比如说 Cysic 他们这个硬件是我们生态系统的一部分。我们会主动的去办很多 workshop 和出一些教程去去帮助大家理解我们用的 zk 工具栈。这样会有更多的项目,甚至 100 个下一代的 zk 项目都用相同的 zk tooling,这样他们也可以从我们这个 prover 网络或者说这一代的硬件获益。不光是帮我们在build,而是我们在 build 一个很大的 community,所有的 zk 应用只要用同一套工具栈,可能将来都能用相同的 ASIC、相同的 GPU。我们相当于在给一个社区 build 一个大的框架和网络。这个是我们一个大的目标,但具体的 timeline 还在讨论。

解读 zk 证明硬件加速

为什么需要加速 zk 证明生成

Leo

我们一开始做 Cysic 的原因就是来自于我之前在 Algorand 的做的事情。我在 Algorand 做了 Algorand state proof,它本质上还是一个 zk proof,可以用在 cross-chain bridge。当我去年三四月份做完整个的 PoC 之后,我就发现整个证明生成的时间实在是太长了,差不多几分钟。我试了很多软件或者算法的优化都不能解决这个问题。所以我当时就想到用硬件来加速整个证明生成。因为 Algorand 希望整个证明生成在三十秒左右的样子,在其他方法不奏效的情况下,就只能用硬件来提升整个的效率。这其实跟密码学里面的一些过程很像,密码学里面有个很著名的算法叫 RSA encryption。RSA 一开始用当时的计算机跑也很慢,所以当时 RSA 这三个人出来就做了一个定制的硬件来去加速这个东西,其实同样的想法可以用到 ZKP 里面来。在 ZKP 用这种通用的硬件算得很慢时,我们就需要为他设计一些专用的硬件来推动整个社区的发展。

主要的硬件方案有哪些,Cysic 的路线图

Leo

其实我们做 Cysic 也是从 Ye 的一篇文章里边吸取了很多灵感。主要的方式有 CPU、GPU、FPGA 以及ASIC。CPU 就是比较通用的一个硬件,一般来说来说它算东西挺慢的,除非你用很多core,比如说 192-core CPU。当然这样的话,一般人是不太具备这个能力的。

第二就是 GPU,GPU 跟 FPGA 都是属于能够很快进入市场的。其实硬件里边主要有两个衡量标准:一个是 performance per dollar,另一个就是 performance per watt。

Performance per dollar 是指你一开始需要花费多少的资本去购置这个硬件。在这方面的话,其实 GPU是好于 FPGA 的,你在付相同情况下。因为 FPGA 由于自身的硬件的一些限制,他是没办法输出那么高的 performance。所以 GPU 在初期进入市场是一个非常不错的选择。这也是 Ye 他们 in-house design所选择的一个方向。

但是 Cysic 的目标是做 ASIC,为 ZKP 来设置一个通用的 ZKP 加速器。但在做 ASIC 之前,是需要在 FPGA 上面做很多测试和 prototyping 的事情。所以这个就是我们现在所专注的一个方向。虽然单个的 FPGA 打不过 GPU,但我们可以把很多 FPGA 连在一起,就可以比 GPU 高性能很多倍。然后我们在 FPGA 上面也可以做很多各种测试,可以帮助我们后面的 ASIC 设计。

Performance per watt 就是说,你如果去跑这些硬件的话,你收到的整个电费账单是多少。在这一方面,FPGA 跟 GPU 是在同一个 level 上面的。但是 ASIC 实际上在这两点都可以跑过 FPGA 跟 GPU 的,在出货量达到一定的情况下。这个就是现在的整个硬件的技术路线的概括。

Scroll 会如何考虑硬件加速方案?

Ye

其实 Leo 刚才有大概提到,我们其实之前做过很多 ASIC 或者 GPU 的研究。但是最终,至少我们 in-house 的方案,或者说开源出去的方案会是 GPU 方案。

因为构建 ASIC 和 FPGA 是需要非常特殊的专业知识和技能,你需要选 FPGA 版本的型号;需要知道怎么流片;需要知道整个供应商、整个供应链等等硬件公司去做的事情。一个软件公司很难处理这些工作。你需要研发成本,你需要各种的一次性成本。

但是 GPU 不一样,我们软件的工程师只要写一些代码,你只要有 GPU 都可以去跑这个东西。所以这是我们的设计哲学,我们想重用更多,甚至比如说以太坊矿工的一部分 GPU,一起来生成 proof。所以最后我们 in-house 综合考虑成本、多少人有这些设备,以及时间线 (FPGA 和 ASIC 的时间线会比较长),决定选择 GPU 这个方案。并且 GPU 的性能已经足够好了,所以我们短期会选 GPU。

但是只要有 ASIC 和 FPGA,他们想接我们网络的话,我们是非常欢迎的。现在有非常多家探索 GPU 方向的,比如说 Supranational;然后有探索 ASIC 的,像 Cysic、Accseal 等等;还有做 FPGA 的Ulvantanna、Ingonyama 等等。这些方案都是我们生态的一部分,我们都会给支持。如果他们有一些 prover 基准测试程序这样的问题,我们都会去帮忙回答。最终这些都是开放的。

但据我们目前的愿景来看,其实跟 Leo 的结论很相似,就是 FPGA 很适合过渡期。因为单个 FPGA 是很难打过单个 GPU 的,但是多个 FPGA 互联是可以打过 GPU 的。但是 FPGA 又很贵,而 ASIC 跟多个 FPGA 互联的性能很相似,但是留一次片可能需要上千万美金,需要等到明年中,需要很长的时间。所以就是为什么从实用性的角度,我们希望先用 GPU,然后最终大家会从社区,或者说不同公司所构建的越来越好的方案,通过 ASIC 慢慢地去把它做得越来越快。

Prover 网络和硬件加速市场的未来展望

zkp 硬件加速市场的供给和需求

Leo

Cysic 的目标是要做一个 ZK prover DAO,这个 DAO 里边会有各种各样的硬件去参与。这个 DAO 会跟很多 ZK 的项目进行合作,所以说需求端就是这些 ZK 项目。然后供给端就是这些 prover,Cysic 已经联系了 20 多家之前的一些矿场,他们其实是有这个设施去提供整个证明生成服务的,但是他们并没有这种研发的经验。所以 Cysic 一开始会给这些矿场提供 Cysic 的一些硬件,让他们加入整个 DAO,给整个ZK 社区提供这样的一个服务。

这其实对于整个 ZK prover DAO 来说是一个 jump start,因为 Cysic 就不需要自己花太多的时间以及太多的精力去设置各种各样的去中心化 prover,可以依赖于这些其他的、以及已有的设施来参与整个的证明生成的服务。当然在 Cysic 整个的 ZK prover DAO 里面,不仅仅会有 ASIC,也会有很多 GPU 在里面。这其实也是符合整个社区对去中心化 prover 的一个想法。

现在 Cysic 的主要的合作方很大的一部分都来自于扩容,然后还有做 layer1 的隐私的链,以及做跨链桥接的。还有一些做 ZK indexer 的,像 Axiom 和 HyperOracle,他们用 ZKP 来提高整个 index 的效率。最后还有一些做 ZKML 的,就是 ZK 和机器学习的结合。这还在比较早期的一个阶段,这大概就是 Cysic 在区块链里边的一些 partner。

这种 zk 生成的挖矿市场与比特币的 PoW 挖矿机制有什么区别?

Leo

我觉得这个取决于我们的合作方。就像 Ye 他们的 Scroll,他们有一个去中心化的设计理念在里边,也就是说并不要求大家谁快谁就可以拿到整个奖励。他们是希望大家在一个时间窗口内生成一个证明,然后你就有机会去拿到奖励。我觉得这是一个非常好的一个去中心化的想法。

这个市场并不会像之前比特币挖矿或者以太坊挖矿一样,变成一家独大。比如说比特大陆拿走超过半数的市场。这个市场不会是这个样子,它会是一个去中心化的方案,大家在这个市场里面得益于这些 ZK 项目的繁荣。大家做 prover 也会从里边获得很不错的利润,它并不会是一家通吃的方案。

Ye

在我看来 PoW 和 ZK 生成证明的最大区别,还是回到了我们前面说的,ZK 算法是一个确定性的算法。我们可以强行设置时间窗口,它还是一算完就结束了。你可以想象为,ZK 证明我们希望达到的结果是,比如说现在有一万个 prover,每个人都在做一些有用的工作,比如说给一万个区块同时生成 proof,从而摊销你的成本、增大吞吐量。因为相当于有一万个人在并行做这件事情。但是 proof of work 更像是一万个人在卷,第一个生成的人就先出一个块。所以一万个人大部分的工作都被浪费了。所以这是一个很明显的区别,我们的能耗和成本可能连以太坊的零点零几都不到。

而且硬件要求完全不一样,因为 proof of work 在算哈希、算很多无用功,这会导致之前以太坊的矿机可能都是弱 CPU 强 GPU 这么一个无脑的模式,但 ZK 是一个正二八经的算法。所以这是导致 proof of work 对机器的需求和 ZK 需求最大的一个差异。我们也需要很好的 CPU,而且这个 CPU 需要有很大的内存,这个是机器选型上的区别。因为 proof of work 就是你接入一个网络,用 GPU 去跑哈希,然后平行地去算就好。但 ZK 的话,prover 上面你需要有用 CPU 的,然后你再去用 GPU 去做一部分的计算,它类似于一个带有 CPU 的处理器,是一个整体。

所以说这是机器选型上的一个区别,就是依旧很大,你需要一个非常好的 CPU 才能去处理这些计算。但是传统的挖矿可能就是一个 GPU 的一个机器。总结就是:随机性和确定性;浪费和较少浪费;无用功和有用功。就像我刚才说的机器的选型上,可能 zk 对 CPU 的要求会更高。不过这得取决于哪个网络,可能之前 Filecoin 等等已经对 CPU 也有一定的要求。

Leo

我可以稍微补充一点,提供一些数据支持。就像 Ye 说的之前算哈希这些东西,它其实每个芯片都很小。比如说在比特大陆的矿机里面,它有几百颗这样的芯片。所以整个矿机的能耗非常高,都是在 3000 万到 4000 万左右的样子。

如果算 zk 的话,整个芯片相当于大很多,但是整个机器里面的芯片就很少。在整个算的过程中,芯片跟内存有各种各样的交互。所以我们预估整个机器的能耗差不多就在 400 到 500 万左右,其实就跟单卡的 GPU 是一个差不多的状态。

怎么理解硬件加速有利于 prover 网络的去中心化?

Ye

现在有更好的硬件供应商去生产更好的 ASIC,可能大家进入这个网络的成本会降低。包括我们开源算法以后,大家可能家里有 GPU 或者什么东西就可以去跑这个网络。相当于硬件加速可以降低成本、降低功耗,这样是有利于把进入 prover 市场这个门槛降低的,到时会有越来越多人去做这个事情。而且对于整个网络的吞吐量、稳定性、可靠性以及鲁棒性也都是有好处的。

Leo

我想补充的就是,如果有了硬件加速,可以在很短的时间内产生一个相对来说很复杂的一个 proof 的话,这对于大家去开拓新的应用也是有很多好处的。比如说之前要算一个几层的神经网络,用 zk 可能需要算几个小时。这个在大家看来就是完全不实用的一个方法。但如果用硬件加速的话可能这个时间会缩短到几分钟或者几秒钟。

转载声明:本文 由CoinON抓取收录,观点仅代表作者本人,不代表CoinON资讯立场,CoinON不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。若以此作为投资依据,请自行承担全部责任。

声明:图文来源于网络,如有侵权请联系删除

风险提示:投资有风险,入市需谨慎。本资讯不作为投资理财建议。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年6月19日 上午3:18
下一篇 2023年6月19日 上午8:18

相关推荐

对话Scroll张烨、Cysic Leo Fan:证明者网络和 zk 硬件加速

星期一 2023-06-19 8:18:15

引介

这是去中心化 Rollup 访谈系列第三期,本集从 “去中心化证明者网络以及硬件加速” 的角度探讨 rollup 去中心化。我们邀请到了 Scroll 联合创始人 Ye Zhang 以及 Cysic 联合创始人 Leo Fan,针对 ZK 电路、硬件加速具体是在加速什么什么、一个开放的去中心化证明者网络是怎么样的、zk 生成的挖矿市场与比特币的 PoW 挖矿机制的区别等等这些社区关注的问题进行了讨论。同时 Ye 和 Leo 都分别分享了他们团队在 prover 网络和 zk 硬件加速市场做的一些研究以及将来的部署。

GPU

Host: Franci

本期嘉宾:

  • Scroll 联合创始人 Ye Zhang, twitter @yezhang1998
  • Cysic 联合创始人 Leo Fan, twitter @leofanxiong

往期

第一期:如何去中心化 Rollup?

  • Arbitrum 研究员 Patrick McCorry

第二期:共享排序器和 L2 共识

  • AltLayer Network 创始人 Yaoqi Jia
  • Scroll 研究员 Toghrul Maharramov
  • Starknet Exploration Lead Abdelhamid Bakhta

预告

第四期: 数据可用性和去中心化存储

  • EthStorage 创始人 Qi Zhou

收听

点击订阅 Podcast,了解更多:

https://ecnpodcast.fireside.fm/decentralized-rollups-series-3

Youtube:

https://www.youtube.com/watch?v=_cOqoStrRvQ

小宇宙:

https://www.xiaoyuzhoufm.com/episode/648f1f04a328ba2d981524e2

时间戳

– 00:46 Zhang Ye 介绍

– 01:27 Leo Fan 介绍

– 02:45 解释零知识证明

– 05:27 zk-Rollup 中使用的 zk 电路是什么?

– 07:05 ZK 电路与硬件加速之间有关联吗?

– 09:10 硬件加速是在加速什么?

– 12:16 Prover 在 zk-Rollup 中扮演什么角色?

– 14:48 介绍 Scroll 在做的事情

– 16:19 去中心化 prover 网络,保证网络的可靠性以及激励市场提高 proof 生成的效率

– 21:06 Scroll 目前对于去中心化 prover 的计划与进展

– 26:55 主要的硬件方案有哪些,Cysic 的路线图

– 29:24 Scroll 会如何考虑硬件加速方案?

– 32:19 zkp 硬件加速市场的供给和需求

– 35:43 zk 生成的挖矿市场与比特币的 PoW 挖矿机制有什么区别?

– 40:20 怎么理解硬件加速有利于 prover 网络的去中心化?

嘉宾介绍

Ye

我叫 Zhang Ye,是 Scroll 的 Co-Founder。我主要做的是 ZK Research。具体而言就是 ZK Hardware Acceleration (ZK 硬件研究),怎么通过硬件去把 prover 这个过程做快。以及一些 crypto 和数学的一些算法,就是 magical 背后的一些数学原理。最近专注在 zkEVM,Scroll 要构建的一个 zkEVM 的 zk-Rollup Network,要和 EVM 兼容,所以更 focus 在应用上。以及其他的一些相关的协议研究。

Leo

我是 Leo Fan,是 Cysic 的 Co-Founder。我之前是在 Cornel 拿的 PhD,是密码学方向。我跟 Ye 一样,都是做这种算法研究的。我之前的 research 偏后量子密码的研究,然后最近几年才开始做 ZK 相关的算法研究,之类的。Cysic 是要用硬件来加速零知识证明的 “证明生成” 的过程,使这个不再成为大家的一个 bottleneck。

访谈部分

零知识证明解读

解释零知识证明

Ye

从最基本的一些概念讲起,先解释一下零知证明这个概念。零知证明主要干的一件事情就是,有两个角色:一个叫 Prover 证明者,一个叫 Verifier 验证者。证明者可以向验证者证明某一个 statement,而不泄露自己知道的一些秘密的一些消息。我给些具体例子,理解这个 statement 究竟是什么,这个 information 可能是什么。

假设你在一个班级里面,老师发一道数学题,比如说解一个方程,然后 A 把这个方程给解出来了,B 没有解出来。A 呢希望向 B 炫耀说我解出来这个解。一个直接的方法就是他直接把这个结果告诉 B,但是这样的话,B 也会知道这个方程的解,所以他达不到 “既不泄露这个方程的解,又向 B 证明知道这个方程的解” 的目的。所以这就是一个典型的案例,通过零知识证明 A 可以向 B 证明,我知道这个方程的解,然后同时不泄露这个方程的解具体是什么。

然后用一个更 blockchain 的例子,哈希。比如说哈希的 output 是 0,A 可以向 B 证明说我知道某一个输入,一个 pre-image (预映射),使得 hash 这个 preimage 输出是 0。因为之前的话,你可能需要 proof of work,需要很多的算力才能找到这个 preimage,才能找到这个 0 的 mapping (映射)。A 可以向 B 炫耀说我知道这个 pre-image,但不泄露具体的内容是什么。

或者更 blockchain 的一些案例,零知识证明可以增加区块链隐私这个特性。因为 blockchain 的公开这个透明性也带来很多隐私的问题。比如我给你发的每笔交易都需要广播到一个公开的网络里面。因为那笔交易需要包含 A 给 B 发了多少钱,每一笔交易都是都是公开透明的。这样有好处也有坏处,坏处就是没有任何的匿名性可言。你给一个人发了一笔钱以后,你立刻知道他的地址对应的很多 link。那么通过零知识证明,你可以给一笔交易 attach 一个proof,证明该笔交易是有效的,而不泄露这笔交易的具体内容。

之后的话,就像 zk-Rollup 这样的应用,又可以给区块链增加这个可扩展性。它可以把很多笔交易打包在一起,生成一个证明。

这大概就是零知识证明的概念和一些应用。

zk-Rollup 中使用的 zk 电路是什么?

Ye

具体什么叫零知识证明的电路呢?这有关你究竟是怎么使用零知识证明。刚才介绍零知识证明的概念,你可以证明一个东西而不泄露其中的秘密。接下来就是你怎么真的去给一个 program 生成这种证明呢?这就牵扯到零知识证明的具体计算过程。

比如说刚才的方程也好,或者说 hash 也罢,他都是在证明一个 function 的 input。在起始的 input 之下,得到了某一个 output。所以相当于,你要证明这整个 program 的运行是对的,但是你需要给他生成一个比较数学、比较 crypto 的一个密码学的 proof。

那首先,比如说我们传统地写一个 program,可能用 C++ 或各种 high-level 语言去写。同样地,对 ZK 而言也是一样的,如果你要给一个程序生成一个 proof,那你首先需要把这个程序通过 ZK 的语言(他不是C++,他是一种特殊 ZK 的语言),把它 (encode) 编码出来。

然后这个具体语言是一个非常数学,有点类似汇编,但是更数学的一个语言。只能包含比如说乘法、加法和一些最基本的一些门操作。然后去把你原始的 program 用这种格式表示出来。然后当你把这个程序用这个特定的 ZK 电路这个语言给写出来以后,你再运行一套密码学的算法就可以生成证明。

简而言之,如果你要想给一个 program 生成证明,那这个 program 再用 ZK 这个语言重新写出来,这种 encoding 的方式就叫 ZK 的电路。

zk 电路与硬件加速之间有关联吗?

Ye

这是一个很好的问题,因为经常大家提到电路的时候会想到芯片,或者说一种物理上的电路。但其实 ZK 的电路是一种代数电路,它是 program 的一种代数的编码。所以你可以理解为,ZK 电路就是一堆数学的 A 乘 B 等于 C 这样的东西。它和你拿到一块电路板这种是完全不一样的。

但是也有一些相似的地方,比如你写 ZK 电路的时候,也要从基本的门电路开始搭。因为很有限,只能用加法、乘法和一些基本的框架搭,然后它有自己的 layout。所以如果仔细思考的话,有很多相似的地方,但是具体计算过程完全不一样。

ZK 电路比较强大的一点是因为,它是一些数学上的东西,比如它可以验证 A 乘 B 等于 C 等等这样的一些数学的关系。但物理电路更多是你从一个 input 运行通过一个芯片,然后得到你的结果。

所以这是一个区别。比如说你要在电路里面做 A 除以 B 等于 C,你可能要写一个除法器,你要真的输入 A、输入 B,然后除法,得到 C。但是你在写 ZK 电路时,只用假设上天给了你 A、B、C 三个 witness,你只要证明 B 乘 C 等于 A 就可以了。这个就是 ZK 电路和物理电路的一个区别。

硬件加速是在加速什么?

Ye

然后通常大家讲的硬件加速,其实不是加速 ZK 电路这个过程,因为 ZK 电路只是你的原始程序的另一种表示方式。就是你原始有个哈希,我现在用 ZK 电路写了一个哈希,它还是一段程序,它只是用 ZK 电路写出来的一个程序而已。

但你实际运行的是什么呢?是你把这个程序/这个 ZK 的电路作为 input,去跑一个密码学的算法 —— ZK 的算法。这个算法本身需要很长的时间,比如说几个小时或者说上天。它可能在运行椭圆曲线,多项式的一些计算,因为这是一个具体的密码学算法,它要把这个电路变成一个 proof。然后这个过程非常的密集,而且需要的时间很多。这时候才需要一个加速器,去加速生成 proof 的这个过程,而不是写电路的过程。

所以写电路你更多可以想象成一种 program 的 pre-processing,它要预处理这个 program 变成一个电路。因为只有当你拿到这个 ZK 电路的时候,你才可以给它生成 proof。但实际加速的是这个生成 proof 的过程,就是假设你已经有 ZK 电路,然后你要写一个 proof。这时候你需要一个 ASIC,需要 GPU 去把整个计算 proof 的这个过程给生成出来。

所以这就是区别,你加速的是这个已经有了 ZK 电路以后生成证明的过程。

Leo

ZK 里面的电路就相当于我们用另外一种表达方式,来表达 ZK 可以理解的这样一个数学的抽象模型。然后把这个数学抽象的模型拿去用相应的 back-end,再生成相应的proof。在这个 back-end 生成 proof 的时候是需要硬件加速的,就是 ZK 的电路跟我们的硬件加速实际上是两个不同的事情。只是说我们可以通过硬件加速来提高整个 ZK 证明生成的效率。

Ye

刚才忘记补充一点,最初问题是说,如果不同的 ZK 电路能不能用同一套加速,肯定是可以的。因为不同的 ZK 电路,比如说不同的哈希、不同的程序,都是你要把它写成不同的电路。所以说只是 ZK 电路不一样。

但是就像 Leo 说的,其实它加速的过程是有了电路以后生成证明的过程。但生成证明那个算法是一个 deterministic (确定性) 的一个 crypto 的算法。也就是说它处理任何的电路都是同一套算法,所以你相当于用 ASIC 加速了这个生成证明的过程,但是不同的电路都是你不同的输入。相同的加速器是可以加速不同的 ZK 电路的。

Prover 网络的中心化和去中心化

Prover 在 zk-Rollup 中扮演什么角色?

Ye

我先简单介绍一下 zk-Rollup 大概解决了什么问题。它解决了以太坊的扩容问题。以太坊是一个 P2P 的网络,非常的去中心化,里面的每个交易需要传到每个节点,每个节点都需要执行一遍。但是越去中心化,效率就越低,因为它的节点成千上万,可能每个节点都要算相同的计算。这样的话会导致整个网络非常昂贵,而且处理交易很有限。

zk-Rollup 核心思想是说我可以把一大堆的交易从 layer 1 拿到线下来。然后我可以生成一个 ZK proof,这个 proof 可以证明一万条交易是对的,就是生成一个小的 proof 证明一万条交易是对的。这样的话,我们不用把这一万条交易发在以太坊网络里面,我们只需要把这一万条交易发在 Scroll 的网络里面,然后 Scroll 去生成一个 proof。只要把这个小小的 proof 以及一些其他的一些数据递交上链,以太坊只要验证完这个 proof 就可以知道这一万条交易都是对的。

这样相当于以太坊的整个网络不是在算一万条交易,而是在验证一个非常小的 proof,所以它比之前会会高效非常多。假设以太坊一秒钟只能处理十条交易,但每一条交易都是在验证一个 proof,而每一个 proof 又可以证明一万个交易是对的。那相当于你可以把它可扩展性提高一万倍。当然这个是比较浅显易懂的说法,还有很多具体的问题。但是这就是核心思想,把一堆交易生成一个 proof,把 proof 上链,然后让每个节点去做验证。

那这时 prover 扮演什么角色呢?首先 zk-Rollup 需要一个出块节点,比如说需要接受这一万条交易,出块;然后需要一个证明节点,prover 需要去把这一万个交易生成一个 proof。它主要是证明 zk-Rollup 网络每个块的有效性,然后为之生成 proof。

这个 prover 可以是中心化的,也可以是去中心化的。但目前来说,大部分都是相对来说比较中心化,因为它可以用很多 GPU。算 proof 是一个比较确定性的一个过程,就是我有块,然后你跑这个算法,然后帮我算出来就好了。它是一个相对来说比较固定的一个过程,所以说它通过比如分布式,或者说一些其他集群等等方式都可以生成出来的。

介绍 Scroll 在做的事情

Ye

Scroll 想做的事情就是搭建一个 ZKEVM 的 zk-Rollup。什么是 ZKEVM 呢?我刚才提到的,我们要给一万条交易生成一个 proof。那么回到了之前提到的怎么生成一个 proof 呢?首先要把你要证明的那个程序用 ZK 的语言去表达出来。ZKEVM 其实就是用 ZK 的语言把 Etherian Virtual Machine (EVM) 这个东西用 ZK 语言写了一点。因为很久以前大部分的人做 zk-Rollup 生成 proof,它只能给特定的用例,比如 DEX 给转账生成证明,所以你只要把转账的逻辑编码成 ZK 语言就好了。

但是我们现在想做的事情是一个通用型的网络,而且我们不希望那些写合约,写 solidity 的人去用 ZK。所以说我们构建了一个 EVM 的 ZK 版本。这样的话对开发者而言所有的体验和以太坊是一模一样的。他们依旧面临的是 EVM,但是我们实际是会把 EVM 的逻辑写成 ZK 语言。然后在证明的时候,证明所有的EVM 交易都是对的。

更简单的理解就是 Scroll 是一个吞吐量更高,更快、更便宜,但是安全性和以太坊一样的一个网络。它的神奇在于我们可以接受交易,然后生成 proof。而不是说把它广播,然后让节点形成共识这样。所以 prover 在里面扮演一个证明每个块有效性的作用。

去中心化 prover 网络,保证网络的可靠性以及激励市场提高 proof 生成的效率

Ye

这是一个很好的问题。为什么我们一定要去中心化证明者市场呢?就像你说的,其实我们自己算也是完全可以的,并且目前大家都是这样做的。但为什么我们一定要想做这样一个网络呢?有这些好处:

首先它保证了网络可靠性。因为 zk-Rollup 核心思想就是如果 scroll 或者 layer2 要把整个网络关掉,不再运行节点、处理交易。用户依旧有能力去生成 proof,把钱从 layer1 提现出来,拥有这样一个能力。如果说我们 prover 由于中心化,导致宕机了,或者出现很多的问题,这时整个网络的可靠性和鲁棒性是形成问题的。所以相当于如果你有很多去中心化的备份的话,就是相当于永远有 prover 在帮你生成 proof。

第二点。像我说的,计算是确定性的,它不同于 proof of work,它没有随机性,你只要把这个东西做快就好了。但是我们希望能够形成一种正循环,希望社区永远越 build 越好。因为 proof 生成得越快,将来在 layer1 提现的时间会越短,最终确定性会越短。所以我们希望把这个 proof 的时间做得越来越短。

而当且仅当构建一个 prover 的开放市场时,大家才会涌入。比如说像 Cysic 或者其他 ASIC 的公司,他们都在构建越来越好的 Zk prover。当越来越多人去构建越来越好的硬件,最后就会帮我们的平台去完善。因为假设这不是一个开放市场,只有我们自己产生 proof 的话,那做到一个程度可能已经没有动机,或者说我们永远需要雇佣更好的人去完善设计,去缩短最终确定性时长、减少开销。

但我们一旦把证明者市场打开,会激励更多的人把这个东西做的更快。我觉得这是一种正向的激励,有利于把你的 proof 做的越来越快,甚至比如说有 ASIC 以后可能能做一些更 crazy 的事情。所以就相当于激励把这个做快十倍再快十倍,因此会创造更多更新的一些可能性。

Leo

我觉得 Ye 刚才已经总结很好。现在 ZK 是整个区块链里面非常火的话题,有各种各样的应用,整个 ZK prover 的需求实际上是很大的。其实 Cysic 从一开始也是 open design 的。我们也是时不时会发布一些我们的数据,然后吸引整个社区大家一起来构建更好的 ZK 硬件,从而来帮助这些 ZK 项目,让他们不再有性能上面的瓶颈。

现在我们预估整个的市场虽然还很早期,但是我们是非常乐观的,我们觉得这是一个非常大的市场。这也是我们一开始投入那么多,先做 FPGA,后面变成 ASIC 的最重要的一个原因。

Scroll 目前对于去中心化 prover 的计划与进展

Ye

我们目前第一阶段的关注点还是推出我们的主网版本。就是我们先把我们的 ZKEVM 和 zk-Rollup 构建出来,然后先有一版稳定运行的主网版本。

同时我们团队自己内部在构建一些非常快的 GPU 方案,我们计划会把这个东西开源,然后任何人都可以去跑这个 GPU。并且我们其实已经发布了两篇学术论文,一篇是关于怎么用 ASIC 加速 ZK,以及我们也跟一些学术机构合作,华中科大、清华以及其他的学校合作。有一些开源的 GPU 论文,所以大家可以随时去看这个架构怎么设计。我们目前优化的方向就是怎么去把我们 ZKEVM 用 GPU 加速特别快。并且为了让 prover 比较去中心化,我们优化的目标是如何能把我们的 prover 算法能适用到非常廉价的 GPU上。因为比如说很早以前大家用 1080,然后后面可能又有 2080,后来有越来越好的 GPU。我们现在的一个优化目标就是如何能让 1080 这些更便宜的 GPU 也可以运行我们的 prover 算法。这样的话,可能就会有更多的人能参与进来,这就是我们一个大的目标。

关于对 prover 这块的具体计划,现在有一些 high level 的设计理念:我们不希望永远是最快的那一个 prover 会赢。因为它是一个确定性的算法,如果有人用 ASIC,有人用一种神奇的硬件,它能打败其他所有人的速度的话,那它永远会拿走所有的奖励。但这样的话,你的系统会变成一个比较脆弱的状态。相当于你永远依赖于最快的一个 prover,如果有一天这个 prover 离开你的生态,那对它来说是一个非常严重的破坏。我们是希望有更多备份。所以我们的设计理念是在一个时间窗口内,你可以相对合理地去提交 proof,只要你在这个时间线内提交就好。所以你用 ASIC 或一些其他的方式,可以节省你的能耗和一些成本。然后我们慢慢过渡,把这个时间窗口慢慢缩短,随着整个算力提升等等。这是我们的设计哲学。

但具体的计划我们还在制定,先保证稳定运行我们的网络,然后再去慢慢地让一些去中心化实体加入进来,之后再去把它完全打开。但我们的 GPU 之后所有人都可以访问和直接用,而且性能非常的好,并且也有开源的文档去支撑。

另外想补充的一点就是我们有三个价值导向:neutrality (中立性)、openness (开放性) 以及 community driven (社区导向)。我觉得去中心化 prvoer 是 community driven 和 openness 的一部分。

以太坊网络很强是因为它有一个非常巨大的社区,我们也一样,我们希望构建我们自己真正的社区。比如说 Cysic 他们这个硬件是我们生态系统的一部分。我们会主动的去办很多 workshop 和出一些教程去去帮助大家理解我们用的 zk 工具栈。这样会有更多的项目,甚至 100 个下一代的 zk 项目都用相同的 zk tooling,这样他们也可以从我们这个 prover 网络或者说这一代的硬件获益。不光是帮我们在build,而是我们在 build 一个很大的 community,所有的 zk 应用只要用同一套工具栈,可能将来都能用相同的 ASIC、相同的 GPU。我们相当于在给一个社区 build 一个大的框架和网络。这个是我们一个大的目标,但具体的 timeline 还在讨论。

解读 zk 证明硬件加速

为什么需要加速 zk 证明生成

Leo

我们一开始做 Cysic 的原因就是来自于我之前在 Algorand 的做的事情。我在 Algorand 做了 Algorand state proof,它本质上还是一个 zk proof,可以用在 cross-chain bridge。当我去年三四月份做完整个的 PoC 之后,我就发现整个证明生成的时间实在是太长了,差不多几分钟。我试了很多软件或者算法的优化都不能解决这个问题。所以我当时就想到用硬件来加速整个证明生成。因为 Algorand 希望整个证明生成在三十秒左右的样子,在其他方法不奏效的情况下,就只能用硬件来提升整个的效率。这其实跟密码学里面的一些过程很像,密码学里面有个很著名的算法叫 RSA encryption。RSA 一开始用当时的计算机跑也很慢,所以当时 RSA 这三个人出来就做了一个定制的硬件来去加速这个东西,其实同样的想法可以用到 ZKP 里面来。在 ZKP 用这种通用的硬件算得很慢时,我们就需要为他设计一些专用的硬件来推动整个社区的发展。

主要的硬件方案有哪些,Cysic 的路线图

Leo

其实我们做 Cysic 也是从 Ye 的一篇文章里边吸取了很多灵感。主要的方式有 CPU、GPU、FPGA 以及ASIC。CPU 就是比较通用的一个硬件,一般来说来说它算东西挺慢的,除非你用很多core,比如说 192-core CPU。当然这样的话,一般人是不太具备这个能力的。

第二就是 GPU,GPU 跟 FPGA 都是属于能够很快进入市场的。其实硬件里边主要有两个衡量标准:一个是 performance per dollar,另一个就是 performance per watt。

Performance per dollar 是指你一开始需要花费多少的资本去购置这个硬件。在这方面的话,其实 GPU是好于 FPGA 的,你在付相同情况下。因为 FPGA 由于自身的硬件的一些限制,他是没办法输出那么高的 performance。所以 GPU 在初期进入市场是一个非常不错的选择。这也是 Ye 他们 in-house design所选择的一个方向。

但是 Cysic 的目标是做 ASIC,为 ZKP 来设置一个通用的 ZKP 加速器。但在做 ASIC 之前,是需要在 FPGA 上面做很多测试和 prototyping 的事情。所以这个就是我们现在所专注的一个方向。虽然单个的 FPGA 打不过 GPU,但我们可以把很多 FPGA 连在一起,就可以比 GPU 高性能很多倍。然后我们在 FPGA 上面也可以做很多各种测试,可以帮助我们后面的 ASIC 设计。

Performance per watt 就是说,你如果去跑这些硬件的话,你收到的整个电费账单是多少。在这一方面,FPGA 跟 GPU 是在同一个 level 上面的。但是 ASIC 实际上在这两点都可以跑过 FPGA 跟 GPU 的,在出货量达到一定的情况下。这个就是现在的整个硬件的技术路线的概括。

Scroll 会如何考虑硬件加速方案?

Ye

其实 Leo 刚才有大概提到,我们其实之前做过很多 ASIC 或者 GPU 的研究。但是最终,至少我们 in-house 的方案,或者说开源出去的方案会是 GPU 方案。

因为构建 ASIC 和 FPGA 是需要非常特殊的专业知识和技能,你需要选 FPGA 版本的型号;需要知道怎么流片;需要知道整个供应商、整个供应链等等硬件公司去做的事情。一个软件公司很难处理这些工作。你需要研发成本,你需要各种的一次性成本。

但是 GPU 不一样,我们软件的工程师只要写一些代码,你只要有 GPU 都可以去跑这个东西。所以这是我们的设计哲学,我们想重用更多,甚至比如说以太坊矿工的一部分 GPU,一起来生成 proof。所以最后我们 in-house 综合考虑成本、多少人有这些设备,以及时间线 (FPGA 和 ASIC 的时间线会比较长),决定选择 GPU 这个方案。并且 GPU 的性能已经足够好了,所以我们短期会选 GPU。

但是只要有 ASIC 和 FPGA,他们想接我们网络的话,我们是非常欢迎的。现在有非常多家探索 GPU 方向的,比如说 Supranational;然后有探索 ASIC 的,像 Cysic、Accseal 等等;还有做 FPGA 的Ulvantanna、Ingonyama 等等。这些方案都是我们生态的一部分,我们都会给支持。如果他们有一些 prover 基准测试程序这样的问题,我们都会去帮忙回答。最终这些都是开放的。

但据我们目前的愿景来看,其实跟 Leo 的结论很相似,就是 FPGA 很适合过渡期。因为单个 FPGA 是很难打过单个 GPU 的,但是多个 FPGA 互联是可以打过 GPU 的。但是 FPGA 又很贵,而 ASIC 跟多个 FPGA 互联的性能很相似,但是留一次片可能需要上千万美金,需要等到明年中,需要很长的时间。所以就是为什么从实用性的角度,我们希望先用 GPU,然后最终大家会从社区,或者说不同公司所构建的越来越好的方案,通过 ASIC 慢慢地去把它做得越来越快。

Prover 网络和硬件加速市场的未来展望

zkp 硬件加速市场的供给和需求

Leo

Cysic 的目标是要做一个 ZK prover DAO,这个 DAO 里边会有各种各样的硬件去参与。这个 DAO 会跟很多 ZK 的项目进行合作,所以说需求端就是这些 ZK 项目。然后供给端就是这些 prover,Cysic 已经联系了 20 多家之前的一些矿场,他们其实是有这个设施去提供整个证明生成服务的,但是他们并没有这种研发的经验。所以 Cysic 一开始会给这些矿场提供 Cysic 的一些硬件,让他们加入整个 DAO,给整个ZK 社区提供这样的一个服务。

这其实对于整个 ZK prover DAO 来说是一个 jump start,因为 Cysic 就不需要自己花太多的时间以及太多的精力去设置各种各样的去中心化 prover,可以依赖于这些其他的、以及已有的设施来参与整个的证明生成的服务。当然在 Cysic 整个的 ZK prover DAO 里面,不仅仅会有 ASIC,也会有很多 GPU 在里面。这其实也是符合整个社区对去中心化 prover 的一个想法。

现在 Cysic 的主要的合作方很大的一部分都来自于扩容,然后还有做 layer1 的隐私的链,以及做跨链桥接的。还有一些做 ZK indexer 的,像 Axiom 和 HyperOracle,他们用 ZKP 来提高整个 index 的效率。最后还有一些做 ZKML 的,就是 ZK 和机器学习的结合。这还在比较早期的一个阶段,这大概就是 Cysic 在区块链里边的一些 partner。

这种 zk 生成的挖矿市场与比特币的 PoW 挖矿机制有什么区别?

Leo

我觉得这个取决于我们的合作方。就像 Ye 他们的 Scroll,他们有一个去中心化的设计理念在里边,也就是说并不要求大家谁快谁就可以拿到整个奖励。他们是希望大家在一个时间窗口内生成一个证明,然后你就有机会去拿到奖励。我觉得这是一个非常好的一个去中心化的想法。

这个市场并不会像之前比特币挖矿或者以太坊挖矿一样,变成一家独大。比如说比特大陆拿走超过半数的市场。这个市场不会是这个样子,它会是一个去中心化的方案,大家在这个市场里面得益于这些 ZK 项目的繁荣。大家做 prover 也会从里边获得很不错的利润,它并不会是一家通吃的方案。

Ye

在我看来 PoW 和 ZK 生成证明的最大区别,还是回到了我们前面说的,ZK 算法是一个确定性的算法。我们可以强行设置时间窗口,它还是一算完就结束了。你可以想象为,ZK 证明我们希望达到的结果是,比如说现在有一万个 prover,每个人都在做一些有用的工作,比如说给一万个区块同时生成 proof,从而摊销你的成本、增大吞吐量。因为相当于有一万个人在并行做这件事情。但是 proof of work 更像是一万个人在卷,第一个生成的人就先出一个块。所以一万个人大部分的工作都被浪费了。所以这是一个很明显的区别,我们的能耗和成本可能连以太坊的零点零几都不到。

而且硬件要求完全不一样,因为 proof of work 在算哈希、算很多无用功,这会导致之前以太坊的矿机可能都是弱 CPU 强 GPU 这么一个无脑的模式,但 ZK 是一个正二八经的算法。所以这是导致 proof of work 对机器的需求和 ZK 需求最大的一个差异。我们也需要很好的 CPU,而且这个 CPU 需要有很大的内存,这个是机器选型上的区别。因为 proof of work 就是你接入一个网络,用 GPU 去跑哈希,然后平行地去算就好。但 ZK 的话,prover 上面你需要有用 CPU 的,然后你再去用 GPU 去做一部分的计算,它类似于一个带有 CPU 的处理器,是一个整体。

所以说这是机器选型上的一个区别,就是依旧很大,你需要一个非常好的 CPU 才能去处理这些计算。但是传统的挖矿可能就是一个 GPU 的一个机器。总结就是:随机性和确定性;浪费和较少浪费;无用功和有用功。就像我刚才说的机器的选型上,可能 zk 对 CPU 的要求会更高。不过这得取决于哪个网络,可能之前 Filecoin 等等已经对 CPU 也有一定的要求。

Leo

我可以稍微补充一点,提供一些数据支持。就像 Ye 说的之前算哈希这些东西,它其实每个芯片都很小。比如说在比特大陆的矿机里面,它有几百颗这样的芯片。所以整个矿机的能耗非常高,都是在 3000 万到 4000 万左右的样子。

如果算 zk 的话,整个芯片相当于大很多,但是整个机器里面的芯片就很少。在整个算的过程中,芯片跟内存有各种各样的交互。所以我们预估整个机器的能耗差不多就在 400 到 500 万左右,其实就跟单卡的 GPU 是一个差不多的状态。

怎么理解硬件加速有利于 prover 网络的去中心化?

Ye

现在有更好的硬件供应商去生产更好的 ASIC,可能大家进入这个网络的成本会降低。包括我们开源算法以后,大家可能家里有 GPU 或者什么东西就可以去跑这个网络。相当于硬件加速可以降低成本、降低功耗,这样是有利于把进入 prover 市场这个门槛降低的,到时会有越来越多人去做这个事情。而且对于整个网络的吞吐量、稳定性、可靠性以及鲁棒性也都是有好处的。

Leo

我想补充的就是,如果有了硬件加速,可以在很短的时间内产生一个相对来说很复杂的一个 proof 的话,这对于大家去开拓新的应用也是有很多好处的。比如说之前要算一个几层的神经网络,用 zk 可能需要算几个小时。这个在大家看来就是完全不实用的一个方法。但如果用硬件加速的话可能这个时间会缩短到几分钟或者几秒钟。