You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

297 lines
7.5 KiB

  1. {
  2. "mainCode": "{\n {\n }\n ctx.setVar(\"base\", [], [\"17777552123799933955779906779655732241715742912184938656739573121738514868268\",\"2626589144620713026669568689430873010625803728049924121243784502389097019475\"]);\n}\n",
  3. "signalName2Idx": {
  4. "one": 0,
  5. "main.out[0][0]": 1,
  6. "main.out[0][1]": 2,
  7. "main.out[1][0]": 3,
  8. "main.out[1][1]": 4,
  9. "main.out[2][0]": 5,
  10. "main.out[2][1]": 6,
  11. "main.out[3][0]": 7,
  12. "main.out[3][1]": 8,
  13. "main.out[4][0]": 9,
  14. "main.out[4][1]": 10,
  15. "main.out[5][0]": 11,
  16. "main.out[5][1]": 12,
  17. "main.out[6][0]": 13,
  18. "main.out[6][1]": 14,
  19. "main.out[7][0]": 15,
  20. "main.out[7][1]": 16,
  21. "main.out[8][0]": 17,
  22. "main.out[8][1]": 18,
  23. "main.out[9][0]": 19,
  24. "main.out[9][1]": 20,
  25. "main.out[10][0]": 21,
  26. "main.out[10][1]": 22,
  27. "main.out[11][0]": 23,
  28. "main.out[11][1]": 24,
  29. "main.out[12][0]": 25,
  30. "main.out[12][1]": 26,
  31. "main.out[13][0]": 27,
  32. "main.out[13][1]": 28,
  33. "main.out[14][0]": 29,
  34. "main.out[14][1]": 30,
  35. "main.out[15][0]": 31,
  36. "main.out[15][1]": 32
  37. },
  38. "components": [
  39. {
  40. "name": "main",
  41. "params": {
  42. "base": [
  43. {
  44. "type": "NUMBER",
  45. "value": "17777552123799933955779906779655732241715742912184938656739573121738514868268",
  46. "first_line": 3,
  47. "first_column": 12,
  48. "last_line": 3,
  49. "last_column": 89
  50. },
  51. {
  52. "type": "NUMBER",
  53. "value": "2626589144620713026669568689430873010625803728049924121243784502389097019475",
  54. "first_line": 4,
  55. "first_column": 12,
  56. "last_line": 4,
  57. "last_column": 88
  58. }
  59. ],
  60. "k": {
  61. "type": "NUMBER",
  62. "value": "0",
  63. "first_line": 6,
  64. "first_column": 41,
  65. "last_line": 6,
  66. "last_column": 42
  67. }
  68. },
  69. "template": "EscalarMulW4Table",
  70. "inputSignals": 0
  71. }
  72. ],
  73. "componentName2Idx": {
  74. "main": 0
  75. },
  76. "signals": [
  77. {
  78. "names": [
  79. "one"
  80. ],
  81. "triggerComponents": []
  82. },
  83. {
  84. "names": [
  85. "main.out[0][0]"
  86. ],
  87. "triggerComponents": []
  88. },
  89. {
  90. "names": [
  91. "main.out[0][1]"
  92. ],
  93. "triggerComponents": []
  94. },
  95. {
  96. "names": [
  97. "main.out[1][0]"
  98. ],
  99. "triggerComponents": []
  100. },
  101. {
  102. "names": [
  103. "main.out[1][1]"
  104. ],
  105. "triggerComponents": []
  106. },
  107. {
  108. "names": [
  109. "main.out[2][0]"
  110. ],
  111. "triggerComponents": []
  112. },
  113. {
  114. "names": [
  115. "main.out[2][1]"
  116. ],
  117. "triggerComponents": []
  118. },
  119. {
  120. "names": [
  121. "main.out[3][0]"
  122. ],
  123. "triggerComponents": []
  124. },
  125. {
  126. "names": [
  127. "main.out[3][1]"
  128. ],
  129. "triggerComponents": []
  130. },
  131. {
  132. "names": [
  133. "main.out[4][0]"
  134. ],
  135. "triggerComponents": []
  136. },
  137. {
  138. "names": [
  139. "main.out[4][1]"
  140. ],
  141. "triggerComponents": []
  142. },
  143. {
  144. "names": [
  145. "main.out[5][0]"
  146. ],
  147. "triggerComponents": []
  148. },
  149. {
  150. "names": [
  151. "main.out[5][1]"
  152. ],
  153. "triggerComponents": []
  154. },
  155. {
  156. "names": [
  157. "main.out[6][0]"
  158. ],
  159. "triggerComponents": []
  160. },
  161. {
  162. "names": [
  163. "main.out[6][1]"
  164. ],
  165. "triggerComponents": []
  166. },
  167. {
  168. "names": [
  169. "main.out[7][0]"
  170. ],
  171. "triggerComponents": []
  172. },
  173. {
  174. "names": [
  175. "main.out[7][1]"
  176. ],
  177. "triggerComponents": []
  178. },
  179. {
  180. "names": [
  181. "main.out[8][0]"
  182. ],
  183. "triggerComponents": []
  184. },
  185. {
  186. "names": [
  187. "main.out[8][1]"
  188. ],
  189. "triggerComponents": []
  190. },
  191. {
  192. "names": [
  193. "main.out[9][0]"
  194. ],
  195. "triggerComponents": []
  196. },
  197. {
  198. "names": [
  199. "main.out[9][1]"
  200. ],
  201. "triggerComponents": []
  202. },
  203. {
  204. "names": [
  205. "main.out[10][0]"
  206. ],
  207. "triggerComponents": []
  208. },
  209. {
  210. "names": [
  211. "main.out[10][1]"
  212. ],
  213. "triggerComponents": []
  214. },
  215. {
  216. "names": [
  217. "main.out[11][0]"
  218. ],
  219. "triggerComponents": []
  220. },
  221. {
  222. "names": [
  223. "main.out[11][1]"
  224. ],
  225. "triggerComponents": []
  226. },
  227. {
  228. "names": [
  229. "main.out[12][0]"
  230. ],
  231. "triggerComponents": []
  232. },
  233. {
  234. "names": [
  235. "main.out[12][1]"
  236. ],
  237. "triggerComponents": []
  238. },
  239. {
  240. "names": [
  241. "main.out[13][0]"
  242. ],
  243. "triggerComponents": []
  244. },
  245. {
  246. "names": [
  247. "main.out[13][1]"
  248. ],
  249. "triggerComponents": []
  250. },
  251. {
  252. "names": [
  253. "main.out[14][0]"
  254. ],
  255. "triggerComponents": []
  256. },
  257. {
  258. "names": [
  259. "main.out[14][1]"
  260. ],
  261. "triggerComponents": []
  262. },
  263. {
  264. "names": [
  265. "main.out[15][0]"
  266. ],
  267. "triggerComponents": []
  268. },
  269. {
  270. "names": [
  271. "main.out[15][1]"
  272. ],
  273. "triggerComponents": []
  274. }
  275. ],
  276. "constraints": [],
  277. "templates": {
  278. "EscalarMulW4Table": "function(ctx) {\n ctx.setVar(\"dbl\", [], ctx.getVar(\"base\",[]));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(bigInt(ctx.getVar(\"k\",[])).mul(bigInt(\"4\")).mod(__P__))) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setVar(\"dbl\", [], ctx.callFunction(\"pointAdd\", [ctx.getVar(\"dbl\",[\"0\"]),ctx.getVar(\"dbl\",[\"1\"]),ctx.getVar(\"dbl\",[\"0\"]),ctx.getVar(\"dbl\",[\"1\"])]));\n }\n\n }\n ctx.setSignal(\"out\", [\"0\",\"0\"], \"0\");\n ctx.assert(ctx.getSignal(\"out\", [\"0\",\"0\"]), \"0\");\n ctx.setSignal(\"out\", [\"0\",\"1\"], \"1\");\n ctx.assert(ctx.getSignal(\"out\", [\"0\",\"1\"]), \"1\");\n for (ctx.setVar(\"i\", [], \"1\");bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"16\")) ? 1 : 0;(ctx.setVar(\"i\", [], bigInt(ctx.getVar(\"i\",[])).add(bigInt(\"1\")).mod(__P__))).add(__P__).sub(bigInt(1)).mod(__P__)) { \n {\n ctx.setVar(\"p\", [], ctx.callFunction(\"pointAdd\", [ctx.getSignal(\"out\", [bigInt(ctx.getVar(\"i\",[])).add(__P__).sub(bigInt(\"1\")).mod(__P__),\"0\"]),ctx.getSignal(\"out\", [bigInt(ctx.getVar(\"i\",[])).add(__P__).sub(bigInt(\"1\")).mod(__P__),\"1\"]),ctx.getVar(\"dbl\",[\"0\"]),ctx.getVar(\"dbl\",[\"1\"])]));\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[]),\"0\"], ctx.getVar(\"p\",[\"0\"]));\n ctx.assert(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[]),\"0\"]), ctx.getVar(\"p\",[\"0\"]));\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[]),\"1\"], ctx.getVar(\"p\",[\"1\"]));\n ctx.assert(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[]),\"1\"]), ctx.getVar(\"p\",[\"1\"]));\n }\n\n }\n}\n"
  279. },
  280. "functions": {
  281. "pointAdd": {
  282. "params": [
  283. "x1",
  284. "y1",
  285. "x2",
  286. "y2"
  287. ],
  288. "func": "function(ctx) {\n ctx.setVar(\"a\", [], \"168700\");\n ctx.setVar(\"d\", [], \"168696\");\n ctx.setVar(\"res\", [\"0\"], bigInt(bigInt(bigInt(ctx.getVar(\"x1\",[])).mul(bigInt(ctx.getVar(\"y2\",[]))).mod(__P__)).add(bigInt(bigInt(ctx.getVar(\"y1\",[])).mul(bigInt(ctx.getVar(\"x2\",[]))).mod(__P__))).mod(__P__)).mul( bigInt(bigInt(\"1\").add(bigInt(bigInt(bigInt(bigInt(bigInt(ctx.getVar(\"d\",[])).mul(bigInt(ctx.getVar(\"x1\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"x2\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"y1\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"y2\",[]))).mod(__P__))).mod(__P__)).inverse(__P__) ).mod(__P__));\n ctx.setVar(\"res\", [\"1\"], bigInt(bigInt(bigInt(ctx.getVar(\"y1\",[])).mul(bigInt(ctx.getVar(\"y2\",[]))).mod(__P__)).add(__P__).sub(bigInt(bigInt(bigInt(ctx.getVar(\"a\",[])).mul(bigInt(ctx.getVar(\"x1\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"x2\",[]))).mod(__P__))).mod(__P__)).mul( bigInt(bigInt(\"1\").add(__P__).sub(bigInt(bigInt(bigInt(bigInt(bigInt(ctx.getVar(\"d\",[])).mul(bigInt(ctx.getVar(\"x1\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"x2\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"y1\",[]))).mod(__P__)).mul(bigInt(ctx.getVar(\"y2\",[]))).mod(__P__))).mod(__P__)).inverse(__P__) ).mod(__P__));\n return ctx.getVar(\"res\",[]);;\n}\n"
  289. }
  290. },
  291. "nPrvInputs": 0,
  292. "nPubInputs": 0,
  293. "nInputs": 0,
  294. "nOutputs": 0,
  295. "nVars": 1,
  296. "nConstants": 32,
  297. "nSignals": 33
  298. }