📜 scroll-prover 📜
使用方法
最新发布版本
v0.10.3 目前在 Scroll 主网中使用。main 分支的 HEAD 用于开发。
前提条件
通过 svm-rs 安装版本为 0.8.19 的 Solidity 编译器 solc
:
cargo install svm-rs
svm install 0.8.19
下载所有设置参数,度数 20、24 和 26 在配置中使用。 也可以只下载度数 26 的参数,但可能会影响性能(在缩小参数时)。
make download-setup -e degree=20
make download-setup -e degree=24
make download-setup -e degree=26
或者指定其他度数和目标目录进行下载。
# 默认 `degree=26` 和 `params_dir=./integration/params`。
make download-setup -e degree=DEGREE params_dir=PARAMS_DIR
测试
make test-chunk-prove
和 make test-e2e-prove
是 scroll-prover 多层电路约束系统的主要测试入口。开发者可以通过阅读这些测试的代码来了解系统的工作原理。
还有其他测试:
make test-inner-prove
可用于测试第一层电路。make test-batch-prove
可用于测试最后两层。
二进制文件
可以使用以下命令在本地运行二进制文件。
运行 zkevm prover 以生成块证明(工作目录为 ./integration
)
# 参数文件应位于 `./integration/params`。
cargo run --release --bin trace_prover -- --params=params --trace=tests/extra_traces/batch_34700/chunk_1236462/block_4176564.json
验证器合约
在运行聚合测试(make test-e2e-prove
)时,可以生成验证器合约的 YUL 和字节码。运行聚合测试后,在 scroll-prover 的 integration 文件夹中会创建一个名为 integration/outputs/e2e_tests_*
的新文件夹。它包含以下文件:
- 块协议:
chunk_chunk_0.protocol
- 块验证密钥:
vk_chunk_0.vkey
- 批次验证密钥:
vk_batch_agg.vkey
- 验证器 YUL 源代码:
evm_verifier.yul
- 验证器字节码:
evm_verifier.bin
YUL 源代码由参数、验证密钥和证明实例数生成,可参考 snark-verifier 中的 gen_evm_verifier 函数。
验证器字节码是从 YUL 源代码编译而来,它调用 Solidity 编译器(如上所述的 0.8.19 版本)命令行并指定参数,可参考 snark-verifier 中的 compile_yul 函数。
许可证
根据您的选择,可以使用以下任一许可证:
- Apache License, Version 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)