Cointime

扫码下载App
iOS & Android

一文探讨ZK编程语言

零知识证明(ZKP)是一种强大的密码学工具,它可以在验证计算的正确性的同时,保护输入数据的隐私。作为这一关键基础设施的组成部分,领域特定语言(DSL)发挥了至关重要的作用,简化了 ZKP 电路的开发和验证过程。它们在将抽象概念与证明系统所需的精确电路表示之间扮演了重要的角色,充当了两者之间重要的桥梁。

证明系统面临的关键挑战之一是将抽象的高层概念转化为实际电路。然而,DSL 的出现解决了这一难题,通过促进将这些抽象概念以更具体和可实现的方式结构化表达,从而应对这一挑战。

在过去的十年里,我们目睹了 DSL 在数量和多样性方面都取得了显著增长。这一领域的活跃表现在多种电路语言的发展中,包括 Noir、Leo、Zinc 等。无论您需要通用性的选项,比如 Circom,还是为特定平台定制的解决方案,比如 Cairo,您都可以选择从众多语言和框架中挑选,以编写ZKP 电路。

在本文中,我们将探讨开发者们正在积极利用的主要 ZK编程语言,并分析每种语言的最佳特点。

TLDR;

Cairo By StarkWare

Cairo,是支持 STARK 证明的通用计算程序的核心语言,在 StarkNet 和 StarkEx 的成功中扮演了关键角色,推动了以太坊主网上应用的可扩展性。值得一提的是,Cairo 在支持各种应用方面发挥了重要作用,包括 dYdX、Sorare、Immutable X 等。"Cairo" 这个名字来源于 "CPU代数中间表示"的缩写。在零知识证明领域,它扮演了类似汇编语言的角色,使熟悉 C、C++ 或 Solidity等低级编程语言的开发人员能够更轻松地上手。

受 Rust 的启发,Cairo 赋予了开发者创建 Starknet 智能合约的能力,着重关注安全性和用户友好的开发。Cairo 具有强大的语法,简化了 ZK 电路的创建,使用户能够在 Cairo 程序中执行各种任务。此外,Cairo 的一个显著优势在于其可扩展性,允许灵活地引入新功能和功能。

在 ZK 系统中,效率和可扩展性是至关重要的因素,而Cairo通过强调这两个方面来满足这一要求。该语言集成了优化策略,包括约束减少和循环消除,以减轻通常与 ZK 电路相关的计算负担。Cairo 对电路设计的优化导致更快的证明生成和验证,使其成为需要高吞吐量和最小延迟的应用的理想选择。

Cairo 的扩张发展是非常的令人瞩目,在过去两年里,全职开发者数量出现了非凡的激增。这一激增凸显了 Cairo 的适应性,因为 Cairo 的用途不仅局限于区块链,而是在任何需要进行计算验证的情境中都具有重要意义。因此,我们可以预见开发者对 Cairo 的采用将进一步迎来显著增长。

2023年9月28日,Starknet 推出了其编程语言 Cairo v2.3.0 的重要升级。这个版本标志着合约更模块化的重大进步,通过引入新功能、存储选项和事件管理,提升了智能合约的潜力。这些组件的整合提供了一种灵活的方式,用于扩展合约功能,使第三方模块能够增强合约的功能性。

Zinc by ZkSync

Zinc 是一种专为在 zkSync 平台上创建智能合约和 SNARK 电路而设计的编程语言。它采用了Rust 语法,融合了 Solidity 的元素,并提供了独特的功能。

Zinc 的独特之处在于它的用户友好性。您无需深入了解一阶约束系统(R1CS)的所有复杂细节就能编写安全的代码。Zinc 强调不可变性,使其天生具备函数式特性。这意味着它优先考虑不可变数据和函数评估,从而减少副作用,促进编写更干净、更少出错的智能合约代码。

此外,Zinc 还包括安全的数学操作,以防止潜在的溢出,确保所有操作的安全性。尽管它有一些限制,比如没有无限循环和递归,但 Zinc 通过控制台日志跟踪简化了调试过程。这些跟踪可简化在测试网络或主网络上跟踪和解决问题的交易过程,从而提升了调试体验。

