iden3 / snarkjs

zkSNARK implementation in JavaScript & WASM
GNU General Public License v3.0
1.73k stars 413 forks source link

[ERROR] snarkJS: H section does not match #63

Closed benjaminstrasser closed 3 years ago

benjaminstrasser commented 3 years ago

Currently running on Ubuntu 20.04.1 LTS AMD Ryzen 7 3800X(8/16 Cores) MSI GTX 970

When I try to run the setup as described in the tutorial I run into the problem that verification step 18 does not verify. In order to reproduce, I provided the script I run and the output by running(circom and snarkjs are installed globally) sudo ./make > result

make

rm circuit* pot12*
sudo npm i circomlib
snarkjs powersoftau new bn128 12 pot12_0000.ptau -v
snarkjs powersoftau contribute pot12_0000.ptau pot12_0001.ptau --name="Second contribution" -v -e="some random text"
snarkjs powersoftau verify pot12_0001.ptau
snarkjs powersoftau beacon pot12_0001.ptau pot12_beacon.ptau 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f 10 -n="Final Beacon"
snarkjs powersoftau prepare phase2 pot12_beacon.ptau pot12_final.ptau -v
snarkjs powersoftau verify pot12_final.ptau
cat <<EOT > circuit.circom
include "./node_modules/circomlib/circuits/mimcsponge.circom";
include "./node_modules/circomlib/circuits/mimc.circom";
include "./node_modules/circomlib/circuits/bitify.circom";

template Hasher1() {
    signal input in;
    signal output hash;
    component hasher = MiMC7(91);
    hasher.x_in <== in;
    hasher.k <== 0;
    hash <== hasher.out;
}

template Hasher2() {
    signal input in[2];
    signal input direction;
    signal output hash;
    signal par[2];
    if (direction == 0) {
        par[0] <-- in[0];
        par[1] <-- in[1];
    } else {
        par[1] <-- in[0];
        par[0] <-- in[1];
    }
    component hasher = MiMCSponge(2, 220, 1);
    hasher.ins[0] <== par[0];
    hasher.ins[1] <== par[1];
    hasher.k <== 0;
    hash <== hasher.outs[0];
}

template Test(levels) {
    signal input anonymous; // unused
    signal input root; // set by smart contract Vote v to v.root
    signal input index;
    signal input nullifier;
    signal private input secret;
    signal private input merkle[levels];
    signal private input direction[levels];
    signal hash[levels+1];
    signal indexbits[256];
    signal indexext;

    component n2b = Num2Bits(256);
    n2b.in <== index;
    for (var i = 0; i < 128; i++) {
        indexbits[i] <== n2b.out[i];
    }
    for (var i = 0; i < levels; i++) {
        if (direction[i] == 0)
            indexbits[128 + i] <-- 0;
        else
            indexbits[128 + i] <-- 1;
    }
    for (var i = 128 + levels; i < 256; i++) {
            indexbits[i] <-- 0;
    }
    component b2n = Bits2Num(256);
    for (var i = 0; i < 256; i++) {
        b2n.in[i] <== indexbits[i];
    }
    indexext <== b2n.out;

    component nullifierHasher = Hasher2();
    nullifierHasher.in[0] <== secret;
    nullifierHasher.in[1] <== indexext;
    nullifierHasher.direction <== 0;
    nullifier === nullifierHasher.hash;

    component secretHasher = Hasher1();
    secretHasher.in <== secret;
    hash[0] <== secretHasher.hash;

    component hasher[levels];
    for (var i = 0; i < levels; i++) {
        hasher[i] = Hasher2();
        hasher[i].in[0] <== hash[i];
        hasher[i].in[1] <== merkle[i];
        hasher[i].direction <== direction[i];
        hash[i+1] <== hasher[i].hash;
    }

    hash[levels] === root;
}

component main = Test(1);
EOT

circom circuit.circom --r1cs --wasm --sym -v
snarkjs r1cs info circuit.r1cs
snarkjs r1cs export json circuit.r1cs circuit.r1cs.json
snarkjs zkey new circuit.r1cs pot12_final.ptau circuit_0000.zkey
snarkjs zkey contribute circuit_0000.zkey circuit_0001.zkey --name="Second contribution Name" -v -e="Another random entropy"
snarkjs zkey verify circuit.r1cs pot12_final.ptau circuit_0001.zkey

result


+ circomlib@0.2.4
updated 1 package and audited 148 packages in 1.239s

3 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

