@enclave-e3/contracts 0.1.11 → 0.1.13

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 (257) hide show
  1. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +3 -3
  2. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/artifacts.d.ts +3 -3
  3. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +1 -1
  4. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +3 -3
  5. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/artifacts.d.ts +4 -4
  6. package/artifacts/build-info/{solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.json → solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.json} +27 -12
  7. package/artifacts/build-info/solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.output.json +1 -0
  8. package/artifacts/contracts/E3RefundManager.sol/E3RefundManager.json +684 -0
  9. package/artifacts/contracts/E3RefundManager.sol/artifacts.d.ts +27 -0
  10. package/artifacts/contracts/Enclave.sol/Enclave.json +530 -182
  11. package/artifacts/contracts/Enclave.sol/artifacts.d.ts +4 -4
  12. package/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json +14 -1
  13. package/artifacts/contracts/interfaces/IBondingRegistry.sol/artifacts.d.ts +2 -2
  14. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json +55 -5
  15. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/artifacts.d.ts +2 -2
  16. package/artifacts/contracts/interfaces/IComputeProvider.sol/IComputeProvider.json +1 -1
  17. package/artifacts/contracts/interfaces/IComputeProvider.sol/artifacts.d.ts +1 -1
  18. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/IDecryptionVerifier.json +1 -1
  19. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/artifacts.d.ts +1 -1
  20. package/artifacts/contracts/interfaces/IE3Program.sol/IE3Program.json +19 -24
  21. package/artifacts/contracts/interfaces/IE3Program.sol/artifacts.d.ts +2 -2
  22. package/artifacts/contracts/interfaces/IE3RefundManager.sol/IE3RefundManager.json +470 -0
  23. package/artifacts/contracts/interfaces/IE3RefundManager.sol/artifacts.d.ts +27 -0
  24. package/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json +383 -128
  25. package/artifacts/contracts/interfaces/IEnclave.sol/artifacts.d.ts +2 -2
  26. package/artifacts/contracts/interfaces/ISlashVerifier.sol/ISlashVerifier.json +1 -1
  27. package/artifacts/contracts/interfaces/ISlashVerifier.sol/artifacts.d.ts +1 -1
  28. package/artifacts/contracts/interfaces/ISlashingManager.sol/ISlashingManager.json +1 -1
  29. package/artifacts/contracts/interfaces/ISlashingManager.sol/artifacts.d.ts +1 -1
  30. package/artifacts/contracts/lib/ExitQueueLib.sol/ExitQueueLib.json +1 -1
  31. package/artifacts/contracts/lib/ExitQueueLib.sol/artifacts.d.ts +1 -1
  32. package/artifacts/contracts/registry/BondingRegistry.sol/BondingRegistry.json +16 -3
  33. package/artifacts/contracts/registry/BondingRegistry.sol/artifacts.d.ts +4 -4
  34. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/CiphernodeRegistryOwnable.json +91 -25
  35. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/artifacts.d.ts +6 -6
  36. package/artifacts/contracts/slashing/SlashingManager.sol/SlashingManager.json +3 -3
  37. package/artifacts/contracts/slashing/SlashingManager.sol/artifacts.d.ts +3 -3
  38. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.json +57 -7
  39. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.json +57 -7
  40. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/artifacts.d.ts +8 -8
  41. package/artifacts/contracts/test/MockComputeProvider.sol/MockComputeProvider.json +3 -3
  42. package/artifacts/contracts/test/MockComputeProvider.sol/artifacts.d.ts +3 -3
  43. package/artifacts/contracts/test/MockDecryptionVerifier.sol/MockDecryptionVerifier.json +1 -1
  44. package/artifacts/contracts/test/MockDecryptionVerifier.sol/artifacts.d.ts +1 -1
  45. package/artifacts/contracts/test/MockE3Program.sol/MockE3Program.json +21 -26
  46. package/artifacts/contracts/test/MockE3Program.sol/artifacts.d.ts +4 -4
  47. package/artifacts/contracts/test/MockSlashingVerifier.sol/MockSlashingVerifier.json +1 -1
  48. package/artifacts/contracts/test/MockSlashingVerifier.sol/artifacts.d.ts +1 -1
  49. package/artifacts/contracts/test/MockStableToken.sol/MockUSDC.json +3 -3
  50. package/artifacts/contracts/test/MockStableToken.sol/artifacts.d.ts +3 -3
  51. package/artifacts/contracts/token/EnclaveTicketToken.sol/EnclaveTicketToken.json +14 -22
  52. package/artifacts/contracts/token/EnclaveTicketToken.sol/artifacts.d.ts +4 -4
  53. package/artifacts/contracts/token/EnclaveToken.sol/EnclaveToken.json +10 -10
  54. package/artifacts/contracts/token/EnclaveToken.sol/artifacts.d.ts +4 -4
  55. package/artifacts/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.json +89 -0
  56. package/artifacts/contracts/verifier/DkgPkVerifier.sol/CommitmentSchemeLib.json +13 -0
  57. package/artifacts/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.json +186 -0
  58. package/artifacts/contracts/verifier/DkgPkVerifier.sol/FrLib.json +13 -0
  59. package/artifacts/contracts/verifier/DkgPkVerifier.sol/Honk.json +13 -0
  60. package/artifacts/contracts/verifier/DkgPkVerifier.sol/HonkVerificationKey.json +13 -0
  61. package/artifacts/contracts/verifier/DkgPkVerifier.sol/IVerifier.json +38 -0
  62. package/artifacts/contracts/verifier/DkgPkVerifier.sol/RelationsLib.json +13 -0
  63. package/artifacts/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.json +400 -0
  64. package/artifacts/contracts/verifier/DkgPkVerifier.sol/artifacts.d.ts +155 -0
  65. package/artifacts/poseidon-solidity/PoseidonT3.sol/PoseidonT3.json +1 -1
  66. package/artifacts/poseidon-solidity/PoseidonT3.sol/artifacts.d.ts +1 -1
  67. package/contracts/E3RefundManager.sol +365 -0
  68. package/contracts/Enclave.sol +426 -119
  69. package/contracts/interfaces/IBondingRegistry.sol +6 -0
  70. package/contracts/interfaces/ICiphernodeRegistry.sol +29 -7
  71. package/contracts/interfaces/IE3.sol +2 -6
  72. package/contracts/interfaces/IE3Program.sol +3 -7
  73. package/contracts/interfaces/IE3RefundManager.sol +150 -0
  74. package/contracts/interfaces/IEnclave.sol +186 -64
  75. package/contracts/registry/BondingRegistry.sol +9 -0
  76. package/contracts/registry/CiphernodeRegistryOwnable.sol +89 -42
  77. package/contracts/test/MockCiphernodeRegistry.sol +20 -6
  78. package/contracts/test/MockE3Program.sol +3 -8
  79. package/contracts/verifier/DkgPkVerifier.sol +3140 -0
  80. package/dist/hardhat.config.d.ts.map +1 -1
  81. package/dist/hardhat.config.js +4 -4
  82. package/dist/ignition/modules/dkgPkVerifier.d.ts +3 -0
  83. package/dist/ignition/modules/dkgPkVerifier.d.ts.map +1 -0
  84. package/dist/ignition/modules/dkgPkVerifier.js +10 -0
  85. package/dist/ignition/modules/e3RefundManager.d.ts +3 -0
  86. package/dist/ignition/modules/e3RefundManager.d.ts.map +1 -0
  87. package/dist/ignition/modules/e3RefundManager.js +23 -0
  88. package/dist/ignition/modules/enclave.d.ts.map +1 -1
  89. package/dist/ignition/modules/enclave.js +10 -0
  90. package/dist/scripts/deployAndSave/e3RefundManager.d.ts +20 -0
  91. package/dist/scripts/deployAndSave/e3RefundManager.d.ts.map +1 -0
  92. package/dist/scripts/deployAndSave/e3RefundManager.js +55 -0
  93. package/dist/scripts/deployAndSave/enclave.d.ts +13 -1
  94. package/dist/scripts/deployAndSave/enclave.d.ts.map +1 -1
  95. package/dist/scripts/deployAndSave/enclave.js +8 -1
  96. package/dist/scripts/deployAndSave/verifiers.d.ts +29 -0
  97. package/dist/scripts/deployAndSave/verifiers.d.ts.map +1 -0
  98. package/dist/scripts/deployAndSave/verifiers.js +109 -0
  99. package/dist/scripts/deployEnclave.d.ts.map +1 -1
  100. package/dist/scripts/deployEnclave.js +36 -0
  101. package/dist/scripts/deployVerifiers.d.ts +2 -0
  102. package/dist/scripts/deployVerifiers.d.ts.map +1 -0
  103. package/dist/scripts/deployVerifiers.js +33 -0
  104. package/dist/scripts/index.d.ts +1 -0
  105. package/dist/scripts/index.d.ts.map +1 -1
  106. package/dist/scripts/index.js +1 -0
  107. package/dist/tasks/enclave.d.ts +0 -2
  108. package/dist/tasks/enclave.d.ts.map +1 -1
  109. package/dist/tasks/enclave.js +8 -72
  110. package/dist/tasks/program.d.ts +2 -0
  111. package/dist/tasks/program.d.ts.map +1 -0
  112. package/dist/tasks/program.js +55 -0
  113. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts +2 -0
  114. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts.map +1 -0
  115. package/dist/test/E3Lifecycle/E3Integration.spec.js +757 -0
  116. package/dist/test/Enclave.spec.js +83 -406
  117. package/dist/test/Registry/CiphernodeRegistryOwnable.spec.js +133 -59
  118. package/dist/types/contracts/E3RefundManager.d.ts +379 -0
  119. package/dist/types/contracts/E3RefundManager.d.ts.map +1 -0
  120. package/dist/types/contracts/E3RefundManager.js +24 -0
  121. package/dist/types/contracts/Enclave.d.ts +325 -73
  122. package/dist/types/contracts/Enclave.d.ts.map +1 -1
  123. package/dist/types/contracts/Enclave.js +27 -3
  124. package/dist/types/contracts/index.d.ts +3 -0
  125. package/dist/types/contracts/index.d.ts.map +1 -1
  126. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts +11 -1
  127. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts.map +1 -1
  128. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts +35 -7
  129. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts.map +1 -1
  130. package/dist/types/contracts/interfaces/ICiphernodeRegistry.js +4 -0
  131. package/dist/types/contracts/interfaces/IE3Program.d.ts +16 -18
  132. package/dist/types/contracts/interfaces/IE3Program.d.ts.map +1 -1
  133. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts +238 -0
  134. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts.map +1 -0
  135. package/dist/types/contracts/interfaces/IE3RefundManager.js +16 -0
  136. package/dist/types/contracts/interfaces/IEnclave.d.ts +290 -62
  137. package/dist/types/contracts/interfaces/IEnclave.d.ts.map +1 -1
  138. package/dist/types/contracts/interfaces/IEnclave.js +27 -3
  139. package/dist/types/contracts/interfaces/index.d.ts +1 -0
  140. package/dist/types/contracts/interfaces/index.d.ts.map +1 -1
  141. package/dist/types/contracts/registry/BondingRegistry.d.ts +11 -1
  142. package/dist/types/contracts/registry/BondingRegistry.d.ts.map +1 -1
  143. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts +35 -7
  144. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts.map +1 -1
  145. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.js +4 -0
  146. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts +35 -7
  147. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts.map +1 -1
  148. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.js +4 -0
  149. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts +35 -7
  150. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts.map +1 -1
  151. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.js +4 -0
  152. package/dist/types/contracts/test/MockE3Program.d.ts +16 -18
  153. package/dist/types/contracts/test/MockE3Program.d.ts.map +1 -1
  154. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts +36 -0
  155. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts.map +1 -0
  156. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.js +1 -0
  157. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts +36 -0
  158. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts.map +1 -0
  159. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.js +1 -0
  160. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts +36 -0
  161. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts.map +1 -0
  162. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.js +1 -0
  163. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts +138 -0
  164. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts.map +1 -0
  165. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.js +1 -0
  166. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  167. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  168. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.js +1 -0
  169. package/dist/types/contracts/verifier/index.d.ts +3 -0
  170. package/dist/types/contracts/verifier/index.d.ts.map +1 -0
  171. package/dist/types/contracts/verifier/index.js +1 -0
  172. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +1 -1
  173. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts.map +1 -1
  174. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.js +1 -1
  175. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts +1 -1
  176. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts.map +1 -1
  177. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.js +1 -1
  178. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts +540 -0
  179. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts.map +1 -0
  180. package/dist/types/factories/contracts/E3RefundManager__factory.js +706 -0
  181. package/dist/types/factories/contracts/Enclave__factory.d.ts +412 -143
  182. package/dist/types/factories/contracts/Enclave__factory.d.ts.map +1 -1
  183. package/dist/types/factories/contracts/Enclave__factory.js +528 -180
  184. package/dist/types/factories/contracts/index.d.ts +2 -0
  185. package/dist/types/factories/contracts/index.d.ts.map +1 -1
  186. package/dist/types/factories/contracts/index.js +2 -0
  187. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts +10 -0
  188. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts.map +1 -1
  189. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.js +13 -0
  190. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts +42 -4
  191. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts.map +1 -1
  192. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.js +54 -4
  193. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts +14 -18
  194. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts.map +1 -1
  195. package/dist/types/factories/contracts/interfaces/IE3Program__factory.js +18 -23
  196. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts +358 -0
  197. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts.map +1 -0
  198. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.js +471 -0
  199. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts +303 -103
  200. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts.map +1 -1
  201. package/dist/types/factories/contracts/interfaces/IEnclave__factory.js +382 -127
  202. package/dist/types/factories/contracts/interfaces/index.d.ts +1 -0
  203. package/dist/types/factories/contracts/interfaces/index.d.ts.map +1 -1
  204. package/dist/types/factories/contracts/interfaces/index.js +1 -0
  205. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts +11 -1
  206. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts.map +1 -1
  207. package/dist/types/factories/contracts/registry/BondingRegistry__factory.js +14 -1
  208. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts +62 -12
  209. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts.map +1 -1
  210. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.js +79 -13
  211. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts +1 -1
  212. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts.map +1 -1
  213. package/dist/types/factories/contracts/slashing/SlashingManager__factory.js +1 -1
  214. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts +43 -5
  215. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts.map +1 -1
  216. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.js +55 -5
  217. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts +43 -5
  218. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts.map +1 -1
  219. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.js +55 -5
  220. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts +1 -1
  221. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts.map +1 -1
  222. package/dist/types/factories/contracts/test/MockComputeProvider__factory.js +1 -1
  223. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts +15 -19
  224. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts.map +1 -1
  225. package/dist/types/factories/contracts/test/MockE3Program__factory.js +19 -24
  226. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts +1 -1
  227. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts.map +1 -1
  228. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.js +1 -1
  229. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts +1 -1
  230. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts.map +1 -1
  231. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.js +1 -1
  232. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts +1 -1
  233. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts.map +1 -1
  234. package/dist/types/factories/contracts/token/EnclaveToken__factory.js +1 -1
  235. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts +66 -0
  236. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts.map +1 -0
  237. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.js +90 -0
  238. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts +87 -0
  239. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts.map +1 -0
  240. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.js +122 -0
  241. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts +26 -0
  242. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts.map +1 -0
  243. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.js +39 -0
  244. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts +323 -0
  245. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts.map +1 -0
  246. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.js +422 -0
  247. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  248. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  249. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.js +7 -0
  250. package/dist/types/factories/contracts/verifier/index.d.ts +2 -0
  251. package/dist/types/factories/contracts/verifier/index.d.ts.map +1 -0
  252. package/dist/types/factories/contracts/verifier/index.js +4 -0
  253. package/dist/types/index.d.ts +12 -0
  254. package/dist/types/index.d.ts.map +1 -1
  255. package/dist/types/index.js +6 -0
  256. package/package.json +17 -3
  257. package/artifacts/build-info/solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.output.json +0 -1
