撰文: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 相⽐,差别实在太⼤了,对吧?
因此,很多这些较新形式的加密技术,都是从⼏乎⽆⼈知晓的东⻄到⼩众兴趣再到主流,再到如今⼏乎成为默认设置 — 在过去⼗年中,这些东⻄发⽣了巨⼤的变化和改进。”
“因此,zk-SNARKs 在隐私⽅⾯⾮常有⽤,在可扩展性⽅⾯也⾮常有⽤。区块链有什么作⽤呢?区块链给你带来了很多好处,它们给你带来了开放性,它们给你带来了⽆权限访问,它们给你带来了全球可验证性。但所有这些都是以牺牲两件⼤事为代价的。
⼀个是隐私,另⼀个是可扩展性。Zk-SNARK 还你隐私,还你可扩展性。2016 年,我们看到了 Zcash 协议。之后,我们开始在以太坊⽣态系统中看到越来越多的东⻄。如今,⼏乎所有东⻄都开始使⽤ zk-SNARK、多⽅计算和全同态加密。如今,⼈们对这些东⻄的了解少于 zk-SNARK,但有某些类型的事情是⽆法⽤ 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 分钟已经是平均值了,对吧?仍然存在最坏的情况。举个例⼦,如果你有⼀个以太坊区块,整个以太坊区块都在进⾏ Zcash 计算,那么它的证明时间就会超过 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 个不同的⼦⽹络,每个节点只属于其中的⼀个或⼏个⽹络。在数据可⽤性采样中,这是以太坊⽤来为区块提供数据空间以实现可扩展性的技术。这只是你的两个项⽬,允许 rollups 的费⽤⾮常低。
这也取决于更为复杂的点对点架构。在这⾥,你看到的是⼀个对等节点图;在这种设置下,每个节点只能下载所有数据的 1/8。那么问题来了,这样的⽹络真的安全吗?你能保证它的安全性吗?你能尽可能提⾼保证率吗?我们怎样才能保护并提⾼以太坊所依赖的点对点⽹络的安全性?
基本上,我认为在这⼀点上,我们需要关注的是,我们需要能达到加密技术极限的协议,我们的加密技术已经⽐⼗年前强⼤得多,但还可以更强⼤,在这⼀点上,我认为我们真的需要开始研究什么是上限,我们如何才能真正达到上限。
这⾥有两个同样重要的领域。其中之⼀是继续提⾼效率,我们希望实时证明⼀切。我们希望看到这样⼀个世界:在去中⼼化协议中,每⼀条在博客中传递的信息都会默认附加⼀个 zk-SNARK,以证明该信息以及该信息所依赖的⼀切都遵循了协议规则。
第⼆个前沿领域是提⾼安全性。从根本上说,就是要减少出错的⼏率,让我们的世界⾥,这些协议所依赖的实际技术可以是⾮常强⼤、⾮常值得信赖的,⼈们可以尽可能地依赖它。尽管这些项⽬存在漏洞,但⼈们不会依赖加密技术,⽽是会继续依赖⼈。
但是,正如我们多次看到的那样,Multisignature(多重签名)也会被⿊客攻击,有很多这样的例⼦,这些所谓的 Layer2 项⽬。这⼀两个项⽬中的币实际上是由⼀个多重标识控制的,但不知何故,九个项⽬中有五个同时被⿊客攻击,导致⼤量资⾦损失,如果我们想超越这个世界,那么我们就需要相信什么是真正能够使⽤的技术,并真正通过加密技术来执⾏规则,⽽不是相信⼀⼩群⼈来确保规则得到遵守。
但要做到这⼀点,代码必须值得信赖。问题是,我们能让代码可信吗?我们能让⽹络值得信赖吗?我们能让这些产品、这些协议的经济性值得信赖吗?我认为这些都是核⼼挑战,希望我们能继续共同努⼒,不断改进,谢谢。


