如何选择 ZK 技术栈

本文探讨了如何选择零知识证明(zk)技术栈,涵盖了低层 zk 开发如 Arkworks-rs、零知识领域特定语言(DSL)、zkEVMs 和 zkVM。文章强调了在 zk 应用开发中的各种选择,包括 DSLs 如 Circom 和 Cairo,以及 zkEVMs 的权衡。此外,还介绍了 zkLLVM 电路编译器和预构建的可重用电路,帮助开发者根据需求选择合适的技术堆。
摘要由CSDN通过智能技术生成

简介

去年夏天,Vitalik 撰写了一篇博文,概述了不同类型的 zkEVM(零知识以太坊虚拟机)。他根据性能和兼容性的权衡轴定义了它们。

img

低层 zk 开发

Arkworks-rs

Arkworks-rs是一个 Rust 库生态系统,提供了 zkSNARK 应用程序的子组件的高效且安全的实现。Arkworks 提供了必要的接口,使开发人员能够定制 zk 应用程序的软件堆栈,而无需重新实现与其他现有库的共同性。

在 Arkworks 之前,创建新的 zk 应用程序的唯一方法是从头开始构建一切。与自定义构建的垂直集成工具相比,Arkworks-rs 的关键优势在于灵活性、减少重复工程和减少审计工作量。Arkworks 的合理接口使得堆栈能够在 zk 技术的快速创新步伐中保持相关性,而无需强制团队从头开始重建一切。

适用于

Arkworks 适用于需要对整个 zk 软件堆栈进行精细控制,但又不想从头开始构建所有冗余部分的项目。如果你正在考虑定制电路 DSL 的自定义版本,例如,你正在为新的证明系统做原型,但对承诺方案或相应的椭圆曲线不确定,arkworks 将允许你快速在几个具有共享接口的选项之间切换,而不是从头开始。

优点
  • 通过模块化实现灵活性
  • 减少代码重复
  • 降低工程成本
  • 减少审计/错误表面积
  • 可以在不进行重大重构的情况下升级任何组件
  • 在快速发展的 zk 环境中轻松尝试新的原语
缺点
  • 需要对整个软件堆栈有深入的理解
  • 过多的控制权可能导致不正确使用的问题
  • 精细的控制需要在堆栈的所有层级上具备专业知识
  • Arkworks 提供了一些合理的默认设置。

零知识领域特定语言(DSL)

为了创建关于某个计算的证明,首先必须以一种 zkSNARK 系统能够理解的形式表达这个计算。一些特定领域的编程语言为此而创建,允许应用开发者以这种方式表达他们的计算。其中包括Aztec Noir,Starknet 的CairoCircomZoKrates和 Aleo 的Leo等。底层的证明系统和数学细节通常对应用开发者不可见。

开发者体验

zkApp 开发者必须熟练掌握在特定领域语言中编写程序的技巧。其中一些语言看起来很像熟悉的编程语言,而其他一些可能相当难以学习。让我们来了解一下其中几种:

Cairo – Starkware 的 DSL,用于在 Starknet 上构建应用程序。它编译成Cairo特定的汇编语言,可以由Cairo zkVM 解释。

ZoKrates — ZoKrates 是一个工具包,用于满足常见的 SNARK 需求,包括用于编写电路的高级语言。ZoKrates 还可以在曲线、证明方案和后端方面具有一定的灵活性,允许开发者通过简单的命令行参数进行热切换。

Circom — Circom 是一个专门用于构建电路的语言。目前,它是生产中电路的事实标准语言。该语言并不特别易用。语言本身让你非常清楚地意识到你正在编写电路。

Leo — Leo 是为 Aleo 区块链开发的语言。Leo 具有类似 Rust 的语法,专门用于区块链内的状态转换。

Noir – 基于 Rust 的语法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HongYingClub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值