@@ -9,11 +9,15 @@ import { network } from "hardhat";
9
9
  import { poseidon2 } from "poseidon-lite";
10
10
  import BondingRegistryModule from "../../ignition/modules/bondingRegistry";
11
11
  import CiphernodeRegistryModule from "../../ignition/modules/ciphernodeRegistry";
12
+ import E3RefundManagerModule from "../../ignition/modules/e3RefundManager";
13
+ import EnclaveModule from "../../ignition/modules/enclave";
12
14
  import EnclaveTicketTokenModule from "../../ignition/modules/enclaveTicketToken";
13
15
  import EnclaveTokenModule from "../../ignition/modules/enclaveToken";
16
+ import MockDecryptionVerifierModule from "../../ignition/modules/mockDecryptionVerifier";
17
+ import MockE3ProgramModule from "../../ignition/modules/mockE3Program";
14
18
  import MockStableTokenModule from "../../ignition/modules/mockStableToken";
15
19
  import SlashingManagerModule from "../../ignition/modules/slashingManager";
16
- import { BondingRegistry__factory as BondingRegistryFactory, CiphernodeRegistryOwnable__factory as CiphernodeRegistryFactory, } from "../../types";
20
+ import { BondingRegistry__factory as BondingRegistryFactory, CiphernodeRegistryOwnable__factory as CiphernodeRegistryFactory, Enclave__factory as EnclaveFactory, } from "../../types";
17
21
  const AddressOne = "0x0000000000000000000000000000000000000001";
