feat: updates to latest mimc construction

This commit is contained in:
Kobi Gurkan
2019-05-11 21:29:31 +03:00
parent 79c6bb5345
commit bb1b0bf0fb
9 changed files with 448 additions and 27 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "zkp-sbmtjs",
"version": "0.1.0",
"version": "0.1.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -26,8 +26,8 @@ const bigInt = snarkjs.bigInt;
class Mimc7Hasher {
hash(level, left, right) {
return mimc7.multiHash([left, right]).toString();
return mimc7.multiHash([bigInt(left), bigInt(right)]).toString();
}
}
module.exports = Mimc7Hasher;
module.exports = Mimc7Hasher;

View File

@@ -51,8 +51,12 @@ contract MerkleTree {
}
function HashLeftRight(uint256 left, uint256 right) public pure returns (uint256 mimc_hash) {
uint256 intermediate = MiMC.MiMCpe7(15021630795539610737508582392395901278341266317943626182700664337106830745361, left);
mimc_hash = MiMC.MiMCpe7(intermediate, right);
uint256 r0 = 0;
uint256 h0 = MiMC.MiMCpe7(left, r0);
uint256 r1 = r0 + left + h0;
uint256 h1 = MiMC.MiMCpe7(right, r1);
uint256 r2 = r1 + right + h1;
mimc_hash = r2;
}
function insert(uint256 leaf) internal {

View File

@@ -60,8 +60,13 @@ contract MultipleMerkleTree {
}
function HashLeftRight(uint256 left, uint256 right) public pure returns (uint256 mimc_hash) {
uint256 intermediate = MiMC.MiMCpe7(15021630795539610737508582392395901278341266317943626182700664337106830745361, left);
mimc_hash = MiMC.MiMCpe7(intermediate, right);
uint256 k = 21888242871839275222246405745257275088548364400416034343698204186575808495617;
uint256 r0 = 0;
uint256 h0 = MiMC.MiMCpe7(left, r0);
uint256 r1 = addmod(r0, addmod(left, h0, k), k);
uint256 h1 = MiMC.MiMCpe7(right, r1);
uint256 r2 = addmod(r1, addmod(right, h1, k), k);
mimc_hash = r2;
}
function insert(uint8 tree_index, uint256 leaf) internal {

View File

@@ -1,5 +1,5 @@
{
"name": "semaphorejs",
"name": "zkp-semaphorejs",
"version": "0.1.0",
"lockfileVersion": 1,
"requires": true,
@@ -326,6 +326,15 @@
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
"are-we-there-yet": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
"integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -1645,6 +1654,14 @@
"type-detect": "^4.0.5"
}
},
"chai-as-promised": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz",
"integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==",
"requires": {
"check-error": "^1.0.2"
}
},
"chalk": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
@@ -1725,9 +1742,8 @@
}
},
"circom": {
"version": "0.0.24",
"resolved": "https://registry.npmjs.org/circom/-/circom-0.0.24.tgz",
"integrity": "sha512-4ZY0jOeVEwCT7+WnoXbr2/+eEvie5QunMwCA8nfAXhVdUv32Na1eQQNKjqq2HtgnTdXxK2z/mN/4x2yyKIMoiw==",
"version": "git+https://github.com/kobigurk/circom.git#b8068e8d052b8136896ca76aee87a3e63722b4aa",
"from": "git+https://github.com/kobigurk/circom.git",
"requires": {
"big-integer": "^1.6.32",
"optimist": "^0.6.1",
@@ -1735,7 +1751,7 @@
}
},
"circomlib": {
"version": "git+https://github.com/kobigurk/circomlib.git#2c569a089d8ba3cdd993575c57b5346444cb7c44",
"version": "git+https://github.com/kobigurk/circomlib.git#4186a9321e7c06a36f36ff8ca2c8909ca01a4e09",
"from": "git+https://github.com/kobigurk/circomlib.git",
"requires": {
"blake-hash": "^1.1.0",
@@ -1956,6 +1972,11 @@
"date-now": "^0.1.4"
}
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
@@ -2270,6 +2291,11 @@
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz",
"integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU="
},
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
"integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
},
"deep-is": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
@@ -2358,6 +2384,11 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
"delegates": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
},
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -2390,6 +2421,11 @@
"repeating": "^2.0.0"
}
},
"detect-libc": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
"integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
},
"diagnostics": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
@@ -2562,6 +2598,41 @@
"iconv-lite": "~0.4.13"
}
},
"encoding-down": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz",
"integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==",
"requires": {
"abstract-leveldown": "^5.0.0",
"inherits": "^2.0.3",
"level-codec": "^9.0.0",
"level-errors": "^2.0.0",
"xtend": "^4.0.1"
},
"dependencies": {
"abstract-leveldown": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz",
"integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==",
"requires": {
"xtend": "~4.0.0"
}
},
"level-codec": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.1.tgz",
"integrity": "sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q=="
},
"level-errors": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz",
"integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==",
"requires": {
"errno": "~0.1.1"
}
}
}
},
"end-of-stream": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
@@ -3206,6 +3277,11 @@
}
}
},
"expand-template": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
"integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="
},
"expand-tilde": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
@@ -3382,6 +3458,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"fast-future": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz",
"integrity": "sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo="
},
"fast-json-stable-stringify": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
@@ -6460,6 +6541,22 @@
"requires": {
"bn.js": "^4.11.8",
"ethereumjs-util": "^6.0.0"
},
"dependencies": {
"ethereumjs-util": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz",
"integrity": "sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q==",
"requires": {
"bn.js": "^4.11.0",
"create-hash": "^1.1.2",
"ethjs-util": "0.1.6",
"keccak": "^1.0.2",
"rlp": "^2.0.0",
"safe-buffer": "^5.1.1",
"secp256k1": "^3.0.1"
}
}
}
},
"ethereumjs-block": {
@@ -10147,6 +10244,22 @@
"requires": {
"bn.js": "^4.11.8",
"ethereumjs-util": "^6.0.0"
},
"dependencies": {
"ethereumjs-util": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz",
"integrity": "sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q==",
"requires": {
"bn.js": "^4.11.0",
"create-hash": "^1.1.2",
"ethjs-util": "0.1.6",
"keccak": "^1.0.2",
"rlp": "^2.0.0",
"safe-buffer": "^5.1.1",
"secp256k1": "^3.0.1"
}
}
}
},
"ethereumjs-block": {
@@ -10428,6 +10541,54 @@
}
}
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
},
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"requires": {
"number-is-nan": "^1.0.0"
}
},
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "^2.0.0"
}
}
}
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
@@ -10459,6 +10620,11 @@
"assert-plus": "^1.0.0"
}
},
"github-from-package": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
"integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4="
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
@@ -10632,6 +10798,11 @@
"has-symbol-support-x": "^1.4.1"
}
},
"has-unicode": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -11434,6 +11605,72 @@
}
}
},
"level-packager": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz",
"integrity": "sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==",
"requires": {
"encoding-down": "~5.0.0",
"levelup": "^3.0.0"
},
"dependencies": {
"abstract-leveldown": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz",
"integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==",
"requires": {
"xtend": "~4.0.0"
}
},
"deferred-leveldown": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz",
"integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==",
"requires": {
"abstract-leveldown": "~5.0.0",
"inherits": "^2.0.3"
}
},
"level-errors": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz",
"integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==",
"requires": {
"errno": "~0.1.1"
}
},
"level-iterator-stream": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz",
"integrity": "sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==",
"requires": {
"inherits": "^2.0.1",
"readable-stream": "^2.3.6",
"xtend": "^4.0.0"
}
},
"levelup": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz",
"integrity": "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==",
"requires": {
"deferred-leveldown": "~4.0.0",
"level-errors": "~2.0.0",
"level-iterator-stream": "~3.0.0",
"xtend": "~4.0.0"
}
}
}
},
"level-rocksdb": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/level-rocksdb/-/level-rocksdb-3.0.1.tgz",
"integrity": "sha512-ESbFU491UhmC9q1SPopqEeJOBN5OZm6j5T2H3a6bhPKBC60+98Ts21d5l8jgXtuvO5gCXh4eiYPhxz01tfXB4A==",
"requires": {
"level-packager": "^4.0.0",
"rocksdb": "^3.0.0"
}
},
"level-ws": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz",
@@ -12025,6 +12262,11 @@
"to-regex": "^3.0.1"
}
},
"napi-build-utils": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.1.tgz",
"integrity": "sha512-boQj1WFgQH3v4clhu3mTNfP+vOBxorDlE8EKiMjUlLG3C4qAESnn9AxIOkFgTR2c9LtzNjPrjS60cT27ZKBhaA=="
},
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
@@ -12053,6 +12295,14 @@
"lower-case": "^1.1.1"
}
},
"node-abi": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.8.0.tgz",
"integrity": "sha512-1/aa2clS0pue0HjckL62CsbhWWU35HARvBDXcJtYKbYR7LnIutmpxmXbuDMV9kEviD2lP/wACOgWmmwljghHyQ==",
"requires": {
"semver": "^5.4.1"
}
},
"node-environment-flags": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.4.tgz",
@@ -12118,6 +12368,11 @@
}
}
},
"noop-logger": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz",
"integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI="
},
"normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -12131,6 +12386,34 @@
"path-key": "^2.0.0"
}
},
"npm-update-git-deps": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/npm-update-git-deps/-/npm-update-git-deps-1.2.4.tgz",
"integrity": "sha512-jsFLdNWocnwHsEiECMFEpb0r99NLw8xh2uVtsTbh/u0X90VQK2InZPuKI73eoG3s98uGNOnq5WVI/B34lTiEIA==",
"dev": true,
"requires": {
"commander": "^2.20.0"
},
"dependencies": {
"commander": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
"dev": true
}
}
},
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"nth-check": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
@@ -12566,6 +12849,45 @@
"resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
},
"prebuild-install": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.0.tgz",
"integrity": "sha512-aaLVANlj4HgZweKttFNUVNRxDukytuIuxeK2boIMHjagNJCiVKWFsKF4tCE3ql3GbrD2tExPQ7/pwtEJcHNZeg==",
"requires": {
"detect-libc": "^1.0.3",
"expand-template": "^2.0.3",
"github-from-package": "0.0.0",
"minimist": "^1.2.0",
"mkdirp": "^0.5.1",
"napi-build-utils": "^1.0.1",
"node-abi": "^2.7.0",
"noop-logger": "^0.1.1",
"npmlog": "^4.0.1",
"os-homedir": "^1.0.1",
"pump": "^2.0.1",
"rc": "^1.2.7",
"simple-get": "^2.7.0",
"tar-fs": "^1.13.0",
"tunnel-agent": "^0.6.0",
"which-pm-runs": "^1.0.0"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
},
"pump": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
}
}
},
"precond": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz",
@@ -12774,6 +13096,24 @@
}
}
},
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
"integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
"integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
}
}
},
"readable-stream": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
@@ -13054,6 +13394,33 @@
"safe-buffer": "^5.1.1"
}
},
"rocksdb": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/rocksdb/-/rocksdb-3.1.0.tgz",
"integrity": "sha512-oLrw6InTO/e2DRqaeeyV68cepRqwgjsGMdGB0u5/Wb2x7hBJAtD2UIS7XhGxFmPJAg3cTBgPmUxZ+sGz2ehwOg==",
"requires": {
"abstract-leveldown": "~5.0.0",
"bindings": "~1.5.0",
"fast-future": "~1.0.2",
"nan": "~2.13.2",
"prebuild-install": "^5.0.0"
},
"dependencies": {
"abstract-leveldown": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz",
"integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==",
"requires": {
"xtend": "~4.0.0"
}
},
"nan": {
"version": "2.13.2",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz",
"integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw=="
}
}
},
"run-async": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
@@ -13982,6 +14349,28 @@
"yallist": "^3.0.2"
}
},
"tar-fs": {
"version": "1.16.3",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
"integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
"requires": {
"chownr": "^1.0.1",
"mkdirp": "^0.5.1",
"pump": "^1.0.0",
"tar-stream": "^1.1.2"
},
"dependencies": {
"pump": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
"integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
}
}
},
"tar-stream": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
@@ -16097,8 +16486,9 @@
}
},
"websnark": {
"version": "git+https://github.com/iden3/websnark.git#bbab2e4c7e396add1c8d240e92436e602f9f84d6",
"from": "git+https://github.com/iden3/websnark.git",
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/websnark/-/websnark-0.0.2.tgz",
"integrity": "sha512-qR/y2UxC/TK2Pnz+SfmFWAcqqvcPc+YWqy8N27zZGOuZoVTnffSj5QDj7+5/ZcGOgRm1P3pr+yCiJIWQxCQ+RA==",
"requires": {
"big-integer": "^1.6.42"
}
@@ -16146,6 +16536,11 @@
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"which-pm-runs": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
"integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs="
},
"wide-align": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
@@ -16381,6 +16776,20 @@
"buffer-crc32": "~0.2.3",
"fd-slicer": "~1.1.0"
}
},
"zkp-sbmtjs": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/zkp-sbmtjs/-/zkp-sbmtjs-0.1.1.tgz",
"integrity": "sha512-VwKOE6x4TNCIt6qAGR7y6vmoHoJ+K+z3G4026nOdL83F9T7+FuTdJWnO0h3FrC3PpxFbk9HcAK4eeAPUCpClBA==",
"requires": {
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1",
"circomlib": "git+https://github.com/kobigurk/circomlib.git",
"del": "^4.0.0",
"level-rocksdb": "^3.0.1",
"snarkjs": "^0.1.11",
"uuid": "^3.3.2"
}
}
}
}

