iden3 / circom

zkSnark circuit compiler
GNU General Public License v3.0
1.29k stars 247 forks source link

[ERROR] snarkJS: Error: Scalar size does not match #277

Open utsavempiric20 opened 1 month ago

utsavempiric20 commented 1 month ago

I face SnarkJS: Error: Scalar size does not match this issue when i convert the string to integer.give me the solution about it. here my code :

pragma circom 2.0.0;

template StringToIntData(n) {
    signal input string[n];
    signal output integer;

    signal temp[n];
    signal mult_factor[n];
    signal resultInt[n+1];

    resultInt[0] <== 0;
    mult_factor[0] <== 1;
    for (var i = 1; i < n; i++) {
        mult_factor[i] <== mult_factor[i-1] * 10;
    }

    component partial_sum[n];
    for (var i = 0; i < n; i++) {
        partial_sum[i] = calaculateTheInt();

        temp[i] <== string[i] - 48; 

        partial_sum[i].in1 <== temp[i];
        partial_sum[i].in2 <== mult_factor[n-1-i];

        resultInt[i+1] <== resultInt[i] + partial_sum[i].out;
    }

    integer <== resultInt[n];
    log(integer);
}

template calaculateTheInt() {

    // Declaration of signals.
    signal input in1;
    signal input in2;
    signal output out;

    // Constraints.
    out <== in1 * in2;
}

component main {public [string]}= StringToIntData(5);

Input data is :

{
  "string": [49, 50, 51, 52, 53]
}
Arvolear commented 1 month ago

Hey @utsavempiric20, seems like your circuit doesn't have any private (non-public) inputs. That's why the snarkjs throws an error.

From ZK standpoint your circuit simply doesn't make sense, hence the error :)