-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSealHubValidator.circom
More file actions
38 lines (31 loc) · 976 Bytes
/
SealHubValidator.circom
File metadata and controls
38 lines (31 loc) · 976 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
pragma circom 2.0.4;
include "../../circomlib/circuits/mimc.circom";
include "./MerkleTreeCheckerPoseidon.circom";
template SealHubValidator() {
var k = 4;
// Private inputs
signal input s[k];
signal input U[2][k];
signal input address;
// Compute commitment
component mimc7 = MultiMiMC7(k * 3 + 1, 91);
mimc7.k <== 0;
for (var i = 0; i < k; i++) {
mimc7.in[i] <== s[i];
mimc7.in[k + i] <== U[0][i];
mimc7.in[2 * k + i] <== U[1][i];
}
mimc7.in[3 * k] <== address;
signal output commitment <== mimc7.out;
// Check Merkle tree
var levels = 30;
signal input pathIndices[levels];
signal input siblings[levels];
component merkleTreeChecker = MerkleTreeCheckerPoseidon(levels);
merkleTreeChecker.leaf <== commitment;
for (var i = 0; i < levels; i++) {
merkleTreeChecker.pathElements[i] <== siblings[i];
merkleTreeChecker.pathIndices[i] <== pathIndices[i];
}
signal output merkleRoot <== merkleTreeChecker.root;
}