@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
@@ -1 +1 @@
1
- {"version":3,"file":"hardhat.config.d.ts","sourceRoot":"","sources":["../hardhat.config.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAqExD,QAAA,MAAM,MAAM,EAAE,iBA+Gb,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"hardhat.config.d.ts","sourceRoot":"","sources":["../hardhat.config.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAoExD,QAAA,MAAM,MAAM,EAAE,iBA8Gb,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -11,7 +11,8 @@ import hardhatTypechainPlugin from "@nomicfoundation/hardhat-typechain";
11
11
  import hardhatVerify from "@nomicfoundation/hardhat-verify";
12
12
  import dotenv from "dotenv";
13
13
  import { ciphernodeAdd, ciphernodeAdminAdd, ciphernodeMintTokens, ciphernodeRemove, ciphernodeSiblings, updateSubmissionWindow, } from "./tasks/ciphernode";
14
- import { activateE3, enableE3, publishCiphertext, publishCommittee, publishInput, publishPlaintext, requestCommittee, } from "./tasks/enclave";
14
+ import { enableE3, publishCiphertext, publishCommittee, publishPlaintext, requestCommittee, } from "./tasks/enclave";
15
+ import { publishInput } from "./tasks/program";
15
16
  import { cleanDeploymentsTask } from "./tasks/utils";
16
17
  dotenv.config();
17
18
  const mnemonic = process.env.MNEMONIC ??
@@ -74,9 +75,8 @@ const config = {
74
75
  requestCommittee,
75
76
  publishPlaintext,
76
77
  publishCiphertext,
77
- publishInput,
78
- activateE3,
79
78
  publishCommittee,
79
+ publishInput,
80
80
  enableE3,
81
81
  cleanDeploymentsTask,
82
82
  updateSubmissionWindow,
@@ -146,7 +146,7 @@ const config = {
146
146
  settings: {
147
147
  optimizer: {
148
148
  enabled: true,
149
- runs: 800,
149
+ runs: 100,
150
150
  },
151
151
  metadata: {
152
152
  bytecodeHash: "none",
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=dkgPkVerifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dkgPkVerifier.d.ts","sourceRoot":"","sources":["../../../ignition/modules/dkgPkVerifier.ts"],"names":[],"mappings":"wBAWM,GAAG;AAJT,wBAIU"}
@@ -0,0 +1,10 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ //
3
+ // This file is provided WITHOUT ANY WARRANTY;
4
+ // without even the implied warranty of MERCHANTABILITY
5
+ // or FITNESS FOR A PARTICULAR PURPOSE.
6
+ import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
7
+ export default buildModule("DkgPkVerifier", (m) => {
8
+ const dkgPkVerifier = m.contract("DkgPkVerifier");
9
+ return { dkgPkVerifier };
10
+ });
@@ -0,0 +1,3 @@
1
+ declare const _default: any;
2
+ export default _default;
3
+ //# sourceMappingURL=e3RefundManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e3RefundManager.d.ts","sourceRoot":"","sources":["../../../ignition/modules/e3RefundManager.ts"],"names":[],"mappings":"wBA2BM,GAAG;AApBT,wBAoBU"}
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ //
3
+ // This file is provided WITHOUT ANY WARRANTY;
4
+ // without even the implied warranty of MERCHANTABILITY
5
+ // or FITNESS FOR A PARTICULAR PURPOSE.
6
+ import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
7
+ export default buildModule("E3RefundManager", (m) => {
8
+ const owner = m.getParameter("owner");
9
+ const enclave = m.getParameter("enclave");
10
+ const treasury = m.getParameter("treasury");
11
+ const e3RefundManagerImpl = m.contract("E3RefundManager", []);
12
+ const initData = m.encodeFunctionCall(e3RefundManagerImpl, "initialize", [
13
+ owner,
14
+ enclave,
15
+ treasury,
16
+ ]);
17
+ const e3RefundManager = m.contract("TransparentUpgradeableProxy", [
18
+ e3RefundManagerImpl,
19
+ owner,
20
+ initData,
21
+ ]);
22
+ return { e3RefundManager };
23
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"enclave.d.ts","sourceRoot":"","sources":["../../../ignition/modules/enclave.ts"],"names":[],"mappings":"wBAiCM,GAAG;AA1BT,wBA0BU"}
1
+ {"version":3,"file":"enclave.d.ts","sourceRoot":"","sources":["../../../ignition/modules/enclave.ts"],"names":[],"mappings":"wBA2CM,GAAG;AApCT,wBAoCU"}
@@ -10,14 +10,24 @@ export default buildModule("Enclave", (m) => {
10
10
  const maxDuration = m.getParameter("maxDuration");
11
11
  const registry = m.getParameter("registry");
12
12
  const bondingRegistry = m.getParameter("bondingRegistry");
13
+ const e3RefundManager = m.getParameter("e3RefundManager");
13
14
  const feeToken = m.getParameter("feeToken");
15
+ const timeoutConfig = m.getParameter("timeoutConfig", {
16
+ committeeFormationWindow: 3600,
17
+ dkgWindow: 7200,
18
+ computeWindow: 86400,
19
+ decryptionWindow: 3600,
20
+ gracePeriod: 600,
21
+ });
14
22
  const enclaveImpl = m.contract("Enclave", []);
15
23
  const initData = m.encodeFunctionCall(enclaveImpl, "initialize", [
16
24
  owner,
17
25
  registry,
18
26
  bondingRegistry,
27
+ e3RefundManager,
19
28
  feeToken,
20
29
  maxDuration,
30
+ timeoutConfig,
21
31
  [params],
22
32
  ]);
23
33
  const enclave = m.contract("TransparentUpgradeableProxy", [
@@ -0,0 +1,20 @@
1
+ import type { HardhatRuntimeEnvironment } from "hardhat/types/hre";
2
+ import { E3RefundManager } from "../../types";
3
+ /**
4
+ * The arguments for the deployAndSaveE3RefundManager function
5
+ */
6
+ export interface E3RefundManagerArgs {
7
+ owner?: string;
8
+ enclave?: string;
9
+ treasury?: string;
10
+ hre: HardhatRuntimeEnvironment;
11
+ }
12
+ /**
13
+ * Deploys the E3RefundManager contract and saves the deployment arguments
14
+ * @param param0 - The deployment arguments
15
+ * @returns The deployed E3RefundManager contract
16
+ */
17
+ export declare const deployAndSaveE3RefundManager: ({ owner, enclave, treasury, hre, }: E3RefundManagerArgs) => Promise<{
18
+ e3RefundManager: E3RefundManager;
19
+ }>;
20
+ //# sourceMappingURL=e3RefundManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e3RefundManager.d.ts","sourceRoot":"","sources":["../../../scripts/deployAndSave/e3RefundManager.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EACL,eAAe,EAEhB,MAAM,aAAa,CAAC;AAIrB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,yBAAyB,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAU,oCAKhD,mBAAmB,KAAG,OAAO,CAAC;IAAE,eAAe,EAAE,eAAe,CAAA;CAAE,CA+EpE,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { E3RefundManager__factory as E3RefundManagerFactory, } from "../../types";
2
+ import { getProxyAdmin } from "../proxy";
3
+ import { readDeploymentArgs, storeDeploymentArgs } from "../utils";
4
+ /**
5
+ * Deploys the E3RefundManager contract and saves the deployment arguments
6
+ * @param param0 - The deployment arguments
7
+ * @returns The deployed E3RefundManager contract
8
+ */
9
+ export const deployAndSaveE3RefundManager = async ({ owner, enclave, treasury, hre, }) => {
10
+ const { ethers } = await hre.network.connect();
11
+ const [signer] = await ethers.getSigners();
12
+ const chain = hre.globalOptions.network;
13
+ const preDeployedArgs = readDeploymentArgs("E3RefundManager", chain);
14
+ if (!owner ||
15
+ !enclave ||
16
+ !treasury ||
17
+ (preDeployedArgs?.constructorArgs?.owner === owner &&
18
+ preDeployedArgs?.constructorArgs?.enclave === enclave &&
19
+ preDeployedArgs?.constructorArgs?.treasury === treasury)) {
20
+ if (!preDeployedArgs?.address) {
21
+ throw new Error("E3RefundManager address not found, it must be deployed first");
22
+ }
23
+ const e3RefundManagerContract = E3RefundManagerFactory.connect(preDeployedArgs.address, signer);
24
+ return { e3RefundManager: e3RefundManagerContract };
25
+ }
26
+ const e3RefundManagerFactory = await ethers.getContractFactory(E3RefundManagerFactory.abi, E3RefundManagerFactory.bytecode, signer);
27
+ const e3RefundManager = await e3RefundManagerFactory.deploy();
28
+ await e3RefundManager.waitForDeployment();
29
+ const blockNumber = await ethers.provider.getBlockNumber();
30
+ const e3RefundManagerAddress = await e3RefundManager.getAddress();
31
+ const initData = e3RefundManagerFactory.interface.encodeFunctionData("initialize", [owner, enclave, treasury]);
32
+ const ProxyCF = await ethers.getContractFactory("TransparentUpgradeableProxy");
33
+ const proxy = await ProxyCF.deploy(e3RefundManagerAddress, owner, initData);
34
+ await proxy.waitForDeployment();
35
+ const proxyAddress = await proxy.getAddress();
36
+ const proxyAdminAddress = await getProxyAdmin(ethers.provider, proxyAddress);
37
+ storeDeploymentArgs({
38
+ constructorArgs: {
39
+ owner,
40
+ enclave,
41
+ treasury,
42
+ },
43
+ proxyRecords: {
44
+ initData,
45
+ initialOwner: owner,
46
+ proxyAddress,
47
+ proxyAdminAddress,
48
+ implementationAddress: e3RefundManagerAddress,
49
+ },
50
+ blockNumber,
51
+ address: proxyAddress,
52
+ }, "E3RefundManager", chain);
53
+ const e3RefundManagerContract = E3RefundManagerFactory.connect(proxyAddress, signer);
54
+ return { e3RefundManager: e3RefundManagerContract };
55
+ };
@@ -1,5 +1,15 @@
1
1
  import type { HardhatRuntimeEnvironment } from "hardhat/types/hre";
2
2
  import { Enclave } from "../../types";
3
+ /**
4
+ * Timeout configuration for E3 stages
5
+ */
6
+ export interface E3TimeoutConfig {
7
+ committeeFormationWindow: number;
8
+ dkgWindow: number;
9
+ computeWindow: number;
10
+ decryptionWindow: number;
11
+ gracePeriod: number;
12
+ }
3
13
  /**
4
14
  * The arguments for the deployAndSaveEnclave function
5
15
  */
@@ -9,7 +19,9 @@ export interface EnclaveArgs {
9
19
  maxDuration?: string;
10
20
  registry?: string;
11
21
  bondingRegistry?: string;
22
+ e3RefundManager?: string;
12
23
  feeToken?: string;
24
+ timeoutConfig?: E3TimeoutConfig;
13
25
  hre: HardhatRuntimeEnvironment;
14
26
  }
15
27
  /**
@@ -17,7 +29,7 @@ export interface EnclaveArgs {
17
29
  * @param param0 - The deployment arguments
18
30
  * @returns The deployed Enclave contract
19
31
  */
20
- export declare const deployAndSaveEnclave: ({ params, owner, maxDuration, registry, bondingRegistry, feeToken, hre, }: EnclaveArgs) => Promise<{
32
+ export declare const deployAndSaveEnclave: ({ params, owner, maxDuration, registry, bondingRegistry, e3RefundManager, feeToken, timeoutConfig, hre, }: EnclaveArgs) => Promise<{
21
33
  enclave: Enclave;
22
34
  }>;
23
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"enclave.d.ts","sourceRoot":"","sources":["../../../scripts/deployAndSave/enclave.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAsC,MAAM,aAAa,CAAC;AAQ1E;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,yBAAyB,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAU,2EAQxC,WAAW,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAuF5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAU,wBAGzC;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,yBAAyB,CAAC;CAChC,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAiE9D,CAAC"}
1
+ {"version":3,"file":"enclave.d.ts","sourceRoot":"","sources":["../../../scripts/deployAndSave/enclave.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,OAAO,EAAsC,MAAM,aAAa,CAAC;AAQ1E;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wBAAwB,EAAE,MAAM,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,GAAG,EAAE,yBAAyB,CAAC;CAChC;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAU,2GAUxC,WAAW,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CA8F5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAAU,wBAGzC;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,yBAAyB,CAAC;CAChC,KAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAiE9D,CAAC"}
@@ -6,7 +6,7 @@ import { areArraysEqual, readDeploymentArgs, storeDeploymentArgs, } from "../uti
6
6
  * @param param0 - The deployment arguments
7
7
  * @returns The deployed Enclave contract
8
8
  */
9
- export const deployAndSaveEnclave = async ({ params, owner, maxDuration, registry, bondingRegistry, feeToken, hre, }) => {
9
+ export const deployAndSaveEnclave = async ({ params, owner, maxDuration, registry, bondingRegistry, e3RefundManager, feeToken, timeoutConfig, hre, }) => {
10
10
  const { ethers } = await hre.network.connect();
11
11
  const [signer] = await ethers.getSigners();
12
12
  const chain = hre.globalOptions.network;
@@ -16,11 +16,14 @@ export const deployAndSaveEnclave = async ({ params, owner, maxDuration, registr
16
16
  !maxDuration ||
17
17
  !registry ||
18
18
  !bondingRegistry ||
19
+ !e3RefundManager ||
19
20
  !feeToken ||
21
+ !timeoutConfig ||
20
22
  (preDeployedArgs?.constructorArgs?.owner === owner &&
21
23
  preDeployedArgs?.constructorArgs?.maxDuration === maxDuration &&
22
24
  preDeployedArgs?.constructorArgs?.registry === registry &&
23
25
  preDeployedArgs?.constructorArgs?.bondingRegistry === bondingRegistry &&
26
+ preDeployedArgs?.constructorArgs?.e3RefundManager === e3RefundManager &&
24
27
  preDeployedArgs?.constructorArgs?.feeToken === feeToken &&
25
28
  areArraysEqual(preDeployedArgs?.constructorArgs?.params, params))) {
26
29
  if (!preDeployedArgs?.address) {
@@ -38,8 +41,10 @@ export const deployAndSaveEnclave = async ({ params, owner, maxDuration, registr
38
41
  owner,
39
42
  registry,
40
43
  bondingRegistry,
44
+ e3RefundManager,
41
45
  feeToken,
42
46
  maxDuration,
47
+ timeoutConfig,
43
48
  params,
44
49
  ]);
45
50
  const ProxyCF = await ethers.getContractFactory("TransparentUpgradeableProxy");
@@ -52,8 +57,10 @@ export const deployAndSaveEnclave = async ({ params, owner, maxDuration, registr
52
57
  owner,
53
58
  registry,
54
59
  bondingRegistry,
60
+ e3RefundManager,
55
61
  feeToken,
56
62
  maxDuration,
63
+ timeoutConfig: JSON.stringify(timeoutConfig),
57
64
  params,
58
65
  },
59
66
  proxyRecords: {
@@ -0,0 +1,29 @@
1
+ import type { HardhatRuntimeEnvironment } from "hardhat/types/hre";
2
+ /**
3
+ * Discovers all Solidity verifier contracts in contracts/verifier/ directory.
4
+ * Returns an array of contract names (without .sol extension).
5
+ */
6
+ export declare const discoverVerifierContracts: () => string[];
7
+ /**
8
+ * Deploys a single verifier contract and saves the deployment record.
9
+ * BB-generated verifiers require ZKTranscriptLib to be linked.
10
+ * Skips deployment if the contract is already deployed on the target chain.
11
+ *
12
+ * Note: The library FQN (fully-qualified name) uses the pattern:
13
+ * "contracts/verifier/<ContractName>.sol:ZKTranscriptLib"
14
+ * If you get linking errors, check the contract's compiled artifact for the exact FQN.
15
+ */
16
+ export declare const deployAndSaveVerifier: (contractName: string, hre: HardhatRuntimeEnvironment, zkTranscriptLibAddress: string) => Promise<{
17
+ address: string;
18
+ }>;
19
+ export interface VerifierDeployments {
20
+ [contractName: string]: string;
21
+ }
22
+ /**
23
+ * Deploys all verifier contracts found in contracts/verifier/.
24
+ * Skips any that are already deployed on the target chain.
25
+ *
26
+ * @returns A mapping of contract names to their deployed addresses.
27
+ */
28
+ export declare const deployAndSaveAllVerifiers: (hre: HardhatRuntimeEnvironment) => Promise<VerifierDeployments>;
29
+ //# sourceMappingURL=verifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifiers.d.ts","sourceRoot":"","sources":["../../../scripts/deployAndSave/verifiers.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAKnE;;;GAGG;AACH,eAAO,MAAM,yBAAyB,QAAO,MAAM,EAUlD,CAAC;AAmCF;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,MAAM,EACpB,KAAK,yBAAyB,EAC9B,wBAAwB,MAAM,KAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAqC7B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,GACpC,KAAK,yBAAyB,KAC7B,OAAO,CAAC,mBAAmB,CA+B7B,CAAC"}
@@ -0,0 +1,109 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ //
3
+ // This file is provided WITHOUT ANY WARRANTY;
4
+ // without even the implied warranty of MERCHANTABILITY
5
+ // or FITNESS FOR A PARTICULAR PURPOSE.
6
+ import fs from "fs";
7
+ import path from "path";
8
+ import { readDeploymentArgs, storeDeploymentArgs } from "../utils";
9
+ /**
10
+ * Discovers all Solidity verifier contracts in contracts/verifier/ directory.
11
+ * Returns an array of contract names (without .sol extension).
12
+ */
13
+ export const discoverVerifierContracts = () => {
14
+ const verifierDir = path.join(process.cwd(), "contracts/verifier");
15
+ if (!fs.existsSync(verifierDir)) {
16
+ return [];
17
+ }
18
+ return fs
19
+ .readdirSync(verifierDir)
20
+ .filter((f) => f.endsWith(".sol"))
21
+ .map((f) => f.replace(".sol", ""));
22
+ };
23
+ /**
24
+ * Deploys ZKTranscriptLib library required by BB-generated verifiers.
25
+ * Reuses existing deployment if already deployed on the chain.
26
+ */
27
+ const deployZKTranscriptLib = async (hre, chain) => {
28
+ const libName = "ZKTranscriptLib";
29
+ // Check if library is already deployed
30
+ const existing = readDeploymentArgs(libName, chain);
31
+ if (existing?.address) {
32
+ console.log(` ${libName} already deployed at ${existing.address}`);
33
+ return existing.address;
34
+ }
35
+ // Deploy the library
36
+ console.log(` Deploying ${libName}...`);
37
+ const { ethers } = await hre.network.connect();
38
+ const factory = await ethers.getContractFactory(libName);
39
+ const contract = await factory.deploy();
40
+ await contract.waitForDeployment();
41
+ const address = await contract.getAddress();
42
+ const blockNumber = await ethers.provider.getBlockNumber();
43
+ storeDeploymentArgs({ blockNumber, address }, libName, chain);
44
+ console.log(` ${libName} deployed to: ${address}`);
45
+ return address;
46
+ };
47
+ /**
48
+ * Deploys a single verifier contract and saves the deployment record.
49
+ * BB-generated verifiers require ZKTranscriptLib to be linked.
50
+ * Skips deployment if the contract is already deployed on the target chain.
51
+ *
52
+ * Note: The library FQN (fully-qualified name) uses the pattern:
53
+ * "contracts/verifier/<ContractName>.sol:ZKTranscriptLib"
54
+ * If you get linking errors, check the contract's compiled artifact for the exact FQN.
55
+ */
56
+ export const deployAndSaveVerifier = async (contractName, hre, zkTranscriptLibAddress) => {
57
+ const { ethers } = await hre.network.connect();
58
+ const [signer] = await ethers.getSigners();
59
+ const chain = (await signer.provider?.getNetwork())?.name ?? "localhost";
60
+ // Check if already deployed
61
+ const existing = readDeploymentArgs(contractName, chain);
62
+ if (existing?.address) {
63
+ console.log(` ${contractName} already deployed at ${existing.address}`);
64
+ return { address: existing.address };
65
+ }
66
+ // Link ZKTranscriptLib - FQN pattern: "contracts/verifier/<ContractName>.sol:ZKTranscriptLib"
67
+ const libraryFQN = `project/contracts/verifier/${contractName}.sol:ZKTranscriptLib`;
68
+ const libraries = {
69
+ [libraryFQN]: zkTranscriptLibAddress,
70
+ };
71
+ // Deploy the verifier contract with linked library
72
+ const factory = await ethers.getContractFactory(contractName, { libraries });
73
+ const contract = await factory.deploy();
74
+ await contract.waitForDeployment();
75
+ const address = await contract.getAddress();
76
+ const blockNumber = await ethers.provider.getBlockNumber();
77
+ storeDeploymentArgs({
78
+ blockNumber,
79
+ address,
80
+ }, contractName, chain);
81
+ console.log(` ${contractName} deployed to: ${address}`);
82
+ return { address };
83
+ };
84
+ /**
85
+ * Deploys all verifier contracts found in contracts/verifier/.
86
+ * Skips any that are already deployed on the target chain.
87
+ *
88
+ * @returns A mapping of contract names to their deployed addresses.
89
+ */
90
+ export const deployAndSaveAllVerifiers = async (hre) => {
91
+ const contractNames = discoverVerifierContracts();
92
+ const { ethers } = await hre.network.connect();
93
+ const [signer] = await ethers.getSigners();
94
+ const chain = (await signer.provider?.getNetwork())?.name ?? "localhost";
95
+ console.log(` Deploying to network: ${chain}`);
96
+ if (contractNames.length === 0) {
97
+ console.log(" No verifier contracts found in contracts/verifier/. Skipping.");
98
+ return {};
99
+ }
100
+ console.log(` Found ${contractNames.length} verifier contract(s)`);
101
+ // Deploy ZKTranscriptLib once, reused by all verifiers
102
+ const zkTranscriptLibAddress = await deployZKTranscriptLib(hre, chain);
103
+ const deployments = {};
104
+ for (const name of contractNames) {
105
+ const { address } = await deployAndSaveVerifier(name, hre, zkTranscriptLibAddress);
106
+ deployments[name] = address;
107
+ }
108
+ return deployments;
109
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"deployEnclave.d.ts","sourceRoot":"","sources":["../../scripts/deployEnclave.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,eAAO,MAAM,aAAa,GAAU,YAAY,OAAO,kBA8LtD,CAAC"}
1
+ {"version":3,"file":"deployEnclave.d.ts","sourceRoot":"","sources":["../../scripts/deployEnclave.ts"],"names":[],"mappings":"AA+BA;;GAEG;AACH,eAAO,MAAM,aAAa,GAAU,YAAY,OAAO,kBA4NtD,CAAC"}
@@ -7,13 +7,25 @@ import hre from "hardhat";
7
7
  import { autoCleanForLocalhost } from "./cleanIgnitionState";
8
8
  import { deployAndSaveBondingRegistry } from "./deployAndSave/bondingRegistry";
9
9
  import { deployAndSaveCiphernodeRegistryOwnable } from "./deployAndSave/ciphernodeRegistryOwnable";
10
+ import { deployAndSaveE3RefundManager } from "./deployAndSave/e3RefundManager";
10
11
  import { deployAndSaveEnclave } from "./deployAndSave/enclave";
11
12
  import { deployAndSaveEnclaveTicketToken } from "./deployAndSave/enclaveTicketToken";
12
13
  import { deployAndSaveEnclaveToken } from "./deployAndSave/enclaveToken";
13
14
  import { deployAndSaveMockStableToken } from "./deployAndSave/mockStableToken";
14
15
  import { deployAndSavePoseidonT3 } from "./deployAndSave/poseidonT3";
15
16
  import { deployAndSaveSlashingManager } from "./deployAndSave/slashingManager";
17
+ import { deployAndSaveAllVerifiers } from "./deployAndSave/verifiers";
16
18
  import { deployMocks } from "./deployMocks";
19
+ /**
20
+ * Default timeout configuration (in seconds)
21
+ */
22
+ const DEFAULT_TIMEOUT_CONFIG = {
23
+ committeeFormationWindow: 3600,
24
+ dkgWindow: 7200,
25
+ computeWindow: 86400,
26
+ decryptionWindow: 3600,
27
+ gracePeriod: 600,
28
+ };
17
29
  /**
18
30
  * Deploys the Enclave contracts
19
31
  */
@@ -108,11 +120,24 @@ export const deployEnclave = async (withMocks) => {
108
120
  maxDuration: THIRTY_DAYS_IN_SECONDS.toString(),
109
121
  registry: ciphernodeRegistryAddress,
110
122
  bondingRegistry: bondingRegistryAddress,
123
+ e3RefundManager: addressOne, // placeholder, will be updated
111
124
  feeToken: feeTokenAddress,
125
+ timeoutConfig: DEFAULT_TIMEOUT_CONFIG,
112
126
  hre,
113
127
  });
114
128
  const enclaveAddress = await enclave.getAddress();
115
129
  console.log("Enclave deployed to:", enclaveAddress);
130
+ console.log("Deploying E3RefundManager...");
131
+ const { e3RefundManager } = await deployAndSaveE3RefundManager({
132
+ owner: ownerAddress,
133
+ enclave: enclaveAddress,
134
+ treasury: ownerAddress, // Protocol treasury
135
+ hre,
136
+ });
137
+ const e3RefundManagerAddress = await e3RefundManager.getAddress();
138
+ console.log("E3RefundManager deployed to:", e3RefundManagerAddress);
139
+ console.log("Setting E3RefundManager in Enclave...");
140
+ await enclave.setE3RefundManager(e3RefundManagerAddress);
116
141
  ///////////////////////////////////////////
117
142
  // Configure cross-contract dependencies
118
143
  ///////////////////////////////////////////
@@ -134,6 +159,7 @@ export const deployEnclave = async (withMocks) => {
134
159
  await bondingRegistry.setSlashingManager(slashingManagerAddress);
135
160
  console.log("Setting Enclave as reward distributor in BondingRegistry...");
136
161
  await bondingRegistry.setRewardDistributor(enclaveAddress);
162
+ // E3RefundManager already has correct enclave from deployment
137
163
  if (shouldDeployMocks) {
138
164
  const { decryptionVerifierAddress, e3ProgramAddress } = await deployMocks();
139
165
  const encryptionSchemeId = ethers.keccak256(ethers.toUtf8Bytes("fhe.rs:BFV"));
@@ -151,6 +177,13 @@ export const deployEnclave = async (withMocks) => {
151
177
  await tx.wait();
152
178
  console.log(`Successfully enabled E3 Program in Enclave contract`);
153
179
  }
180
+ // Deploy circuit verifiers (if any exist in contracts/verifier/)
181
+ console.log("Deploying circuit verifiers...");
182
+ const verifierDeployments = await deployAndSaveAllVerifiers(hre);
183
+ const verifierEntries = Object.entries(verifierDeployments);
184
+ const verifierLines = verifierEntries.length > 0
185
+ ? verifierEntries.map(([name, addr]) => ` ${name}: ${addr}`).join("\n")
186
+ : " (none)";
154
187
  console.log(`
155
188
  ============================================
156
189
  Deployment Complete!
@@ -161,7 +194,10 @@ export const deployEnclave = async (withMocks) => {
161
194
  SlashingManager: ${slashingManagerAddress}
162
195
  BondingRegistry: ${bondingRegistryAddress}
163
196
  CiphernodeRegistry: ${ciphernodeRegistryAddress}
197
+ E3RefundManager: ${e3RefundManagerAddress}
164
198
  Enclave: ${enclaveAddress}
199
+ Circuit Verifiers:
200
+ ${verifierLines}
165
201
  ============================================
166
202
  `);
167
203
  };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=deployVerifiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployVerifiers.d.ts","sourceRoot":"","sources":["../../scripts/deployVerifiers.ts"],"names":[],"mappings":""}
@@ -0,0 +1,33 @@
1
+ // SPDX-License-Identifier: LGPL-3.0-only
2
+ //
3
+ // This file is provided WITHOUT ANY WARRANTY;
4
+ // without even the implied warranty of MERCHANTABILITY
5
+ // or FITNESS FOR A PARTICULAR PURPOSE.
6
+ import hre from "hardhat";
7
+ import { deployAndSaveAllVerifiers } from "./deployAndSave/verifiers";
8
+ /**
9
+ * Standalone script to deploy only the circuit verifier contracts.
10
+ * Usage: hardhat run scripts/deployVerifiers.ts --network <network>
11
+ */
12
+ const main = async () => {
13
+ console.log("Deploying circuit verifier contracts...\n");
14
+ const verifierDeployments = await deployAndSaveAllVerifiers(hre);
15
+ const entries = Object.entries(verifierDeployments);
16
+ if (entries.length === 0) {
17
+ console.log("No verifier contracts found in contracts/verifier/.");
18
+ return;
19
+ }
20
+ console.log(`
21
+ ============================================
22
+ Verifier Deployment Complete!
23
+ ============================================`);
24
+ for (const [name, address] of entries) {
25
+ console.log(` ${name}: ${address}`);
26
+ }
27
+ console.log(` ============================================
28
+ `);
29
+ };
30
+ main().catch((error) => {
31
+ console.error(error);
32
+ process.exit(1);
33
+ });
@@ -12,5 +12,6 @@ export * from "./deployAndSave/slashingManager";
12
12
  export * from "./deployAndSave/mockComputeProvider";
13
13
  export * from "./deployAndSave/mockDecryptionVerifier";
14
14
  export * from "./deployAndSave/mockProgram";
15
+ export * from "./deployAndSave/verifiers";
15
16
  export * from "./verify";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../scripts/index.ts"],"names":[],"mappings":"AAMA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../scripts/index.ts"],"names":[],"mappings":"AAMA,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,iCAAiC,CAAC;AAChD,cAAc,2CAA2C,CAAC;AAC1D,cAAc,yBAAyB,CAAC;AACxC,cAAc,oCAAoC,CAAC;AACnD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,UAAU,CAAC"}
@@ -17,4 +17,5 @@ export * from "./deployAndSave/slashingManager";
17
17
  export * from "./deployAndSave/mockComputeProvider";
18
18
  export * from "./deployAndSave/mockDecryptionVerifier";
19
19
  export * from "./deployAndSave/mockProgram";
20
+ export * from "./deployAndSave/verifiers";
20
21
  export * from "./verify";
@@ -1,8 +1,6 @@
1
1
  export declare const requestCommittee: import("hardhat/types/tasks").NewTaskDefinition;
2
2
  export declare const enableE3: import("hardhat/types/tasks").NewTaskDefinition;
3
3
  export declare const publishCommittee: import("hardhat/types/tasks").NewTaskDefinition;
4
- export declare const activateE3: import("hardhat/types/tasks").NewTaskDefinition;
5
- export declare const publishInput: import("hardhat/types/tasks").NewTaskDefinition;
6
4
  export declare const publishCiphertext: import("hardhat/types/tasks").NewTaskDefinition;
7
5
  export declare const publishPlaintext: import("hardhat/types/tasks").NewTaskDefinition;
8
6
  //# sourceMappingURL=enclave.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enclave.d.ts","sourceRoot":"","sources":["../../tasks/enclave.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gBAAgB,iDAkMnB,CAAC;AAEX,eAAO,MAAM,QAAQ,iDAyBX,CAAC;AAEX,eAAO,MAAM,gBAAgB,iDAsEnB,CAAC;AAEX,eAAO,MAAM,UAAU,iDAyBb,CAAC;AAEX,eAAO,MAAM,YAAY,iDA+Cf,CAAC;AAEX,eAAO,MAAM,iBAAiB,iDAsEpB,CAAC;AAEX,eAAO,MAAM,gBAAgB,iDAsEnB,CAAC"}
1
+ {"version":3,"file":"enclave.d.ts","sourceRoot":"","sources":["../../tasks/enclave.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gBAAgB,iDA6LnB,CAAC;AAEX,eAAO,MAAM,QAAQ,iDAyBX,CAAC;AAEX,eAAO,MAAM,gBAAgB,iDAsEnB,CAAC;AAEX,eAAO,MAAM,iBAAiB,iDAsEpB,CAAC;AAEX,eAAO,MAAM,gBAAgB,iDAsEnB,CAAC"}