@maci-protocol/coordinator 0.0.0-ci.01622be

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/LICENSE +21 -0
  3. package/README.md +49 -0
  4. package/build/hardhat.config.cjs +34 -0
  5. package/build/hardhat.config.cjs.map +1 -0
  6. package/build/hardhat.config.d.cts +27 -0
  7. package/build/hardhat.config.d.cts.map +1 -0
  8. package/build/scripts/generateKeypair.d.ts +2 -0
  9. package/build/scripts/generateKeypair.d.ts.map +1 -0
  10. package/build/scripts/generateKeypair.js +25 -0
  11. package/build/scripts/generateKeypair.js.map +1 -0
  12. package/build/scripts/generateMaciKeyPair.d.ts +2 -0
  13. package/build/scripts/generateMaciKeyPair.d.ts.map +1 -0
  14. package/build/scripts/generateMaciKeyPair.js +3 -0
  15. package/build/scripts/generateMaciKeyPair.js.map +1 -0
  16. package/build/scripts/getAuthHeader.d.ts +2 -0
  17. package/build/scripts/getAuthHeader.d.ts.map +1 -0
  18. package/build/scripts/getAuthHeader.js +31 -0
  19. package/build/scripts/getAuthHeader.js.map +1 -0
  20. package/build/tests/constants.d.ts +7 -0
  21. package/build/tests/constants.d.ts.map +1 -0
  22. package/build/tests/constants.js +9 -0
  23. package/build/tests/constants.js.map +1 -0
  24. package/build/tests/e2e.aa.test.d.ts +2 -0
  25. package/build/tests/e2e.aa.test.d.ts.map +1 -0
  26. package/build/tests/e2e.aa.test.js +106 -0
  27. package/build/tests/e2e.aa.test.js.map +1 -0
  28. package/build/tests/e2e.deploy.test.d.ts +2 -0
  29. package/build/tests/e2e.deploy.test.d.ts.map +1 -0
  30. package/build/tests/e2e.deploy.test.js +282 -0
  31. package/build/tests/e2e.deploy.test.js.map +1 -0
  32. package/build/tests/utils.d.ts +20 -0
  33. package/build/tests/utils.d.ts.map +1 -0
  34. package/build/tests/utils.js +53 -0
  35. package/build/tests/utils.js.map +1 -0
  36. package/build/ts/app.module.d.ts +3 -0
  37. package/build/ts/app.module.d.ts.map +1 -0
  38. package/build/ts/app.module.js +36 -0
  39. package/build/ts/app.module.js.map +1 -0
  40. package/build/ts/auth/AccountSignatureGuard.service.d.ts +44 -0
  41. package/build/ts/auth/AccountSignatureGuard.service.d.ts.map +1 -0
  42. package/build/ts/auth/AccountSignatureGuard.service.js +96 -0
  43. package/build/ts/auth/AccountSignatureGuard.service.js.map +1 -0
  44. package/build/ts/auth/__tests__/AccountSignatureGuard.test.d.ts +2 -0
  45. package/build/ts/auth/__tests__/AccountSignatureGuard.test.d.ts.map +1 -0
  46. package/build/ts/auth/__tests__/AccountSignatureGuard.test.js +113 -0
  47. package/build/ts/auth/__tests__/AccountSignatureGuard.test.js.map +1 -0
  48. package/build/ts/common/__tests__/common.test.d.ts +2 -0
  49. package/build/ts/common/__tests__/common.test.d.ts.map +1 -0
  50. package/build/ts/common/__tests__/common.test.js +75 -0
  51. package/build/ts/common/__tests__/common.test.js.map +1 -0
  52. package/build/ts/common/accountAbstraction.d.ts +38 -0
  53. package/build/ts/common/accountAbstraction.d.ts.map +1 -0
  54. package/build/ts/common/accountAbstraction.js +81 -0
  55. package/build/ts/common/accountAbstraction.js.map +1 -0
  56. package/build/ts/common/chain.d.ts +16 -0
  57. package/build/ts/common/chain.d.ts.map +1 -0
  58. package/build/ts/common/chain.js +35 -0
  59. package/build/ts/common/chain.js.map +1 -0
  60. package/build/ts/common/errors.d.ts +32 -0
  61. package/build/ts/common/errors.d.ts.map +1 -0
  62. package/build/ts/common/errors.js +33 -0
  63. package/build/ts/common/errors.js.map +1 -0
  64. package/build/ts/common/index.d.ts +6 -0
  65. package/build/ts/common/index.d.ts.map +1 -0
  66. package/build/ts/common/index.js +6 -0
  67. package/build/ts/common/index.js.map +1 -0
  68. package/build/ts/common/networks.d.ts +29 -0
  69. package/build/ts/common/networks.d.ts.map +1 -0
  70. package/build/ts/common/networks.js +70 -0
  71. package/build/ts/common/networks.js.map +1 -0
  72. package/build/ts/common/types.d.ts +8 -0
  73. package/build/ts/common/types.d.ts.map +1 -0
  74. package/build/ts/common/types.js +2 -0
  75. package/build/ts/common/types.js.map +1 -0
  76. package/build/ts/crypto/__tests__/crypto.service.test.d.ts +2 -0
  77. package/build/ts/crypto/__tests__/crypto.service.test.d.ts.map +1 -0
  78. package/build/ts/crypto/__tests__/crypto.service.test.js +26 -0
  79. package/build/ts/crypto/__tests__/crypto.service.test.js.map +1 -0
  80. package/build/ts/crypto/crypto.module.d.ts +3 -0
  81. package/build/ts/crypto/crypto.module.d.ts.map +1 -0
  82. package/build/ts/crypto/crypto.module.js +18 -0
  83. package/build/ts/crypto/crypto.module.js.map +1 -0
  84. package/build/ts/crypto/crypto.service.d.ts +31 -0
  85. package/build/ts/crypto/crypto.service.d.ts.map +1 -0
  86. package/build/ts/crypto/crypto.service.js +68 -0
  87. package/build/ts/crypto/crypto.service.js.map +1 -0
  88. package/build/ts/deployer/__tests__/deployer.controller.test.d.ts +2 -0
  89. package/build/ts/deployer/__tests__/deployer.controller.test.d.ts.map +1 -0
  90. package/build/ts/deployer/__tests__/deployer.controller.test.js +84 -0
  91. package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -0
  92. package/build/ts/deployer/__tests__/deployer.service.test.d.ts +2 -0
  93. package/build/ts/deployer/__tests__/deployer.service.test.d.ts.map +1 -0
  94. package/build/ts/deployer/__tests__/deployer.service.test.js +166 -0
  95. package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -0
  96. package/build/ts/deployer/__tests__/utils.d.ts +65 -0
  97. package/build/ts/deployer/__tests__/utils.d.ts.map +1 -0
  98. package/build/ts/deployer/__tests__/utils.js +131 -0
  99. package/build/ts/deployer/__tests__/utils.js.map +1 -0
  100. package/build/ts/deployer/constants.d.ts +13 -0
  101. package/build/ts/deployer/constants.d.ts.map +1 -0
  102. package/build/ts/deployer/constants.js +13 -0
  103. package/build/ts/deployer/constants.js.map +1 -0
  104. package/build/ts/deployer/deployer.controller.d.ts +34 -0
  105. package/build/ts/deployer/deployer.controller.d.ts.map +1 -0
  106. package/build/ts/deployer/deployer.controller.js +89 -0
  107. package/build/ts/deployer/deployer.controller.js.map +1 -0
  108. package/build/ts/deployer/deployer.module.d.ts +3 -0
  109. package/build/ts/deployer/deployer.module.d.ts.map +1 -0
  110. package/build/ts/deployer/deployer.module.js +23 -0
  111. package/build/ts/deployer/deployer.module.js.map +1 -0
  112. package/build/ts/deployer/deployer.service.d.ts +76 -0
  113. package/build/ts/deployer/deployer.service.d.ts.map +1 -0
  114. package/build/ts/deployer/deployer.service.js +341 -0
  115. package/build/ts/deployer/deployer.service.js.map +1 -0
  116. package/build/ts/deployer/dto.d.ts +46 -0
  117. package/build/ts/deployer/dto.d.ts.map +1 -0
  118. package/build/ts/deployer/dto.js +125 -0
  119. package/build/ts/deployer/dto.js.map +1 -0
  120. package/build/ts/deployer/types.d.ts +344 -0
  121. package/build/ts/deployer/types.d.ts.map +1 -0
  122. package/build/ts/deployer/types.js +2 -0
  123. package/build/ts/deployer/types.js.map +1 -0
  124. package/build/ts/file/__tests__/file.service.test.d.ts +2 -0
  125. package/build/ts/file/__tests__/file.service.test.d.ts.map +1 -0
  126. package/build/ts/file/__tests__/file.service.test.js +77 -0
  127. package/build/ts/file/__tests__/file.service.test.js.map +1 -0
  128. package/build/ts/file/file.module.d.ts +3 -0
  129. package/build/ts/file/file.module.d.ts.map +1 -0
  130. package/build/ts/file/file.module.js +18 -0
  131. package/build/ts/file/file.module.js.map +1 -0
  132. package/build/ts/file/file.service.d.ts +63 -0
  133. package/build/ts/file/file.service.d.ts.map +1 -0
  134. package/build/ts/file/file.service.js +120 -0
  135. package/build/ts/file/file.service.js.map +1 -0
  136. package/build/ts/file/types.d.ts +36 -0
  137. package/build/ts/file/types.d.ts.map +1 -0
  138. package/build/ts/file/types.js +2 -0
  139. package/build/ts/file/types.js.map +1 -0
  140. package/build/ts/jest/setup.d.ts +8 -0
  141. package/build/ts/jest/setup.d.ts.map +1 -0
  142. package/build/ts/jest/setup.js +2 -0
  143. package/build/ts/jest/setup.js.map +1 -0
  144. package/build/ts/jest/transform.d.ts +8 -0
  145. package/build/ts/jest/transform.d.ts.map +1 -0
  146. package/build/ts/jest/transform.js +10 -0
  147. package/build/ts/jest/transform.js.map +1 -0
  148. package/build/ts/main.d.ts +2 -0
  149. package/build/ts/main.d.ts.map +1 -0
  150. package/build/ts/main.js +46 -0
  151. package/build/ts/main.js.map +1 -0
  152. package/build/ts/proof/__tests__/proof.controller.test.d.ts +2 -0
  153. package/build/ts/proof/__tests__/proof.controller.test.d.ts.map +1 -0
  154. package/build/ts/proof/__tests__/proof.controller.test.js +92 -0
  155. package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -0
  156. package/build/ts/proof/__tests__/proof.gateway.test.d.ts +2 -0
  157. package/build/ts/proof/__tests__/proof.gateway.test.d.ts.map +1 -0
  158. package/build/ts/proof/__tests__/proof.gateway.test.js +65 -0
  159. package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -0
  160. package/build/ts/proof/__tests__/proof.service.test.d.ts +2 -0
  161. package/build/ts/proof/__tests__/proof.service.test.d.ts.map +1 -0
  162. package/build/ts/proof/__tests__/proof.service.test.js +130 -0
  163. package/build/ts/proof/__tests__/proof.service.test.js.map +1 -0
  164. package/build/ts/proof/dto.d.ts +75 -0
  165. package/build/ts/proof/dto.d.ts.map +1 -0
  166. package/build/ts/proof/dto.js +277 -0
  167. package/build/ts/proof/dto.js.map +1 -0
  168. package/build/ts/proof/proof.controller.d.ts +47 -0
  169. package/build/ts/proof/proof.controller.d.ts.map +1 -0
  170. package/build/ts/proof/proof.controller.js +135 -0
  171. package/build/ts/proof/proof.controller.js.map +1 -0
  172. package/build/ts/proof/proof.gateway.d.ts +35 -0
  173. package/build/ts/proof/proof.gateway.d.ts.map +1 -0
  174. package/build/ts/proof/proof.gateway.js +93 -0
  175. package/build/ts/proof/proof.gateway.js.map +1 -0
  176. package/build/ts/proof/proof.module.d.ts +3 -0
  177. package/build/ts/proof/proof.module.d.ts.map +1 -0
  178. package/build/ts/proof/proof.module.js +24 -0
  179. package/build/ts/proof/proof.module.js.map +1 -0
  180. package/build/ts/proof/proof.service.d.ts +54 -0
  181. package/build/ts/proof/proof.service.d.ts.map +1 -0
  182. package/build/ts/proof/proof.service.js +166 -0
  183. package/build/ts/proof/proof.service.js.map +1 -0
  184. package/build/ts/proof/types.d.ts +148 -0
  185. package/build/ts/proof/types.d.ts.map +1 -0
  186. package/build/ts/proof/types.js +11 -0
  187. package/build/ts/proof/types.js.map +1 -0
  188. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.d.ts +2 -0
  189. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.d.ts.map +1 -0
  190. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +44 -0
  191. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -0
  192. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.d.ts +2 -0
  193. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.d.ts.map +1 -0
  194. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +61 -0
  195. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -0
  196. package/build/ts/sessionKeys/__tests__/utils.d.ts +25 -0
  197. package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -0
  198. package/build/ts/sessionKeys/__tests__/utils.js +64 -0
  199. package/build/ts/sessionKeys/__tests__/utils.js.map +1 -0
  200. package/build/ts/sessionKeys/dto.d.ts +11 -0
  201. package/build/ts/sessionKeys/dto.d.ts.map +1 -0
  202. package/build/ts/sessionKeys/dto.js +29 -0
  203. package/build/ts/sessionKeys/dto.js.map +1 -0
  204. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts +53 -0
  205. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.d.ts.map +1 -0
  206. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js +105 -0
  207. package/build/ts/sessionKeys/provider/KernelEIP1193Provider.js.map +1 -0
  208. package/build/ts/sessionKeys/sessionKeys.controller.d.ts +26 -0
  209. package/build/ts/sessionKeys/sessionKeys.controller.d.ts.map +1 -0
  210. package/build/ts/sessionKeys/sessionKeys.controller.js +74 -0
  211. package/build/ts/sessionKeys/sessionKeys.controller.js.map +1 -0
  212. package/build/ts/sessionKeys/sessionKeys.module.d.ts +3 -0
  213. package/build/ts/sessionKeys/sessionKeys.module.d.ts.map +1 -0
  214. package/build/ts/sessionKeys/sessionKeys.module.js +23 -0
  215. package/build/ts/sessionKeys/sessionKeys.module.js.map +1 -0
  216. package/build/ts/sessionKeys/sessionKeys.service.d.ts +61 -0
  217. package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -0
  218. package/build/ts/sessionKeys/sessionKeys.service.js +122 -0
  219. package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -0
  220. package/build/ts/sessionKeys/types.d.ts +11 -0
  221. package/build/ts/sessionKeys/types.d.ts.map +1 -0
  222. package/build/ts/sessionKeys/types.js +2 -0
  223. package/build/ts/sessionKeys/types.js.map +1 -0
  224. package/build/ts/subgraph/__tests__/subgraph.controller.test.d.ts +2 -0
  225. package/build/ts/subgraph/__tests__/subgraph.controller.test.d.ts.map +1 -0
  226. package/build/ts/subgraph/__tests__/subgraph.controller.test.js +50 -0
  227. package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -0
  228. package/build/ts/subgraph/__tests__/subgraph.gateway.test.d.ts +2 -0
  229. package/build/ts/subgraph/__tests__/subgraph.gateway.test.d.ts.map +1 -0
  230. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +83 -0
  231. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -0
  232. package/build/ts/subgraph/__tests__/subgraph.service.test.d.ts +2 -0
  233. package/build/ts/subgraph/__tests__/subgraph.service.test.d.ts.map +1 -0
  234. package/build/ts/subgraph/__tests__/subgraph.service.test.js +58 -0
  235. package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -0
  236. package/build/ts/subgraph/dto.d.ts +27 -0
  237. package/build/ts/subgraph/dto.d.ts.map +1 -0
  238. package/build/ts/subgraph/dto.js +83 -0
  239. package/build/ts/subgraph/dto.js.map +1 -0
  240. package/build/ts/subgraph/subgraph.controller.d.ts +24 -0
  241. package/build/ts/subgraph/subgraph.controller.d.ts.map +1 -0
  242. package/build/ts/subgraph/subgraph.controller.js +66 -0
  243. package/build/ts/subgraph/subgraph.controller.js.map +1 -0
  244. package/build/ts/subgraph/subgraph.gateway.d.ts +35 -0
  245. package/build/ts/subgraph/subgraph.gateway.d.ts.map +1 -0
  246. package/build/ts/subgraph/subgraph.gateway.js +93 -0
  247. package/build/ts/subgraph/subgraph.gateway.js.map +1 -0
  248. package/build/ts/subgraph/subgraph.module.d.ts +3 -0
  249. package/build/ts/subgraph/subgraph.module.d.ts.map +1 -0
  250. package/build/ts/subgraph/subgraph.module.js +23 -0
  251. package/build/ts/subgraph/subgraph.module.js.map +1 -0
  252. package/build/ts/subgraph/subgraph.service.d.ts +20 -0
  253. package/build/ts/subgraph/subgraph.service.d.ts.map +1 -0
  254. package/build/ts/subgraph/subgraph.service.js +106 -0
  255. package/build/ts/subgraph/subgraph.service.js.map +1 -0
  256. package/build/ts/subgraph/types.d.ts +93 -0
  257. package/build/ts/subgraph/types.d.ts.map +1 -0
  258. package/build/ts/subgraph/types.js +24 -0
  259. package/build/ts/subgraph/types.js.map +1 -0
  260. package/build/tsconfig.build.tsbuildinfo +1 -0
  261. package/package.json +125 -0
