Appearance
Circom
符号
<==
(约束赋值)- 同时进行赋值和添加约束
- 将右侧的值赋给左侧的信号,并创建约束确保等式成立
- 示例:
out <== in1 * in2;
===
(纯约束)- 仅添加约束,不进行赋值
- 用于验证两个表达式相等,但不改变任何信号的值
- 示例:
out === in1 * in2;
<--
(纯赋值)- 仅进行赋值,不添加约束
- 将右侧的值赋给左侧的信号,但不创建任何约束验证
- 示例:
out <-- in1 * in2;
实用电路
判零
判零
circom
template IsZero() {
signal input in;
signal output out;
signal inv;
inv <-- in!=0 ? 1/in : 0;
out <== -in*inv +1;
in*out === 0;
}
相等
相等
circom
template IsEqual() {
signal input in[2];
signal output out;
component isz = IsZero();
in[1] - in[0] ==> isz.in;
isz.out ==> out;
}