This commit is contained in:
Alexey 2020-12-13 00:18:04 +01:00
parent c598afad13
commit adaaa7d844
2 changed files with 4 additions and 4 deletions

View File

@ -29856,7 +29856,7 @@
{
"name": "main",
"params": {
"n": "20",
"levels": "20",
"zeroLeaf": "21663839004416932945382355908790599225266501822907911457504978515578255421292"
},
"template": "MerkleTreeUpdater",
@ -647093,16 +647093,16 @@
"CompConstant": "function(ctx) {\n ctx.setVar(\"sum\", [], \"0\");\n ctx.setVar(\"b\", [], \"340282366920938463463374607431768211455\");\n ctx.setVar(\"a\", [], \"1\");\n ctx.setVar(\"e\", [], \"1\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"127\")) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setVar(\"clsb\", [], bigInt(bigInt(bigInt(ctx.getVar(\"i\",[])).mul(bigInt(\"2\")).mod(__P__)).greater(bigInt(256)) ? 0 : bigInt(ctx.getVar(\"ct\",[])).shr(bigInt(bigInt(ctx.getVar(\"i\",[])).mul(bigInt(\"2\")).mod(__P__))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.setVar(\"cmsb\", [], bigInt(bigInt(bigInt(bigInt(ctx.getVar(\"i\",[])).mul(bigInt(\"2\")).mod(__P__)).add(bigInt(\"1\")).mod(__P__)).greater(bigInt(256)) ? 0 : bigInt(ctx.getVar(\"ct\",[])).shr(bigInt(bigInt(bigInt(ctx.getVar(\"i\",[])).mul(bigInt(\"2\")).mod(__P__)).add(bigInt(\"1\")).mod(__P__))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.setVar(\"slsb\", [], ctx.getSignal(\"in\", [bigInt(ctx.getVar(\"i\",[])).mul(bigInt(\"2\")).mod(__P__)]));\n ctx.setVar(\"smsb\", [], ctx.getSignal(\"in\", [bigInt(bigInt(ctx.getVar(\"i\",[])).mul(bigInt(\"2\")).mod(__P__)).add(bigInt(\"1\")).mod(__P__)]));\n if (bigInt(bigInt((bigInt(ctx.getVar(\"cmsb\",[])).eq(bigInt(\"0\")) ? 1 : 0)).and(bigInt((bigInt(ctx.getVar(\"clsb\",[])).eq(bigInt(\"0\")) ? 1 : 0))).and(__MASK__)).neq(bigInt(0))) {\n {\n ctx.setSignal(\"parts\", [ctx.getVar(\"i\",[])], bigInt(bigInt(bigInt(bigInt(__P__.sub(bigInt(ctx.getVar(\"b\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"slsb\",[]))).mod(__P__)).add(bigInt(bigInt(ctx.getVar(\"b\",[])).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__))).mod(__P__)).add(bigInt(bigInt(ctx.getVar(\"b\",[])).mul(bigInt(ctx.getVar(\"slsb\",[]))).mod(__P__))).mod(__P__));\n }\n\n } else {\n if (bigInt(bigInt((bigInt(ctx.getVar(\"cmsb\",[])).eq(bigInt(\"0\")) ? 1 : 0)).and(bigInt((bigInt(ctx.getVar(\"clsb\",[])).eq(bigInt(\"1\")) ? 1 : 0))).and(__MASK__)).neq(bigInt(0))) {\n {\n ctx.setSignal(\"parts\", [ctx.getVar(\"i\",[])], bigInt(bigInt(bigInt(bigInt(bigInt(bigInt(ctx.getVar(\"a\",[])).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"slsb\",[]))).mod(__P__)).add(__P__).sub(bigInt(bigInt(ctx.getVar(\"a\",[])).mul(bigInt(ctx.getVar(\"slsb\",[]))).mod(__P__))).mod(__P__)).add(bigInt(bigInt(ctx.getVar(\"b\",[])).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__))).mod(__P__)).add(__P__).sub(bigInt(bigInt(ctx.getVar(\"a\",[])).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__))).mod(__P__)).add(bigInt(ctx.getVar(\"a\",[]))).mod(__P__));\n }\n\n } else {\n if (bigInt(bigInt((bigInt(ctx.getVar(\"cmsb\",[])).eq(bigInt(\"1\")) ? 1 : 0)).and(bigInt((bigInt(ctx.getVar(\"clsb\",[])).eq(bigInt(\"0\")) ? 1 : 0))).and(__MASK__)).neq(bigInt(0))) {\n {\n ctx.setSignal(\"parts\", [ctx.getVar(\"i\",[])], bigInt(bigInt(bigInt(bigInt(ctx.getVar(\"b\",[])).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"slsb\",[]))).mod(__P__)).add(__P__).sub(bigInt(bigInt(ctx.getVar(\"a\",[])).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__))).mod(__P__)).add(bigInt(ctx.getVar(\"a\",[]))).mod(__P__));\n }\n\n } else {\n {\n ctx.setSignal(\"parts\", [ctx.getVar(\"i\",[])], bigInt(bigInt(bigInt(__P__.sub(bigInt(ctx.getVar(\"a\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"smsb\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"slsb\",[]))).mod(__P__)).add(bigInt(ctx.getVar(\"a\",[]))).mod(__P__));\n }\n\n }\n\n }\n\n }\n ctx.setVar(\"sum\", [], bigInt(ctx.getVar(\"sum\",[])).add(bigInt(ctx.getSignal(\"parts\", [ctx.getVar(\"i\",[])]))).mod(__P__));\n ctx.setVar(\"b\", [], bigInt(ctx.getVar(\"b\",[])).add(__P__).sub(bigInt(ctx.getVar(\"e\",[]))).mod(__P__));\n ctx.setVar(\"a\", [], bigInt(ctx.getVar(\"a\",[])).add(bigInt(ctx.getVar(\"e\",[]))).mod(__P__));\n ctx.setVar(\"e\", [], bigInt(ctx.getVar(\"e\",[])).mul(bigInt(\"2\")).mod(__P__));\n }\n\n }\n ctx.setSignal(\"sout\", [], ctx.getVar(\"sum\",[]));\n ctx.setPin(\"num2bits\", [], \"in\", [], ctx.getSignal(\"sout\", []));\n ctx.setSignal(\"out\", [], ctx.getPin(\"num2bits\", [], \"out\", [\"127\"]));\n}\n",
"AliasCheck": "function(ctx) {\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"254\")) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n ctx.setPin(\"compConstant\", [], \"in\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"in\", [ctx.getVar(\"i\",[])]))\n }\n ctx.assert(ctx.getPin(\"compConstant\", [], \"out\", []), \"0\", \"undefined:30:4\");\n}\n",
"AliasCheckBabyJub": "function(ctx) {\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"251\")) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n ctx.setPin(\"compConstant\", [], \"in\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"in\", [ctx.getVar(\"i\",[])]))\n }\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"3\")) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n ctx.setPin(\"compConstant\", [], \"in\", [bigInt(\"251\").add(bigInt(ctx.getVar(\"i\",[]))).mod(__P__)], \"0\")\n }\n ctx.assert(bigInt(ctx.getPin(\"compConstant\", [], \"out\", [])).mul(bigInt(ctx.getSignal(\"enabled\", []))).mod(__P__), \"0\", \"undefined:42:4\");\n}\n",
"Num2Bits": "function(ctx) {\n ctx.setVar(\"lc1\", [], \"0\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[])], bigInt(bigInt(ctx.getVar(\"i\",[])).greater(bigInt(256)) ? 0 : bigInt(ctx.getSignal(\"in\", [])).shr(bigInt(ctx.getVar(\"i\",[]))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.assert(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).add(__P__).sub(bigInt(\"1\")).mod(__P__))).mod(__P__), \"0\", \"/Users/pertsev/projects/tornado-deploy/tornado-anonymity-mining/node_modules/circomlib/circuits/bitify.circom:32:8\");\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n }\n ctx.assert(ctx.getVar(\"lc1\",[]), ctx.getSignal(\"in\", []), \"/Users/pertsev/projects/tornado-deploy/tornado-anonymity-mining/node_modules/circomlib/circuits/bitify.circom:36:4\");\n}\n",
"Num2Bits": "function(ctx) {\n ctx.setVar(\"lc1\", [], \"0\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[])], bigInt(bigInt(ctx.getVar(\"i\",[])).greater(bigInt(256)) ? 0 : bigInt(ctx.getSignal(\"in\", [])).shr(bigInt(ctx.getVar(\"i\",[]))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.assert(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).add(__P__).sub(bigInt(\"1\")).mod(__P__))).mod(__P__), \"0\", \"/Users/rstorm/repos/stormdapps/torn_deploy_final/tornado-deploy/tornado-anonymity-mining/node_modules/circomlib/circuits/bitify.circom:32:8\");\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n }\n ctx.assert(ctx.getVar(\"lc1\",[]), ctx.getSignal(\"in\", []), \"/Users/rstorm/repos/stormdapps/torn_deploy_final/tornado-deploy/tornado-anonymity-mining/node_modules/circomlib/circuits/bitify.circom:36:4\");\n}\n",
"Num2Bits_strict": "function(ctx) {\n ctx.setPin(\"n2b\", [], \"in\", [], ctx.getSignal(\"in\", []));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"254\")) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[])], ctx.getPin(\"n2b\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"aliasCheck\", [], \"in\", [ctx.getVar(\"i\",[])], ctx.getPin(\"n2b\", [], \"out\", [ctx.getVar(\"i\",[])]));\n }\n\n }\n}\n",
"Bits2Num": "function(ctx) {\n ctx.setVar(\"lc1\", [], \"0\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"in\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n }\n ctx.setSignal(\"out\", [], ctx.getVar(\"lc1\",[]));\n}\n",
"Bits2Num_strict": "function(ctx) {\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"254\")) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setPin(\"b2n\", [], \"in\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"in\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"aliasCheck\", [], \"in\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"in\", [ctx.getVar(\"i\",[])]));\n }\n\n }\n ctx.setSignal(\"out\", [], ctx.getPin(\"b2n\", [], \"out\", []));\n}\n",
"Num2BitsNeg": "function(ctx) {\n ctx.setVar(\"lc1\", [], \"0\");\n ctx.setVar(\"neg\", [], bigInt((bigInt(ctx.getVar(\"n\",[])).eq(bigInt(\"0\")) ? 1 : 0)).neq(bigInt(0)) ? (\"0\") : (bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"n\",[])), __P__)).add(__P__).sub(bigInt(ctx.getSignal(\"in\", []))).mod(__P__)));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[])], bigInt(bigInt(ctx.getVar(\"i\",[])).greater(bigInt(256)) ? 0 : bigInt(ctx.getVar(\"neg\",[])).shr(bigInt(ctx.getVar(\"i\",[]))).and(__MASK__)).and(bigInt(\"1\")).and(__MASK__));\n ctx.assert(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).add(__P__).sub(bigInt(\"1\")).mod(__P__))).mod(__P__), \"0\", \"undefined:94:8\");\n ctx.setVar(\"lc1\", [], bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[])])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"i\",[])), __P__))).mod(__P__))).mod(__P__));\n }\n\n }\n ctx.setPin(\"isZero\", [], \"in\", [], ctx.getSignal(\"in\", []));\n ctx.assert(bigInt(ctx.getVar(\"lc1\",[])).add(bigInt(bigInt(ctx.getPin(\"isZero\", [], \"out\", [])).mul(bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"n\",[])), __P__))).mod(__P__))).mod(__P__), bigInt(bigInt(\"2\").modPow(bigInt(ctx.getVar(\"n\",[])), __P__)).add(__P__).sub(bigInt(ctx.getSignal(\"in\", []))).mod(__P__), \"undefined:102:4\");\n}\n",
"HashLeftRight": "function(ctx) {\n ctx.setPin(\"hasher\", [], \"inputs\", [\"0\"], ctx.getSignal(\"left\", []));\n ctx.setPin(\"hasher\", [], \"inputs\", [\"1\"], ctx.getSignal(\"right\", []));\n ctx.setSignal(\"hash\", [], ctx.getPin(\"hasher\", [], \"out\", []));\n}\n",
"DualMux": "function(ctx) {\n ctx.assert(bigInt(ctx.getSignal(\"s\", [])).mul(bigInt(bigInt(\"1\").add(__P__).sub(bigInt(ctx.getSignal(\"s\", []))).mod(__P__))).mod(__P__), \"0\", \"/Users/pertsev/projects/tornado-deploy/tornado-anonymity-mining/circuits/MerkleTree.circom:23:4\");\n ctx.setSignal(\"out\", [\"0\"], bigInt(bigInt(bigInt(ctx.getSignal(\"in\", [\"1\"])).add(__P__).sub(bigInt(ctx.getSignal(\"in\", [\"0\"]))).mod(__P__)).mul(bigInt(ctx.getSignal(\"s\", []))).mod(__P__)).add(bigInt(ctx.getSignal(\"in\", [\"0\"]))).mod(__P__));\n ctx.setSignal(\"out\", [\"1\"], bigInt(bigInt(bigInt(ctx.getSignal(\"in\", [\"0\"])).add(__P__).sub(bigInt(ctx.getSignal(\"in\", [\"1\"]))).mod(__P__)).mul(bigInt(ctx.getSignal(\"s\", []))).mod(__P__)).add(bigInt(ctx.getSignal(\"in\", [\"1\"]))).mod(__P__));\n}\n",
"DualMux": "function(ctx) {\n ctx.assert(bigInt(ctx.getSignal(\"s\", [])).mul(bigInt(bigInt(\"1\").add(__P__).sub(bigInt(ctx.getSignal(\"s\", []))).mod(__P__))).mod(__P__), \"0\", \"/Users/rstorm/repos/stormdapps/torn_deploy_final/tornado-deploy/tornado-anonymity-mining/circuits/MerkleTree.circom:23:4\");\n ctx.setSignal(\"out\", [\"0\"], bigInt(bigInt(bigInt(ctx.getSignal(\"in\", [\"1\"])).add(__P__).sub(bigInt(ctx.getSignal(\"in\", [\"0\"]))).mod(__P__)).mul(bigInt(ctx.getSignal(\"s\", []))).mod(__P__)).add(bigInt(ctx.getSignal(\"in\", [\"0\"]))).mod(__P__));\n ctx.setSignal(\"out\", [\"1\"], bigInt(bigInt(bigInt(ctx.getSignal(\"in\", [\"0\"])).add(__P__).sub(bigInt(ctx.getSignal(\"in\", [\"1\"]))).mod(__P__)).mul(bigInt(ctx.getSignal(\"s\", []))).mod(__P__)).add(bigInt(ctx.getSignal(\"in\", [\"1\"]))).mod(__P__));\n}\n",
"RawMerkleTree": "function(ctx) {\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"levels\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setPin(\"selectors\", [ctx.getVar(\"i\",[])], \"in\", [\"0\"], bigInt((bigInt(ctx.getVar(\"i\",[])).eq(bigInt(\"0\")) ? 1 : 0)).neq(bigInt(0)) ? (ctx.getSignal(\"leaf\", [])) : (ctx.getPin(\"hashers\", [bigInt(ctx.getVar(\"i\",[])).add(__P__).sub(bigInt(\"1\")).mod(__P__)], \"hash\", [])));\n ctx.setPin(\"selectors\", [ctx.getVar(\"i\",[])], \"in\", [\"1\"], ctx.getSignal(\"pathElements\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"selectors\", [ctx.getVar(\"i\",[])], \"s\", [], ctx.getSignal(\"pathIndices\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"hashers\", [ctx.getVar(\"i\",[])], \"left\", [], ctx.getPin(\"selectors\", [ctx.getVar(\"i\",[])], \"out\", [\"0\"]));\n ctx.setPin(\"hashers\", [ctx.getVar(\"i\",[])], \"right\", [], ctx.getPin(\"selectors\", [ctx.getVar(\"i\",[])], \"out\", [\"1\"]));\n }\n\n }\n ctx.setSignal(\"root\", [], ctx.getPin(\"hashers\", [bigInt(ctx.getVar(\"levels\",[])).add(__P__).sub(bigInt(\"1\")).mod(__P__)], \"hash\", []));\n}\n",
"MerkleTree": "function(ctx) {\n ctx.setPin(\"indexBits\", [], \"in\", [], ctx.getSignal(\"pathIndices\", []));\n ctx.setPin(\"tree\", [], \"leaf\", [], ctx.getSignal(\"leaf\", []));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"levels\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setPin(\"tree\", [], \"pathIndices\", [ctx.getVar(\"i\",[])], ctx.getPin(\"indexBits\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"tree\", [], \"pathElements\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"pathElements\", [ctx.getVar(\"i\",[])]));\n }\n\n }\n ctx.setSignal(\"root\", [], ctx.getPin(\"tree\", [], \"root\", []));\n}\n",
"MerkleTreeUpdater": "function(ctx) {\n ctx.setPin(\"indexBits\", [], \"in\", [], ctx.getSignal(\"pathIndices\", []));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setPin(\"treeBefore\", [], \"pathIndices\", [ctx.getVar(\"i\",[])], ctx.getPin(\"indexBits\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"treeBefore\", [], \"pathElements\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"pathElements\", [ctx.getVar(\"i\",[])]));\n }\n\n }\n ctx.setPin(\"treeBefore\", [], \"leaf\", [], ctx.getVar(\"zeroLeaf\",[]));\n ctx.assert(ctx.getPin(\"treeBefore\", [], \"root\", []), ctx.getSignal(\"oldRoot\", []), \"/Users/pertsev/projects/tornado-deploy/tornado-anonymity-mining/circuits/MerkleTreeUpdater.circom:24:4\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"n\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setPin(\"treeAfter\", [], \"pathIndices\", [ctx.getVar(\"i\",[])], ctx.getPin(\"indexBits\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"treeAfter\", [], \"pathElements\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"pathElements\", [ctx.getVar(\"i\",[])]));\n }\n\n }\n ctx.setPin(\"treeAfter\", [], \"leaf\", [], ctx.getSignal(\"leaf\", []));\n ctx.assert(ctx.getPin(\"treeAfter\", [], \"root\", []), ctx.getSignal(\"newRoot\", []), \"/Users/pertsev/projects/tornado-deploy/tornado-anonymity-mining/circuits/MerkleTreeUpdater.circom:32:4\");\n}\n"
"MerkleTreeUpdater": "function(ctx) {\n ctx.setPin(\"indexBits\", [], \"in\", [], ctx.getSignal(\"pathIndices\", []));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"levels\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setPin(\"treeBefore\", [], \"pathIndices\", [ctx.getVar(\"i\",[])], ctx.getPin(\"indexBits\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"treeBefore\", [], \"pathElements\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"pathElements\", [ctx.getVar(\"i\",[])]));\n }\n\n }\n ctx.setPin(\"treeBefore\", [], \"leaf\", [], ctx.getVar(\"zeroLeaf\",[]));\n ctx.assert(ctx.getPin(\"treeBefore\", [], \"root\", []), ctx.getSignal(\"oldRoot\", []), \"/Users/rstorm/repos/stormdapps/torn_deploy_final/tornado-deploy/tornado-anonymity-mining/circuits/MerkleTreeUpdater.circom:24:4\");\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(ctx.getVar(\"levels\",[]))) ? 1 : 0).neq(bigInt(0));(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setPin(\"treeAfter\", [], \"pathIndices\", [ctx.getVar(\"i\",[])], ctx.getPin(\"indexBits\", [], \"out\", [ctx.getVar(\"i\",[])]));\n ctx.setPin(\"treeAfter\", [], \"pathElements\", [ctx.getVar(\"i\",[])], ctx.getSignal(\"pathElements\", [ctx.getVar(\"i\",[])]));\n }\n\n }\n ctx.setPin(\"treeAfter\", [], \"leaf\", [], ctx.getSignal(\"leaf\", []));\n ctx.assert(ctx.getPin(\"treeAfter\", [], \"root\", []), ctx.getSignal(\"newRoot\", []), \"/Users/rstorm/repos/stormdapps/torn_deploy_final/tornado-deploy/tornado-anonymity-mining/circuits/MerkleTreeUpdater.circom:32:4\");\n}\n"
},
"functions": {
"POSEIDON_C": {

Binary file not shown.