#静态分析 #circom #零知识 #密码学 #编程语言

应用 circomspect

Circom零知识DSL的静态分析器和代码检查器

14个版本

0.9.0 2024年6月20日
0.8.1 2023年3月21日
0.7.2 2022年12月1日
0.7.1 2022年11月29日
0.5.6 2022年9月12日

#100 in 编程语言

Download history 3/week @ 2024-04-27 101/week @ 2024-06-15 22/week @ 2024-06-22 12/week @ 2024-06-29 51/week @ 2024-07-06 1/week @ 2024-07-13 132/week @ 2024-07-27 6/week @ 2024-08-03

每月138 次下载

LGPL-3.0-only

600KB
14K SLoC

Circomspect 🔎

Crates.io badge GitHub badge

Circomspect 是 Circom 编程语言的静态分析器和代码检查器。该代码库大量借鉴了由 iden3 开发的 Rust Circom 编译器。

Circomspect 当前实现了一些分析过程,可以识别 Circom 电路中的潜在问题。我们的目标是继续添加新的分析过程,以便未来能够检测到更多问题。

Circomspect example image

安装 Circomspect

Circomspect 可在 crates.io 上找到,可以通过调用安装。

  cargo install circomspect

要从源代码构建 Circomspect,只需克隆仓库,在项目根目录中运行 cargo build 即可。要从源代码安装,请使用

  cargo install --path cli

运行 Circomspect

要在一个文件或目录上运行 Circomspect,只需运行

  circomspect path/to/circuit

默认情况下,Circomspect 将警告和错误输出到 stdout。要查看信息性结果,您可以使用 --level 选项设置输出级别。要忽略某些类型的输出,您可以使用 --allow 选项与相应的结果 ID 一起使用。(结果 ID 可以通过向 Circomspect 传递 --verbose 标志来获取。)

要将结果输出到 Sarif 文件(可由 VSCode Sarif Viewer 读取),请使用选项 --sarif-file

VSCode example image

Circomspect 支持Circom相同的曲线:BN254、BLS12-381 和 Goldilocks。如果您使用的是默认曲线(BN254)之外的曲线,您可以使用命令行选项 --curve 设置曲线。

分析过程

Circomspect 实现了针对多种不同类型问题的分析过程。完整列表及其每个问题的概述可以在 此处 找到。

依赖项

~12–22MB
~317K SLoC