Circom中的哈希函数Sha256。

3
在ETH Global Paris的黑客马拉松期间,我们尝试将circom电路与哈希算法结合起来,以证明用户知道如何根据一个众所周知的中等教程来计算生日日期。以下是代码示例。
pragma circom 2.0.0;
include "./circomlib/circuits/sha256/sha256.circom";

template Birthday(){
  component SHA = Sha256(6);
  signal input date[6];
  SHA.in <== date;

  signal output date_out[256];
  date_out <== SHA.out;
}

component main { public [ date ] } = Birthday();

/* INPUT = {
    "date": [10, 3, 0, 3, 0, 1]
} */

错误,错误信息:断言失败。

模板 BinSum_17 第100行出错。

模板 SigmaPlus_18 第44行出错。

模板 Sha256compression_97 第83行出错。

模板 Sha256_98 第73行出错。

模板 Birthday_99 第7行出错。

1个回答

3

我询问了我的朋友凯俊尔,关于我正在实施的事情是否有意义。他深入研究了SHA256的代码,并确认了我的怀疑,即其实现并不是最好的,可以说是最差的。

凯,zrclib的共同创始人,建议我使用Poseidon,它更加高效。

所以这里是帮助我们赢得2023年ETH Global Paris的电路代码:

pragma circom 2.0.0;

include "./circomlib/circuits/poseidon.circom";

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

    component poseidon = Poseidon(2);

    poseidon.inputs[0] <== in[0];
    poseidon.inputs[1] <== in[1];
    out <== poseidon.out;
}

component main { public [ in ] } = Location();

/* INPUT = {
    "in": [100, 100]
} */

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接