使用 Nethermind 客户端为以太坊构建 ZK 证明
使用 Nethermind 客户端为以太坊构建 ZK 证明
我们 ZK 准备之路
主要的里程碑已经完成:执行见证(execution witness),无状态重放(stateless replay),最小二进制文件(minimal binaries)和 RISC-V64 编译。接下来:与 Zisk 集成以生成第一个证明,然后是 RISC0 和 SP1 支持。这直接建立在 Nethermind 客户端在生产网络中经过验证的同步速度和可靠性之上。
我们构建了一个执行见证,该见证捕获了区块执行期间所涉及的所有内容:trie 节点(帐户、存储),合约字节码,哈希键和槽位的预映像以及区块头。
有了这个文件,任何人都可以在没有完整状态数据库的情况下重新执行区块。Github: NethermindEth/nethermind at feature/stateless-cli ##
无状态执行器(Stateless Executor)
在见证的基础上,我们添加了一个无状态执行器。它仅使用见证重放一个区块,无需磁盘,无需网络,以确认见证是完整的。
例子:
dotnet run --project tools/StatelessExecution -- \
--witness path/to/witness.json
我们为 RISC-V64 创建了一个精简的二进制文件,该文件仅以见证作为输入来运行以太坊的执行管道。没有网络,没有共识,没有线程。
得益于 NativeAOT,即使在 zkVM 内部,性能也是原生的。
Github: NethermindEth/bflat-riscv64 at riscv64_support
当我们开始时,.NET 并不完全支持 riscv64。我们修补了 .NET 和 bflat,使用 musl 编译,并删除了浮点指令。结果是一个完全静态的二进制文件,可以在 zkVM 目标中干净地运行。
Github: maximmenshikov/dotnet-riscv at linux-musl
现在我们正在与 Zisk 集成。它有自己的 I/O 接口和链接器脚本,因此我们将 .NET 运行时与 Zisk 的内存布局对齐。
目标是端到端地运行和证明小区块。
Nethermind 为以太坊 ZK(零知识)证明(zero-knowledge proofs)做的准备
将编译扩展到 riscv32 以获得更广泛的兼容性
首次集成将是 RISC0 和 SP1,更广泛的目标是支持任何使用 riscv64/32 的 zkVM
ZK 准备就绪不是单一的功能。这是一份路线图。我们正在将今天在生产中运行的同一客户端逐步扩展到零知识系统。
- 原文链接: x.com/ben_a_adams/status...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!