[DEBUG] snarkJS: Calculating First Challenge Hash
[DEBUG] snarkJS: Calculate Initial Hash: tauG1
[DEBUG] snarkJS: Calculate Initial Hash: tauG2
[DEBUG] snarkJS: Calculate Initial Hash: alphaTauG1
[DEBUG] snarkJS: Calculate Initial Hash: betaTauG1
[DEBUG] snarkJS: Blank Contribution Hash:
        786a02f7 42015903 c6c6fd85 2552d272
        912f4740 e1584761 8a86e217 f71f5419
        d25e1031 afee5853 13896444 934eb04b
        903a685b 1448b755 d56f701a fe9be2ce
[INFO]  snarkJS: First Contribution Hash:
        9e63a5f6 2b96538d aaed2372 481920d1
        a40b9195 9ea38ef9 f5f6a303 3b886516
        0710d067 c09d0961 5f928ea5 17bcdf49
        ad75abd2 c8340b40 0e3b18e9 68b4ffef
[DEBUG] snarkJS: Calculating First Challenge Hash
[DEBUG] snarkJS: Calculate Initial Hash: tauG1
[DEBUG] snarkJS: Calculate Initial Hash: tauG2
[DEBUG] snarkJS: Calculate Initial Hash: alphaTauG1
[DEBUG] snarkJS: Calculate Initial Hash: betaTauG1
[DEBUG] snarkJS: processing: tauG1: 0/8191
[DEBUG] snarkJS: processing: tauG2: 0/4096
[DEBUG] snarkJS: processing: alphaTauG1: 0/4096
[DEBUG] snarkJS: processing: betaTauG1: 0/4096
[DEBUG] snarkJS: processing: betaTauG2: 0/1
[INFO]  snarkJS: Contribution Response Hash imported: 
        7f9d40a6 950c9618 77ca1b1c 09051111
        77c1ec07 0426461d 9f4f0d81 aeec63b2
        54edc382 2db8db70 05f0968a 187e9d47
        80ab5d40 ece32e0b 35ad1d35 6ccfde13
[INFO]  snarkJS: Next Challenge Hash: 
        d4bc228f f82e99ec edb382e6 45200d24
        99277f4f a58c3072 1caeed2a 109d8e41
        c863ef84 ad73c5a8 7f4aff22 f99c73a7
        a5487e5d a377a55a 36f390a5 c461fe53
[INFO]  snarkJS: Powers Of tau file OK!
[INFO]  snarkJS: Next challenge hash: 
        d4bc228f f82e99ec edb382e6 45200d24
        99277f4f a58c3072 1caeed2a 109d8e41
        c863ef84 ad73c5a8 7f4aff22 f99c73a7
        a5487e5d a377a55a 36f390a5 c461fe53
[INFO]  snarkJS: -----------------------------------------------------
[INFO]  snarkJS: Contribution #1: Second contribution
[INFO]  snarkJS: Next Challenge: 
        d4bc228f f82e99ec edb382e6 45200d24
        99277f4f a58c3072 1caeed2a 109d8e41
        c863ef84 ad73c5a8 7f4aff22 f99c73a7
        a5487e5d a377a55a 36f390a5 c461fe53
[INFO]  snarkJS: Response Hash:
        7f9d40a6 950c9618 77ca1b1c 09051111
        77c1ec07 0426461d 9f4f0d81 aeec63b2
        54edc382 2db8db70 05f0968a 187e9d47
        80ab5d40 ece32e0b 35ad1d35 6ccfde13
[INFO]  snarkJS: Response Hash:
        9e63a5f6 2b96538d aaed2372 481920d1
        a40b9195 9ea38ef9 f5f6a303 3b886516
        0710d067 c09d0961 5f928ea5 17bcdf49
        ad75abd2 c8340b40 0e3b18e9 68b4ffef
[INFO]  snarkJS: -----------------------------------------------------
[WARN]  snarkJS: this file does not contain phase2 precalculated values. Please run: 
   snarkjs "powersoftau preparephase2" to prepare this file to be used in the phase2 ceremony.
[INFO]  snarkJS: Contribution Response Hash imported: 
        f1a525dd ac208f67 3d69a241 857568c3
        6aa0a7f7 16785240 b521e56d 0c94262e
        c4499ab4 3abce15b 1de06071 c33672a2
        3288e0a8 255373d8 0eb6d824 c3e209df
[INFO]  snarkJS: Next Challenge Hash: 
        5a0ddea4 a9916bab 804a58ca c4aec0f4
        3ed071e3 ae3e8af2 44884d9c 0d4e4f9e
        e4857788 b4519fc8 6741a99e 996086af
        28cee82e eeb63e5e 3ed752b3 a86dc8ef
