1. 引言
本文主要摘自 IDEN3团队Albert Rubio在Compiler and Composability in ZKP 上的演讲内容。
何为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
关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?