作者 胡飞瞳
零知识证明将是 Web3 最基础的技术之一,大多数项目都将和零知识证明相关。也即是说零知识证明将影响深远,渗入到 Web3 的每一个角落。
先说一下,什么是 Web3。简单地说,Web3 就是去中心化互联网(Decentralized Web)。不谈去中心化,就妄谈 Web3。
不可能三角的前提
说到去中心化,就离不开区块链。说到区块链,就逃脱不了区块链不可能三角。也就是说,去中心化、可扩展性、安全性三者不可兼得。
但这个是有个前提的,那就是在一定的技术条件下。在一定的技术条件下,如果要提升某一个方面或两个方面,就必然牺牲其他方面。比如说,当前的很多项目号称能够做到 TPS 到达数千上万,升至几十万。没有别的,牺牲安全性和去中心化而已。因此,这类项目,并没有强大的安全底座,做得更离谱些,其实就是互联网项目批了一个 Web3 的羊皮。挂羊头卖狗肉是也。
如果技术进步呢?
但是,三者兼得并非不可能,这就需要依靠技术进步来实现。当技术取得突破,就可能实现整体的提升。简单举个例子,如果计算能力和网络速度提升,就可以提升 TPS 而不牺牲安全性和去中心化。
技术进步可能导致单方面的突破,或者全方位的突破。比如,存储证明的发展使得 PoC 共识也能达成 PoW 共识相似的安全性, 因此,区块链有可能不用采用耗费能源的方式来提供去中心化的基础信任。拜占庭共识的发展和广泛应用使得一些安全性要求不是特别高的场景可以基于 PoS 来提供退阶的安全基础。密码学的发展和进步使得交易的安全得到加强,安全和易用性可能得到兼顾。而零知识证明的发展,则可能提供全方位的突破,也就是说,可以为去中心化,安全性和可扩展性提供全方位的助力。
什么是零知识证明?
简单地说,零知识证明是一种密码学方法,允许一方(证明者)向另一方(验证者)证明某些信息是真实的而不提供任何额外的信息。
这么说太抽象,简单地说,这里包含两个方面:
1)证明:就是可以用一个证明串(一个固定长度的类随机数)来证明一件事情,这个事情可以是一段存储的数据,一个已经完成的计算等等;
2)零知识:也就是给你证明了相关信息但不会泄漏相关信息;给你证明已经做了计算,但不透露具体的计算信息和输入数据。
还是太抽象,我们具体一点讲:比如你在百度网盘存储了一段数据,你怎么知道百度网盘没有把你的数据搞丢了或者篡改了呢?你不知道,除非你下载下来再做个对比,这很麻烦,所以你简单地选择相信它,如果真的出了问题,就事后告它。
又比如,你在阿里云租了一个虚机执行了一段程序。你怎么知道这个程序的执行结果就是对的呢?你就是假设它是对的。你想的是,阿里云费那个劲骗我干嘛?所以你就信它了。但是这里没有保证,也没有证明。
但是,如果技术进步了,百度网盘或者阿里云计算平台能够在每次存储或计算后都能够给你提供一个你可以轻松验证的证明,数学上严格的证明,你就不选择简单地相信,你就可以选择验证。这在去中心化网络中尤其重要,记住:Don‘t Trust,Verify!
如果这些证明是公开可验证的,就是包括你在内谁都可以验证,同时又不暴露隐私,那就完美了。这就是零知识证明。
为啥零知识证明会无处不在
先来看看为啥百度网盘或者阿里云不提供这种证明呢?原因很简单,零知识证明是一种新技术,尽管发展很快,但还不成熟。目前使用成本仍然非常高。简单来说,就是生成证明比重新做一遍成本要高非常多,是多个数量级的差别,因此不实用。
但是,在去中心化网络中,这种情况就稍有不同。其一,去中心化网路本身就很贵,比如以太坊的计算,你看一看 Gas 费用就知道了。这么贵是因为每个节点都要重复做同样的计算,因此,成本是中心化计算的成千上万倍。而如果我们能够在链下计算,直接提交证明到链上,那么计算就只需一次也能保证安全。这就是 zkRollup 的理论基础。大多数 zkRollup 的计算是中心化的,但是它的计算会提交到去中心化网络中去验证,这就借用了 Layer 1 的安全性,网络通过分级就扩展了。也就是说网络扩展了,但安全性并没有减弱,而且去中心化底座还是一样的。
不仅仅可以有 zkRollup 来通过零知识证明利用 Ethereum Layer 1 的安全底座。我们也可以有直接革新 Layer 1,有了零知识证明,我们似乎也不需要在 Layer 1 做重复计算,只需要去中心化验证就可以了。折旧衍生出 zkVM,比如 Aleo 就是一条新的采用零知识证明来做链下计算,链上验证的新兴区块链网络,其安全性有大量的验证节点来保障。
那么,既然 zkRollup 可以通过零知识证明来扩展 Layer 1,其他应用是也可以呢?当然可以。这就是现在很多应用直接跑一条 Layer 2,直接提交证明到主链来借用安全性,实现去中心化的信任。如此一来,大量的 Web2 的应用就可以嫁接到安全的区块链网络中来,可以直接接 BTC,Ethereum 或者 Filecoin 等。
有了零知识证明为基础,才有机会让 Web2 的应用转移到 Web3 来。一个可能的 Web3 的架构就是:
有一些足够去中心化的区块链网络,他们采用的共识主要是 PoW 或者 PoC,或者已经有强大生态的 PoS 网络,他们建立去中心化的网络信任 ,是 Web3 的安全基础;
零知识证明的服务层,用来提供零知识证明服务,链接应用和安全的区块链网络;
去中心化存储网络,构建 DA 层,利用零知识证明技术来保证隐私和保证数据的安全性;
各种应用,他们计算采用中心化,通过零知识证明服务层来构建证明,并通过区块链网络来进行验证,保证正确性和完整性;数据存储采用去中心化存储网络,同样通过零知识证明来保证正确性和完整性。
还要等多久?
有人要问了,当前的 Web3 应用好像不是这样的啊?说的没错,确实不是这样的,现在 Web3 也还是一个幼苗,刚开始呢。
目前的 Web3,从应用层来讲,要么就是合约置于 Layer 1,依靠重复计算来提供安全性,要么就是只是把 Token 放到合约里来伪装成 Web3(没有去中心化的安全保障)。一个可喜的趋势是,许多 Web3 项目可以放到 Rollup 里面运行,这样可以通过 OP 或者 ZK 的方法来利用 Layer 1 来提供安全性。但是,我们可以看到 ,目前 Web3 还非常小众,还是金融(DeFi)为主,说了几年的 GameFi,SocialFi 也才是在不断尝试。
试想,如果没有去中心化的存储(足够去中心化的 DA 网络),数据就不能去中心化,大量数据交互的应用就没法 Web3。另外,零知识证明技术也才只是在理论上证明了可行性,其效率和性价比还有待从工程和方法上大大提升才行。这两个部分,是未来 Web3 发展的关键。当这两个方面都取得实质性的突破,那么整个互联网的去中心化时代就来到了,Web3 时代也就到来了。到那个时候,无论是百度云还是阿里云,也需要通过去中心的信任网络来证明自己的服务是可以验证的,否则,自然有新的应用范式来适应这个需求。
具体还要等多久,不知道。但趋势已明朗。不要对短期期望太高,也不要轻视长期渐进发展的威力,也许奇点就在下个周期。