0

我有以下Circom(电路编译器语言)程序:

pragma circom 2.0.0;


template MAIN() {

    signal input array[2512];
    signal output d;

    signal v;
    v <== 168;

    d <== array[v];
}

component main = MAIN();

我想访问任意索引处的数组元素并将其作为信号返回。

我收到以下错误:

   ┌─ "/Users/ilia/compiling/main-circom/main.circom":85:11
   │
85 │     d <== array[v];
   │           ^^^^^^^^ Non-quadratic constraint was detected statically, using unknown index will cause the constraint to be non-quadratic

如何访问具有“未知”索引的数组元素?

我正在尝试构建的是一个程序,它接收一个字节数组,寻找一个特定的索引,然后获取array[index:]. 我不知道索引是什么,索引将根据数组的内容在程序内部计算。

我已经在 crypto.stackexchange.com 上问过我之前的 Circom 问题,但在这里得到了指导。

4

1 回答 1

0

我可以像这样使用QuinSelector

    component quinSelector = QuinSelector(2512);
    for (k=0; k< 2512; k++) {
        quinSelector.in[k] <== array[k];
    }
    quinSelector.index <== v;
    d <== quinSelector.out;
于 2022-02-01T10:00:26.857 回答