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.

775 lines
19 KiB

  1. {
  2. "mainCode": "{\n {\n }\n}\n",
  3. "signalName2Idx": {
  4. "one": 0,
  5. "main.in": 33,
  6. "main.out[0][0]": 1,
  7. "main.out[0][1]": 2,
  8. "main.out[1][0]": 3,
  9. "main.out[1][1]": 4,
  10. "main.out[2][0]": 5,
  11. "main.out[2][1]": 6,
  12. "main.out[3][0]": 7,
  13. "main.out[3][1]": 8,
  14. "main.out[4][0]": 9,
  15. "main.out[4][1]": 10,
  16. "main.out[5][0]": 11,
  17. "main.out[5][1]": 12,
  18. "main.out[6][0]": 13,
  19. "main.out[6][1]": 14,
  20. "main.out[7][0]": 15,
  21. "main.out[7][1]": 16,
  22. "main.out[8][0]": 17,
  23. "main.out[8][1]": 18,
  24. "main.out[9][0]": 19,
  25. "main.out[9][1]": 20,
  26. "main.out[10][0]": 21,
  27. "main.out[10][1]": 22,
  28. "main.out[11][0]": 23,
  29. "main.out[11][1]": 24,
  30. "main.out[12][0]": 25,
  31. "main.out[12][1]": 26,
  32. "main.out[13][0]": 27,
  33. "main.out[13][1]": 28,
  34. "main.out[14][0]": 29,
  35. "main.out[14][1]": 30,
  36. "main.out[15][0]": 31,
  37. "main.out[15][1]": 32,
  38. "main.escalarMul.out[0][0]": 34,
  39. "main.escalarMul.out[0][1]": 35,
  40. "main.escalarMul.out[1][0]": 36,
  41. "main.escalarMul.out[1][1]": 37,
  42. "main.escalarMul.out[2][0]": 38,
  43. "main.escalarMul.out[2][1]": 39,
  44. "main.escalarMul.out[3][0]": 40,
  45. "main.escalarMul.out[3][1]": 41,
  46. "main.escalarMul.out[4][0]": 42,
  47. "main.escalarMul.out[4][1]": 43,
  48. "main.escalarMul.out[5][0]": 44,
  49. "main.escalarMul.out[5][1]": 45,
  50. "main.escalarMul.out[6][0]": 46,
  51. "main.escalarMul.out[6][1]": 47,
  52. "main.escalarMul.out[7][0]": 48,
  53. "main.escalarMul.out[7][1]": 49,
  54. "main.escalarMul.out[8][0]": 50,
  55. "main.escalarMul.out[8][1]": 51,
  56. "main.escalarMul.out[9][0]": 52,
  57. "main.escalarMul.out[9][1]": 53,
  58. "main.escalarMul.out[10][0]": 54,
  59. "main.escalarMul.out[10][1]": 55,
  60. "main.escalarMul.out[11][0]": 56,
  61. "main.escalarMul.out[11][1]": 57,
  62. "main.escalarMul.out[12][0]": 58,
  63. "main.escalarMul.out[12][1]": 59,
  64. "main.escalarMul.out[13][0]": 60,
  65. "main.escalarMul.out[13][1]": 61,
  66. "main.escalarMul.out[14][0]": 62,
  67. "main.escalarMul.out[14][1]": 63,
  68. "main.escalarMul.out[15][0]": 64,
  69. "main.escalarMul.out[15][1]": 65
  70. },
  71. "components": [
  72. {
  73. "name": "main",
  74. "params": {},
  75. "template": "Main",
  76. "inputSignals": 1
  77. },
  78. {
  79. "name": "main.escalarMul",
  80. "params": {
  81. "base": [
  82. "5299619240641551281634865583518297030282874472190772894086521144482721001553",
  83. "16950150798460657717958625567821834550301663161624707787222815936182638968203"
  84. ],
  85. "k": "0"
  86. },
  87. "template": "EscalarMulW4Table",
  88. "inputSignals": 0
  89. }
  90. ],
  91. "componentName2Idx": {
  92. "main": 0,
  93. "main.escalarMul": 1
  94. },
  95. "signals": [
  96. {
  97. "names": [
  98. "one"
  99. ],
  100. "triggerComponents": []
  101. },
  102. {
  103. "names": [
  104. "main.out[0][0]"
  105. ],
  106. "triggerComponents": []
  107. },
  108. {
  109. "names": [
  110. "main.out[0][1]"
  111. ],
  112. "triggerComponents": []
  113. },
  114. {
  115. "names": [
  116. "main.out[1][0]"
  117. ],
  118. "triggerComponents": []
  119. },
  120. {
  121. "names": [
  122. "main.out[1][1]"
  123. ],
  124. "triggerComponents": []
  125. },
  126. {
  127. "names": [
  128. "main.out[2][0]"
  129. ],
  130. "triggerComponents": []
  131. },
  132. {
  133. "names": [
  134. "main.out[2][1]"
  135. ],
  136. "triggerComponents": []
  137. },
  138. {
  139. "names": [
  140. "main.out[3][0]"
  141. ],
  142. "triggerComponents": []
  143. },
  144. {
  145. "names": [
  146. "main.out[3][1]"
  147. ],
  148. "triggerComponents": []
  149. },
  150. {
  151. "names": [
  152. "main.out[4][0]"
  153. ],
  154. "triggerComponents": []
  155. },
  156. {
  157. "names": [
  158. "main.out[4][1]"
  159. ],
  160. "triggerComponents": []
  161. },
  162. {
  163. "names": [
  164. "main.out[5][0]"
  165. ],
  166. "triggerComponents": []
  167. },
  168. {
  169. "names": [
  170. "main.out[5][1]"
  171. ],
  172. "triggerComponents": []
  173. },
  174. {
  175. "names": [
  176. "main.out[6][0]"
  177. ],
  178. "triggerComponents": []
  179. },
  180. {
  181. "names": [
  182. "main.out[6][1]"
  183. ],
  184. "triggerComponents": []
  185. },
  186. {
  187. "names": [
  188. "main.out[7][0]"
  189. ],
  190. "triggerComponents": []
  191. },
  192. {
  193. "names": [
  194. "main.out[7][1]"
  195. ],
  196. "triggerComponents": []
  197. },
  198. {
  199. "names": [
  200. "main.out[8][0]"
  201. ],
  202. "triggerComponents": []
  203. },
  204. {
  205. "names": [
  206. "main.out[8][1]"
  207. ],
  208. "triggerComponents": []
  209. },
  210. {
  211. "names": [
  212. "main.out[9][0]"
  213. ],
  214. "triggerComponents": []
  215. },
  216. {
  217. "names": [
  218. "main.out[9][1]"
  219. ],
  220. "triggerComponents": []
  221. },
  222. {
  223. "names": [
  224. "main.out[10][0]"
  225. ],
  226. "triggerComponents": []
  227. },
  228. {
  229. "names": [
  230. "main.out[10][1]"
  231. ],
  232. "triggerComponents": []
  233. },
  234. {
  235. "names": [
  236. "main.out[11][0]"
  237. ],
  238. "triggerComponents": []
  239. },
  240. {
  241. "names": [
  242. "main.out[11][1]"
  243. ],
  244. "triggerComponents": []
  245. },
  246. {
  247. "names": [
  248. "main.out[12][0]"
  249. ],
  250. "triggerComponents": []
  251. },
  252. {
  253. "names": [
  254. "main.out[12][1]"
  255. ],
  256. "triggerComponents": []
  257. },
  258. {
  259. "names": [
  260. "main.out[13][0]"
  261. ],
  262. "triggerComponents": []
  263. },
  264. {
  265. "names": [
  266. "main.out[13][1]"
  267. ],
  268. "triggerComponents": []
  269. },
  270. {
  271. "names": [
  272. "main.out[14][0]"
  273. ],
  274. "triggerComponents": []
  275. },
  276. {
  277. "names": [
  278. "main.out[14][1]"
  279. ],
  280. "triggerComponents": []
  281. },
  282. {
  283. "names": [
  284. "main.out[15][0]"
  285. ],
  286. "triggerComponents": []
  287. },
  288. {
  289. "names": [
  290. "main.out[15][1]"
  291. ],
  292. "triggerComponents": []
  293. },
  294. {
  295. "names": [
  296. "main.in"
  297. ],
  298. "triggerComponents": [
  299. 0
  300. ]
  301. },
  302. {
  303. "names": [
  304. "main.escalarMul.out[0][0]"
  305. ],
  306. "triggerComponents": []
  307. },
  308. {
  309. "names": [
  310. "main.escalarMul.out[0][1]"
  311. ],
  312. "triggerComponents": []
  313. },
  314. {
  315. "names": [
  316. "main.escalarMul.out[1][0]"
  317. ],
  318. "triggerComponents": []
  319. },
  320. {
  321. "names": [
  322. "main.escalarMul.out[1][1]"
  323. ],
  324. "triggerComponents": []
  325. },
  326. {
  327. "names": [
  328. "main.escalarMul.out[2][0]"
  329. ],
  330. "triggerComponents": []
  331. },
  332. {
  333. "names": [
  334. "main.escalarMul.out[2][1]"
  335. ],
  336. "triggerComponents": []
  337. },
  338. {
  339. "names": [
  340. "main.escalarMul.out[3][0]"
  341. ],
  342. "triggerComponents": []
  343. },
  344. {
  345. "names": [
  346. "main.escalarMul.out[3][1]"
  347. ],
  348. "triggerComponents": []
  349. },
  350. {
  351. "names": [
  352. "main.escalarMul.out[4][0]"
  353. ],
  354. "triggerComponents": []
  355. },
  356. {
  357. "names": [
  358. "main.escalarMul.out[4][1]"
  359. ],
  360. "triggerComponents": []
  361. },
  362. {
  363. "names": [
  364. "main.escalarMul.out[5][0]"
  365. ],
  366. "triggerComponents": []
  367. },
  368. {
  369. "names": [
  370. "main.escalarMul.out[5][1]"
  371. ],
  372. "triggerComponents": []
  373. },
  374. {
  375. "names": [
  376. "main.escalarMul.out[6][0]"
  377. ],
  378. "triggerComponents": []
  379. },
  380. {
  381. "names": [
  382. "main.escalarMul.out[6][1]"
  383. ],
  384. "triggerComponents": []
  385. },
  386. {
  387. "names": [
  388. "main.escalarMul.out[7][0]"
  389. ],
  390. "triggerComponents": []
  391. },
  392. {
  393. "names": [
  394. "main.escalarMul.out[7][1]"
  395. ],
  396. "triggerComponents": []
  397. },
  398. {
  399. "names": [
  400. "main.escalarMul.out[8][0]"
  401. ],
  402. "triggerComponents": []
  403. },
  404. {
  405. "names": [
  406. "main.escalarMul.out[8][1]"
  407. ],
  408. "triggerComponents": []
  409. },
  410. {
  411. "names": [
  412. "main.escalarMul.out[9][0]"
  413. ],
  414. "triggerComponents": []
  415. },
  416. {
  417. "names": [
  418. "main.escalarMul.out[9][1]"
  419. ],
  420. "triggerComponents": []
  421. },
  422. {
  423. "names": [
  424. "main.escalarMul.out[10][0]"
  425. ],
  426. "triggerComponents": []
  427. },
  428. {
  429. "names": [
  430. "main.escalarMul.out[10][1]"
  431. ],
  432. "triggerComponents": []
  433. },
  434. {
  435. "names": [
  436. "main.escalarMul.out[11][0]"
  437. ],
  438. "triggerComponents": []
  439. },
  440. {
  441. "names": [
  442. "main.escalarMul.out[11][1]"
  443. ],
  444. "triggerComponents": []
  445. },
  446. {
  447. "names": [
  448. "main.escalarMul.out[12][0]"
  449. ],
  450. "triggerComponents": []
  451. },
  452. {
  453. "names": [
  454. "main.escalarMul.out[12][1]"
  455. ],
  456. "triggerComponents": []
  457. },
  458. {
  459. "names": [
  460. "main.escalarMul.out[13][0]"
  461. ],
  462. "triggerComponents": []
  463. },
  464. {
  465. "names": [
  466. "main.escalarMul.out[13][1]"
  467. ],
  468. "triggerComponents": []
  469. },
  470. {
  471. "names": [
  472. "main.escalarMul.out[14][0]"
  473. ],
  474. "triggerComponents": []
  475. },
  476. {
  477. "names": [
  478. "main.escalarMul.out[14][1]"
  479. ],
  480. "triggerComponents": []
  481. },
  482. {
  483. "names": [
  484. "main.escalarMul.out[15][0]"
  485. ],
  486. "triggerComponents": []
  487. },
  488. {
  489. "names": [
  490. "main.escalarMul.out[15][1]"
  491. ],
  492. "triggerComponents": []
  493. }
  494. ],
  495. "constraints": [
  496. [
  497. {},
  498. {
  499. "33": "1"
  500. },
  501. {
  502. "1": "21888242871839275222246405745257275088548364400416034343698204186575808495616"
  503. }
  504. ],
  505. [
  506. {},
  507. {},
  508. {
  509. "2": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  510. "33": "1"
  511. }
  512. ],
  513. [
  514. {},
  515. {},
  516. {
  517. "3": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  518. "33": "5299619240641551281634865583518297030282874472190772894086521144482721001553"
  519. }
  520. ],
  521. [
  522. {},
  523. {},
  524. {
  525. "4": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  526. "33": "16950150798460657717958625567821834550301663161624707787222815936182638968203"
  527. }
  528. ],
  529. [
  530. {},
  531. {},
  532. {
  533. "5": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  534. "33": "10031262171927540148667355526369034398030886437092045105752248699557385197826"
  535. }
  536. ],
  537. [
  538. {},
  539. {},
  540. {
  541. "6": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  542. "33": "633281375905621697187330766174974863687049529291089048651929454608812697683"
  543. }
  544. ],
  545. [
  546. {},
  547. {},
  548. {
  549. "7": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  550. "33": "2763488322167937039616325905516046217694264098671987087929565332380420898366"
  551. }
  552. ],
  553. [
  554. {},
  555. {},
  556. {
  557. "8": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  558. "33": "15305195750036305661220525648961313310481046260814497672243197092298550508693"
  559. }
  560. ],
  561. [
  562. {},
  563. {},
  564. {
  565. "9": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  566. "33": "12252886604826192316928789929706397349846234911198931249025449955069330867144"
  567. }
  568. ],
  569. [
  570. {},
  571. {},
  572. {
  573. "10": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  574. "33": "1286140751908834028607023759717162073146610688084909004843365841635476459484"
  575. }
  576. ],
  577. [
  578. {},
  579. {},
  580. {
  581. "11": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  582. "33": "11480966271046430430613841218147196773252373073876138147006741179837832100836"
  583. }
  584. ],
  585. [
  586. {},
  587. {},
  588. {
  589. "12": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  590. "33": "15148236048131954717802795400425086368006776860859772698778589175317365693546"
  591. }
  592. ],
  593. [
  594. {},
  595. {},
  596. {
  597. "13": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  598. "33": "10483991165196995731760716870725509190315033255344071753161464961897900552628"
  599. }
  600. ],
  601. [
  602. {},
  603. {},
  604. {
  605. "14": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  606. "33": "16822899191463256771813724222715007505997804748105685077895991386716774358231"
  607. }
  608. ],
  609. [
  610. {},
  611. {},
  612. {
  613. "15": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  614. "33": "20092560661213339045022877747484245238324772779820628739268223482659246842641"
  615. }
  616. ],
  617. [
  618. {},
  619. {},
  620. {
  621. "16": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  622. "33": "12112450042127193446189577552007703839818242727902437791835414514847797088033"
  623. }
  624. ],
  625. [
  626. {},
  627. {},
  628. {
  629. "17": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  630. "33": "7582035475627193640797276505418002166691739036475590846121162698650004832581"
  631. }
  632. ],
  633. [
  634. {},
  635. {},
  636. {
  637. "18": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  638. "33": "7801528930831391612913542953849263092120765287178679640990215688947513841260"
  639. }
  640. ],
  641. [
  642. {},
  643. {},
  644. {
  645. "19": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  646. "33": "4705897243203718691035604313913899717760209962238015362153877735592901317263"
  647. }
  648. ],
  649. [
  650. {},
  651. {},
  652. {
  653. "20": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  654. "33": "11533909001000295577818857040682494493436124051895563619976413559559984357704"
  655. }
  656. ],
  657. [
  658. {},
  659. {},
  660. {
  661. "21": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  662. "33": "153240920024090527149238595127650983736082984617707450012091413752625486998"
  663. }
  664. ],
  665. [
  666. {},
  667. {},
  668. {
  669. "22": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  670. "33": "4020276081434545615309760015178511782232038136121596626881988383789905359767"
  671. }
  672. ],
  673. [
  674. {},
  675. {},
  676. {
  677. "23": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  678. "33": "21605515851820432880964235241069234202284600780825340516808373216881770219365"
  679. }
  680. ],
  681. [
  682. {},
  683. {},
  684. {
  685. "24": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  686. "33": "18856460861531942120859708048677603751294231190189224157283439874962410808705"
  687. }
  688. ],
  689. [
  690. {},
  691. {},
  692. {
  693. "25": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  694. "33": "13745444942333935831105476262872495530232646590228527111681360848540626474828"
  695. }
  696. ],
  697. [
  698. {},
  699. {},
  700. {
  701. "26": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  702. "33": "12593235468414968750242085888471035041062129592669413010808753916989521208231"
  703. }
  704. ],
  705. [
  706. {},
  707. {},
  708. {
  709. "27": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  710. "33": "2645068156583085050795409844793952496341966587935372213947442411891928926825"
  711. }
  712. ],
  713. [
  714. {},
  715. {},
  716. {
  717. "28": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  718. "33": "18721023485287444620535873833099074300132272004358512346950884094158923211889"
  719. }
  720. ],
  721. [
  722. {},
  723. {},
  724. {
  725. "29": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  726. "33": "6271573312546148160329629673815240458676221818610765478794395550121752710497"
  727. }
  728. ],
  729. [
  730. {},
  731. {},
  732. {
  733. "30": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  734. "33": "20729133862440981855920571719405839551572203482913253618619962546642052100217"
  735. }
  736. ],
  737. [
  738. {},
  739. {},
  740. {
  741. "31": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  742. "33": "5958787406588418500595239545974275039455545059833263445973445578199987122248"
  743. }
  744. ],
  745. [
  746. {},
  747. {},
  748. {
  749. "32": "21888242871839275222246405745257275088548364400416034343698204186575808495616",
  750. "33": "6291453822075498887551694851992571215511219854100590306020486222643399599966"
  751. }
  752. ]
  753. ],
  754. "templates": {
  755. "EscalarMulW4Table": "function(ctx) {\n ctx.setVar(\"dbl\", [], ctx.getVar(\"base\",[]));\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(bigInt(ctx.getVar(\"k\",[])).mul(bigInt(\"4\")).mod(__P__))) ? 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(\"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(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"16\")) ? 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(\"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",
  756. "Main": "function(ctx) {\n ctx.setVar(\"base\", [], [\"5299619240641551281634865583518297030282874472190772894086521144482721001553\",\"16950150798460657717958625567821834550301663161624707787222815936182638968203\"]);\n for (ctx.setVar(\"i\", [], \"0\");bigInt(bigInt(ctx.getVar(\"i\",[])).lt(bigInt(\"16\")) ? 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\",[]),\"0\"], bigInt(ctx.getPin(\"escalarMul\", [], \"out\", [ctx.getVar(\"i\",[]),\"0\"])).mul(bigInt(ctx.getSignal(\"in\", []))).mod(__P__));\n ctx.assert(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[]),\"0\"]), bigInt(ctx.getPin(\"escalarMul\", [], \"out\", [ctx.getVar(\"i\",[]),\"0\"])).mul(bigInt(ctx.getSignal(\"in\", []))).mod(__P__));\n ctx.setSignal(\"out\", [ctx.getVar(\"i\",[]),\"1\"], bigInt(ctx.getPin(\"escalarMul\", [], \"out\", [ctx.getVar(\"i\",[]),\"1\"])).mul(bigInt(ctx.getSignal(\"in\", []))).mod(__P__));\n ctx.assert(ctx.getSignal(\"out\", [ctx.getVar(\"i\",[]),\"1\"]), bigInt(ctx.getPin(\"escalarMul\", [], \"out\", [ctx.getVar(\"i\",[]),\"1\"])).mul(bigInt(ctx.getSignal(\"in\", []))).mod(__P__));\n }\n\n }\n}\n"
  757. },
  758. "functions": {
  759. "pointAdd": {
  760. "params": [
  761. "x1",
  762. "y1",
  763. "x2",
  764. "y2"
  765. ],
  766. "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"
  767. }
  768. },
  769. "nPrvInputs": 0,
  770. "nPubInputs": 1,
  771. "nInputs": 1,
  772. "nOutputs": 32,
  773. "nVars": 34,
  774. "nConstants": 32,
  775. "nSignals": 66
  776. }