... | @@ -6,11 +6,11 @@ |
... | @@ -6,11 +6,11 @@ |
|
|
|
|
|
| 虚拟机 | 兼容性 | 实现方案 | 技术路线 |
|
|
| 虚拟机 | 兼容性 | 实现方案 | 技术路线 |
|
|
| :--: | :--: | :--: | :--: |
|
|
| :--: | :--: | :--: | :--: |
|
|
| [zkSync](https://zksync.io/) | 与高级语言兼容 | 自定义中间字节码、自定义基于寄存器的虚拟机、证明自定义虚拟机上执行字节码的正确性 | ? |
|
|
| [ZKsync Era](https://zksync.io/) | 与高级语言兼容 | 自定义中间字节码、自定义基于寄存器的虚拟机、证明自定义虚拟机上执行字节码的正确性 | STARK, FRI, PLONK-style arithmetization |
|
|
| [Polygon Hermez](https://hermez.io/) | 与EVM几乎兼容 | 自定义汇编代码、自定义虚拟机、证明自定义汇编代码执行的正确性 | ? |
|
|
| [Polygon zkEVM](https://polygon.technology/polygon-zkevm) | 与EVM几乎兼容 | 自定义汇编代码、自定义虚拟机、证明自定义汇编代码执行的正确性 | eSTARK, FRI, FFLONK |
|
|
| [Scroll](https://scroll.io/) | 与EVM兼容 | 针对EVM[大部分操作码](https://docs.scroll.io/zh/technology/chain/differences/)的计算步骤以及状态改变设计通用证明电路来证明交易执行轨迹的正确性 | zkSNARK, Halo2, Plonkish |
|
|
| [Scroll](https://scroll.io/) | 与EVM兼容 | 针对EVM[大部分操作码](https://docs.scroll.io/zh/technology/chain/differences/)的计算步骤以及状态改变设计通用证明电路来证明交易执行轨迹的正确性 | Halo2, KZG, Plonkish arithmetization |
|
|
| [Zeth](https://github.com/risc0/zeth) | 与以太坊兼容 | 将EVM编译为RISC-V机器操作码、使用RISC Zero zkVM来证明RISC-V操作码执行的正确性 | ? |
|
|
| [Zeth](https://github.com/risc0/zeth) | 与以太坊兼容 | 将EVM编译为RISC-V机器操作码、使用RISC Zero zkVM来证明RISC-V操作码执行的正确性 | STARK, FRI |
|
|
| **[ChainWeaver](https://git.chainweaver.org.cn/zkp/zkevm-circuits)** | 与EVM兼容 | 针对EVM大部分操作码的计算步骤以及状态改变设计通用证明电路来证明交易执行轨迹的正确性 | zkSNARK, Halo2, Plonkish |
|
|
| **[ChainWeaver](https://git.chainweaver.org.cn/zkp/zkevm-circuits)** | 与EVM兼容 | 针对EVM大部分操作码的计算步骤以及状态改变设计通用证明电路来证明交易执行轨迹的正确性 | Halo2, KZG, Plonkish arithmetization |
|
|
|
|
|
|
---
|
|
---
|
|
|
|
|
... | @@ -58,13 +58,13 @@ ChainWeaver和Scroll都是针对EVM操作码的计算步骤以及状态改变, |
... | @@ -58,13 +58,13 @@ ChainWeaver和Scroll都是针对EVM操作码的计算步骤以及状态改变, |
|
|
|
|
|
# 附录(各常见的零知识虚拟机简介)
|
|
# 附录(各常见的零知识虚拟机简介)
|
|
|
|
|
|
## zkSync
|
|
## ZKsync Era
|
|
|
|
|
|
[zkSync](https://zksync.io/)是由 Matter labs 团队于2020年推出的零知识虚拟机。这一方案将Solidity语言编译为中间语言Yul,然后使用LLVM将中间语言Yul进一步编译为一套自定义的、和零知识证明电路兼容的字节码,然后在自定义的基于寄存器的虚拟机(zkSync VM)上执行;设计相应的电路来证明自定义虚拟机上执行的字节码的正确性,从而实现对智能合约的零知识证明。由于这类方法将高级语言转化为零知识友好的语言并在专用的虚拟机上执行,其具有很好的性能表现,但这也导致了其与现有部分以太坊应用不兼容。
|
|
[ZKsync Era](https://zksync.io/)是由 Matter labs 团队于2020年推出的零知识虚拟机。这一方案将Solidity语言编译为中间语言Yul,然后使用LLVM将中间语言Yul进一步编译为一套自定义的、和零知识证明电路兼容的字节码,然后在自定义的基于寄存器的虚拟机(ZKsync Era VM)上执行;设计相应的电路来证明自定义虚拟机上执行的字节码的正确性,从而实现对智能合约的零知识证明。由于这类方法将高级语言转化为零知识友好的语言并在专用的虚拟机上执行,其具有很好的性能表现,但这也导致了其与现有部分以太坊应用不兼容。
|
|
|
|
|
|
## Polygon Hermez
|
|
## Polygon zkEVM
|
|
|
|
|
|
[Polygon Hermez](https://hermez.io/)是由 Polygon 团队于2021年推出的一款zkEVM。其使用了一种“基于操作码的方法”,将EVM的操作码直接转化为一组新的汇编代码(而非从高级语言层面开始转化),并生成新的汇编代码(即zkASM)在自定义的虚拟机上执行正确性的证明。之所以这么设计是想优化EVM解释,减少约束数量并直接证明EVM。核心挑战是在自定义虚拟机中重现每个EVM操作码,以便快速将EVM字节码转换为可验证格式。相比zkSync,该方法与EVM具有较高的兼容性,但性能有所降低。
|
|
[Polygon zkEVM](https://polygon.technology/polygon-zkevm)是由 Polygon 团队于2021年推出的一款zkEVM。其使用了一种“基于操作码的方法”,将EVM的操作码直接转化为一组新的汇编代码(而非从高级语言层面开始转化),并生成新的汇编代码(即zkASM)在自定义的虚拟机上执行正确性的证明。之所以这么设计是想优化EVM解释,减少约束数量并直接证明EVM。核心挑战是在自定义虚拟机中重现每个EVM操作码,以便快速将EVM字节码转换为可验证格式。相比ZKsync,该方法与EVM具有较高的兼容性,但性能有所降低。
|
|
|
|
|
|
## Scroll
|
|
## Scroll
|
|
|
|
|
... | | ... | |