[DEBUG] snarkJS: Starting section: tauG1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 0 FFTMix 1/1
[DEBUG] snarkJS: tauG1 0 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 1 FFTMix 1/1
[DEBUG] snarkJS: tauG1 1 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 2 FFTMix 1/1
[DEBUG] snarkJS: tauG1 2 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 3 FFTMix 1/1
[DEBUG] snarkJS: tauG1 3 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 4 FFTMix 1/1
[DEBUG] snarkJS: tauG1 4 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 5 FFTMix 1/1
[DEBUG] snarkJS: tauG1 5 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 6 FFTMix 1/1
[DEBUG] snarkJS: tauG1 6 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 7 FFTMix 1/1
[DEBUG] snarkJS: tauG1 7 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 8 FFTMix 1/1
[DEBUG] snarkJS: tauG1 8 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 9 FFTMix 1/1
[DEBUG] snarkJS: tauG1 9 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 10 FFTMix 1/1
[DEBUG] snarkJS: tauG1 10 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 11 FFTMix 1/1
[DEBUG] snarkJS: tauG1 11 FFTFinal 1/1
[DEBUG] snarkJS: tauG1 Prepare 1/1
[DEBUG] snarkJS: tauG1 12 FFTMix 1/1
[DEBUG] snarkJS: tauG1 12 FFTFinal 1/1
[DEBUG] snarkJS: Starting section: tauG2
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 0 FFTMix 1/1
[DEBUG] snarkJS: tauG2 0 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 1 FFTMix 1/1
[DEBUG] snarkJS: tauG2 1 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 2 FFTMix 1/1
[DEBUG] snarkJS: tauG2 2 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 3 FFTMix 1/1
[DEBUG] snarkJS: tauG2 3 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 4 FFTMix 1/1
[DEBUG] snarkJS: tauG2 4 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 5 FFTMix 1/1
[DEBUG] snarkJS: tauG2 5 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 6 FFTMix 1/1
[DEBUG] snarkJS: tauG2 6 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 7 FFTMix 1/1
[DEBUG] snarkJS: tauG2 7 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 8 FFTMix 1/1
[DEBUG] snarkJS: tauG2 8 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 9 FFTMix 1/1
[DEBUG] snarkJS: tauG2 9 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 10 FFTMix 1/1
[DEBUG] snarkJS: tauG2 10 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 11 FFTMix 1/1
[DEBUG] snarkJS: tauG2 11 FFTFinal 1/1
[DEBUG] snarkJS: tauG2 Prepare 1/1
[DEBUG] snarkJS: tauG2 12 FFTMix 1/1
[DEBUG] snarkJS: tauG2 12 FFTFinal 1/1
[DEBUG] snarkJS: Starting section: alphaTauG1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 0 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 0 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 1 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 1 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 2 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 2 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 3 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 3 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 4 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 4 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 5 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 5 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 6 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 6 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 7 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 7 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 8 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 8 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 9 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 9 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 10 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 10 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 11 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 11 FFTFinal 1/1
[DEBUG] snarkJS: alphaTauG1 Prepare 1/1
[DEBUG] snarkJS: alphaTauG1 12 FFTMix 1/1
[DEBUG] snarkJS: alphaTauG1 12 FFTFinal 1/1
[DEBUG] snarkJS: Starting section: betaTauG1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 0 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 0 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 1 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 1 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 2 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 2 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 3 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 3 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 4 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 4 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 5 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 5 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 6 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 6 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 7 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 7 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 8 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 8 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 9 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 9 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 10 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 10 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 11 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 11 FFTFinal 1/1
[DEBUG] snarkJS: betaTauG1 Prepare 1/1
[DEBUG] snarkJS: betaTauG1 12 FFTMix 1/1
[DEBUG] snarkJS: betaTauG1 12 FFTFinal 1/1
[INFO]  snarkJS: Powers Of tau file OK!
[INFO]  snarkJS: Next challenge hash: 
        5a0ddea4 a9916bab 804a58ca c4aec0f4
        3ed071e3 ae3e8af2 44884d9c 0d4e4f9e
        e4857788 b4519fc8 6741a99e 996086af
        28cee82e eeb63e5e 3ed752b3 a86dc8ef
[INFO]  snarkJS: -----------------------------------------------------
[INFO]  snarkJS: Contribution #2: Final Beacon
[INFO]  snarkJS: Next Challenge: 
        5a0ddea4 a9916bab 804a58ca c4aec0f4
        3ed071e3 ae3e8af2 44884d9c 0d4e4f9e
        e4857788 b4519fc8 6741a99e 996086af
        28cee82e eeb63e5e 3ed752b3 a86dc8ef