Noir By Aztec

Noir 是由 Aztec 开发的开源 DSL,基于 Rust,旨在简化 ZK 电路和 ZK 程序的创建,无需深入了解加密学知识。它被认为是最易入门的语言之一,适用于编写与任何证明系统兼容的 ZK 应用程序。Noir 注重安全性、简洁性和性能。它提供了类似 Rust 的高级语法,将加密安全性抽象化,简化了加密基本原语的使用,同时保持高性能。

Noir 在扩展可以利用 ZKP 提供的隐私保护能力的应用范围方面具有显著优势,从而增强了隐私和验证效率。Noir 编译成一种称为 Abstract Circuit Intermediate Representation(Acer)的中间表示,然后可以进一步编译成 R1CS。将后端证明系统与语言本身分离使 Noir 能够支持各种证明系统,包括 Aztec Brettenberg、Turbo Plonk 以及潜在的未来集成,如 Groth16和Halo2。

该语言提供了一个标准库,包括高效的功能,如 SHA-256(一个生成固定大小输出的加密哈希函数)和 Pedersen-Merkle 检查(一种使用 Pedersen 承诺和 Merkle 树确保数据完整性和一致性的加密验证技术)。Noir 的设计类似于 Rust,包括应用程序开发人员熟悉的特性,如函数、子模块、用户定义类型(结构体)、条件语句、循环和全局常量。此外,还在不断努力开发泛型和一等函数,进一步增强 Noir 的表达能力。

需要注意的是,Noir 仍在不断完善中,可能存在一些限制和潜在的错误。但开发团队致力于持续改进和优化该语言。

o1js by 0(1) Labs

o1js,前身为 SnarkyJS,是由 0(1)Labs 开发的 TypeScript 库,用于使用 SNARK 编程语言创建智能合约。它充分利用了已经建立的技术,如 Node.js 和浏览器兼容性,以确保开发者能够轻松获取和方便使用。

o1js 能够与 JavaScript 和 TypeScript 库和工具无缝集成,为开发者提供了强大的生态系统和广泛的社区支持。这种集成简化了开发流程,减少了采用新开发环境所带来的学习曲线。此外,它完全支持 Visual Studio Code(VS Code),这是一款广泛使用的代码编辑器,可让开发者充分利用功能,如代码补全、语法高亮和调试,提升开发体验。

o1js 本质上是一个多功能的 ZK 框架,为您提供了创建zk证明所需的关键工具。它支持创建多样化的ZK程序,涵盖了各种内置的可证明操作,包括基本算术、哈希、签名、布尔操作、比较等等。借助o1js框架,您可以在 Mina Protocol 上构建 zkApps,这些智能合约在客户端执行,具有私有输入。

值得一提的是,在2023年9月初,0(1)Labs 团队宣布将从 SnarkyJS 过渡到 o1js,并强调了他们改进性能的承诺。特别值得注意的是,他们实现了库加载时间的3-4倍减少,这指的是导入 o1js 所需的时间,这个过程可能会阻塞主线程。对于Web应用程序而言,加载时间对 JavaScript 执行时机和整个页面渲染都具有重要意义。此外,该团队还更新了 Mina zkApp CLI,提升了用户界面构建体验,并宣布将进一步改进 Archive Node API,以增强其可靠性和清晰性。

Leo by Aleo

Aleo 区块链在智能合约领域独树一帜,强调隐私保护。其核心是 Leo 编程语言,这是一种受 Rust 启发的静态类型语言。Leo 专为开发私有应用而设计,为那些希望建立安全和保密的分散生态系统的创作者提供了支持。Leo真正独特之处在于,它在引入通用零知识应用的全面工具包方面发挥了开创性作用。这个工具包包括测试框架、包注册表、导入解析器、远程编译器和定理生成器。

