Circmoメモ
circom inputs are bound by the big prime number p (from circom docs) - so it's not exactly 64 bits
jsでテスト書いて、Circomの回路に入力するときとかは気を付ける
code:hash
pragma circom 2.0.3;
include "circomlib/poseidon.circom";
template Example () {
signal input a;
signal input b;
signal input c;
signal input d;
signal input e;
signal output out;
component hash = Poseidon(5);
hash.inputs0 <== a;
hash.inputs1 <== b;
hash.inputs2 <== c;
hash.inputs3 <== d;
hash.inputs4 <== e;
log(hash.out);
}
component main { public a } = Example();
/* INPUT = {
"a": "12354",
"b": "5", "4", "3", "2"
} */
checkConstraintsはその名の通り、各ゲートの入力と出力がバランスしているかどうかをチェックします。
witnessCalculatorは読み込みに時間がかかりますが、悪い入力を与えるとエラーになりますね...
checkConstraintsはR1CSファイル(witness入力なし)で動作します。つまり、回路自体がバランスのとれた制約を作成したかどうかをチェックするだけです。
そこで質問です。
サーコムで非バランス制約を作成することは可能でしょうか?私はそのようなコードはコンパイルできないと思っています...どのようにしてこのアサーションを失敗させるのでしょうか?