Skip to content

Circom

符号

  1. <== (约束赋值)

    • 同时进行赋值和添加约束
    • 将右侧的值赋给左侧的信号,并创建约束确保等式成立
    • 示例:out <== in1 * in2;
  2. === (纯约束)

    • 仅添加约束,不进行赋值
    • 用于验证两个表达式相等,但不改变任何信号的值
    • 示例:out === in1 * in2;
  3. <-- (纯赋值)

    • 仅进行赋值,不添加约束
    • 将右侧的值赋给左侧的信号,但不创建任何约束验证
    • 示例: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;
}