@@ -0,0 +1,54 @@
1
+ import { type IGenerateProofsOptions } from "@maci-protocol/sdk";
2
+ import { IProof, ITallyData } from "@maci-protocol/sdk";
3
+ import type { IGenerateArgs, IGenerateData, IMergeArgs, ISubmitProofsArgs } from "./types";
4
+ import { CryptoService } from "../crypto/crypto.service";
5
+ import { FileService } from "../file/file.service";
6
+ import { SessionKeysService } from "../sessionKeys/sessionKeys.service";
7
+ /**
8
+ * ProofGeneratorService is responsible for generating message processing and tally proofs.
9
+ */
10
+ export declare class ProofGeneratorService {
11
+ private readonly cryptoService;
12
+ private readonly fileService;
13
+ private readonly sessionKeysService;
14
+ /**
15
+ * Deployment helper
16
+ */
17
+ private readonly deployment;
18
+ /**
19
+ * Logger
20
+ */
21
+ private readonly logger;
22
+ /**
23
+ * Proof generator initialization
24
+ */
25
+ constructor(cryptoService: CryptoService, fileService: FileService, sessionKeysService: SessionKeysService);
26
+ /**
27
+ * Read and parse proofs
28
+ * @param folder - folder path to read proofs from
29
+ * @param type - type of proofs to read (tally or process)
30
+ * @returns proofs
31
+ */
32
+ readProofs(folder: string, type: "tally" | "process"): Promise<IProof[]>;
33
+ /**
34
+ * Generate proofs for message processing and tally
35
+ *
36
+ * @param args - generate proofs arguments
37
+ * @returns - generated proofs for message processing and tally
38
+ */
39
+ generate({ approval, sessionKeyAddress, chain, poll, maciContractAddress, mode, encryptedCoordinatorPrivateKey, startBlock, endBlock, blocksPerBatch, }: IGenerateArgs, options?: IGenerateProofsOptions): Promise<IGenerateData>;
40
+ /**
41
+ * Merge state and message trees
42
+ *
43
+ * @param args - merge arguments
44
+ * @returns whether the proofs were successfully merged
45
+ */
46
+ merge({ maciContractAddress, pollId, approval, sessionKeyAddress, chain }: IMergeArgs): Promise<boolean>;
47
+ /**
48
+ * Submit proofs on-chain
49
+ *
50
+ * @param args - submit proofs on-chain arguments
51
+ */
52
+ submit({ maciContractAddress, pollId, sessionKeyAddress, approval, chain, }: ISubmitProofsArgs): Promise<ITallyData>;
53
+ }
54
+ //# sourceMappingURL=proof.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.service.d.ts","sourceRoot":"","sources":["../../../ts/proof/proof.service.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,sBAAsB,EAI5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAgC,MAAM,oBAAoB,CAAC;AAOtF,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAG3F,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE;;GAEG;AACH,qBACa,qBAAqB;IAe9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAhBrC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAExC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;OAEG;gBAEgB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,kBAAkB;IAOzD;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAY9E;;;;;OAKG;IACG,QAAQ,CACZ,EACE,QAAQ,EACR,iBAAiB,EACjB,KAAK,EACL,IAAI,EACJ,mBAAmB,EACnB,IAAI,EACJ,8BAA8B,EAC9B,UAAU,EACV,QAAQ,EACR,cAAc,GACf,EAAE,aAAa,EAChB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,aAAa,CAAC;IAuEzB;;;;;OAKG;IACG,KAAK,CAAC,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAY9G;;;;OAIG;IACG,MAAM,CAAC,EACX,mBAAmB,EACnB,MAAM,EACN,iBAAiB,EACjB,QAAQ,EACR,KAAK,GACN,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAiB3C"}
@@ -0,0 +1,166 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var ProofGeneratorService_1;
11
+ import { Keypair, PrivateKey, PublicKey } from "@maci-protocol/domainobjs";
12
+ import { Deployment, EContracts, getPoll, mergeSignups, EMode, } from "@maci-protocol/sdk";
13
+ import { generateProofs, proveOnChain } from "@maci-protocol/sdk";
14
+ import { Logger, Injectable } from "@nestjs/common";
15
+ import hre from "hardhat";
16
+ import fs from "fs";
17
+ import path from "path";
18
+ import { ErrorCodes } from "../common";
19
+ import { CryptoService } from "../crypto/crypto.service";
20
+ import { FileService } from "../file/file.service";
21
+ import { SessionKeysService } from "../sessionKeys/sessionKeys.service";
22
+ /**
23
+ * ProofGeneratorService is responsible for generating message processing and tally proofs.
24
+ */
25
+ let ProofGeneratorService = ProofGeneratorService_1 = class ProofGeneratorService {
26
+ cryptoService;
27
+ fileService;
28
+ sessionKeysService;
29
+ /**
30
+ * Deployment helper
31
+ */
32
+ deployment;
33
+ /**
34
+ * Logger
35
+ */
36
+ logger;
37
+ /**
38
+ * Proof generator initialization
39
+ */
40
+ constructor(cryptoService, fileService, sessionKeysService) {
41
+ this.cryptoService = cryptoService;
42
+ this.fileService = fileService;
43
+ this.sessionKeysService = sessionKeysService;
44
+ this.deployment = Deployment.getInstance({ hre });
45
+ this.deployment.setHre(hre);
46
+ this.logger = new Logger(ProofGeneratorService_1.name);
47
+ }
48
+ /**
49
+ * Read and parse proofs
50
+ * @param folder - folder path to read proofs from
51
+ * @param type - type of proofs to read (tally or process)
52
+ * @returns proofs
53
+ */
54
+ async readProofs(folder, type) {
55
+ const files = await fs.promises.readdir(folder);
56
+ return Promise.all(files
57
+ .filter((f) => f.startsWith(`${type}_`) && f.endsWith(".json"))
58
+ .sort()
59
+ .map(async (file) => fs.promises.readFile(`${folder}/${file}`, "utf8").then((result) => JSON.parse(result))));
60
+ }
61
+ /**
62
+ * Generate proofs for message processing and tally
63
+ *
64
+ * @param args - generate proofs arguments
65
+ * @returns - generated proofs for message processing and tally
66
+ */
67
+ async generate({ approval, sessionKeyAddress, chain, poll, maciContractAddress, mode, encryptedCoordinatorPrivateKey, startBlock, endBlock, blocksPerBatch, }, options) {
68
+ try {
69
+ const signer = await this.sessionKeysService.getCoordinatorSigner(chain, sessionKeyAddress, approval);
70
+ const pollData = await getPoll({
71
+ maciAddress: maciContractAddress,
72
+ pollId: poll,
73
+ signer,
74
+ });
75
+ const pollContract = await this.deployment.getContract({
76
+ name: EContracts.Poll,
77
+ address: pollData.address,
78
+ });
79
+ const coordinatorPublicKey = await pollContract.coordinatorPublicKey();
80
+ const { privateKey } = await this.fileService.getPrivateKey();
81
+ const maciPrivateKey = PrivateKey.deserialize(this.cryptoService.decrypt(privateKey, encryptedCoordinatorPrivateKey));
82
+ const coordinatorKeypair = new Keypair(maciPrivateKey);
83
+ const publicKey = new PublicKey([
84
+ BigInt(coordinatorPublicKey.x.toString()),
85
+ BigInt(coordinatorPublicKey.y.toString()),
86
+ ]);
87
+ if (!coordinatorKeypair.publicKey.equals(publicKey)) {
88
+ this.logger.error(`Error: ${ErrorCodes.PRIVATE_KEY_MISMATCH}, wrong private key`);
89
+ throw new Error(ErrorCodes.PRIVATE_KEY_MISMATCH.toString());
90
+ }
91
+ // There are only QV and Non-QV modes
92
+ const tally = this.fileService.getZkeyFilePaths(process.env.COORDINATOR_TALLY_ZKEY_NAME, mode === EMode.QV ? mode : EMode.NON_QV);
93
+ const messageProcessor = this.fileService.getZkeyFilePaths(process.env.COORDINATOR_MESSAGE_PROCESS_ZKEY_NAME, mode);
94
+ const { processProofs, tallyProofs, tallyData } = await generateProofs({
95
+ outputDir: path.resolve("./proofs"),
96
+ coordinatorPrivateKey: maciPrivateKey.serialize(),
97
+ signer,
98
+ maciAddress: maciContractAddress,
99
+ pollId: BigInt(poll),
100
+ startBlock,
101
+ endBlock,
102
+ blocksPerBatch,
103
+ rapidsnark: process.env.COORDINATOR_RAPIDSNARK_EXE,
104
+ mode,
105
+ tallyZkey: tally.zkey,
106
+ tallyWitgen: tally.witgen,
107
+ tallyWasm: tally.wasm,
108
+ processZkey: messageProcessor.zkey,
109
+ processWitgen: messageProcessor.witgen,
110
+ processWasm: messageProcessor.wasm,
111
+ tallyFile: path.resolve("./tally.json"),
112
+ });
113
+ return {
114
+ processProofs,
115
+ tallyProofs,
116
+ tallyData,
117
+ };
118
+ }
119
+ catch (error) {
120
+ options?.onFail?.(error);
121
+ throw error;
122
+ }
123
+ }
124
+ /**
125
+ * Merge state and message trees
126
+ *
127
+ * @param args - merge arguments
128
+ * @returns whether the proofs were successfully merged
129
+ */
130
+ async merge({ maciContractAddress, pollId, approval, sessionKeyAddress, chain }) {
131
+ const signer = await this.sessionKeysService.getCoordinatorSigner(chain, sessionKeyAddress, approval);
132
+ await mergeSignups({
133
+ maciAddress: maciContractAddress,
134
+ pollId: BigInt(pollId),
135
+ signer,
136
+ });
137
+ return true;
138
+ }
139
+ /**
140
+ * Submit proofs on-chain
141
+ *
142
+ * @param args - submit proofs on-chain arguments
143
+ */
144
+ async submit({ maciContractAddress, pollId, sessionKeyAddress, approval, chain, }) {
145
+ const signer = await this.sessionKeysService.getCoordinatorSigner(chain, sessionKeyAddress, approval);
146
+ const tallyData = await proveOnChain({
147
+ pollId: BigInt(pollId),
148
+ maciAddress: maciContractAddress,
149
+ proofDir: "./proofs",
150
+ tallyFile: "./tally.json",
151
+ signer,
152
+ });
153
+ if (!tallyData) {
154
+ throw new Error("Tally data is undefined");
155
+ }
156
+ return tallyData;
157
+ }
158
+ };
159
+ ProofGeneratorService = ProofGeneratorService_1 = __decorate([
160
+ Injectable(),
161
+ __metadata("design:paramtypes", [CryptoService,
162
+ FileService,
163
+ SessionKeysService])
164
+ ], ProofGeneratorService);
165
+ export { ProofGeneratorService };
166
+ //# sourceMappingURL=proof.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proof.service.js","sourceRoot":"","sources":["../../../ts/proof/proof.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ import type { ITallyData, IProof, EMode } from "@maci-protocol/sdk";
2
+ import type { Hex } from "viem";
3
+ import { ESupportedNetworks } from "../common";
4
+ /**
5
+ * WS events for proof generation
6
+ */
7
+ export declare enum EProofGenerationEvents {
8
+ START = "start-generation",
9
+ PROGRESS = "progress-generation",
10
+ FINISH = "finish-generation",
11
+ ERROR = "exception"
12
+ }
13
+ export interface IReadProofsResults {
14
+ /**
15
+ * Process proofs list
16
+ */
17
+ process: IProof[];
18
+ /**
19
+ * Tally proofs list
20
+ */
21
+ tally: IProof[];
22
+ }
23
+ /**
24
+ * Interface that represents generate proofs arguments
25
+ */
26
+ export interface IGenerateArgs {
27
+ /**
28
+ * Approval for the session key
29
+ */
30
+ approval?: string;
31
+ /**
32
+ * Session key address
33
+ */
34
+ sessionKeyAddress?: Hex;
35
+ /**
36
+ * Chain
37
+ */
38
+ chain: ESupportedNetworks;
39
+ /**
40
+ * Poll id
41
+ */
42
+ poll: number;
43
+ /**
44
+ * Maci contract address
45
+ */
46
+ maciContractAddress: string;
47
+ /**
48
+ * Whether to use Qv or NonQv
49
+ */
50
+ mode: EMode;
51
+ /**
52
+ * Encrypted coordinator private key with RSA public key (see .env.example)
53
+ */
54
+ encryptedCoordinatorPrivateKey: string;
55
+ /**
56
+ * Start block for event processing
57
+ */
58
+ startBlock?: number;
59
+ /**
60
+ * End block for event processing
61
+ */
62
+ endBlock?: number;
63
+ /**
64
+ * Blocks per batch for event processing
65
+ */
66
+ blocksPerBatch?: number;
67
+ }
68
+ /**
69
+ * Interface that represents generated proofs data
70
+ */
71
+ export interface IGenerateData {
72
+ /**
73
+ * Message processing proofs
74
+ */
75
+ processProofs: IProof[];
76
+ /**
77
+ * Tally proofs
78
+ */
79
+ tallyProofs: IProof[];
80
+ /**
81
+ * TallyData
82
+ */
83
+ tallyData: ITallyData;
84
+ }
85
+ /**
86
+ * Interface that represents zkey filepaths
87
+ */
88
+ export interface IGetZkeyFilesData {
89
+ /**
90
+ * Zkey filepath
91
+ */
92
+ zkey: string;
93
+ /**
94
+ * Wasm filepath
95
+ */
96
+ wasm: string;
97
+ }
98
+ /**
99
+ * Merge arguments
100
+ */
101
+ export interface IMergeArgs {
102
+ /**
103
+ * MACI contract address
104
+ */
105
+ maciContractAddress: string;
106
+ /**
107
+ * Poll ID
108
+ */
109
+ pollId: number;
110
+ /**
111
+ * Approval for the session key
112
+ */
113
+ approval?: string;
114
+ /**
115
+ * Session key address
116
+ */
117
+ sessionKeyAddress?: Hex;
118
+ /**
119
+ * Chain
120
+ */
121
+ chain: ESupportedNetworks;
122
+ }
123
+ /**
124
+ * Submit proofs on-chain arguments
125
+ */
126
+ export interface ISubmitProofsArgs {
127
+ /**
128
+ * MACI contract address
129
+ */
130
+ maciContractAddress: string;
131
+ /**
132
+ * Poll ID
133
+ */
134
+ pollId: number;
135
+ /**
136
+ * Approval for the session key
137
+ */
138
+ approval?: string;
139
+ /**
140
+ * Session key address
141
+ */
142
+ sessionKeyAddress?: Hex;
143
+ /**
144
+ * Chain
145
+ */
146
+ chain: ESupportedNetworks;
147
+ }
148
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/proof/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C;;GAEG;AACH,oBAAY,sBAAsB;IAChC,KAAK,qBAAqB;IAC1B,QAAQ,wBAAwB;IAChC,MAAM,sBAAsB;IAC5B,KAAK,cAAc;CACpB;AAKD,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;IAE1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,8BAA8B,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,aAAa,EAAE,MAAM,EAAE,CAAC;IAExB;;OAEG;IACH,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IACH,SAAS,EAAE,UAAU,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,iBAAiB,CAAC,EAAE,GAAG,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;CAC3B"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * WS events for proof generation
3
+ */
4
+ export var EProofGenerationEvents;
5
+ (function (EProofGenerationEvents) {
6
+ EProofGenerationEvents["START"] = "start-generation";
7
+ EProofGenerationEvents["PROGRESS"] = "progress-generation";
8
+ EProofGenerationEvents["FINISH"] = "finish-generation";
9
+ EProofGenerationEvents["ERROR"] = "exception";
10
+ })(EProofGenerationEvents || (EProofGenerationEvents = {}));
11
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../ts/proof/types.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,CAAN,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,oDAA0B,CAAA;IAC1B,0DAAgC,CAAA;IAChC,sDAA4B,CAAA;IAC5B,6CAAmB,CAAA;AACrB,CAAC,EALW,sBAAsB,KAAtB,sBAAsB,QAKjC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sessionKeys.controller.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionKeys.controller.test.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.controller.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import { Test } from "@nestjs/testing";
2
+ import { zeroAddress } from "viem";
3
+ import { SessionKeysController } from "../sessionKeys.controller";
4
+ import { SessionKeysService } from "../sessionKeys.service";
5
+ describe("SessionKeysController", () => {
6
+ let sessionKeysController;
7
+ const mockSessionKeysService = {
8
+ generateSessionKey: jest.fn(),
9
+ deactivateSessionKey: jest.fn(),
10
+ };
11
+ const defaultGenerateSessionKeyReturn = {
12
+ sessionKeyAddress: zeroAddress,
13
+ };
14
+ beforeEach(async () => {
15
+ const app = await Test.createTestingModule({
16
+ controllers: [SessionKeysController],
17
+ })
18
+ .useMocker((token) => {
19
+ if (token === SessionKeysService) {
20
+ mockSessionKeysService.generateSessionKey.mockResolvedValue(defaultGenerateSessionKeyReturn);
21
+ return mockSessionKeysService;
22
+ }
23
+ return jest.fn();
24
+ })
25
+ .compile();
26
+ sessionKeysController = app.get(SessionKeysController);
27
+ });
28
+ afterEach(() => {
29
+ jest.clearAllMocks();
30
+ });
31
+ describe("v1/session-keys/generate", () => {
32
+ test("should return a session key address", () => {
33
+ const data = sessionKeysController.generateSessionKey();
34
+ expect(data).toStrictEqual(defaultGenerateSessionKeyReturn);
35
+ });
36
+ });
37
+ describe("v1/session-keys/delete", () => {
38
+ test("should delete a session key", () => {
39
+ sessionKeysController.deactivateSessionKey({ sessionKeyAddress: zeroAddress });
40
+ expect(mockSessionKeysService.deactivateSessionKey).toHaveBeenCalledWith(zeroAddress);
41
+ });
42
+ });
43
+ });
44
+ //# sourceMappingURL=sessionKeys.controller.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionKeys.controller.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.controller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAInC,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,qBAA4C,CAAC;IAEjD,MAAM,sBAAsB,GAAG;QAC7B,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;QAC7B,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;KAChC,CAAC;IAEF,MAAM,+BAA+B,GAA8B;QACjE,iBAAiB,EAAE,WAAW;KAC/B,CAAC;IAEF,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC;YACzC,WAAW,EAAE,CAAC,qBAAqB,CAAC;SACrC,CAAC;aACC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YACnB,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;gBACjC,sBAAsB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;gBAC7F,OAAO,sBAAsB,CAAC;YAChC,CAAC;YAED,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;QACnB,CAAC,CAAC;aACD,OAAO,EAAE,CAAC;QAEb,qBAAqB,GAAG,GAAG,CAAC,GAAG,CAAwB,qBAAqB,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC/C,MAAM,IAAI,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,+BAA+B,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,qBAAqB,CAAC,oBAAoB,CAAC,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QACxF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sessionKeys.service.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionKeys.service.test.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.service.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,61 @@
1
+ import dotenv from "dotenv";
2
+ import { zeroAddress } from "viem";
3
+ import { ErrorCodes, ESupportedNetworks } from "../../common";
4
+ import { FileService } from "../../file/file.service";
5
+ import { SessionKeysService } from "../sessionKeys.service";
6
+ import { generateApproval } from "./utils";
7
+ dotenv.config();
8
+ describe("SessionKeysService", () => {
9
+ const fileService = new FileService();
10
+ let sessionKeysService;
11
+ beforeAll(() => {
12
+ sessionKeysService = new SessionKeysService(fileService);
13
+ });
14
+ describe("generateSessionKey", () => {
15
+ test("should generate and store a session key", async () => {
16
+ const sessionKeyAddress = await sessionKeysService.generateSessionKey();
17
+ expect(sessionKeyAddress).toBeDefined();
18
+ expect(sessionKeyAddress).not.toEqual(zeroAddress);
19
+ const sessionKey = fileService.getSessionKey(sessionKeyAddress.sessionKeyAddress);
20
+ expect(sessionKey).toBeDefined();
21
+ });
22
+ });
23
+ describe("deactivateSessionKey", () => {
24
+ test("should delete a session key", async () => {
25
+ const sessionKeyAddress = await sessionKeysService.generateSessionKey();
26
+ expect(sessionKeyAddress).toBeDefined();
27
+ expect(sessionKeyAddress).not.toEqual(zeroAddress);
28
+ const sessionKey = fileService.getSessionKey(sessionKeyAddress.sessionKeyAddress);
29
+ expect(sessionKey).toBeDefined();
30
+ sessionKeysService.deactivateSessionKey(sessionKeyAddress.sessionKeyAddress);
31
+ const sessionKeyDeleted = fileService.getSessionKey(sessionKeyAddress.sessionKeyAddress);
32
+ expect(sessionKeyDeleted).toBeUndefined();
33
+ });
34
+ });
35
+ describe("generateClientFromSessionKey", () => {
36
+ test("should fail to generate a client with an invalid approval", async () => {
37
+ const sessionKeyAddress = await sessionKeysService.generateSessionKey();
38
+ await expect(sessionKeysService.generateClientFromSessionKey(sessionKeyAddress.sessionKeyAddress, "0xinvalid", ESupportedNetworks.OPTIMISM_SEPOLIA)).rejects.toThrow(ErrorCodes.INVALID_APPROVAL.toString());
39
+ });
40
+ test("should throw when given a non existent session key address", async () => {
41
+ const approval = await generateApproval(zeroAddress);
42
+ await expect(sessionKeysService.generateClientFromSessionKey(zeroAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA)).rejects.toThrow(ErrorCodes.SESSION_KEY_NOT_FOUND.toString());
43
+ });
44
+ test("should generate a client from a session key", async () => {
45
+ jest.mock("@zerodev/sdk", () => ({
46
+ ...jest.requireActual("@zerodev/sdk"),
47
+ createKernelAccountClient: jest.fn().mockReturnValue({ mockedKernelClient: true }),
48
+ }));
49
+ const mockGenerateClientFromSessionKey = jest.fn().mockResolvedValue({ mockedClient: true });
50
+ jest
51
+ .spyOn(SessionKeysService.prototype, "generateClientFromSessionKey")
52
+ .mockImplementation(mockGenerateClientFromSessionKey);
53
+ const sessionKeyAddress = await sessionKeysService.generateSessionKey();
54
+ const approval = await generateApproval(sessionKeyAddress.sessionKeyAddress);
55
+ const client = await sessionKeysService.generateClientFromSessionKey(sessionKeyAddress.sessionKeyAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA);
56
+ expect(mockGenerateClientFromSessionKey).toHaveBeenCalledWith(sessionKeyAddress.sessionKeyAddress, approval, ESupportedNetworks.OPTIMISM_SEPOLIA);
57
+ expect(client).toEqual({ mockedClient: true });
58
+ });
59
+ });
60
+ });
61
+ //# sourceMappingURL=sessionKeys.service.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionKeys.service.test.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/sessionKeys.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IACtC,IAAI,kBAAsC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;YACxE,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC7C,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;YACxE,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YAClF,MAAM,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;YAEjC,kBAAkB,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YAC7E,MAAM,iBAAiB,GAAG,WAAW,CAAC,aAAa,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YACzF,MAAM,CAAC,iBAAiB,CAAC,CAAC,aAAa,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;YACxE,MAAM,MAAM,CACV,kBAAkB,CAAC,4BAA4B,CAC7C,iBAAiB,CAAC,iBAAiB,EACnC,WAAW,EACX,kBAAkB,CAAC,gBAAgB,CACpC,CACF,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACrD,MAAM,MAAM,CACV,kBAAkB,CAAC,4BAA4B,CAAC,WAAW,EAAE,QAAQ,EAAE,kBAAkB,CAAC,gBAAgB,CAAC,CAC5G,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAY,EAAE,CAAC,CAAC;gBACxC,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;gBACrC,yBAAyB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;aACnF,CAAC,CAAC,CAAC;YAEJ,MAAM,gCAAgC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7F,IAAI;iBACD,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,8BAA8B,CAAC;iBACnE,kBAAkB,CAAC,gCAAgC,CAAC,CAAC;YAExD,MAAM,iBAAiB,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;YAE7E,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,4BAA4B,CAClE,iBAAiB,CAAC,iBAAiB,EACnC,QAAQ,EACR,kBAAkB,CAAC,gBAAgB,CACpC,CAAC;YACF,MAAM,CAAC,gCAAgC,CAAC,CAAC,oBAAoB,CAC3D,iBAAiB,CAAC,iBAAiB,EACnC,QAAQ,EACR,kBAAkB,CAAC,gBAAgB,CACpC,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type Policy } from "@zerodev/permissions";
2
+ import { CreateKernelAccountReturnType } from "@zerodev/sdk";
3
+ import { type Hex } from "viem";
4
+ export declare const ENTRY_POINT: import("@zerodev/sdk/types").EntryPointType<"0.7">;
5
+ export declare const KERNEL_VERSION: import("@zerodev/sdk/types").KERNEL_V3_VERSION_TYPE;
6
+ /**
7
+ * Generate a timestamp policy
8
+ * @param endTime - The end time of the policy
9
+ * @param start - The start time of the policy
10
+ * @returns The timestamp policy
11
+ */
12
+ export declare const generateTimestampPolicy: (endTime: number, start?: number) => Policy;
13
+ /**
14
+ * Get smart contract kernel account
15
+ * @param sessionKeyAddress - the session key address
16
+ * @returns - the kernel account
17
+ */
18
+ export declare const getKernelAccount: (sessionKeyAddress: Hex) => Promise<CreateKernelAccountReturnType>;
19
+ /**
20
+ * Generate an approval for a session key
21
+ * @param sessionKeyAddress - the session key address
22
+ * @returns - the approval
23
+ */
24
+ export declare const generateApproval: (sessionKeyAddress: Hex) => Promise<string>;
25
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAqD,MAAM,sBAAsB,CAAC;AAGtG,OAAO,EAA8C,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAGzG,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAQhC,eAAO,MAAM,WAAW,oDAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,qDAAc,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,EAAE,QAAQ,MAAM,KAAG,MAItE,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,6BAA6B,CA6BpG,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,mBAAmB,GAAG,KAAG,OAAO,CAAC,MAAM,CAG7E,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { signerToEcdsaValidator } from "@zerodev/ecdsa-validator";
2
+ import { serializePermissionAccount, toPermissionValidator } from "@zerodev/permissions";
3
+ import { toSudoPolicy, toTimestampPolicy } from "@zerodev/permissions/policies";
4
+ import { toECDSASigner } from "@zerodev/permissions/signers";
5
+ import { addressToEmptyAccount, createKernelAccount } from "@zerodev/sdk";
6
+ import { getEntryPoint, KERNEL_V3_1 } from "@zerodev/sdk/constants";
7
+ import dotenv from "dotenv";
8
+ import { privateKeyToAccount } from "viem/accounts";
9
+ import { ESupportedNetworks } from "../../common";
10
+ import { getPublicClient } from "../../common/accountAbstraction";
11
+ dotenv.config();
12
+ export const ENTRY_POINT = getEntryPoint("0.7");
13
+ export const KERNEL_VERSION = KERNEL_V3_1;
14
+ /**
15
+ * Generate a timestamp policy
16
+ * @param endTime - The end time of the policy
17
+ * @param start - The start time of the policy
18
+ * @returns The timestamp policy
19
+ */
20
+ export const generateTimestampPolicy = (endTime, start) => toTimestampPolicy({
21
+ validAfter: start,
22
+ validUntil: endTime,
23
+ });
24
+ /**
25
+ * Get smart contract kernel account
26
+ * @param sessionKeyAddress - the session key address
27
+ * @returns - the kernel account
28
+ */
29
+ export const getKernelAccount = async (sessionKeyAddress) => {
30
+ const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
31
+ const sessionKeySigner = privateKeyToAccount(process.env.TEST_PRIVATE_KEY);
32
+ const ecdsaValidator = await signerToEcdsaValidator(publicClient, {
33
+ signer: sessionKeySigner,
34
+ entryPoint: ENTRY_POINT,
35
+ kernelVersion: KERNEL_VERSION,
36
+ });
37
+ const emptyAccount = addressToEmptyAccount(sessionKeyAddress);
38
+ const emptySessionKeySigner = await toECDSASigner({ signer: emptyAccount });
39
+ const permissionPlugin = await toPermissionValidator(publicClient, {
40
+ entryPoint: ENTRY_POINT,
41
+ kernelVersion: KERNEL_VERSION,
42
+ signer: emptySessionKeySigner,
43
+ policies: [toSudoPolicy({})],
44
+ });
45
+ const sessionKeyAccount = await createKernelAccount(publicClient, {
46
+ entryPoint: ENTRY_POINT,
47
+ kernelVersion: KERNEL_VERSION,
48
+ plugins: {
49
+ sudo: ecdsaValidator,
50
+ regular: permissionPlugin,
51
+ },
52
+ });
53
+ return sessionKeyAccount;
54
+ };
55
+ /**
56
+ * Generate an approval for a session key
57
+ * @param sessionKeyAddress - the session key address
58
+ * @returns - the approval
59
+ */
60
+ export const generateApproval = async (sessionKeyAddress) => {
61
+ const sessionKeyAccount = await getKernelAccount(sessionKeyAddress);
62
+ return serializePermissionAccount(sessionKeyAccount);
63
+ };
64
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../ts/sessionKeys/__tests__/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAe,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACtG,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAiC,MAAM,cAAc,CAAC;AACzG,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,OAAe,EAAE,KAAc,EAAU,EAAE,CACjF,iBAAiB,CAAC;IAChB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,OAAO;CACpB,CAAC,CAAC;AAEL;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAA0C,EAAE;IACvG,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAE1E,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAwB,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,YAAY,EAAE;QAChE,MAAM,EAAE,gBAAgB;QACxB,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,qBAAqB,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE5E,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,YAAY,EAAE;QACjE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,qBAAqB;QAC7B,QAAQ,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KAC7B,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE;QAChE,UAAU,EAAE,WAAW;QACvB,aAAa,EAAE,cAAc;QAC7B,OAAO,EAAE;YACP,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,gBAAgB;SAC1B;KACF,CAAC,CAAC;IACH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,iBAAsB,EAAmB,EAAE;IAChF,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACpE,OAAO,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;AACvD,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Hex } from "viem";
2
+ /**
3
+ * Data transfer object for Deactivate session key
4
+ */
5
+ export declare class DeactivateSessionKeyDto {
6
+ /**
7
+ * Session key address
8
+ */
9
+ sessionKeyAddress: Hex;
10
+ }
11
+ //# sourceMappingURL=dto.d.ts.map