Vitalik 香港演讲实录:我们需要能达到加密技术极限的协议
作者|Vitalik Buterin
编译|DeThings
2024 香港 Web3 嘉年华期间,以太坊联合创始人 Vitalik Buterin 在由 DRK Lab 主办的“Web3 学者峰会 2024”上发表主旨演讲《Reaching the Limits of Protocol Design》。
以下是 DeThings 带来的中文现场实录,有删减:
在过去 10 年中,我们用来构建协议的技术种类发生了很大变化。当比特币在 2009 年诞生时,它实际上使用的是非常简单的加密技术,在比特币协议中你看到的唯一密码学类型是哈希和椭圆曲线 ECDSA 签名,还有工作量证明 (Pow)。工作量证明只是另一种使用哈希的方式。如果你看看在 2020 年代用于构建协议的技术类型,你会开始看到一种更复杂的技术集合,这些技术真正出现仅在过去 10 年。
这些东西确实已经存在了很长时间,所以从技术上讲,我们已经有PCP定理几十年了。自从 2009 年克雷格·根特里 (Craig Gentry)的发现以来,我们就拥有了完全同态加密。几十年来我们一直拥有混淆电路(garbled circuits),这是一种双方形式的计算。但是理论上存在这些技术和实践中存在这些技术是有区别的。
实际上,我认为区块链领域本身就有很大的功劳,它实际上带来了大量的资源,把这些技术带到了你可以在常规应用中使用它们的阶段。
2020 年代构建区块链时,假设哈希值和签名就是你所拥有的一切。而在 2020 年代构建的观察协议,从一开始就将所有这些东西视为关键组件。
ZK-SNARKs 是这里的第一件大事。ZK-SNARKs 是一种技术,可以证明你进行了计算,并从计算中获得了一些输出。你可以用这样一种方式来证明:验证的速度比你自己运行计算要快得多。你还可以在不透露原始输入信息的情况下验证证明。
2010 年的 zK-SNARKs (理论阶段) 和 2016 年的 ZK-SNARKs (在当年 12 月推出的 Zcash 协议中首次使用),与现在的 zK-SNARKs 相比,差别实在太大了,对吧?
因此,很多这些较新形式的加密技术,都是从几乎无人知晓的东西到小众兴趣再到主流,再到如今几乎成为默认设置。在过去十年中,这些东西发生了巨大的变化和改进。
“因此,Z-SNARKs 在隐私方面非常有用,在可扩展性方面也非常有用。区块链有什么作用呢?区块链给你带来了很多好处,它们给你带来了开放性,它们给你带来了免许可访问,它们给你带来了全球可验证性。但所有这些都是以牺牲两件大事为代价的。
一个是隐私,另一个是可扩展性。ZK-SNARK 给你隐私以及可扩展性。2016 年,我们看到了 Zcash 协议。之后,我们开始在以太坊生态系统中看到越来越多的东西。如今,几乎所有东西都开始使用 zkSNARK、多方计算和全同态加密。如今,人们对这些东西的了解少于 zkSNARK,但有某些类型的事情是无法用 ZK-SNARKs 完成的。比如隐私计算,在人们的私有数据上运行。
投票实际上是一个大的使用案例,你可以通过 zk-SNARKs 获得一定级别的隐私性。但如果你想获得真正最好的属性,那么你必须使用 MPC(多方计算) 和FHE (全同态加密)。许多加密 AI 应用最终也使用 MPC 和FHE,这两者都是在过去十年中效率急剧提高的原语。BLS(Boneh-Lynn-Shacham,聚合签名)是一种有趣的技术,它基本上允许你从大量不同的参与者那里获取一大批签名,潜在的可能有数万个参与者,然后像验证单个签名一样快速地验证那个组合签名。
这个功能非常强大。BLS 聚合实际上是以太坊现代权益证明共识的核心技术。如果你看看在 BLS 聚合之前建立的权益证明共识,很多时候算法往往只能支持几百个验证者。在以太坊中,目前大约有 30,000 个验证者,每隔 12 秒提交一次签名。之所以能做到这一点,是因为这种新形式的加密技术在过去 5 到 10 年间才真正优化到足以使用的程度这些新技术让很多事情成为可能”。
它们正在迅速变得更加强大。今天的协议大量使用了所有这些技术。我们确实经历了从专用密码学到通用密码学的重大转变,从要创建新协议就必须自己了解密码学如何工作的密码学,到要为专用应用程序创建专用算法的通用密码学。以前你必须为一种特殊用途的应用创建一种特殊用途的算法,而现在,你甚至不需要成为一名密码学家,就可以创建一种使用我在过去 5 分钟里谈到的东西的应用。
你只需编写一段代码,在 Circom 中编写一段代码,然后 Circom 将其编译成验证器和校验器,你就拥有了一个 zk-SNARK 应用程序。这里的挑战是什么?本质上,问题是我们在过去 10 年中已经走得很远了。还剩下什么?我们今天的这些技术与理论理想之间的差距是什么?我认为这正是研究人员和学术界人士可以大有作为的关键领域。
我认为目前的两大问题基本上是:一个是效率,另一个是安全。现在还有第三个问题,可以说是扩展功能。
例如,我们还没有真正掌握的一项技术就是无差别混淆技术。如果我们能有一种可行的算法,那就更了不起了。但实际上,我认为提高效率和提高我们今天所拥有的东西的安全性更为重要”。
让我们来谈谈效率。让我们举一个具体的例子,那就是以太坊区块链。在以太坊中,插槽时间是 12 秒。一个区块和下一个区块之间的平均时间是 12 秒。正常的区块验证时间,即任何一个以太坊节点验证一个区块所需的时间,约为 400 毫秒。
现在,zk-SNARK 验证一个普通以太坊区块所需的时间约为 20 分钟。这个时间改进得很快,一两年前是 5 个小时。现在 20 分钟已经是平均值了,对吧?仍然存在最坏的情况。举个例子,如果你有一个以太坊区块,整个以太坊区块都在进行 zk-SNARK 计算,那么它的证明时间就会超过 20 分钟。
不过,与两年前相比,我们还是走得更远了。现在的目标是什么? 目标就是实时证明,目标是当一个区块被创建时,在下一个区块被创建之前,你就能得到该区块的证明。当我们有了实时证明,我们就有了什么?基本上,世界上每一个以太坊用户都可以轻松成为以太坊协议的完全验证用户,但拥有以太坊节点的人却很少。实际上,一个存档节点需要 2 TB,你可以这么做,但效率很低。如果我们能让每一个以太坊钱包,包括浏览器钱包、手机钱包,包括其他链上的智能合约的轻量级钱包,都能真正完全验证以太坊共识规则呢?
一些人实际上并不信任 Infura。它们甚至不信任以太坊的权益证明验证器,而是直接验证规则,直接确保以太坊区块的正确性。我们如何用ZK-SNARK做到这一点呢? 要想真正做到这一点,zK-SNARK 证明需要是实时的,但需要有一种方法让任何以太坊区块都能得到证明,可能在 5 秒钟之内。
问题是,我们能到达那里吗? 现在,MPC 和 FHE 也有类似的问题。正如我之前提到的,MPC 和 FHE 的一个典型用例就是投票,而且实际上已经开始使用了。大约三周前,越南举行了一次以太坊活动。在那次活动中,他们实际上使用了 MPC,也就是这些加密安全投票系统中的一种,在项目和黑客马拉松中进行投票。
MPC 目前的问题在于,它的某些安全属性依赖于一个中央服务器。我们能将这种信任假设去中心化吗?可以,但这需要 MPC 和 FHE。现在的问题是,保证这些协议的高效的开销很大,在 ZK-SNARK 上又有 FHE。要想让这些协议成为普通人默认使用的协议,就不能让每一票的证明都要花费 5 美元的计算量,对吧?它必须能快速完成,甚至能实时完成大量投票。
那么,我们如何实现 ZK-SNARK 的目标呢?我认为有三大类可以提高效率。其中之一就是并行化和聚合,想象一下,验证一个以太坊区块最多需要 1000 万个计算步骤。你把这些计算步骤中的每一步都拿出来,分别做一个证明。然后进行证明聚合。取前两个证明,对其进行证明。再取下两个证明,对其进行证明。再取其后的两个证明,对这些证明进行证明。再取前两个证明的证明,对这些证明进行证明,就得到了一棵树。在这棵树上走了大约 20 步之后,你就得到了一个大证明,它代表了整个程序块的正确性。
这在今天的技术条件下是可以做到的。它可以在 5 秒钟内证明一个理论区块的正确性。问题出在哪里?基本上,这需要大量的并行计算,对吧?它需要 1000 万次证明。那么我们能优化它吗?我们能优化并行化吗?我们能优化聚合证明吗?答案是肯定的。关于如何做到这一点,有很多理论上的想法。但这确实需要变成一些实际的东西。这是一个结合了算法改进、低级别改进和硬件设计改进、效率改进的问题,所以 ASIC 也非常重要。我们都看到 ASIC 对于挖矿有多重要,对吧?记得 2013 年当 ASIC 第一次上线时,我们看到比特币算力是如何迅速增长的。
ASIC 非常强大,对吧? 在硬件成本和电费相同的情况下,ASIC 的哈希值基本上是 GPU 的 100 倍。问题是,我们能为 SNARK 证明带来同样的好处吗?我想答案应该是可以的。因此,有越来越多的公司开始实际制造专门用于证明 zK-SNARK 的 ASIC。它可以是 zkEVMs,但实际上应该是非常通用的。你应该能够制造一个 SNARK ASIC 来证明任何类型的计算。这样做,我们能从 20 分钟缩短到 5 秒吗?
最后,提高效率,对吧? 因此,我们需要更好的 zK-SNARK 算法。我们有 Groth16,我们有查找表,我们有 64 位 SNARK,我们有 STARK,我们有 32 位 STARK,各种不同的想法。我们能否进一步提高 SNARK 算法的效率?我们能否创造出更多对 SNARK 更友好的哈希函数、更多对 SNARK 更友好的签名算法?这里有很多想法,我非常鼓励大家在这些想法上多下功夫。
主要的安全问题是 bugs,对吗?我认为,bug 是人们很少谈论的最大问题之一,但它却非常重要,对吗?基本上,我们拥有所有这些令人惊叹的加密技术,但如果人们担心电路中存在某种缺陷,就不会相信它们,对吗?无论是 zK-SNARK 还是 zkEVM,它们都有 7000 行代码。这还是在非常高效的情况下。平均而言,每千行代码就有 15 到 50 个漏洞。在以太坊中,我们很努力,每千行代码中的错误少于 15 个,但多于零,对吗?如果你有这些持有数十亿美元资产的系统,那么如果其中一个系统出现漏洞,那么无论加密技术有多先进,这些钱都会丢失。
问题是,我们能做些什么来真正利用现有的加密技术并减少其中的错误呢? 如今,这里使用的基本技术是安全委员会,基本上,你只需在以太坊中召集一些人,如果其中大多数人,比如超过 75% 的人,都认为存在漏洞,那么他们就可以推翻证明系统所说的一切。因此,这是一个相当中心化的系统,但这是我们目前拥有的最好的系统。在不久的将来我们会有多重证明。这里有一张 Starknet 的图,它是基于以太坊的 Rollups 之一。这个想法是,如果你有多个证明系统,理论上,你可以使用冗余来降低其中任何一个系统出现漏洞的风险,如果你有三个证明系统,如果其中一个系统出现了错误,那么希望另外两个系统不会在完全相同的地方出现错误。
最后,我认为未来还有一件有趣的事情值得研究,那就是使用人工智能工具,有可能使用新工具来进行形式验证,对吗?所以,就像用数学方法证明 ZKEVM 这样的东西没有漏洞,对吗?基本上,你能真正证明例如,zkEVM 实现正在验证 EVM 代码中与以太坊实现完全相同的功能吗?例如,你能证明它们对任何可能的输入都只有一个输出吗?如果你能尝试真正证明这些事情,那么也许我们就能在未来的某个时候真正实现无 bug zkEVM 的世界。
这太疯狂了,对吧?因为在此之前,还没有人做出过如此复杂的无漏洞程序。但在 2019 年,没有人认为人工智能有可能做出真正漂亮的图片,对吧?所以,今天我们只是看到了我们取得了多大的进步。我们看到了人工智能的能力。现在的问题是,我们能否尝试将类似的工具应用到实际任务中,比如,自动生成复杂语句的数学证明,而这些复杂语句的程序要跨越成千上万行代码?我认为这是一个有趣的公开挑战,值得人们关注。
关于聚合签名的效率,如今,以太坊有 3 万个验证器,运行一个节点的要求很高,对吧?我的笔记本电脑上就有一个以太坊节点,它可以运行,但这可不是一台便宜的笔记本电脑,而且我还得自己去升级硬盘,以太坊的理想目标是支持尽可能多的验证器。
我们希望权益证明尽可能民主化,让人们能够直接参与任何规模的验证。我们希望运行以太坊节点的要求非常低,非常容易使用。我们希望理论和协议最大限度地简单。这里的理论限制是什么?每个参与者每个时段的所有数据需要有1比特,因为你必须广播谁参与了签名,谁没有参与签名。
这是最基本的限制,超过这个限制,就没有其他限制了,计算没有下限,你可以做聚合证明,你可以做递归证明树。你可以做签名,你可以做各种聚合签名。你可以使用 STARK,可以使用基于网格的密码学,可以使用 32 位 STARK,可以使用各种不同的技术。
问题是,我们能在多大程度上优化签名聚合?这就是点对点安全,人们对点对点网络考虑不够。这是我要特别强调的一点,我认为,在加密领域,人们往往倾向于在点对点网络之上创建花哨的结构,然后就认为点对点网络可以正常工作。
这里隐藏着很多风险,对吗?我认为这些风险将变得更加复杂,所以在 2010 年代,每个节点都能看到一切。你肯定可以进行一些攻击:有日蚀攻击,有拒绝服务攻击,有各种各样的攻击。
但是,当你有一个非常简单的网络,而网络的唯一任务就是确保每个人都能得到所有东西时,问题还是相当简单的。问题在于,随着以太坊规模的扩大,点对点网络变得越来越复杂。今天的以太坊点对点网络已经有 64 个分片了,对吧?
为了进行签名聚合,为了像现在这样每个时段处理 30,000 个签名。我们有一个点对点网络,它被分成 64 个不同的子网络,每个节点只属于其中的一个或几个网络。在数据可用性采样中,这是以太坊用来为区块提供数据空间以实现可扩展性的技术。
这也取决于更为复杂的点对点架构。在这里,你看到的是一个对等节点图,在这种设置下,每个节点只能下载所有数据的 1/8。那么问题来了,这样的网络真的安全吗?你能保证它的安全性吗?你能尽可能提高保证率吗?我们怎样才能保护并提高以太坊所依赖的点对点网络的安全性?
基本上,我认为在这一点上,我们需要关注的是,我们需要能达到加密技术极限的协议,我们的加密技术已经比十年前强大得多,但还可以更强大,在这一点上,我认为我们真的需要开始研究什么是上限,我们如何才能真正达到上限。
这里有两个同样重要的领域。其中之一是继续提高效率,我们希望实时证明一切。我们希望看到这样一个世界:在去中心化协议中,每一条在博客中传递的信息都会默认附加一个 zk-SNARK,以证明该信息以及该信息所依赖的一切都遵循了协议规则。
第二个前沿领域是提高安全性。从根本上说,就是要减少出错的几率。让我们的世界里,这些协议所依赖的实际技术可以是非常强大、非常值得信赖的,人们可以尽可能地依赖它。
但是,正如我们多次看到的那样,Multisignature (多重签名) 也会被黑客攻击,有很多这样的例子,这些所谓的 Layer2 项目,其中一两个项目中的币实际上是由一个多重签名控制的,但不知何故,九个签名中有五个同时被黑客攻击,导致大量资金损失,如果我们想超越这个世界,那么我们就需要相信什么是真正能够使用的技术,并真正通过加密技术来执行规则,而不是相信一小群人来确保规则得到遵守。
但要做到这一点,代码必须值得信赖。问题是,我们能让代码可信吗?我们能让网络值得信赖吗?我们能让这些产品、这些协议的经济性值得信赖吗?我认为这些都是核心挑战,希望我们能继续共同努力,不断改进,谢谢。
声明:本站所有内容,如无特殊说明或标注,均为采集网络资源,任何内容均不构成投资建议。