Leo 的构想来自一支由 Howard Wu 领导的开发团队,他们设想了一种可以赋予开发人员能力,以构建优先考虑隐私和安全性的分散式应用程序。Leo的设计汲取了Rust的原则,同时融入了一些类似JavaScript的元素,以促进开发过程中的熟悉感和便捷性。此外,Leo旨在通过提供集成的测试平台、包注册表和导入转换器来加速开发,简化开发流程。这种集成使开发人员能够专注于其应用程序的核心逻辑,而不会被基础设施问题拖累。

Leo 的一个引人注目的特点是其编译器,该编译器将程序转换为低级的 R1CS 证明格式。Leo 编译器的独特之处在于其严格的正式验证过程。这种验证至关重要,因为漏洞可能在多个阶段出现,从初始编程到审计和编译。通过进行严格的数学检查,以确保编译器与程序员的意图一致,Leo 旨在降低未被察觉的错误或潜在的漏洞风险,尤其是在 L2 上下文、ZK-rollups 或 Leo 平台上的私有程序中。

Circom by iden3

Circom,一种专为 ZK 电路开发精心设计的 DSL,是由 Jordi Baylina 和 iden3 团队共同打造的成果。Circom 编译器采用 Rust 编写,其主要任务是编译使用 Circom 语言编写的电路。值得一提的是,Circom 已成为现实世界中杰出的 ZK 应用程序的首选选择,例如 Dark Forest 和 Tornado Cash。它之所以备受欢迎,归功于其出色的性能表现,包括通过优化的 WASM 证明实现快速的浏览器证明时间,通过 rapidsnark 实现高效的服务器端证明,以及高效的链上验证。

然而,需要认识到 Circom 的功能主要专注于 ZK 电路开发,这可能使其在处理更广泛的计算任务时不太适用。寻求更多功能、能够满足更广泛开发需求的开发者可能会觉得 Circom 的能力受到一定限制。在这种情况下,开发者可能需要结合其他编程语言或框架来满足更广泛的开发需求。

图片来自 Circom

Circom 的兼容性主要集中在广泛使用的 ZKP 系统,如 snarkjs 和 libsnark。虽然这种兼容性确保了与这些广泛使用的系统的无缝集成,但也意味着 Circom 电路继承了与这些依赖关系相关的特定功能和限制。那些偏好或需要替代 ZKP 系统的开发者可能会面临兼容性挑战,或需要投入额外的工作来适应和将 Circom 生成的电路集成到他们首选的系统中。

Lurk by Lurk Lab

Lurk 是一种受到 Scheme 和 Common Lisp 影响的静态作用域 Lisp 方言,具有独特的特点:它允许使用 zk-SNARKs  直接证明程序执行的正确性,从而实现了紧凑高效的验证。

Lurk 的主要用途包括:

  • 可验证计算:Lurk 允许您在零知识条件下证明其表达式的正确性,增强了对计算结果的信任。
  • 零知识:用户可以证明知识,而无需透露除公共输入之外的具体信息,从而保护隐私。
  • 内容寻址数据:每个 Lurk 程序都配备有一个唯一的内容标识符(CID),使其与 IPFS 和 IPLD 兼容。
  • 图灵完备性:Lurk 支持创建和证明任意计算声明。
  • 高阶函数:Lurk 函数可以接受和返回函数,实现了富有表现力的函数式编程。
  • 处理私有数据的计算:Lurk 使得可以处理私有数据,同时确保可以证明的正确输出,而不会泄露隐私。

在构建通用电路时,Lurk 充分利用了 Lisp 的 “cons” 内存分配器。该分配器合并表达式并生成引用通过散列。关键在于证明两个表达式确实散列成相同的引用。这种验证使得 Lurk 能够在 snark电路内执行计算。

Lurk 的功能非常丰富,包括支持无限递归、循环、条件控制流以及多个后端证明系统,如Groth16 与 SnarkPack+ 和 Nova。这种多功能性为各种应用打开了大门,包括验证计算、私有数据处理,以及在 snark 电路内执行图灵完备程序。

总结

