约束生成 为了理解 Circom 的构建部分,我们需要考虑以下类型的表达式: 常量值:仅允许常量值。 线性表达式:仅使用加法的表达式。也可以使用变量乘以常数来表示。例如,表达式 是允许的,因为它等效于 。 二次表达式:通过允许两个线性表达式相乘和线性表达式相加得到的表达式:A\B - C,其中 A、B 和 C 是线性表达式。例如, 。 非二次表达式:任何不属于上述类型的算术表达式。 Circom 允许程序员定义约束来定义算术电路。所有约束必须是 A\B + C = 0 形式的二次约束,其中 A、B 和 C 是信号的线性组合。Circom 会对定义的约束进行一些小的变换以符合 A\B + C = 0 的格式: 将等式的一侧移到另一侧。 应用加法的交换律。 乘(或除)常数。