区块链与ZK-SNARKS
我们用来构建协议的技术类型在过去 10 年里发生了很大变化。 那么,当 2009 年比特币诞生时,它实际上使用了非常简单的密码学形式,对吧? 你在比特币协议中看到的唯一一种加密技术是——你有哈希,你有椭圆曲线的 ECDSA 签名,你有工作量证明。 工作量证明只是使用哈希的另一种方式,如果你看看 2000 年用于构建协议的技术,你就会进而看到这套更加复杂的技术,而这些技术实际上在10年前刚刚出现。
现在,很多这样的东西肯定已经存在很长时间了。 从技术上讲,自从 PCP 定理诞生以来,我们就已经有了 ZK- SNARKS,该定理已经有几十年的历史了。所以在理论上,这些技术已经存在了很长时间,但在实践中,在你能在学术论文中做什么和你能在实际应用中做什么之间存在着巨大的效率障碍。
实际上,我认为区块链本身有很多值得赞扬的地方,因为它实际上助力了这些技术的采用,并将它们真正付诸于实践。
今天的情况在过去十年中发生了变化,并且取得了巨大的进步。 这包括很多不同的事情。 我们今天拥有的协议越来越依赖所有这些技术。 看看 2000 年构建的协议,所有这些东西从第一天起就被视为关键组件。 ZK-SNARKS是这里的第一个大事吧? ZK-SNARKS 是一项技术。 您可以通过这样一种方式来更快地验证证明,然后自己运行计算。 您还可以在不隐藏原始输入中的大量信息的情况下验证证明。 因此,寻找ZK-SNARKS在隐私方面非常有用,在可扩展性方面也非常有用。
现在,区块链有什么作用?区块链给你带来了很多好处,它们给你提供开放性, 它们为您提供全球可验证性。 但所有这一切都是以牺牲两件非常大的事情为代价的。 一是隐私,二是安全。 ZK-SNARKS,还你隐私,还你安全。 2016年,我们看到了 Zcash 协议。 然后,我们开始在生态系统理论中看到越来越多的东西。 今天,几乎所有东西都开始建立在 ZK 上,开始多方计算和完全同态加密。但有些事情是你无法用ZK-SNARKS做的。 所以隐私保护、计算、在人们的私人数据上运行。 投票实际上是一个重要的用例,您可以在其中获得一定程度的收益。 所以用ZK-SNARKS投票,但如果你想获得真正最好的属性,那么 MPC 和 FHE 是你必须使用的东西。
许多加密、人工智能应用程序最终也会使用 MPC 和 FHE,这两种原语在过去十年中效率都在快速提高。
BLS密钥聚合是一种有趣的技术,它基本上可以让您从一大堆不同的参与者(可能有数以万计的参与者)那里获取一大堆签名,然后尽快验证组合签名,就像验证一个签名一样。
这很强大。 BLS密钥聚合实际上是一项处于现代状态共识证明理论核心的技术。
如果你看看 BLS密钥聚合之前建立的状态共识证明,很多时候,算法通常只能支持几百个验证,就像一个定理目前大约有 30,000 个验证,因为它们正在提交签名, 每 12 秒一次。 这之所以成为可能,是因为这种新形式的密码学实际上只在过去 5 到 10 年里得到了足够的优化才能使用。
效率、安全与扩展功能
所以很多事情都是由这些新技术带来的。 他们很快就变得更强了。 当今的协议大量使用所有这些技术。 我们确实经历了从专用密码学到通用密码学的重大转变,在哪里创建新协议,您必须自己了解密码学是如何工作的。 您必须为特殊用途的应用程序创建一种特殊用途的算法,以达到更通用的目的。 在这个世界上,要创建一个使用我在过去 5 分钟谈到的内容的应用程序,您甚至不需要成为密码学家。 你可以写一段代码,然后把它编译成审批和验证器,你就有了一个寻求历史的应用程序。
那么这里有哪些挑战呢? 我认为现在的两个大问题:一个是效率,另一个是安全。 现在,还有第三种,可以说是扩展功能。 我认为,提高我们今天拥有的东西的效率和安全性更加重要。
我们来谈谈效率。 我们来说一个具体的例子,就是区块链的理论。 理论上说,如果出块时间为 12 秒,即一个区块与下一个区块之间的平均间隔时间为 12 秒。 在正常的区块验证时间上。 这是下级节点验证块所需的时间, 大约400毫秒。 现在寻找陷阱、证明平均理论和阻止所需的时间约为 20 分钟。 但两年前,这种情况正在迅速改善。此前,这一等就是5个小时。 现在,平均需要 20 分钟。与两年前相比,我们仍然取得了很大进步。
现在,我们的目标是什么? 目标是进行实时证明。 目标是,当创建一个区块时,您可以在创建下一个区块之前获得证明, 当我们实现实时证明时,世界上的每个用户都可以很容易地成为协议的完全验证用户。如果我们能够进入这样一个世界:每个以太坊钱包,包括浏览器钱包,包括移动钱包,包括其他链的智能合约钱包,实际上都在完全验证共识规则的理论。
所以他们甚至不相信自己是否更喜欢权益验证,因为他们实际上是直接验证规则并直接确保区块是正确的。 我们如何利用历史来做到这一点? 要使其真正发挥作用,ZK-SNARKS 证明需要实时进行,但需要有一种方法可以在 5 秒内证明理论和区块。 那么问题是,我们能达实现? 现在,MPC 和 FHE 也有类似的问题。 正如我之前提到的,MPC 和 FHE 的一个强大用例就是投票,对吧? 它实际上已经开始出现了。
MPC 当前的问题在于它的某些安全属性依赖于一台中央服务器。 我们可以去中心化吗? 我们可以,但它需要协议更加高效。 这些协议的花费巨大。
我们如何实现这样的需求? 对于ZK-SNARKS, 我认为效率提升分为三大类。 其中之一是并行化和聚合, 因此,如果你想象在一个关于区块的理论中,在一次验证中,区块最多需要大约1000万个计算步骤。 您执行每个计算步骤,并分别对其进行证明。 然后你进行证明聚合。
经过大约20次上述步骤之后,您就得到了一个代表整个区块正确性的重要证明。 这是今天利用现有技术可以做到的事情。 并且可以在5秒内证明劣质区块。 它需要大量的并行计算, 那么我们可以优化它吗? 我们可以优化聚合证明吗? 答案是肯定的,关于如何做到这一点,有很多理论想法,但这确实需要转化为实际的东西。
在相同的硬件成本和相同的电力成本下,ASIC能够比 GPU 快大约 100 倍的哈希处理速度。 问题是,我们可以通过严格证明获得完全相同的好处吗? 我认为答案是我们应该能够。 有很多公司已经开始实际构建专门用于证明ZK-SNARKS的产品,但实际上,它应该是非常通用的。 我们可以把 20 分钟缩短到 5 秒,进而使效率提高吗?
所以我们有GKR协议,我们有 64 位,我们有ZK-SNARKS等各种不同的想法。 我们能否进一步提高算法的效率? 我们能否创建更多ZK-SNARKS、友好的哈希函数、更多 ZK-SNARKS、友好的签名算法? 这里有很多想法,我强烈鼓励人们为这些想法做更多的工作。我们拥有所有这些令人惊叹的密码学形式,但是人们会不会信任它们? 如果人们担心其中存在某种缺陷, 无论是 ZK-SNARKS,还是 zkevm Circuits,它们都有 7000 行代码。 如果他们做得非常有效的话。 理论上,平均每千行代码有 15 到 50 个错误。 我们努力尝试。 每千行不到 15 个,但也大于零。如果你拥有这些持有数十亿美元人们资产的系统,那么如果其中一个出现错误,那么无论加密技术多么先进,这些钱都会丢失。
问题是,我们能做些什么来真正采用现有的密码学并减少其中的错误数量?
现在, 我认为如果一个团体的12 人中有 9 人,即超过 75% 的人同意存在错误,那么他们就可以推翻证明系统所说的任何内容。 所以它是相当中心化的。在不久的将来,我们就会有多重证明。 理论上来说,您可以降低其中任何一个的某部分出现错误的风险。 你有三个证明系统。 如果其中一个存在错误,那么希望另外两个在完全相同的位置不会出现错误。
用人工智能工具进行形式验证
最后,我认为未来值得研究的一件有趣的事情是使用人工智能工具进行形式验证。 实际上,从数学上证明像ZK-EVM 这样的东西没有错误。但你能否真正证明这一点,例如,ZK-EVM 实现正在验证与 Gas 中的定理实现完全相同的函数。 例如,你能证明它们对于任何可能的输入都只有一个输出吗?
在 2019 年,没有人认为人工智能可以在今天制作出非常漂亮的照片。 我们已经取得了很多进展,我们已经看到人工智能做到了。
问题是,我们是否可以尝试将类似的工具转向类似的任务。例如为跨越数千行代码的程序中的复杂语句自动生成数学证明。 我认为这是一个有趣的开放挑战,让人们了解签名聚合的效率。 那么今天以太坊有30000个验证器,运行一个节点的要求相当高吧? 我的笔记本电脑上有一个节点理论,它可以运行,但它不是一台便宜的笔记本电脑。 而且我确实必须自己去升级硬盘。 期望的目标是理论上的,我们希望支持尽可能多的验证。 我们希望权益证明尽可能民主化,以便人们能够直接参与任何规模的验证。 我们希望在节点理论中运行的要求非常低,并且非常易于使用。 我们希望理论和协议尽可能简单。
那么这里的限制是什么? 限制是每个参与者每个槽的所有数据需要 1 Bit,因为你必须广播谁参与签名和谁没有参与的信息。 这是在此之上最基本的限制。 如果是这样的话,就没有其他限制了。 计算,无下限。 您可以进行证明聚合。 您可以对每棵树进行递归,也可以进行签名。 您可以进行各种签名聚合。 你可以使用SNARKS,你可以使用密码学,就像你可以使用32位SNARKS一样,各种不同的技术。
关于点对点网络的思考
问题是,我们能在多大程度上优化签名聚合——点对点安全? 人们对点对点网络的思考还不够。 这才是我真正想强调的。 我认为在加密领域,通常有太多的倾向在点对点网络之上创建奇特的结构,然后假设点对点网络可以工作。 这里隐藏着很多恶魔吧? 我认为这些恶魔将变得更加复杂,就像点对点网络在比特币中的工作方式一样。
这其中有各种攻击,如女巫攻击、拒绝服务攻击等。但是当你有一个非常简单的网络,并且网络的唯一任务是确保每个人都能得到一切时,问题仍然相当简单。 问题在于,作为一种尺度理论,点对点网络变得越来越复杂。 今天的以太坊点对点网络有64个分片——为了做一次签名聚合,为了处理30000个签名。
首先,就像我们今天所做的那样,我们有一个点对点网络,它分为 64 个不同的分片,每个节点只是其中一个或几个网络的一部分。 因此,将两个项目分层并允许Rollup的费用非常低,这是一种有天赋的可扩展性解决方案。 这也依赖于更复杂的点对点架构。每个节点只下载全部数据的1/8吗?你真的能让这样的网络安全吗?我们该如何保存数据呢? 我们如何提高点对点网络的安全性?
结论
所以,我们需要考虑的是能够实现密码学限制的协议。我们的密码学已经比几十年前强大得多,但它还可以更强,我认为现在我们真的需要开始考虑什么是天花板,我们如何真正达到天花板?
这里有两个同样重要的方向:
其中之一就是继续提高效率, 我们想要实时证明一切。 我们希望看到这样一个世界:在去中心化协议的区块中传递的每条消息默认都附加有ZK-SNARKS,证明该消息以及该消息所依赖的所有内容都遵循协议的规则。 我们如何才能提高效率以实现这一目标? 第二个是提高安全性。 从根本上减少出现问题的可能性,让我们进入一个世界,在这个世界中,这些协议背后的实际技术可以是非常强大和非常值得信赖的。
但正如我们在许多次看到的那样,多重签名会被黑客攻击。 在很多情况下,这些Layer 2项目中的代币实际上是由多重签名控制的。 如果有九分之五的人同时遭到黑客攻击,就会损失很多钱。 如果想避免这些问题,那么我们需要信任——能够使用该技术,并以加密方式强制遵守规则,而不是相信一小群人来确保系统安全。
但要真正实现这一点,代码必须是值得信赖的。 问题是,我们能让代码可信吗? 我们能让网络值得信赖吗? 我们能让这些协议的这些产品的经济性值得信赖吗? 我认为这些是核心挑战,我希望大家能够继续共同努力来改进。 谢谢。
]