[INFO]  snarkJS: Response Hash:
        f1a525dd ac208f67 3d69a241 857568c3
        6aa0a7f7 16785240 b521e56d 0c94262e
        c4499ab4 3abce15b 1de06071 c33672a2
        3288e0a8 255373d8 0eb6d824 c3e209df
[INFO]  snarkJS: Response Hash:
        d4bc228f f82e99ec edb382e6 45200d24
        99277f4f a58c3072 1caeed2a 109d8e41
        c863ef84 ad73c5a8 7f4aff22 f99c73a7
        a5487e5d a377a55a 36f390a5 c461fe53
[INFO]  snarkJS: Beacon generator: 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
[INFO]  snarkJS: Beacon iterations Exp: 10
[INFO]  snarkJS: Powers Of tau file OK!
[INFO]  snarkJS: -----------------------------------------------------
[INFO]  snarkJS: Contribution #1: Second contribution
[INFO]  snarkJS: Next Challenge: 
        d4bc228f f82e99ec edb382e6 45200d24
        99277f4f a58c3072 1caeed2a 109d8e41
        c863ef84 ad73c5a8 7f4aff22 f99c73a7
        a5487e5d a377a55a 36f390a5 c461fe53
[INFO]  snarkJS: Response Hash:
        7f9d40a6 950c9618 77ca1b1c 09051111
        77c1ec07 0426461d 9f4f0d81 aeec63b2
        54edc382 2db8db70 05f0968a 187e9d47
        80ab5d40 ece32e0b 35ad1d35 6ccfde13
[INFO]  snarkJS: Response Hash:
        9e63a5f6 2b96538d aaed2372 481920d1
        a40b9195 9ea38ef9 f5f6a303 3b886516
        0710d067 c09d0961 5f928ea5 17bcdf49
        ad75abd2 c8340b40 0e3b18e9 68b4ffef
[INFO]  snarkJS: -----------------------------------------------------
NConstraints Before: 3272
NSignals Before: 4701
Classify Signals
classify signals: 0/4701
Reduce Constants
reducing constants:  0
Reduce Constraints
indexing constraints: 0/3266
reducing constraints: 0/3266   reduced: 0
substituting constraints: 0/13
reducing constraints: 0/13   reduced: 0
reordering constraints: 0/3266
NConstraints After: 3260
generate witness (counting):  0
seting id:  0
writing constraint:  0
writing wire2label map: 0/3403
Generating wasm...
buildHeader...
buildEntryTables...
buildEntryTables component: 0/13
buildCode...
buildCode component: 0/13
buildComponentsArray...
buildComponentsArray component: 0/13
buildMapIsInput...
buildMapIsInput signal: 0/4701
buildWit2Sig...
buildWit2Sig signal: 0/4701
constructionPhase: .327
classifySignals: .003
reduceConstants: .068
reduceConstraints: .178
generateWitnessNames: .005
generateR1cs: .076
generateWasm: .375
generateSyms: .001
[INFO]  snarkJS: Curve: bn-128
[INFO]  snarkJS: # of Wires: 3403
[INFO]  snarkJS: # of Constraints: 3260
[INFO]  snarkJS: # of Private Inputs: 3
[INFO]  snarkJS: # of Public Inputs: 4
[INFO]  snarkJS: # of Outputs: 0
[INFO]  snarkJS: Circuit hash: 
        b520d631 96f2c316 be1f068d e9f40815
        02d35773 4da75552 43449b21 078fc3e9
        d40fd1b3 9427c58f 2ab6fb9d 5f354e77
        636adc3c 605e07a8 33da7919 a5e238bc
[DEBUG] snarkJS: Applying key: L Section: 0/3398
[DEBUG] snarkJS: Applying key: H Section: 0/4096
[INFO]  snarkJS: Contribution Hash: 
        52ff9e72 b92431b0 9bcbc922 06b2f2ca
        a458fa59 e1bcf218 182f9d78 3e2aa81c
        88ff8338 a3ad2d75 c915bfd4 de71a548
        4f814923 b71b5add ac6ce14f 1902a537
[ERROR] snarkJS: H section does not match
benjaminstrasser commented 3 years ago

This issue is rather urgent as we want to upgrade to snarkjs 0.3.x as soon as possible to utilize some of the new features, which are hopefully resolving some significant bottlenecks as well as the ptau ceremony.

benjaminstrasser commented 3 years ago

version 0.3.29 fixed this issue