18
22
  const AddressTwo = "0x0000000000000000000000000000000000000002";
19
23
  const AddressThree = "0x0000000000000000000000000000000000000003";
@@ -50,6 +54,12 @@ describe("CiphernodeRegistryOwnable", function () {
50
54
  async function setup() {
51
55
  const [owner, notTheOwner, operator1, operator2] = await ethers.getSigners();
52
56
  const ownerAddress = await owner.getAddress();
57
+ const abiCoder = ethers.AbiCoder.defaultAbiCoder();
58
+ const polynomial_degree = ethers.toBigInt(2048);
59
+ const plaintext_modulus = ethers.toBigInt(1032193);
60
+ const moduli = [ethers.toBigInt("18014398492704769")];
61
+ const encodedE3ProgramParams = abiCoder.encode(["uint256", "uint256", "uint256[]"], [polynomial_degree, plaintext_modulus, moduli]);
62
+ const encryptionSchemeId = "0x2c2a814a0495f913a3a312fc4771e37552bc14f8a2d4075a08122d356f0849c6";
53
63
  const usdcContract = await ignition.deploy(MockStableTokenModule, {
54
64
  parameters: {
55
65
  MockUSDC: {
@@ -96,10 +106,44 @@ describe("CiphernodeRegistryOwnable", function () {
96
106
  },
97
107
  },
98
108
  });
109
+ const enclaveContract = await ignition.deploy(EnclaveModule, {
110
+ parameters: {
111
+ Enclave: {
112
+ params: encodedE3ProgramParams,
113
+ owner: ownerAddress,
114
+ maxDuration: 60 * 60 * 24 * 30, // 30 days
115
+ registry: AddressOne, // placeholder, will be updated
116
+ bondingRegistry: await bondingRegistryContract.bondingRegistry.getAddress(),
117
+ e3RefundManager: AddressOne, // placeholder, will be updated
118
+ feeToken: await usdcContract.mockUSDC.getAddress(),
119
+ timeoutConfig: {
120
+ committeeFormationWindow: 3600,
121
+ dkgWindow: 3600,
122
+ computeWindow: 3600,
123
+ decryptionWindow: 3600,
124
+ gracePeriod: 300,
125
+ },
126
+ },
127
+ },
128
+ });
129
+ const enclaveAddress = await enclaveContract.enclave.getAddress();
130
+ const enclave = EnclaveFactory.connect(enclaveAddress, owner);
131
+ const e3RefundManagerContract = await ignition.deploy(E3RefundManagerModule, {
132
+ parameters: {
133
+ E3RefundManager: {
134
+ owner: ownerAddress,
135
+ enclave: enclaveAddress,
136
+ treasury: ownerAddress,
137
+ },
138
+ },
139
+ });
140
+ const e3RefundManagerAddress = await e3RefundManagerContract.e3RefundManager.getAddress();
141
+ await enclave.setE3RefundManager(e3RefundManagerAddress);
142
+ // Deploy CiphernodeRegistry with real Enclave address
99
143
  const registryContract = await ignition.deploy(CiphernodeRegistryModule, {
100
144
  parameters: {
101
145
  CiphernodeRegistry: {
102
- enclaveAddress: ownerAddress,
146
+ enclaveAddress: enclaveAddress,
103
147
  owner: ownerAddress,
104
148
  submissionWindow: SORTITION_SUBMISSION_WINDOW,
105
149
  },
@@ -107,11 +151,20 @@ describe("CiphernodeRegistryOwnable", function () {
107
151
  });
108
152
  const registryAddress = await registryContract.cipherNodeRegistry.getAddress();
109
153
  const registry = CiphernodeRegistryFactory.connect(registryAddress, owner);
154
+ // Update Enclave with correct registry address
155
+ await enclave.setCiphernodeRegistry(registryAddress);
110
156
  const bondingRegistry = BondingRegistryFactory.connect(await bondingRegistryContract.bondingRegistry.getAddress(), owner);
111
157
  await ticketTokenContract.enclaveTicketToken.setRegistry(await bondingRegistry.getAddress());
112
158
  await bondingRegistry.setRegistry(registryAddress);
113
159
  await bondingRegistry.setSlashingManager(await slashingManagerContract.slashingManager.getAddress());
114
160
  await slashingManagerContract.slashingManager.setBondingRegistry(await bondingRegistry.getAddress());
161
+ // Set up mock E3Program and DecryptionVerifier for Enclave
162
+ const mockE3Program = await ignition.deploy(MockE3ProgramModule);
163
+ const mockDecryptionVerifier = await ignition.deploy(MockDecryptionVerifierModule);
164
+ await enclave.enableE3Program(await mockE3Program.mockE3Program.getAddress());
165
+ await enclave.setE3ProgramsParams([encodedE3ProgramParams]);
166
+ await enclave.setDecryptionVerifier(encryptionSchemeId, await mockDecryptionVerifier.mockDecryptionVerifier.getAddress());
167
+ await bondingRegistry.setRewardDistributor(enclaveAddress);
115
168
  await registry.setBondingRegistry(await bondingRegistry.getAddress());
116
169
  const tree = new LeanIMT(hash);
117
170
  const licenseToken = enclTokenContract.enclaveToken;
@@ -129,17 +182,42 @@ describe("CiphernodeRegistryOwnable", function () {
129
182
  operator1,
130
183
  operator2,
131
184
  registry,
185
+ enclave,
132
186
  bondingRegistry,
133
187
  licenseToken,
134
188
  ticketToken,
135
189
  usdcToken,
136
190
  tree,
191
+ mockE3Program,
192
+ mockDecryptionVerifier,
137
193
  request: {
138
- e3Id: 1,
194
+ e3Id: 0,
139
195
  threshold: [2, 2],
140
196
  },
141
197
  };
142
198
  }
199
+ // Helper to make a request through the Enclave contract
200
+ async function makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier, signer) {
201
+ const abiCoder = ethers.AbiCoder.defaultAbiCoder();
202
+ const polynomial_degree = ethers.toBigInt(2048);
203
+ const plaintext_modulus = ethers.toBigInt(1032193);
204
+ const moduli = [ethers.toBigInt("18014398492704769")];
205
+ const encodedE3ProgramParams = abiCoder.encode(["uint256", "uint256", "uint256[]"], [polynomial_degree, plaintext_modulus, moduli]);
206
+ const currentTime = await networkHelpers.time.latest();
207
+ const requestParams = {
208
+ threshold: [2, 2],
209
+ inputWindow: [currentTime + 100, currentTime + 300],
210
+ e3Program: await mockE3Program.mockE3Program.getAddress(),
211
+ e3ProgramParams: encodedE3ProgramParams,
212
+ computeProviderParams: abiCoder.encode(["address"], [await mockDecryptionVerifier.mockDecryptionVerifier.getAddress()]),
213
+ customParams: abiCoder.encode(["address"], ["0x1234567890123456789012345678901234567890"]),
214
+ };
215
+ const fee = await enclave.getE3Quote(requestParams);
216
+ const tokenContract = signer ? usdcToken.connect(signer) : usdcToken;
217
+ const enclaveContract = signer ? enclave.connect(signer) : enclave;
218
+ await tokenContract.approve(await enclave.getAddress(), fee);
219
+ return enclaveContract.request(requestParams);
220
+ }
143
221
  describe("constructor / initialize()", function () {
144
222
  it("correctly sets `_owner` and `enclave` ", async function () {
145
223
  const poseidonFactory = await ethers.getContractFactory("PoseidonT3");
@@ -169,68 +247,61 @@ describe("CiphernodeRegistryOwnable", function () {
169
247
  });
170
248
  });
171
249
  describe("requestCommittee()", function () {
172
- it("reverts if committee has already been requested for given e3Id", async function () {
173
- const { registry, request } = await loadFixture(setup);
174
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
175
- await expect(registry.requestCommittee(request.e3Id, 0, request.threshold)).to.be.revertedWithCustomError(registry, "CommitteeAlreadyRequested");
250
+ it("stores rootAt for the requested e3Id after a successful request", async function () {
251
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
252
+ // Request through Enclave
253
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
254
+ expect(await registry.rootAt(0)).to.equal(await registry.root());
176
255
  });
177
256
  it("stores the root of the ciphernode registry at the time of the request", async function () {
178
- const { registry, request } = await loadFixture(setup);
179
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
180
- expect(await registry.rootAt(request.e3Id)).to.equal(await registry.root());
257
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
258
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
259
+ expect(await registry.rootAt(0)).to.equal(await registry.root());
181
260
  });
182
261
  it("emits a CommitteeRequested event", async function () {
183
- const { registry, request } = await loadFixture(setup);
184
- const tx = await registry.requestCommittee(request.e3Id, 0n, request.threshold);
185
- const receipt = await tx.wait();
186
- if (!receipt)
187
- throw new Error("Transaction failed");
188
- const sWindow = await registry.sortitionSubmissionWindow();
189
- const block = await ethers.provider.getBlock(receipt.blockNumber);
190
- if (!block)
191
- throw new Error("Block not found");
192
- const expectedBlockNumber = BigInt(receipt.blockNumber);
193
- const expectedDeadline = BigInt(block.timestamp) + sWindow;
194
- await expect(tx)
195
- .to.emit(registry, "CommitteeRequested")
196
- .withArgs(request.e3Id, 0n, request.threshold, expectedBlockNumber, expectedDeadline);
262
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
263
+ const tx = await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
264
+ // Should emit CommitteeRequested from registry
265
+ await expect(tx).to.emit(registry, "CommitteeRequested");
197
266
  });
198
267
  it("returns true if the request is successful", async function () {
199
- const { registry, request } = await loadFixture(setup);
200
- expect(await registry.requestCommittee.staticCall(request.e3Id, 0, request.threshold)).to.be.true;
268
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
269
+ // We can verify by checking that root is stored after request
270
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
271
+ expect(await registry.rootAt(0)).to.not.equal(0);
201
272
  });
202
273
  });
203
274
  describe("publishCommittee()", function () {
204
275
  it("reverts if the caller is not the owner", async function () {
205
- const { registry, request, notTheOwner, operator1, operator2 } = await loadFixture(setup);
206
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
207
- await registry.connect(operator1).submitTicket(request.e3Id, 1);
208
- await registry.connect(operator2).submitTicket(request.e3Id, 1);
209
- await finalizeCommitteeAfterWindow(registry, request.e3Id);
276
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, notTheOwner, operator1, operator2, } = await loadFixture(setup);
277
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
278
+ await registry.connect(operator1).submitTicket(0, 1);
279
+ await registry.connect(operator2).submitTicket(0, 1);
280
+ await finalizeCommitteeAfterWindow(registry, 0);
210
281
  await expect(registry
211
282
  .connect(notTheOwner)
212
- .publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash)).to.be.revertedWithCustomError(registry, "OwnableUnauthorizedAccount");
283
+ .publishCommittee(0, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash)).to.be.revertedWithCustomError(registry, "OwnableUnauthorizedAccount");
213
284
  });
214
285
  it("stores the public key of the committee", async function () {
215
- const { registry, request, operator1, operator2 } = await loadFixture(setup);
216
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
286
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, operator1, operator2, } = await loadFixture(setup);
287
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
217
288
  await networkHelpers.mine(1);
218
- await registry.connect(operator1).submitTicket(request.e3Id, 1);
219
- await registry.connect(operator2).submitTicket(request.e3Id, 1);
220
- await finalizeCommitteeAfterWindow(registry, request.e3Id);
221
- await registry.publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash);
222
- expect(await registry.committeePublicKey(request.e3Id)).to.equal(dataHash);
289
+ await registry.connect(operator1).submitTicket(0, 1);
290
+ await registry.connect(operator2).submitTicket(0, 1);
291
+ await finalizeCommitteeAfterWindow(registry, 0);
292
+ await registry.publishCommittee(0, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash);
293
+ expect(await registry.committeePublicKey(0)).to.equal(dataHash);
223
294
  });
224
295
  it("emits a CommitteePublished event", async function () {
225
- const { registry, request, operator1, operator2 } = await loadFixture(setup);
226
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
296
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, operator1, operator2, } = await loadFixture(setup);
297
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
227
298
  // Submit tickets from both operators and finalize
228
- await registry.connect(operator1).submitTicket(request.e3Id, 1);
229
- await registry.connect(operator2).submitTicket(request.e3Id, 1);
230
- await finalizeCommitteeAfterWindow(registry, request.e3Id);
231
- await expect(await registry.publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash))
299
+ await registry.connect(operator1).submitTicket(0, 1);
300
+ await registry.connect(operator2).submitTicket(0, 1);
301
+ await finalizeCommitteeAfterWindow(registry, 0);
302
+ await expect(await registry.publishCommittee(0, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash))
232
303
  .to.emit(registry, "CommitteePublished")
233
- .withArgs(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data);
304
+ .withArgs(0, [await operator1.getAddress(), await operator2.getAddress()], data);
234
305
  });
235
306
  });
236
307
  describe("addCiphernode()", function () {
@@ -318,18 +389,20 @@ describe("CiphernodeRegistryOwnable", function () {
318
389
  });
319
390
  describe("committeePublicKey()", function () {
320
391
  it("returns the public key of the committee for the given e3Id", async function () {
321
- const { registry, request, operator1, operator2 } = await loadFixture(setup);
322
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
323
- await registry.connect(operator1).submitTicket(request.e3Id, 1);
324
- await registry.connect(operator2).submitTicket(request.e3Id, 1);
325
- await finalizeCommitteeAfterWindow(registry, request.e3Id);
326
- await registry.publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash);
327
- expect(await registry.committeePublicKey(request.e3Id)).to.equal(dataHash);
392
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, operator1, operator2, } = await loadFixture(setup);
393
+ const e3Id = 0;
394
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
395
+ await registry.connect(operator1).submitTicket(e3Id, 1);
396
+ await registry.connect(operator2).submitTicket(e3Id, 1);
397
+ await finalizeCommitteeAfterWindow(registry, e3Id);
398
+ await registry.publishCommittee(e3Id, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash);
399
+ expect(await registry.committeePublicKey(e3Id)).to.equal(dataHash);
328
400
  });
329
401
  it("reverts if the committee has not been published", async function () {
330
- const { registry, request } = await loadFixture(setup);
331
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
332
- await expect(registry.committeePublicKey(request.e3Id)).to.be.revertedWithCustomError(registry, "CommitteeNotPublished");
402
+ const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
403
+ const e3Id = 0;
404
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
405
+ await expect(registry.committeePublicKey(e3Id)).to.be.revertedWithCustomError(registry, "CommitteeNotPublished");
333
406
  });
334
407
  });
335
408
  describe("isCiphernodeEligible()", function () {
@@ -360,9 +433,10 @@ describe("CiphernodeRegistryOwnable", function () {
360
433
  });
361
434
  describe("rootAt()", function () {
362
435
  it("returns the root of the ciphernode registry merkle tree at the given e3Id", async function () {
363
- const { registry, tree, request } = await loadFixture(setup);
364
- await registry.requestCommittee(request.e3Id, 0, request.threshold);
365
- expect(await registry.rootAt(request.e3Id)).to.equal(tree.root);
436
+ const { registry, tree, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
437
+ const e3Id = 0;
438
+ await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
439
+ expect(await registry.rootAt(e3Id)).to.equal(tree.root);
366
440
  });
367
441
  });
368
442
  describe("treeSize()", function () {