复制成功

分享至

主页 > 比特币 >

ZK开发者必读:从入门到高阶的可选工具

2023.03.04

原文:A Developer’s Guide to the zkGalaxy

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

ZK开发者必读:从入门到高阶的可选工具

这是一个非常有用的启发式方法,以区分支持 zkEVM 的方法。然而,zkEVM 是构建零知识应用程序的所有可能方法的一个子集。对于想要利用 zk 计算的独特属性,即简洁性、零知识和正确性的程序员来说,zkEVM 可能不是最好的选择。通过阐述整个开发工具集,本文希望提供一个指南,帮助开发者在决策过程中选择合适的 zk 堆栈。


抽象复杂度的力量


在过去的一两年中,zk 工具有了巨大的进步。使得普通软件的开发人员可以利用 zk 的强大属性,而不需要深入了解令人生畏的基础数学和工程。另一方面,为高级用户提供的工具激增,使 zk 专家能够极其精细地控制 zk 堆栈。

现代软件是建立在无数的抽象层上的,以最大限度地提高专家的生产力。工程中的抽象有许多优势,这些优势在某种程度上是直观的--网络开发者不需要深入了解操作系统的工作原理。

建立良好的、可重复使用的抽象层的关键是封装一个层的复杂性,然后为堆栈中更高的层提供简单但有表现力的接口。正确的做法是,这使得具有不同专业领域和知识的开发人员能够在整个堆栈中建立有用的工具。

毫不奇怪,这些原则也适用于 zk 系统,而且这些抽象层正变得足够成熟,一个 zk 新手今天就可以开始使用它们并构建应用程序。

ZK开发者必读:从入门到高阶的可选工具

zk 堆栈与各层的一些工具/技术实例


低级别的 zk 开发


Arkworks-rs

Arkworks-rs 是一个 Rust 库的生态系统,它为 zkSNARK 应用程序的子组件提供高效和安全的实现。Arkworks 为开发者提供了必要的接口,以定制 zk 应用程序的软件栈,而不必重新实现与其他现有库的共性。

在 Arkworks 之前,创建一个新的 zk 应用程序的唯一方法是从头开始构建一切。与定制的垂直整合工具相比,Arkworks-rs 的主要优势在于其灵活性水平,减少重复工程,以及减少审计工作。Arkworks 组件之间合理的接口线允许升级的速度,可以使堆栈在 zk 技术快速创新的过程中保持相关性,而不会迫使团队从头开始重建一切。

优点

通过模块化实现灵活性

减少重复代码

降低工程成本

减少审计/bug 的表面积

无需重大重构即可升级任何组件

易于在快速发展的 zk 环境中试验新原语

缺点

需要深入了解完整的软件堆栈

如果没有正确理解,太多的控制会导致脚枪

精细控制需要堆栈所有级别的专业知识。

Arkworks 确实提供了一些合理的默认设置。


zk 领域专用语言(DSL)


为了创建一个关于某些计算的证明,首先这个计算必须以一个 zkSNARK 系统可以理解的形式来表达。一些特定领域的语言已经创建了编程语言,允许应用开发者以这种方式表达他们的计算。这些语言包括 Aztec Noir、Starknet 的 Cairo、Circom、ZoKrates 和 Aleo 的 Leo 等等。底层的证明系统和数学细节一般不会暴露给应用开发者。

开发者的经验

zkApp 的开发者必须熟练地用特定领域的语言编写程序。其中一些语言看起来很像我们熟悉的编程语言,而其他语言可能相当难学。让我们来分析一下其中的几个。

Cairo - Starkware DSL 对于在 Starknet 上构建应用程序是必要的。编译成 Cairo 特有的汇编语言,可由 Cairo zkVM 解释。

ZoKrates - ZoKrates 是一个满足 SNARK 常见需求的工具包,包括一种编写电路的高级语言。ZoKrates 在曲线、证明方案和后端方面也有一些灵活性,允许开发者通过简单的 CLI 参数进行热交换。

Circom — Circom 是一种用于构建电路的专用语言。目前,它是生产电路的实际语言。该语言不是特别符合人体工程学,使开发者敏锐地意识到正在编写电路。

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

Noir – 受 Rust 启发的语法。围绕 IR 而不是语言本身构建,这意味着它可以有一个任意的前端。

ZK开发者必读:从入门到高阶的可选工具

适用于谁

任何想要在其应用程序中利用 zk 的独特属性的应用程序开发人员。

其中一些语言已经过数十亿美元的实战测试,如在 ZCash 和 Starknet 等链的流动。虽然我们将讨论的一些项目还没有完全准备好用于生产,但使用其中一种语言编写电路是目前最好的策略,除非需要像 Arkworks 这样的工具包提供的更精细的控制。

优点

用户不需要了解底层的 zk 细节

有一定的生产经验,今天就可以使用

可在链上验证

生态系统不可知

缺点

用户需要学习一个新的 DSL

围绕这些语言的工具和支持都是孤立的

对底层证明堆栈几乎没有控制权(目前)。


zkEVMs


免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。

加⼊OKEx全球社群

和全球数字资产投资者交流讨论

扫码加入OKEx社群

相关推荐

industry-frontier