如何提升 EVM 的性能是一个大问题。一个方向是通过零知识证明(ZK)将计算移到链下。更具体地说,zkVM(zk 虚拟机)或 zk Co-processor(zk 协处理器)。简而言之:
链下计算,链上提交
首先我们需要了解zk-SNARKs和zk-STARKs,这是区块链常用的两种零知识证明机制,它们的主要区别在于证明的大小。
通俗地说,zk-SNARKs 和 zk-STARKs 是一种可以在不泄露秘密的情况下证明你知道秘密的机制。Vitalik 曾用这个例子解释过这一点:“我知道一个秘密数字,如果你在最后加上 cow 这个词,然后对其进行 SHA256 哈希运算 1 亿次,输出将以 `0x57d00485aa` 开头。”
证明者要完成所有的计算,给出一个证明,而验证者可以以很低的成本来验证这个证明。这是一个很形象的例子,有一百万个房间,只有一个房间有人,证明者把所有的房间都挨个检查,直到找到这个房间,验证者根据房间号打开房间,就能确认这个房间里确实有人。
了解了这些基础知识,我们再来看看协处理器。它指的是除了主处理器(CPU)之外,还执行额外特定计算的芯片。在区块链中,如果将 EVM 视为 CPU,那么 zk 协处理器就是执行额外特定计算的芯片。
协处理器这个术语并不常见,但场景却很常见。例如,外置显卡(GPU)就是协处理器。计算机的 CPU 可以执行一般计算,而 GPU 可以更快地执行特定计算。
如果把手机看作是一个处理器,那么云端服务也可以看作是它的协处理器。以ChatGPT为例,手机目前还无法运行更大的模型,但通过云端的推理服务,我们可以在手机上使用这个服务。
理解了这两点,我们就能很容易理解 zkVM 或者 zk Co-processor 了。以以太坊为例,我们在 EVM 之外进行计算,然后将(1)计算结果和(2)证明提交到链上。
以 RiscZero 的 zkVM 为例,它做的事情就是计算程序,然后生成证明,将收据提交到链上。收据由两部分组成:
1)期刊计算结果;
2)印章证明书。
其中,程序采用Rust编写,遵循Risc-V指令集。
那么,所谓的 zk Co-processor,还是以 RiscZero 为例,它的 Bonsai 协处理器可以在 zkVM 之外进行计算,然后将计算结果和证明提交到链上。
那么,什么样的计算需要移到链下呢?一个场景就是 Rollup。根据 Axiom 的分析,一个更常见的场景是让智能合约能够处理更复杂的计算。这需要处理两个问题:
- 数据:智能合约如何访问更多数据。
- 计算:智能合约程序可以处理哪些类型的计算。
PS:BitVM和AVM(Atomicals VM)的设计类似,都是链下计算,链上提交。