2 个不稳定版本

0.2.0 2023 年 4 月 1 日
0.1.1 2022 年 4 月 9 日

1581密码学

每月 30 次下载
clutch 中使用

MIT/Apache

4MB
32K SLoC

包含 (Mach-o exe, 9MB) examples/fcomm

fcomm: 函数承诺

此示例是正在进行中的工作,仅用于演示目的,并可能发生变化。

fcomm CLI 提供了创建和验证 Lurk 证明以及操作函数承诺的接口。

函数承诺

待办事项:函数承诺接口的说明。

创建和验证评估证明

要了解证明是如何工作的,首先导航到 fcomm/examples 目录。从 lurk-rs 项目的根目录开始,

  lurk-rs git:(master)  cd fcomm/examples
  examples git:(master) 

要生成一个非常简单的证明,请输入以下命令(这会出奇地慢)

> make fibonacci-proof

要查看被证明评估的程序,请查看其 源代码

要查看生成的证明对象声称的内容,请查看生成的 json 文件的声明部分。如果您安装了像 jq 这样的 JSON 格式化工具,则可以更清楚地查看

  examples ✗ cat fibonacci-proof.json| jq | more

如下所示

{
  "claim": {
    "Evaluation": {
      "expr": "(LETREC ((NEXT (LAMBDA (A B N TARGET) (IF (EQ N TARGET) A (NEXT B (+ A B) (+ 1 N) TARGET)))) (FIB (NEXT 0 1 0))) (FIB 1))",
      "env": "NIL",
      "cont": "Outermost",
      "expr_out": "1",
      "env_out": "NIL",
      "cont_out": "Terminal",
      "status": "Terminal",
      "iterations": null
    }
  },
  "proof": {
    "Recursive": {
      ...
    }
  }
}


To verify the generated proof:

```bash
> make verify-fibonacci-proof

请注意以下限制

  • 此处序列化的证明未针对大小进行优化。
  • 此处使用的 Groth16 和 SnarkPack+ 参数并非可信设置的产物,因此是不安全的。
  • 为了简化开发和示例中的可重复性,这些参数是按需确定性生成的。
  • 这些参数当前未缓存。
  • 这会增加证明和验证的时间。
  • 对于 ReductionCount 选项(见:lib.rs)的较大值,这可能是显著的。
  • 即使对于默认示例中使用的最小电路,这也可能导致验证速度惊人地慢。

要查看使用的命令,请查看 Makefile

依赖关系

~28–43MB
~670K SLoC