如何在 Circom 中访问具有 "Unknown" 索引的数组元素?
How to access array element with an "Unknown" index in Circom?
我有以下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();
我想访问任意索引处的数组元素并将其作为信号return。
我收到以下错误:
┌─ "/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:]
的 SHA256 散列。我不知道索引是什么,索引会根据数组的内容在程序内部计算。
我在 crypto.stackexchange.com 上问过我之前的 Circom 问题,但被引导到这里。
我可以这样使用 QuinSelector:
component quinSelector = QuinSelector(2512);
for (k=0; k< 2512; k++) {
quinSelector.in[k] <== array[k];
}
quinSelector.index <== v;
d <== quinSelector.out;
我有以下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();
我想访问任意索引处的数组元素并将其作为信号return。
我收到以下错误:
┌─ "/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:]
的 SHA256 散列。我不知道索引是什么,索引会根据数组的内容在程序内部计算。
我在 crypto.stackexchange.com 上问过我之前的 Circom 问题,但被引导到这里。
我可以这样使用 QuinSelector:
component quinSelector = QuinSelector(2512);
for (k=0; k< 2512; k++) {
quinSelector.in[k] <== array[k];
}
quinSelector.index <== v;
d <== quinSelector.out;