10 个版本

0.150.4 2024 年 8 月 16 日
0.150.2 2024 年 8 月 12 日
0.150.2-rc.22024 年 7 月 31 日
0.140.1-gpu-wrapper.12024 年 8 月 6 日
0.140.0-gpu-wrapper.02024 年 7 月 8 日

#34 in 神奇豆

Download history 67/week @ 2024-06-29 2608/week @ 2024-07-06 390/week @ 2024-07-13 3381/week @ 2024-07-20 3824/week @ 2024-07-27 2150/week @ 2024-08-03 2632/week @ 2024-08-10

11,995 每月下载量
用于 zksync-wrapper-prover

MIT/Apache

4MB
33K SLoC

zkSync Era:一个用于扩展以太坊的 ZK Rollup

Logo

zkSync Era 是一个使用零知识证明来扩展以太坊而不牺牲安全或去中心化的第二层 Rollup。由于其与 EVM 兼容(Solidity/Vyper),99% 的以太坊项目可以重部署而无需重构或审计任何一行代码。zkSync Era 还使用基于 LLVM 的编译器,最终将允许开发者在 C++、Rust 和其他流行语言中编写智能合约。

如何使用

此存储库包含见证生成工具(运行区块代码并生成特定电路的见证部分)和完整的区块证明工作流程执行的基本示例,即

  • 创建必要数量的每种独特基本类型的电路(称为调度)
  • 对这些电路进行证明聚合
  • 运行最终的“调度器”电路,以验证调度的逻辑有效性(将输出馈送到输入)并证明聚合是递归验证调度序列的结果

运行起来很容易

获取一些现代 Rust 版本(至少支持 Rust 2021 和 const generics,但通常最新的 nightly 版本也是一个不错的选择)并运行

cargo test basic_test  --release -- --nocapture

它可能有点啰嗦,但它是一个完整端到端测试,它会

  • 设置基本环境 - 添加了“系统”级别合约的空状态树
  • 创建一些关于链前状态的虚拟信息(仅需要状态根)
  • https://github.com/vladbochok/test-contract 运行合约,地址为 0x8001,这是一个没有 calldata 和特定意义的合约调用,但触动了系统的最有趣的部分:外部调用、回滚、预编译、存储访问、事件、L2 到 L1 消息
  • 生成证据
  • 根据一些(任意)的容量参数集合(例如“T 类型电路每电路主操作数”)生成所需数量的电路
  • 为基本电路、递归聚合电路和“调度器”生成了验证密钥
  • 为每个阶段生成证明 - 基本电路 -> 聚合(叶子和节点)-> 调度器
  • 每个证明在创建时都会与相应的验证密钥进行验证

.json 文件中可以看到很多文件在 setuptest_proofs 文件夹中。这些都是中间证明,如果存在证明,则示例脚本将跳过其重新计算(无论是证明还是验证密钥)。因此,要运行完整的工作流程,可以删除所有这些,或者删除其中的一些。

运行设置文件的再生

将重新生成设置参数(几何、验证密钥、最终化提示和填充证明)

cargo run --release --bin geometry_config_generator
cargo test --release test_run_create_base_layer_vks_and_proofs
cargo test --release test_run_create_recursion_layer_vks_and_proofs

许可证

zkSync Era 在以下条款下分发:

由您选择。

免责声明

zkSync Era 已经经过了大量的测试和审计。尽管它是活跃的,但它仍然处于 alpha 状态,并将接受更多的审计和漏洞赏金计划。我们非常乐意听到我们社区对它的想法和建议!重要的是要指出,现在对其进行分叉可能会导致错过重要的安全更新、关键功能和性能改进。

依赖关系

~28–39MB
~625K SLoC