您当前的位置: 首页 >  ui

mutourend

暂无认证

  • 0浏览

    0关注

    661博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Circom 2.0: A Scalable Circuit Compiler

mutourend 发布时间:2022-07-23 23:08:10 ,浏览量:0

1. 引言

本文主要摘自 IDEN3团队Albert Rubio在Compiler and Composability in ZKP 上的演讲内容。

在这里插入图片描述

2. 何为Circom?

何为Circom? ==>circom

  • 为编程语言和编译器
  • 由Jordi Baylina创建的,针对ZK协议中电路设计的DSL语言
  • 为iden3项目的一部分
  • circom 2.0编译器主要由UCM大学的团队开发
  • circom 2.0编译器完全开源且由Rust语言写成,提供了更快的电路编译和更好的安全性
  • circom社区正在快速承载
  • 社区对于circom的成功至关重要

一个circom program主要有两重目的:

  • 1)提供相应电路的符号描述:在二进制文件中有一组R1CS约束。
  • 2)提供一种高效的方式来根据输入计算witness:
    • 将有WebAssembly(wasm)代码与JS或主流浏览器结合
    • 为大型电路提供了C++代码(如ZK-Rollups for Layer 2)

circom支持开发者从底层设计arithmetic电路(类似于设计电子电路)。 在circom中,所有的约束必须由开发者明确添加。 约束可被简化,在编译时可移除signals,但是永远不会引入新的signals。

在circom,实际的电路称为components,而component是基于template实例化的,template为对电路的参数化描述,如: 在这里插入图片描述 如上,电路Multiplier接收2个输入,然后输出signal为二者的乘积。

circom的一个关键特征是提供了不同的指令来:

  • 在symbolic层定义新的约束:
    out === in1 * in2; // symbolic level "only"
    
    会生成约束in1 * in2 - out = 0
  • 在computational层计算a signal:
    out            
关注
打赏
1664532908
查看更多评论
0.0998s