如何解决使用“IsEqual”函数比较两个输入的问题?

问题描述 投票:0回答:1

我正在努力通过黑客之家的测试,我需要使用

IsEqual
函数比较两个输入。请提供代码和解释。谢谢!

cryptography compare equality circom zkp
1个回答
2
投票

首先,您需要定义

IsEqual
模板及其所有组件。
IsEqual
模板接受两个输入(
in[0]
in[1]
)并输出一个布尔值 (
out
),指示两个输入是否相等。

template IsZero () {
    signal input in;
    signal output out;
    signal inverse;
    inverse <-- in!= 0 ? 1/in : 0; 
    
    out <== -in*inverse+1;
    in*out === 0;
}

template IsEqual () {
    signal input in[2];
    signal output out;

    component comp = IsZero();

    comp.in <== in[1] - in[0];
    
    out <== comp.out;
}

IsEqual

模板中的comp组件使用
IsZero
模板来确定两个输入信号之间的差异是否为零。如果差异为零,则意味着输入相等,并且 
out
 信号设置为 
true
,否则,设置为 
false

这是模板的测试用例:

component main { public [ in ] } = IsEqual(); /* INPUT = { "in":["0", "1"] } */
    
© www.soinside.com 2019 - 2024. All rights reserved.