随着 ZK 应用多样性的增加,DSL 在 ZK 领域的发展前景广阔。DSL 成功的关键在于建立蓬勃发展的社群和丰富的库,以丰富开发者的体验。那些将与现有库兼容性置于优先位置的 DSL 可以充分利用更广泛的开发者社群的知识和资源。这种方法有助于更顺畅地集成,加速开发,并在实施ZK应用程序时提供更大的灵活性。这种合作努力对于培育 DSL 周围更为健全的生态系统至关重要,为开发者提供切实的好处,并将进一步推动 ZK 技术的采用和有效性。

评论

所有评论

推荐阅读

  • 中共中央、国务院印发《关于发展新质生产力的意见》

    10月9日,据新华社报道,中共中央、国务院印发《关于发展新质生产力的意见》,共七个部分、十九条。意见提出,以科技创新为引领,以全要素生产率大幅提升为核心标志,坚持创新主导、改革为要、因地制宜、先立后破。在产业方面,意见要求培育壮大新兴产业,前瞻布局量子科技、生物制造、氢能和核聚变能、脑机接口、具身智能、第六代移动通信等未来产业,并全面实施「人工智能+」行动,加快推进人形机器人等新一代智能终端场景应用。在激励与金融支持方面,意见提出建立企业研发准备金制度、提高企业研发费用加计扣除比例,完善长期资本投早、投小、投长期、投硬科技的支持政策,壮大耐心资本,丰富科技创新债券产品体系,支持优质科技型企业上市融资,优化科技型企业并购重组、股权激励等制度。意见同时强调,不能脱实向虚、贪大求全、搞泡沫化,严禁借发展新质生产力之名违规滥用政策,对一哄而上、盲目投资等造成重大损失的严肃追究责任。

  • 美国对AI服务器电源等产品发起337调查 立讯精密、工业富联等20家企业列名

    10月10日,据同花顺消息,美东时间10月9日,美国国际贸易委员会(USITC)发布公告,对「特定垂直电力传输系统、其组件及含该系统的计算系统」发起337调查,针对AI服务器供电环节,共20家企业列名,包括立讯精密、工业富联、鸿海、鸿佰科技、台达电子、广达与云达、英飞凌、芯源系统、伟创力、天弘科技等,横跨中国大陆、中国台湾地区及美国、德国、新加坡、加拿大。调查源于马萨诸塞州电源模块厂商Vicor于9月9日提交的投诉,指控涉案产品侵犯其专利,请求发布有限排除令和禁止令,这是Vicor三年内第三次发起同类投诉。按USITC程序,立案后45天内将确定结案目标日期,本案距正式结论尚需较长时间。

  • Robinhood Crypto正与T.Rowe Price Digital Assets探索推出股票代币

    10月10日,Robinhood Crypto 正与管理资产规模达 1.9 万亿美元的 T. Rowe Price Digital Assets 探索在 Robinhood Chain 上推出与主动管理型 ETF 挂钩的股票代币。相关合作处于探索阶段,潜在产品的推出需完成法律尽职调查、获得发行方董事会批准、公布最终条款并取得相关司法管辖区的监管批准。目前无法保证合作推进或产品推出,具体形式、时间及适用地区尚未确定。

  • 英伟达被曝停产RTX 5090 顶级游戏显卡让位给高价专业卡

    10月10日,英伟达可能停产最强的消费级显卡RTX 5090,把核心芯片留给售价更高的专业显卡。硬件爆料者MEGAsizeGPU称,未来生产的GB202芯片将全部供应RTX PRO系列,不再用于RTX 5090;另一名爆料者hongxing2020晒出疑似工厂通知,称中国特供版本也在停产范围。两者使用同系列GB202芯片但价格相差很大:RTX 5090配备32GB显存,首发价1999美元;面向AI开发与设计的RTX PRO 6000拥有96GB显存,官网标价1.6万美元,为前者的8倍。RTX 5090此前已在美国市场缺货,第三方卖家一度挂出9600美元,若停产属实消费者今后只能依赖剩余库存。另有爆料称,英伟达准备推出24GB版RTX 5080取代RTX 5090成为最高端游戏显卡,而现款RTX 5080的CUDA核心数量仅约RTX 5090的一半,4K游戏性能低约30%。

  • 俄美元首通话 普京称俄目前不可能恢复与乌谈判

    10月10日,俄罗斯总统助理乌沙科夫当地时间10日凌晨介绍了俄美两国领导人通话的有关情况。乌沙科夫表示,普京在通话中详细介绍了俄罗斯为回应乌克兰武装部队实施的恐怖袭击而采取的措施。普京表示,乌克兰方面试图破坏俄罗斯国家杜马选举并对民众实施袭击,导致立即恢复谈判的可能性遭到破坏。普京还指出,乌克兰方面试图阻止俄罗斯军队推进的企图没有任何成功的前景,俄军目前完全掌握战场主动权,并正在持续向前推进。普京强调,由于乌克兰方面的立场,特别是其试图破坏俄杜马选举的行为,目前不可能恢复与乌克兰的谈判。特朗普已指示将普京在通话中传递的信息转达给乌克兰代表团。乌沙科夫称,关于举行普京与特朗普双边会晤的问题,双方目前尚未进行具体讨论。(央视新闻)

  • Telegram 内置 Gram 钱包更名为 Money 并向全体用户开放

    10月9日,Telegram 已将其原仅向部分用户开放的钱包服务“Gram wallet”更名为“Money”,并正式向全平台超过十亿用户全面推出。“Money”是针对 Gram 代币的内置钱包,支持存储、转账以及购买平台礼物与收藏级用户名。 此外,配套交易平台“Walt”提供超过 300 种资产服务,涵盖代币化股票、贵金属、永续合约及理财收益项目。用户可通过“Walt”向“Money”钱包进行即时划转且免收网络手续费。官方同时提示,加密资产投资存在相应风险。

  • Blockchain.com 寻求批准开展预测市场和加密货币衍生品交易

    10月9日,加密资产平台 Blockchain.com 已向美国商品期货交易委员会(CFTC)提交申请,寻求获得指定合约市场(DCM)和期货佣金商(FCM)牌照,以向美国用户提供事件合约(预测市场)及加密货币衍生品交易服务。

  • 贝森特:美国本周可能查扣约 10 亿美元与伊朗相关的加密货币

    美国财政部长贝森特周四在 Newsmax 于华盛顿举办的 NPolicy Summit 上表示,我们本周可能会查扣 10 亿美元的加密货币,并称「我们知道它在哪里,我们正在孤立他们」。贝森特表示,特朗普政府对伊朗的举措已从「极限施压」转为「绝对孤立」,措施包括海上封锁、限制航空出行及切断陆路通道,阿联酋和阿曼正与美方合作,美方也在与巴基斯坦和土耳其合作切断所有进出伊朗的陆路通道。

  • Zcash 开发团队计划于明年 1 月引入抗量子签名以保护公开支付

    隐私加密货币 Zcash(ZEC)开发团队计划于明年 1 月在网络中引入后量子签名操作码,以支持基于哈希的签名技术,从而抵御潜在的量子计算攻击。该方案主要针对透明(公开)支付池,目前约有 70% 的 ZEC 存放于该池中。尽管开发者将 1 月定为目标期限,但具体的网络激活时间尚未最终确定。 该升级旨在防止攻击者利用现有公钥反向推导私钥并伪造支付授权。此外,Zcash 节点验证程序 Zakura 还推出了一项基于私密信息检索(PIR)的钱包工具,允许用户在查询多地址余额时不向服务器泄露地址间的关联性。此前,以太坊研究员 Justin Drake 曾警告人工智能可能加速破解传统加密算法,并呼吁加密货币持有者应对潜在的安全威胁。

  • BTC突破83000美元

    行情显示,BTC突破83000美元,现报83017.3美元,24小时涨幅达到0.66%,行情波动较大,请做好风险控制。