2 个不稳定版本
0.2.0 | 2023 年 4 月 1 日 |
---|---|
0.1.1 | 2022 年 4 月 9 日 |
1581 在 密码学 中
每月 30 次下载
在 clutch 中使用
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