zkEVM 承前,zkWasm 启后
正如前言所述,真正 Web2.0 和 Web3.0 连接打通的生态纪元是 AppRollup 时代,相较于还沉静在 chain 思路的生态下,Rollup 时代不需要创造出过多的 chain,因为 chain 扮演的是账本,也即账户层脱离于单独的应用,回归到通用层,所属权回归用户;chain 天然是这样一个载体,承担着 Data Availability (DA),Settlement 和 Consensus 的本质职能。

图 2:AppRollup is much more flexible than Appchain
ZKP,Zero-Knowledge Proof
密码学中,零知识证明(英语:zero-knowledge proof)或零知识协议(zero-knowledge protocol)是一方(证明者)向另一方(检验者)证明某命题的方法,特点是过程中除「该命题为真」之事外,不泄露任何资讯。因此,可理解成「零泄密证明」。最早由 MIT 的 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在 1985 年一篇名为《互动式证明系统的知识复杂性》([GMR85])的论文中提出。作者在论文中提到,证明者(prover)有可能在不透露具体数据的情况下让验证者(verifier)相信数据的真实性。零知识证明可以是交互式的,即证明者面对每个验证者都要证明一次数据的真实性;也可以是非交互式的,即证明者创建一份证明,任何使用这份证明的人都可以进行验证。

图 3:零知识证明发展史
zk-SNARK(Succinct Non-Interactive Arguments of Knowledge)可能是最流行的零知识证明形式,最早出现在 2011 年的 Bit+11 论文中。到 2013 年,多亏了 Pinocchio PHGR13 论文,零知识证明可以在现实应用中使用,该论文使 zk-SNARKS 适用于一般计算,尽管速度较慢。2016 年提出的 Groth16 算法大大降低了计算复杂性,使 zk-SNARKS 非常高效,至今仍然是标准。
然而,可信设置对于这些零知识协议的安全性至关重要。必须使用初始过程生成加密参数,以便能够运行零知识协议。由第三方执行此操作,以确保加密参数是随机、不可预测和安全的。
随后在 2017 年引入了 Bulletproofs(BBBPWM17),在 2018 年引入了 zk-STARKs(BBHR18)。与前任不同,它们是不需要初始可信设置的范围证明类型。2019 年的 PlonK 论文实现了通用零知识证明算法,这意味着只需要启动一次可信设置,而与之相比,Groth16 需要每个电路都有一个单独的可信设置。
由于领域的发展,零知识证明已经从纯理论过渡到在区块链、安全通信、电子投票、访问控制和游戏中具有有用的实际应用。随着它们继续投入商业应用,将会有更多令人兴奋的发展来推进技术。
所以,zk-SNARKS、zk-STARKS、PLONK 以及 Bulletproofs 构成了当前零知识证明主要实现方式,每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点。在区块链的扩容解决方案里,基本也是围绕着 ZK-SNARK-friendly 为主的实现方式。
WASM, WebAssembly
WebAssembly(简写 WASM)是 Web 技术家族(JavaScript、HTML、CSS)中相对较新的成员,于 2019 年 12 月成为 W3C 官方认可的标准。WebAssembly 在浏览器中引入了一个新的运行时,该运行时与 JavaScript 运行时协同工作。相比之下,它更轻量,拥有少量的指令集以及严格的隔离模型(WebAssembly 默认没有 I/O)。开发 WebAssembly 的主要动机之一是为更多的编程语言(C++、Rust、Go 等)提供编译目标,允许开发人员使用更广泛的工具集开发新的 Web 应用程序或移植现有的应用程序。

图 4:Wasm 版图
不论是 Web2 还是 Web3,对 Wasm 的支持和使用范围也是越来越广泛的:

图 5:WebAssembly 生态中的主要公司和组织