View File

@@ -4,7 +4,8 @@
"description": "Zero-knowledge signaling on Ethereum",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"test": "echo \"Error: no test specified\" && exit 1",
"npm-update-git-deps": "npm-update-git-deps"
},
"bin": {
"semaphorejs-server": "./src/server/server.js",
@@ -17,7 +18,7 @@
"url": "https://github.com/kobigurk/semaphore.git"
},
"dependencies": {
"circom": "0.0.24",
"circom": "git+https://github.com/kobigurk/circom.git",
"circomlib": "git+https://github.com/kobigurk/circomlib.git",
"cors": "^2.8.5",
"del": "^4.1.0",
@@ -36,10 +37,12 @@
"truffle-privatekey-provider": "^1.1.0",
"web3": "^1.0.0-beta.51",
"webpack": "^4.30.0",
"websnark": "git+https://github.com/iden3/websnark.git",
"winston": "^3.2.1"
"websnark": "0.0.2",
"winston": "^3.2.1",
"zkp-sbmtjs": "^0.1.1"
},
"devDependencies": {
"npm-update-git-deps": "^1.2.4",
"null-loader": "^0.1.1",
"webpack-cli": "^3.3.0"
}

View File

@@ -76,7 +76,7 @@ class SemaphoreClient {
this.identity_nullifier = loaded_identity.identity_nullifier;
this.identity_r = loaded_identity.identity_r;
this.identity_commitment = mimc7.multiHash([pubKey[0], pubKey[1], this.identity_nullifier, this.identity_r]);
this.identity_commitment = mimc7.multiHash([bigInt(pubKey[0]), bigInt(pubKey[1]), bigInt(this.identity_nullifier), bigInt(this.identity_r)]);
logger.verbose(`identity_commitment: ${this.identity_commitment}`);
this.web3 = new Web3(node_url);
@@ -253,9 +253,9 @@ function generate_identity(logger) {
const identity_nullifier = '0x' + crypto.randomBytes(31).toString('hex');
const identity_r = '0x' + crypto.randomBytes(31).toString('hex');
logger.info(`generate identity from (private_key, identity_nullifier, identity_r): (${private_key}, ${identity_nullifier}, ${identity_r})`);
logger.info(`generate identity from (private_key, public_key[0], public_key[1], identity_nullifier, identity_r): (${private_key}, ${pubKey[0]}, ${pubKey[1]}, ${identity_nullifier}, ${identity_r})`);
const identity_commitment = mimc7.multiHash([pubKey[0], pubKey[1], identity_nullifier, identity_r]);
const identity_commitment = mimc7.multiHash([bigInt(pubKey[0]), bigInt(pubKey[1]), bigInt(identity_nullifier), bigInt(identity_r)]);
logger.info(`identity_commitment : ${identity_commitment}`);
const generated_identity = {

View File

@@ -20,9 +20,9 @@
* along with semaphorejs. If not, see <http://www.gnu.org/licenses/>.
*/
const RocksDb = require('sbmtjs/src/storage/rocksdb');
const MerkleTree = require('sbmtjs/src/tree');
const Mimc7Hasher = require('sbmtjs/src/hasher/mimc7');
const RocksDb = require('zkp-sbmtjs/src/storage/rocksdb');
const MerkleTree = require('zkp-sbmtjs/src/tree');
const Mimc7Hasher = require('zkp-sbmtjs/src/hasher/mimc7');
const Web3 = require('web3');
const SemaphoreABI = require('../../build/contracts/Semaphore.json');

View File

@@ -45,9 +45,9 @@ const Semaphore = artifacts.require('Semaphore');
const proof_util = require('../../src/util');
const RocksDb = require('sbmtjs/src/storage/rocksdb');
const MerkleTree = require('sbmtjs/src/tree');
const Mimc7Hasher = require('sbmtjs/src/hasher/mimc7');
const RocksDb = require('zkp-sbmtjs/src/storage/rocksdb');
const MerkleTree = require('zkp-sbmtjs/src/tree');
const Mimc7Hasher = require('zkp-sbmtjs/src/hasher/mimc7');
beBuff2int = function(buff) {
let res = bigInt.zero;