@enclave-e3/contracts 0.1.4 → 0.1.6

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 (467) hide show
  1. package/README.md +46 -2
  2. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +135 -0
  3. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/artifacts.d.ts +27 -0
  4. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +77 -0
  5. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +126 -0
  6. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/artifacts.d.ts +43 -0
  7. package/artifacts/build-info/solc-0_8_28-5150b9e6b6cf4df4986fccba97bea37a16fdfebc.json +311 -0
  8. package/artifacts/build-info/solc-0_8_28-5150b9e6b6cf4df4986fccba97bea37a16fdfebc.output.json +1 -0
  9. package/artifacts/contracts/Enclave.sol/Enclave.json +239 -147
  10. package/artifacts/contracts/Enclave.sol/artifacts.d.ts +6 -6
  11. package/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json +881 -0
  12. package/artifacts/contracts/interfaces/IBondingRegistry.sol/artifacts.d.ts +27 -0
  13. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json +326 -10
  14. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/artifacts.d.ts +2 -2
  15. package/artifacts/contracts/interfaces/IComputeProvider.sol/IComputeProvider.json +1 -1
  16. package/artifacts/contracts/interfaces/IComputeProvider.sol/artifacts.d.ts +1 -1
  17. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/IDecryptionVerifier.json +1 -1
  18. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/artifacts.d.ts +1 -1
  19. package/artifacts/contracts/interfaces/IE3Program.sol/IE3Program.json +21 -3
  20. package/artifacts/contracts/interfaces/IE3Program.sol/artifacts.d.ts +2 -2
  21. package/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json +247 -27
  22. package/artifacts/contracts/interfaces/IEnclave.sol/artifacts.d.ts +2 -2
  23. package/artifacts/contracts/interfaces/{IRegistryFilter.sol/IRegistryFilter.json → ISlashVerifier.sol/ISlashVerifier.json} +10 -10
  24. package/artifacts/contracts/interfaces/ISlashVerifier.sol/artifacts.d.ts +27 -0
  25. package/artifacts/contracts/interfaces/ISlashingManager.sol/ISlashingManager.json +759 -0
  26. package/artifacts/contracts/interfaces/ISlashingManager.sol/artifacts.d.ts +27 -0
  27. package/artifacts/contracts/lib/ExitQueueLib.sol/ExitQueueLib.json +116 -0
  28. package/artifacts/contracts/lib/ExitQueueLib.sol/artifacts.d.ts +27 -0
  29. package/artifacts/contracts/registry/BondingRegistry.sol/BondingRegistry.json +1217 -0
  30. package/artifacts/contracts/registry/BondingRegistry.sol/artifacts.d.ts +27 -0
  31. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/CiphernodeRegistryOwnable.json +351 -57
  32. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/artifacts.d.ts +6 -6
  33. package/artifacts/contracts/slashing/SlashingManager.sol/SlashingManager.json +1107 -0
  34. package/artifacts/contracts/slashing/SlashingManager.sol/artifacts.d.ts +27 -0
  35. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.json +328 -12
  36. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.json +328 -12
  37. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/artifacts.d.ts +8 -8
  38. package/artifacts/contracts/test/MockComputeProvider.sol/MockComputeProvider.json +4 -4
  39. package/artifacts/contracts/test/MockComputeProvider.sol/artifacts.d.ts +4 -4
  40. package/artifacts/contracts/test/MockDecryptionVerifier.sol/MockDecryptionVerifier.json +3 -3
  41. package/artifacts/contracts/test/MockDecryptionVerifier.sol/artifacts.d.ts +3 -3
  42. package/artifacts/contracts/test/MockE3Program.sol/MockE3Program.json +26 -32
  43. package/artifacts/contracts/test/MockE3Program.sol/artifacts.d.ts +4 -4
  44. package/artifacts/contracts/test/MockSlashingVerifier.sol/MockSlashingVerifier.json +38 -0
  45. package/artifacts/contracts/test/MockSlashingVerifier.sol/artifacts.d.ts +27 -0
  46. package/artifacts/contracts/test/MockStableToken.sol/MockUSDC.json +425 -0
  47. package/artifacts/contracts/test/MockStableToken.sol/artifacts.d.ts +27 -0
  48. package/artifacts/contracts/token/EnclaveTicketToken.sol/EnclaveTicketToken.json +1222 -0
  49. package/artifacts/contracts/token/EnclaveTicketToken.sol/artifacts.d.ts +27 -0
  50. package/artifacts/contracts/token/EnclaveToken.sol/EnclaveToken.json +1460 -0
  51. package/artifacts/contracts/token/EnclaveToken.sol/artifacts.d.ts +27 -0
  52. package/artifacts/poseidon-solidity/PoseidonT3.sol/PoseidonT3.json +3 -3
  53. package/artifacts/poseidon-solidity/PoseidonT3.sol/artifacts.d.ts +3 -3
  54. package/contracts/Enclave.sol +230 -81
  55. package/contracts/interfaces/IBondingRegistry.sol +446 -0
  56. package/contracts/interfaces/ICiphernodeRegistry.sol +153 -9
  57. package/contracts/interfaces/IComputeProvider.sol +12 -2
  58. package/contracts/interfaces/IDecryptionVerifier.sol +11 -6
  59. package/contracts/interfaces/IE3.sol +21 -17
  60. package/contracts/interfaces/IE3Program.sol +30 -17
  61. package/contracts/interfaces/IEnclave.sol +95 -21
  62. package/contracts/interfaces/ISlashVerifier.sol +23 -0
  63. package/contracts/interfaces/ISlashingManager.sol +426 -0
  64. package/contracts/lib/ExitQueueLib.sol +490 -0
  65. package/contracts/registry/BondingRegistry.sol +737 -0
  66. package/contracts/registry/CiphernodeRegistryOwnable.sol +393 -26
  67. package/contracts/slashing/SlashingManager.sol +367 -0
  68. package/contracts/test/MockCiphernodeRegistry.sol +118 -24
  69. package/contracts/test/MockComputeProvider.sol +2 -2
  70. package/contracts/test/MockE3Program.sol +17 -14
  71. package/contracts/test/MockSlashingVerifier.sol +19 -0
  72. package/contracts/test/MockStableToken.sol +28 -0
  73. package/contracts/token/EnclaveTicketToken.sol +243 -0
  74. package/contracts/token/EnclaveToken.sol +267 -0
  75. package/dist/hardhat.config.d.ts.map +1 -1
  76. package/dist/hardhat.config.js +35 -16
  77. package/dist/ignition/modules/{mockInputValidator.d.ts → bondingRegistry.d.ts} +1 -1
  78. package/dist/ignition/modules/bondingRegistry.d.ts.map +1 -0
  79. package/dist/ignition/modules/bondingRegistry.js +35 -0
  80. package/dist/ignition/modules/ciphernodeRegistry.d.ts.map +1 -1
  81. package/dist/ignition/modules/ciphernodeRegistry.js +12 -2
  82. package/dist/ignition/modules/enclave.d.ts.map +1 -1
  83. package/dist/ignition/modules/enclave.js +16 -7
  84. package/dist/ignition/modules/{naiveRegistryFilter.d.ts → enclaveTicketToken.d.ts} +1 -1
  85. package/dist/ignition/modules/enclaveTicketToken.d.ts.map +1 -0
  86. package/dist/ignition/modules/enclaveTicketToken.js +17 -0
  87. package/dist/ignition/modules/enclaveToken.d.ts +3 -0
  88. package/dist/ignition/modules/enclaveToken.d.ts.map +1 -0
  89. package/dist/ignition/modules/{mockInputValidator.js → enclaveToken.js} +4 -4
  90. package/dist/ignition/modules/mockCiphernodeRegistry.d.ts.map +1 -1
  91. package/dist/ignition/modules/mockCiphernodeRegistry.js +0 -1
  92. package/dist/ignition/modules/mockCiphernodeRegistryEmptyKey.d.ts.map +1 -1
  93. package/dist/ignition/modules/mockCiphernodeRegistryEmptyKey.js +0 -1
  94. package/dist/ignition/modules/mockComputeProvider.d.ts.map +1 -1
  95. package/dist/ignition/modules/mockComputeProvider.js +0 -1
  96. package/dist/ignition/modules/mockDecryptionVerifier.d.ts.map +1 -1
  97. package/dist/ignition/modules/mockDecryptionVerifier.js +0 -1
  98. package/dist/ignition/modules/mockE3Program.d.ts.map +1 -1
  99. package/dist/ignition/modules/mockE3Program.js +1 -3
  100. package/dist/ignition/modules/mockSlashingVerifier.d.ts +3 -0
  101. package/dist/ignition/modules/mockSlashingVerifier.d.ts.map +1 -0
  102. package/dist/ignition/modules/mockSlashingVerifier.js +10 -0
  103. package/dist/ignition/modules/mockStableToken.d.ts +3 -0
  104. package/dist/ignition/modules/mockStableToken.d.ts.map +1 -0
  105. package/dist/ignition/modules/mockStableToken.js +11 -0
  106. package/dist/ignition/modules/poseidonT3.d.ts.map +1 -1
  107. package/dist/ignition/modules/poseidonT3.js +0 -1
  108. package/dist/ignition/modules/slashingManager.d.ts +3 -0
  109. package/dist/ignition/modules/slashingManager.d.ts.map +1 -0
  110. package/dist/ignition/modules/slashingManager.js +16 -0
  111. package/dist/scripts/cleanIgnitionState.d.ts +12 -0
  112. package/dist/scripts/cleanIgnitionState.d.ts.map +1 -0
  113. package/dist/scripts/cleanIgnitionState.js +41 -0
  114. package/dist/scripts/deployAndSave/bondingRegistry.d.ts +38 -0
  115. package/dist/scripts/deployAndSave/bondingRegistry.d.ts.map +1 -0
  116. package/dist/scripts/deployAndSave/bondingRegistry.js +133 -0
  117. package/dist/scripts/deployAndSave/ciphernodeRegistryOwnable.d.ts +11 -1
  118. package/dist/scripts/deployAndSave/ciphernodeRegistryOwnable.d.ts.map +1 -1
  119. package/dist/scripts/deployAndSave/ciphernodeRegistryOwnable.js +76 -19
  120. package/dist/scripts/deployAndSave/enclave.d.ts +16 -2
  121. package/dist/scripts/deployAndSave/enclave.d.ts.map +1 -1
  122. package/dist/scripts/deployAndSave/enclave.js +89 -22
  123. package/dist/scripts/deployAndSave/enclaveTicketToken.d.ts +20 -0
  124. package/dist/scripts/deployAndSave/enclaveTicketToken.d.ts.map +1 -0
  125. package/dist/scripts/deployAndSave/enclaveTicketToken.js +41 -0
  126. package/dist/scripts/deployAndSave/enclaveToken.d.ts +18 -0
  127. package/dist/scripts/deployAndSave/enclaveToken.d.ts.map +1 -0
  128. package/dist/scripts/deployAndSave/enclaveToken.js +57 -0
  129. package/dist/scripts/deployAndSave/mockComputeProvider.d.ts.map +1 -1
  130. package/dist/scripts/deployAndSave/mockComputeProvider.js +5 -5
  131. package/dist/scripts/deployAndSave/mockDecryptionVerifier.d.ts.map +1 -1
  132. package/dist/scripts/deployAndSave/mockDecryptionVerifier.js +5 -5
  133. package/dist/scripts/deployAndSave/mockProgram.d.ts +1 -2
  134. package/dist/scripts/deployAndSave/mockProgram.d.ts.map +1 -1
  135. package/dist/scripts/deployAndSave/mockProgram.js +7 -19
  136. package/dist/scripts/deployAndSave/mockStableToken.d.ts +18 -0
  137. package/dist/scripts/deployAndSave/mockStableToken.d.ts.map +1 -0
  138. package/dist/scripts/deployAndSave/mockStableToken.js +36 -0
  139. package/dist/scripts/deployAndSave/poseidonT3.d.ts +11 -0
  140. package/dist/scripts/deployAndSave/poseidonT3.d.ts.map +1 -0
  141. package/dist/scripts/deployAndSave/poseidonT3.js +41 -0
  142. package/dist/scripts/deployAndSave/slashingManager.d.ts +19 -0
  143. package/dist/scripts/deployAndSave/slashingManager.d.ts.map +1 -0
  144. package/dist/scripts/deployAndSave/slashingManager.js +38 -0
  145. package/dist/scripts/deployEnclave.d.ts.map +1 -1
  146. package/dist/scripts/deployEnclave.js +109 -23
  147. package/dist/scripts/deployMocks.d.ts +0 -1
  148. package/dist/scripts/deployMocks.d.ts.map +1 -1
  149. package/dist/scripts/deployMocks.js +3 -6
  150. package/dist/scripts/index.d.ts +7 -2
  151. package/dist/scripts/index.d.ts.map +1 -1
  152. package/dist/scripts/index.js +7 -2
  153. package/dist/scripts/proxy.d.ts +22 -0
  154. package/dist/scripts/proxy.d.ts.map +1 -0
  155. package/dist/scripts/proxy.js +36 -0
  156. package/dist/scripts/runVerification.d.ts +2 -0
  157. package/dist/scripts/runVerification.d.ts.map +1 -0
  158. package/dist/scripts/runVerification.js +16 -0
  159. package/dist/scripts/upgrade/bondingRegistry.d.ts +6 -0
  160. package/dist/scripts/upgrade/bondingRegistry.d.ts.map +1 -0
  161. package/dist/scripts/upgrade/bondingRegistry.js +49 -0
  162. package/dist/scripts/upgrade/ciphernodeRegistryOwnable.d.ts +6 -0
  163. package/dist/scripts/upgrade/ciphernodeRegistryOwnable.d.ts.map +1 -0
  164. package/dist/scripts/upgrade/ciphernodeRegistryOwnable.js +52 -0
  165. package/dist/scripts/upgrade/enclave.d.ts +6 -0
  166. package/dist/scripts/upgrade/enclave.d.ts.map +1 -0
  167. package/dist/scripts/upgrade/enclave.js +49 -0
  168. package/dist/scripts/utils.d.ts +51 -2
  169. package/dist/scripts/utils.d.ts.map +1 -1
  170. package/dist/scripts/utils.js +67 -4
  171. package/dist/scripts/verify.d.ts +6 -0
  172. package/dist/scripts/verify.d.ts.map +1 -0
  173. package/dist/scripts/verify.js +142 -0
  174. package/dist/tasks/ciphernode.d.ts +2 -0
  175. package/dist/tasks/ciphernode.d.ts.map +1 -1
  176. package/dist/tasks/ciphernode.js +290 -19
  177. package/dist/tasks/enclave.d.ts.map +1 -1
  178. package/dist/tasks/enclave.js +76 -31
  179. package/dist/test/Enclave.spec.js +377 -370
  180. package/dist/test/Registry/BondingRegistry.spec.d.ts +2 -0
  181. package/dist/test/Registry/BondingRegistry.spec.d.ts.map +1 -0
  182. package/dist/test/Registry/BondingRegistry.spec.js +684 -0
  183. package/dist/test/Registry/CiphernodeRegistryOwnable.spec.d.ts.map +1 -0
  184. package/dist/test/Registry/CiphernodeRegistryOwnable.spec.js +374 -0
  185. package/dist/test/Slashing/SlashingManager.spec.d.ts +2 -0
  186. package/dist/test/Slashing/SlashingManager.spec.d.ts.map +1 -0
  187. package/dist/test/Slashing/SlashingManager.spec.js +672 -0
  188. package/dist/types/@openzeppelin/contracts/index.d.ts +3 -0
  189. package/dist/types/@openzeppelin/contracts/index.d.ts.map +1 -0
  190. package/dist/types/@openzeppelin/contracts/proxy/index.d.ts +3 -0
  191. package/dist/types/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
  192. package/dist/types/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.d.ts +97 -0
  193. package/dist/types/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.d.ts.map +1 -0
  194. package/dist/types/{contracts/registry/NaiveRegistryFilter.js → @openzeppelin/contracts/proxy/transparent/ProxyAdmin.js} +0 -4
  195. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.d.ts +81 -0
  196. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.d.ts.map +1 -0
  197. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.js +12 -0
  198. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.d.ts +52 -0
  199. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.d.ts.map +1 -0
  200. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.js +8 -0
  201. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/index.d.ts +3 -0
  202. package/dist/types/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/index.d.ts.map +1 -0
  203. package/dist/types/@openzeppelin/contracts/proxy/transparent/index.d.ts +4 -0
  204. package/dist/types/@openzeppelin/contracts/proxy/transparent/index.d.ts.map +1 -0
  205. package/dist/types/@openzeppelin/index.d.ts +3 -0
  206. package/dist/types/@openzeppelin/index.d.ts.map +1 -0
  207. package/dist/types/contracts/Enclave.d.ts +126 -53
  208. package/dist/types/contracts/Enclave.d.ts.map +1 -1
  209. package/dist/types/contracts/Enclave.js +12 -0
  210. package/dist/types/contracts/index.d.ts +6 -0
  211. package/dist/types/contracts/index.d.ts.map +1 -1
  212. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts +622 -0
  213. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts.map +1 -0
  214. package/dist/types/contracts/interfaces/IBondingRegistry.js +24 -0
  215. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts +245 -15
  216. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts.map +1 -1
  217. package/dist/types/contracts/interfaces/ICiphernodeRegistry.js +16 -0
  218. package/dist/types/contracts/interfaces/IE3Program.d.ts +20 -10
  219. package/dist/types/contracts/interfaces/IE3Program.d.ts.map +1 -1
  220. package/dist/types/contracts/interfaces/IEnclave.d.ts +149 -20
  221. package/dist/types/contracts/interfaces/IEnclave.d.ts.map +1 -1
  222. package/dist/types/contracts/interfaces/IEnclave.js +12 -0
  223. package/dist/types/contracts/interfaces/{IRegistryFilter.d.ts → ISlashVerifier.d.ts} +16 -16
  224. package/dist/types/contracts/interfaces/ISlashVerifier.d.ts.map +1 -0
  225. package/dist/types/contracts/interfaces/ISlashVerifier.js +1 -0
  226. package/dist/types/contracts/interfaces/ISlashingManager.d.ts +384 -0
  227. package/dist/types/contracts/interfaces/ISlashingManager.d.ts.map +1 -0
  228. package/dist/types/contracts/interfaces/ISlashingManager.js +24 -0
  229. package/dist/types/contracts/interfaces/index.d.ts +3 -2
  230. package/dist/types/contracts/interfaces/index.d.ts.map +1 -1
  231. package/dist/types/contracts/lib/ExitQueueLib.d.ts +73 -0
  232. package/dist/types/contracts/lib/ExitQueueLib.d.ts.map +1 -0
  233. package/dist/types/contracts/lib/ExitQueueLib.js +12 -0
  234. package/dist/types/contracts/lib/index.d.ts +2 -0
  235. package/dist/types/contracts/lib/index.d.ts.map +1 -0
  236. package/dist/types/contracts/lib/index.js +1 -0
  237. package/dist/types/contracts/registry/BondingRegistry.d.ts +821 -0
  238. package/dist/types/contracts/registry/BondingRegistry.d.ts.map +1 -0
  239. package/dist/types/contracts/registry/BondingRegistry.js +44 -0
  240. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts +194 -34
  241. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts.map +1 -1
  242. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.js +20 -0
  243. package/dist/types/contracts/registry/index.d.ts +1 -1
  244. package/dist/types/contracts/registry/index.d.ts.map +1 -1
  245. package/dist/types/contracts/slashing/SlashingManager.d.ts +592 -0
  246. package/dist/types/contracts/slashing/SlashingManager.d.ts.map +1 -0
  247. package/dist/types/contracts/slashing/SlashingManager.js +36 -0
  248. package/dist/types/contracts/slashing/index.d.ts +2 -0
  249. package/dist/types/contracts/slashing/index.d.ts.map +1 -0
  250. package/dist/types/contracts/slashing/index.js +1 -0
  251. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts +247 -17
  252. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts.map +1 -1
  253. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.js +16 -0
  254. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts +247 -17
  255. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts.map +1 -1
  256. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.js +16 -0
  257. package/dist/types/contracts/test/MockE3Program.d.ts +20 -14
  258. package/dist/types/contracts/test/MockE3Program.d.ts.map +1 -1
  259. package/dist/types/contracts/test/{MockInputValidator.d.ts → MockSlashingVerifier.d.ts} +15 -15
  260. package/dist/types/contracts/test/MockSlashingVerifier.d.ts.map +1 -0
  261. package/dist/types/contracts/test/MockSlashingVerifier.js +1 -0
  262. package/dist/types/contracts/test/MockStableToken.sol/MockUSDC.d.ts +227 -0
  263. package/dist/types/contracts/test/MockStableToken.sol/MockUSDC.d.ts.map +1 -0
  264. package/dist/types/contracts/test/MockStableToken.sol/MockUSDC.js +12 -0
  265. package/dist/types/contracts/test/MockStableToken.sol/index.d.ts +2 -0
  266. package/dist/types/contracts/test/MockStableToken.sol/index.d.ts.map +1 -0
  267. package/dist/types/contracts/test/MockStableToken.sol/index.js +1 -0
  268. package/dist/types/contracts/test/index.d.ts +3 -3
  269. package/dist/types/contracts/test/index.d.ts.map +1 -1
  270. package/dist/types/contracts/token/EnclaveTicketToken.d.ts +574 -0
  271. package/dist/types/contracts/token/EnclaveTicketToken.d.ts.map +1 -0
  272. package/dist/types/contracts/token/EnclaveTicketToken.js +24 -0
  273. package/dist/types/contracts/token/EnclaveToken.d.ts +775 -0
  274. package/dist/types/contracts/token/EnclaveToken.d.ts.map +1 -0
  275. package/dist/types/contracts/token/EnclaveToken.js +48 -0
  276. package/dist/types/contracts/token/index.d.ts +3 -0
  277. package/dist/types/contracts/token/index.d.ts.map +1 -0
  278. package/dist/types/contracts/token/index.js +1 -0
  279. package/dist/types/factories/@openzeppelin/contracts/index.d.ts +2 -0
  280. package/dist/types/factories/@openzeppelin/contracts/index.d.ts.map +1 -0
  281. package/dist/types/factories/@openzeppelin/contracts/index.js +4 -0
  282. package/dist/types/factories/@openzeppelin/contracts/proxy/index.d.ts +2 -0
  283. package/dist/types/factories/@openzeppelin/contracts/proxy/index.d.ts.map +1 -0
  284. package/dist/types/factories/@openzeppelin/contracts/proxy/index.js +4 -0
  285. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +118 -0
  286. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts.map +1 -0
  287. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.js +157 -0
  288. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory.d.ts +57 -0
  289. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory.d.ts.map +1 -0
  290. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy__factory.js +78 -0
  291. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts +105 -0
  292. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts.map +1 -0
  293. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.js +141 -0
  294. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/index.d.ts +3 -0
  295. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/index.d.ts.map +1 -0
  296. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/index.js +5 -0
  297. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/index.d.ts +3 -0
  298. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/index.d.ts.map +1 -0
  299. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/index.js +5 -0
  300. package/dist/types/factories/@openzeppelin/index.d.ts +2 -0
  301. package/dist/types/factories/@openzeppelin/index.d.ts.map +1 -0
  302. package/dist/types/factories/@openzeppelin/index.js +4 -0
  303. package/dist/types/factories/contracts/Enclave__factory.d.ts +190 -104
  304. package/dist/types/factories/contracts/Enclave__factory.d.ts.map +1 -1
  305. package/dist/types/factories/contracts/Enclave__factory.js +241 -134
  306. package/dist/types/factories/contracts/index.d.ts +3 -0
  307. package/dist/types/factories/contracts/index.d.ts.map +1 -1
  308. package/dist/types/factories/contracts/index.js +3 -0
  309. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts +678 -0
  310. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts.map +1 -0
  311. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.js +882 -0
  312. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts +253 -9
  313. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts.map +1 -1
  314. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.js +325 -9
  315. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts +16 -2
  316. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts.map +1 -1
  317. package/dist/types/factories/contracts/interfaces/IE3Program__factory.js +20 -2
  318. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts +190 -24
  319. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts.map +1 -1
  320. package/dist/types/factories/contracts/interfaces/IEnclave__factory.js +246 -26
  321. package/dist/types/factories/contracts/interfaces/ISlashVerifier__factory.d.ts +26 -0
  322. package/dist/types/factories/contracts/interfaces/ISlashVerifier__factory.d.ts.map +1 -0
  323. package/dist/types/factories/contracts/interfaces/{IRegistryFilter__factory.js → ISlashVerifier__factory.js} +7 -7
  324. package/dist/types/factories/contracts/interfaces/ISlashingManager__factory.d.ts +594 -0
  325. package/dist/types/factories/contracts/interfaces/ISlashingManager__factory.d.ts.map +1 -0
  326. package/dist/types/factories/contracts/interfaces/ISlashingManager__factory.js +760 -0
  327. package/dist/types/factories/contracts/interfaces/index.d.ts +3 -2
  328. package/dist/types/factories/contracts/interfaces/index.d.ts.map +1 -1
  329. package/dist/types/factories/contracts/interfaces/index.js +3 -2
  330. package/dist/types/factories/contracts/lib/ExitQueueLib__factory.d.ts +107 -0
  331. package/dist/types/factories/contracts/lib/ExitQueueLib__factory.d.ts.map +1 -0
  332. package/dist/types/factories/contracts/lib/ExitQueueLib__factory.js +138 -0
  333. package/dist/types/factories/contracts/lib/index.d.ts +2 -0
  334. package/dist/types/factories/contracts/lib/index.d.ts.map +1 -0
  335. package/dist/types/factories/contracts/lib/index.js +4 -0
  336. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts +958 -0
  337. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts.map +1 -0
  338. package/dist/types/factories/contracts/registry/BondingRegistry__factory.js +1239 -0
  339. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts +272 -40
  340. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts.map +1 -1
  341. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.js +343 -49
  342. package/dist/types/factories/contracts/registry/index.d.ts +1 -1
  343. package/dist/types/factories/contracts/registry/index.d.ts.map +1 -1
  344. package/dist/types/factories/contracts/registry/index.js +1 -1
  345. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts +879 -0
  346. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts.map +1 -0
  347. package/dist/types/factories/contracts/slashing/SlashingManager__factory.js +1129 -0
  348. package/dist/types/factories/contracts/slashing/index.d.ts +2 -0
  349. package/dist/types/factories/contracts/slashing/index.d.ts.map +1 -0
  350. package/dist/types/factories/contracts/slashing/index.js +4 -0
  351. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts +254 -10
  352. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts.map +1 -1
  353. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.js +326 -10
  354. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts +254 -10
  355. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts.map +1 -1
  356. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.js +326 -10
  357. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts +2 -2
  358. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts.map +1 -1
  359. package/dist/types/factories/contracts/test/MockComputeProvider__factory.js +2 -2
  360. package/dist/types/factories/contracts/test/MockDecryptionVerifier__factory.d.ts +1 -1
  361. package/dist/types/factories/contracts/test/MockDecryptionVerifier__factory.d.ts.map +1 -1
  362. package/dist/types/factories/contracts/test/MockDecryptionVerifier__factory.js +1 -1
  363. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts +23 -27
  364. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts.map +1 -1
  365. package/dist/types/factories/contracts/test/MockE3Program__factory.js +28 -34
  366. package/dist/types/factories/contracts/test/MockSlashingVerifier__factory.d.ts +43 -0
  367. package/dist/types/factories/contracts/test/MockSlashingVerifier__factory.d.ts.map +1 -0
  368. package/dist/types/factories/contracts/test/MockSlashingVerifier__factory.js +60 -0
  369. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts +338 -0
  370. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts.map +1 -0
  371. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.js +447 -0
  372. package/dist/types/factories/contracts/test/MockStableToken.sol/index.d.ts +2 -0
  373. package/dist/types/factories/contracts/test/MockStableToken.sol/index.d.ts.map +1 -0
  374. package/dist/types/factories/contracts/test/MockStableToken.sol/index.js +4 -0
  375. package/dist/types/factories/contracts/test/index.d.ts +2 -2
  376. package/dist/types/factories/contracts/test/index.d.ts.map +1 -1
  377. package/dist/types/factories/contracts/test/index.js +2 -2
  378. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts +894 -0
  379. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts.map +1 -0
  380. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.js +1175 -0
  381. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts +1101 -0
  382. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts.map +1 -0
  383. package/dist/types/factories/contracts/token/EnclaveToken__factory.js +1439 -0
  384. package/dist/types/factories/contracts/token/index.d.ts +3 -0
  385. package/dist/types/factories/contracts/token/index.d.ts.map +1 -0
  386. package/dist/types/factories/contracts/token/index.js +5 -0
  387. package/dist/types/factories/index.d.ts +1 -0
  388. package/dist/types/factories/index.d.ts.map +1 -1
  389. package/dist/types/factories/index.js +1 -0
  390. package/dist/types/factories/poseidon-solidity/PoseidonT3__factory.d.ts +1 -1
  391. package/dist/types/factories/poseidon-solidity/PoseidonT3__factory.d.ts.map +1 -1
  392. package/dist/types/factories/poseidon-solidity/PoseidonT3__factory.js +1 -1
  393. package/dist/types/index.d.ts +28 -12
  394. package/dist/types/index.d.ts.map +1 -1
  395. package/dist/types/index.js +13 -6
  396. package/package.json +30 -21
  397. package/LICENSE.md +0 -165
  398. package/artifacts/build-info/solc-0_8_27-9aea5e3f6e25811e781e96c22e8edaf1eb1a01c5.json +0 -130
  399. package/artifacts/build-info/solc-0_8_27-9aea5e3f6e25811e781e96c22e8edaf1eb1a01c5.output.json +0 -1
  400. package/artifacts/contracts/interfaces/IInputValidator.sol/IInputValidator.json +0 -38
  401. package/artifacts/contracts/interfaces/IInputValidator.sol/artifacts.d.ts +0 -27
  402. package/artifacts/contracts/interfaces/IRegistryFilter.sol/artifacts.d.ts +0 -27
  403. package/artifacts/contracts/registry/NaiveRegistryFilter.sol/NaiveRegistryFilter.json +0 -309
  404. package/artifacts/contracts/registry/NaiveRegistryFilter.sol/artifacts.d.ts +0 -27
  405. package/artifacts/contracts/test/MockInputValidator.sol/MockInputValidator.json +0 -43
  406. package/artifacts/contracts/test/MockInputValidator.sol/artifacts.d.ts +0 -27
  407. package/artifacts/contracts/test/MockRegistryFilter.sol/IRegistry.json +0 -37
  408. package/artifacts/contracts/test/MockRegistryFilter.sol/MockNaiveRegistryFilter.json +0 -262
  409. package/artifacts/contracts/test/MockRegistryFilter.sol/artifacts.d.ts +0 -43
  410. package/contracts/interfaces/IInputValidator.sol +0 -18
  411. package/contracts/interfaces/IRegistryFilter.sol +0 -13
  412. package/contracts/registry/NaiveRegistryFilter.sol +0 -124
  413. package/contracts/test/MockInputValidator.sol +0 -29
  414. package/contracts/test/MockRegistryFilter.sol +0 -117
  415. package/dist/ignition/modules/mockInputValidator.d.ts.map +0 -1
  416. package/dist/ignition/modules/naiveRegistryFilter.d.ts.map +0 -1
  417. package/dist/ignition/modules/naiveRegistryFilter.js +0 -16
  418. package/dist/scripts/deployAndSave/mockInputValidator.d.ts +0 -6
  419. package/dist/scripts/deployAndSave/mockInputValidator.d.ts.map +0 -1
  420. package/dist/scripts/deployAndSave/mockInputValidator.js +0 -18
  421. package/dist/scripts/deployAndSave/naiveRegistryFilter.d.ts +0 -11
  422. package/dist/scripts/deployAndSave/naiveRegistryFilter.d.ts.map +0 -1
  423. package/dist/scripts/deployAndSave/naiveRegistryFilter.js +0 -41
  424. package/dist/test/CiphernodeRegistry/CiphernodeRegistryOwnable.spec.d.ts.map +0 -1
  425. package/dist/test/CiphernodeRegistry/CiphernodeRegistryOwnable.spec.js +0 -279
  426. package/dist/test/CiphernodeRegistry/NaiveRegistryFilter.spec.d.ts +0 -2
  427. package/dist/test/CiphernodeRegistry/NaiveRegistryFilter.spec.d.ts.map +0 -1
  428. package/dist/test/CiphernodeRegistry/NaiveRegistryFilter.spec.js +0 -160
  429. package/dist/types/contracts/interfaces/IInputValidator.d.ts +0 -36
  430. package/dist/types/contracts/interfaces/IInputValidator.d.ts.map +0 -1
  431. package/dist/types/contracts/interfaces/IRegistryFilter.d.ts.map +0 -1
  432. package/dist/types/contracts/registry/NaiveRegistryFilter.d.ts +0 -187
  433. package/dist/types/contracts/registry/NaiveRegistryFilter.d.ts.map +0 -1
  434. package/dist/types/contracts/test/MockInputValidator.d.ts.map +0 -1
  435. package/dist/types/contracts/test/MockRegistryFilter.sol/IRegistry.d.ts +0 -38
  436. package/dist/types/contracts/test/MockRegistryFilter.sol/IRegistry.d.ts.map +0 -1
  437. package/dist/types/contracts/test/MockRegistryFilter.sol/MockNaiveRegistryFilter.d.ts +0 -163
  438. package/dist/types/contracts/test/MockRegistryFilter.sol/MockNaiveRegistryFilter.d.ts.map +0 -1
  439. package/dist/types/contracts/test/MockRegistryFilter.sol/MockNaiveRegistryFilter.js +0 -8
  440. package/dist/types/contracts/test/MockRegistryFilter.sol/index.d.ts +0 -3
  441. package/dist/types/contracts/test/MockRegistryFilter.sol/index.d.ts.map +0 -1
  442. package/dist/types/factories/contracts/interfaces/IInputValidator__factory.d.ts +0 -26
  443. package/dist/types/factories/contracts/interfaces/IInputValidator__factory.d.ts.map +0 -1
  444. package/dist/types/factories/contracts/interfaces/IInputValidator__factory.js +0 -39
  445. package/dist/types/factories/contracts/interfaces/IRegistryFilter__factory.d.ts +0 -26
  446. package/dist/types/factories/contracts/interfaces/IRegistryFilter__factory.d.ts.map +0 -1
  447. package/dist/types/factories/contracts/registry/NaiveRegistryFilter__factory.d.ts +0 -251
  448. package/dist/types/factories/contracts/registry/NaiveRegistryFilter__factory.d.ts.map +0 -1
  449. package/dist/types/factories/contracts/registry/NaiveRegistryFilter__factory.js +0 -331
  450. package/dist/types/factories/contracts/test/MockInputValidator__factory.d.ts +0 -47
  451. package/dist/types/factories/contracts/test/MockInputValidator__factory.d.ts.map +0 -1
  452. package/dist/types/factories/contracts/test/MockInputValidator__factory.js +0 -65
  453. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/IRegistry__factory.d.ts +0 -26
  454. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/IRegistry__factory.d.ts.map +0 -1
  455. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/IRegistry__factory.js +0 -38
  456. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/MockNaiveRegistryFilter__factory.d.ts +0 -216
  457. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/MockNaiveRegistryFilter__factory.d.ts.map +0 -1
  458. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/MockNaiveRegistryFilter__factory.js +0 -284
  459. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/index.d.ts +0 -3
  460. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/index.d.ts.map +0 -1
  461. package/dist/types/factories/contracts/test/MockRegistryFilter.sol/index.js +0 -5
  462. /package/dist/test/{CiphernodeRegistry → Registry}/CiphernodeRegistryOwnable.spec.d.ts +0 -0
  463. /package/dist/types/{contracts/test/MockRegistryFilter.sol → @openzeppelin/contracts}/index.js +0 -0
  464. /package/dist/types/{contracts/interfaces/IInputValidator.js → @openzeppelin/contracts/proxy/index.js} +0 -0
  465. /package/dist/types/{contracts/interfaces/IRegistryFilter.js → @openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/index.js} +0 -0
  466. /package/dist/types/{contracts/test/MockInputValidator.js → @openzeppelin/contracts/proxy/transparent/index.js} +0 -0
  467. /package/dist/types/{contracts/test/MockRegistryFilter.sol/IRegistry.js → @openzeppelin/index.js} +0 -0
@@ -7,41 +7,312 @@ import { LeanIMT } from "@zk-kit/lean-imt";
7
7
  import { ZeroAddress } from "ethers";
8
8
  import { task } from "hardhat/config";
9
9
  import { poseidon2 } from "poseidon-lite";
10
- export const ciphernodeAdd = task("ciphernode:add", "Register a ciphernode to the registry")
10
+ export const ciphernodeAdd = task("ciphernode:add", "Register a ciphernode to the bonding registry and ciphernode registry")
11
+ .addOption({
12
+ name: "licenseBondAmount",
13
+ description: "amount of ENCL to bond (in wei, e.g., 1000000000000000000000 for 1000 ENCL)",
14
+ defaultValue: "1000000000000000000000",
15
+ })
16
+ .addOption({
17
+ name: "ticketAmount",
18
+ description: "amount of USDC to deposit for tickets (in wei, e.g., 1,000,000,000 for 1000 USDC)",
19
+ defaultValue: "1000000000",
20
+ })
21
+ .setAction(async () => ({
22
+ default: async ({ licenseBondAmount, ticketAmount }, hre) => {
23
+ const connection = await hre.network.connect();
24
+ const { ethers } = connection;
25
+ const [signer] = await ethers.getSigners();
26
+ console.log(`Registering ciphernode: ${signer.address}`);
27
+ const { deployAndSaveBondingRegistry } = await import("../scripts/deployAndSave/bondingRegistry");
28
+ const { deployAndSaveEnclaveTicketToken } = await import("../scripts/deployAndSave/enclaveTicketToken");
29
+ const { deployAndSaveEnclaveToken } = await import("../scripts/deployAndSave/enclaveToken");
30
+ const { deployAndSaveMockStableToken } = await import("../scripts/deployAndSave/mockStableToken");
31
+ const { bondingRegistry } = await deployAndSaveBondingRegistry({ hre });
32
+ const { enclaveToken } = await deployAndSaveEnclaveToken({ hre });
33
+ const { enclaveTicketToken } = await deployAndSaveEnclaveTicketToken({
34
+ hre,
35
+ });
36
+ const { mockStableToken } = await deployAndSaveMockStableToken({ hre });
37
+ const licenseToken = enclaveToken.connect(signer);
38
+ const ticketToken = enclaveTicketToken.connect(signer);
39
+ const usdcToken = mockStableToken.connect(signer);
40
+ const bondingRegistryConnected = bondingRegistry.connect(signer);
41
+ try {
42
+ console.log("Step 1: Checking balances...");
43
+ const enclBalance = await licenseToken.balanceOf(signer.address);
44
+ const usdcBalance = await usdcToken.balanceOf(signer.address);
45
+ console.log(`ENCL balance: ${ethers.formatEther(enclBalance)}`);
46
+ console.log(`USDC balance: ${ethers.formatUnits(usdcBalance, 6)}`);
47
+ const licenseBondAmountBigInt = BigInt(licenseBondAmount);
48
+ const ticketAmountBigInt = BigInt(ticketAmount);
49
+ if (enclBalance < licenseBondAmountBigInt) {
50
+ throw new Error(`Insufficient ENCL balance. Need: ${ethers.formatEther(licenseBondAmountBigInt)}, Have: ${ethers.formatEther(enclBalance)}`);
51
+ }
52
+ if (usdcBalance < ticketAmountBigInt) {
53
+ throw new Error(`Insufficient USDC balance. Need: ${ethers.formatUnits(ticketAmountBigInt, 6)}, Have: ${ethers.formatUnits(usdcBalance, 6)}`);
54
+ }
55
+ console.log("Step 2: Approving ENCL for license bond...");
56
+ const approveTx = await licenseToken.approve(await bondingRegistry.getAddress(), licenseBondAmountBigInt);
57
+ await approveTx.wait();
58
+ console.log("ENCL approved");
59
+ console.log("Step 3: Bonding license...");
60
+ const bondTx = await bondingRegistryConnected.bondLicense(licenseBondAmountBigInt);
61
+ await bondTx.wait();
62
+ console.log(`Licensed bonded: ${ethers.formatEther(licenseBondAmountBigInt)} ENCL`);
63
+ console.log("Step 4: Registering as operator...");
64
+ const isRegistered = await bondingRegistry.isRegistered(signer.address);
65
+ if (!isRegistered) {
66
+ const registerTx = await bondingRegistryConnected.registerOperator();
67
+ await registerTx.wait();
68
+ console.log("Operator registered (automatically added to CiphernodeRegistry)");
69
+ }
70
+ else {
71
+ console.log("Ciphernode is already registered as operator");
72
+ }
73
+ console.log("Step 5: Approving USDC for ticket purchase...");
74
+ const approveUsdcTx = await usdcToken.approve(ticketToken.getAddress(), ticketAmountBigInt);
75
+ await approveUsdcTx.wait();
76
+ console.log("USDC approved");
77
+ console.log("Step 6: Adding ticket balance...");
78
+ const ticketTx = await bondingRegistryConnected.addTicketBalance(ticketAmountBigInt);
79
+ await ticketTx.wait();
80
+ console.log(`Ticket balance added: ${ethers.formatUnits(ticketAmountBigInt, 6)} USDC worth`);
81
+ const isActive = await bondingRegistry.isActive(signer.address);
82
+ const licenseBond = await bondingRegistry.getLicenseBond(signer.address);
83
+ const ticketBalance = await bondingRegistry.getTicketBalance(signer.address);
84
+ console.log("\n=== Registration Complete ===");
85
+ console.log(`Ciphernode: ${signer.address}`);
86
+ console.log(`Registered: ${isRegistered}`);
87
+ console.log(`Active: ${isActive}`);
88
+ console.log(`License Bond: ${ethers.formatEther(licenseBond)} ENCL`);
89
+ console.log(`Ticket Balance: ${ethers.formatUnits(ticketBalance, 6)} USDC worth`);
90
+ }
91
+ catch (error) {
92
+ console.error("Registration failed:", error);
93
+ throw error;
94
+ }
95
+ },
96
+ }))
97
+ .build();
98
+ export const ciphernodeRemove = task("ciphernode:remove", "Deregister a ciphernode from the bonding registry")
99
+ .addOption({
100
+ name: "siblings",
101
+ description: "comma separated siblings from tree proof",
102
+ defaultValue: "",
103
+ })
104
+ .setAction(async () => ({
105
+ default: async ({ siblings }, hre) => {
106
+ const connection = await hre.network.connect();
107
+ const { ethers } = connection;
108
+ const [signer] = await ethers.getSigners();
109
+ console.log(`Deregistering ciphernode: ${signer.address}`);
110
+ const { deployAndSaveBondingRegistry } = await import("../scripts/deployAndSave/bondingRegistry");
111
+ const { bondingRegistry } = await deployAndSaveBondingRegistry({ hre });
112
+ const bondingRegistryConnected = bondingRegistry.connect(signer);
113
+ const siblingsArray = siblings.split(",").map((s) => BigInt(s));
114
+ try {
115
+ console.log("Deregistering operator (will also remove from CiphernodeRegistry)...");
116
+ const tx = await bondingRegistryConnected.deregisterOperator(siblingsArray);
117
+ await tx.wait();
118
+ console.log(`Ciphernode ${signer.address} deregistered`);
119
+ console.log("Note: Funds are now in exit queue. Use claimExits() after the exit delay period.");
120
+ }
121
+ catch (error) {
122
+ console.error("Deregistration failed:", error);
123
+ throw error;
124
+ }
125
+ },
126
+ }))
127
+ .build();
128
+ export const ciphernodeMintTokens = task("ciphernode:mint-tokens", "Mint ENCL and USDC tokens for a ciphernode (for testing)")
11
129
  .addOption({
12
130
  name: "ciphernodeAddress",
13
- description: "address of ciphernode to register",
131
+ description: "address of ciphernode to mint tokens for",
14
132
  defaultValue: ZeroAddress,
133
+ })
134
+ .addOption({
135
+ name: "enclAmount",
136
+ description: "amount of ENCL to mint (in ether units, e.g., 2000 for 2000 ENCL)",
137
+ defaultValue: "2000",
138
+ })
139
+ .addOption({
140
+ name: "usdcAmount",
141
+ description: "amount of USDC to mint (in USDC units, e.g., 1000 for 1000 USDC)",
142
+ defaultValue: "1000",
15
143
  })
16
144
  .setAction(async () => ({
17
- default: async ({ ciphernodeAddress }, hre) => {
18
- const { deployAndSaveCiphernodeRegistryOwnable } = await import("../scripts/deployAndSave/ciphernodeRegistryOwnable");
19
- const { ciphernodeRegistry } = await deployAndSaveCiphernodeRegistryOwnable({ hre });
20
- const tx = await ciphernodeRegistry.addCiphernode(ciphernodeAddress);
21
- await tx.wait();
22
- console.log(`Ciphernode ${ciphernodeAddress} registered`);
145
+ default: async ({ ciphernodeAddress, enclAmount, usdcAmount }, hre) => {
146
+ const connection = await hre.network.connect();
147
+ const { ethers } = connection;
148
+ if (ciphernodeAddress === ZeroAddress) {
149
+ throw new Error("Ciphernode address is required. Use --ciphernode-address option.");
150
+ }
151
+ const { deployAndSaveEnclaveToken } = await import("../scripts/deployAndSave/enclaveToken");
152
+ const { enclaveToken } = await deployAndSaveEnclaveToken({ hre });
153
+ const { deployAndSaveMockStableToken } = await import("../scripts/deployAndSave/mockStableToken");
154
+ const { mockStableToken } = await deployAndSaveMockStableToken({
155
+ hre,
156
+ });
157
+ const [signer] = await ethers.getSigners();
158
+ const enclaveTokenContract = enclaveToken.connect(signer);
159
+ const mockUSDCContract = mockStableToken.connect(signer);
160
+ try {
161
+ console.log(`Minting tokens for: ${ciphernodeAddress}`);
162
+ console.log(`Minting ${enclAmount} ENCL...`);
163
+ const enclTx = await enclaveTokenContract.mintAllocation(ciphernodeAddress, ethers.parseEther(enclAmount), "Ciphernode allocation");
164
+ await enclTx.wait();
165
+ console.log(`${enclAmount} ENCL minted`);
166
+ console.log(`Minting ${usdcAmount} USDC...`);
167
+ const usdcTx = await mockUSDCContract.mint(ciphernodeAddress, ethers.parseUnits(usdcAmount, 6));
168
+ await usdcTx.wait();
169
+ console.log(`${usdcAmount} USDC minted`);
170
+ const enclBalance = await enclaveTokenContract.balanceOf(ciphernodeAddress);
171
+ const usdcBalance = await mockUSDCContract.balanceOf(ciphernodeAddress);
172
+ console.log("\n=== Token Balances ===");
173
+ console.log(`ENCL: ${ethers.formatEther(enclBalance)}`);
174
+ console.log(`USDC: ${ethers.formatUnits(usdcBalance, 6)}`);
175
+ const transfersRestricted = await enclaveTokenContract.transfersRestricted();
176
+ if (transfersRestricted) {
177
+ console.log("Allowing EnclaveToken to be transferrable...");
178
+ const transferEnabledTx = await enclaveTokenContract.setTransferRestriction(false);
179
+ await transferEnabledTx.wait();
180
+ console.log("EnclaveToken transfers are now enabled");
181
+ }
182
+ }
183
+ catch (error) {
184
+ console.error("Token minting failed:", error);
185
+ throw error;
186
+ }
23
187
  },
24
188
  }))
25
189
  .build();
26
- export const ciphernodeRemove = task("ciphernode:remove", "Remove a ciphernode from the registry")
190
+ export const ciphernodeAdminAdd = task("ciphernode:admin-add", "Register a ciphernode using admin privileges (for testing/setup)")
27
191
  .addOption({
28
192
  name: "ciphernodeAddress",
29
- description: "address of ciphernode to remove",
193
+ description: "address of ciphernode to register",
30
194
  defaultValue: ZeroAddress,
31
195
  })
32
196
  .addOption({
33
- name: "siblings",
34
- description: "comma separated siblings from tree proof",
197
+ name: "adminPrivateKey",
198
+ description: "private key of admin wallet (optional, uses anvil first key if not provided)",
35
199
  defaultValue: "",
200
+ })
201
+ .addOption({
202
+ name: "licenseBondAmount",
203
+ description: "amount of ENCL to bond (in ether units, e.g., 1000 for 1000 ENCL)",
204
+ defaultValue: "1000",
205
+ })
206
+ .addOption({
207
+ name: "ticketAmount",
208
+ description: "amount of USDC for tickets (in USDC units, e.g., 1000 for 1000 USDC)",
209
+ defaultValue: "1000",
36
210
  })
37
211
  .setAction(async () => ({
38
- default: async ({ ciphernodeAddress, siblings }, hre) => {
39
- const { deployAndSaveCiphernodeRegistryOwnable } = await import("../scripts/deployAndSave/ciphernodeRegistryOwnable");
40
- const { ciphernodeRegistry } = await deployAndSaveCiphernodeRegistryOwnable({ hre });
41
- const siblingsArray = siblings.split(",").map((s) => BigInt(s));
42
- const tx = await ciphernodeRegistry.removeCiphernode(ciphernodeAddress, siblingsArray);
43
- await tx.wait();
44
- console.log(`Ciphernode ${ciphernodeAddress} removed`);
212
+ default: async ({ ciphernodeAddress, adminPrivateKey, licenseBondAmount, ticketAmount }, hre) => {
213
+ const connection = await hre.network.connect();
214
+ const { ethers } = connection;
215
+ if (ciphernodeAddress === ZeroAddress) {
216
+ throw new Error("Ciphernode address is required. Use --ciphernode-address option.");
217
+ }
218
+ let adminWallet;
219
+ if (adminPrivateKey) {
220
+ adminWallet = new ethers.Wallet(adminPrivateKey, ethers.provider);
221
+ }
222
+ else {
223
+ const anvilFirstKey = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80";
224
+ adminWallet = new ethers.Wallet(anvilFirstKey, ethers.provider);
225
+ }
226
+ console.log(`Admin wallet: ${adminWallet.address}`);
227
+ console.log(`Registering ciphernode: ${ciphernodeAddress}`);
228
+ const { deployAndSaveBondingRegistry } = await import("../scripts/deployAndSave/bondingRegistry");
229
+ const { bondingRegistry } = await deployAndSaveBondingRegistry({ hre });
230
+ const { deployAndSaveEnclaveToken } = await import("../scripts/deployAndSave/enclaveToken");
231
+ const { enclaveToken } = await deployAndSaveEnclaveToken({ hre });
232
+ const { deployAndSaveMockStableToken } = await import("../scripts/deployAndSave/mockStableToken");
233
+ const { mockStableToken: mockUSDC } = await deployAndSaveMockStableToken({
234
+ hre,
235
+ });
236
+ const enclaveTokenConnected = enclaveToken.connect(adminWallet);
237
+ const mockUSDCConnected = mockUSDC.connect(adminWallet);
238
+ const ticketTokenAddress = await bondingRegistry.ticketToken();
239
+ try {
240
+ const licenseBondWei = ethers.parseEther(licenseBondAmount);
241
+ const ticketAmountWei = ethers.parseUnits(ticketAmount, 6);
242
+ console.log("Step 1: Minting and transferring ENCL to ciphernode...");
243
+ const enclTx = await enclaveTokenConnected.mintAllocation(adminWallet.address, licenseBondWei, "Admin allocation for ciphernode registration");
244
+ await enclTx.wait();
245
+ const transferTx = await enclaveTokenConnected.transfer(ciphernodeAddress, licenseBondWei);
246
+ await transferTx.wait();
247
+ console.log(`${licenseBondAmount} ENCL transferred to ciphernode`);
248
+ console.log("Step 2: Minting USDC to admin...");
249
+ const usdcTx = await mockUSDCConnected.mint(adminWallet.address, ticketAmountWei);
250
+ await usdcTx.wait();
251
+ console.log(`${ticketAmount} USDC minted to admin`);
252
+ console.log("Step 3: Impersonating ciphernode for license operations...");
253
+ await connection.provider.request({
254
+ method: "hardhat_impersonateAccount",
255
+ params: [ciphernodeAddress],
256
+ });
257
+ await connection.provider.request({
258
+ method: "hardhat_setBalance",
259
+ params: [ciphernodeAddress, "0x1000000000000000000000"],
260
+ });
261
+ const ciphernodeSigner = await ethers.getSigner(ciphernodeAddress);
262
+ const enclaveTokenAsCiphernode = enclaveToken.connect(ciphernodeSigner);
263
+ const bondingRegistryAsCiphernode = bondingRegistry.connect(ciphernodeSigner);
264
+ const approveTx = await enclaveTokenAsCiphernode.approve(await bondingRegistry.getAddress(), licenseBondWei);
265
+ await approveTx.wait();
266
+ const bondTx = await bondingRegistryAsCiphernode.bondLicense(licenseBondWei);
267
+ await bondTx.wait();
268
+ console.log(`License bonded: ${licenseBondAmount} ENCL`);
269
+ const registerTx = await bondingRegistryAsCiphernode.registerOperator();
270
+ await registerTx.wait();
271
+ console.log("Operator registered (automatically added to CiphernodeRegistry)");
272
+ await connection.provider.request({
273
+ method: "hardhat_stopImpersonatingAccount",
274
+ params: [ciphernodeAddress],
275
+ });
276
+ console.log("Step 4: Adding ticket balance via admin...");
277
+ const approveUsdcTx = await mockUSDCConnected.approve(ticketTokenAddress, ticketAmountWei);
278
+ await approveUsdcTx.wait();
279
+ await connection.provider.request({
280
+ method: "hardhat_impersonateAccount",
281
+ params: [ciphernodeAddress],
282
+ });
283
+ await connection.provider.request({
284
+ method: "hardhat_setBalance",
285
+ params: [ciphernodeAddress, "0x1000000000000000000000"],
286
+ });
287
+ const ciphernodeSigner2 = await ethers.getSigner(ciphernodeAddress);
288
+ const bondingRegistryAsCiphernode2 = bondingRegistry.connect(ciphernodeSigner2);
289
+ const usdcTransferTx = await mockUSDCConnected.transfer(ciphernodeAddress, ticketAmountWei);
290
+ await usdcTransferTx.wait();
291
+ const mockUSDCAsCiphernode = mockUSDC.connect(ciphernodeSigner2);
292
+ const approveUsdcAsCiphernodeTx = await mockUSDCAsCiphernode.approve(ticketTokenAddress, ticketAmountWei);
293
+ await approveUsdcAsCiphernodeTx.wait();
294
+ const addTicketTx = await bondingRegistryAsCiphernode2.addTicketBalance(ticketAmountWei);
295
+ await addTicketTx.wait();
296
+ console.log(`Ticket balance added: ${ticketAmount} USDC worth`);
297
+ await connection.provider.request({
298
+ method: "hardhat_stopImpersonatingAccount",
299
+ params: [ciphernodeAddress],
300
+ });
301
+ const isRegistered = await bondingRegistry.isRegistered(ciphernodeAddress);
302
+ const isActive = await bondingRegistry.isActive(ciphernodeAddress);
303
+ const licenseBond = await bondingRegistry.getLicenseBond(ciphernodeAddress);
304
+ const ticketBalance = await bondingRegistry.getTicketBalance(ciphernodeAddress);
305
+ console.log("\n=== Registration Complete ===");
306
+ console.log(`Ciphernode: ${ciphernodeAddress}`);
307
+ console.log(`Registered: ${isRegistered}`);
308
+ console.log(`Active: ${isActive}`);
309
+ console.log(`License Bond: ${ethers.formatEther(licenseBond)} ENCL`);
310
+ console.log(`Ticket Balance: ${ethers.formatUnits(ticketBalance, 6)} USDC worth`);
311
+ }
312
+ catch (error) {
313
+ console.error("Admin registration failed:", error);
314
+ throw error;
315
+ }
45
316
  },
46
317
  }))
47
318
  .build();
@@ -1 +1 @@
1
- {"version":3,"file":"enclave.d.ts","sourceRoot":"","sources":["../../tasks/enclave.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gBAAgB,iDA2KnB,CAAC;AAEX,eAAO,MAAM,QAAQ,iDAuBX,CAAC;AAEX,eAAO,MAAM,gBAAgB,iDAoDnB,CAAC;AAEX,eAAO,MAAM,UAAU,iDA6Bb,CAAC;AAEX,eAAO,MAAM,YAAY,iDA6Cf,CAAC;AAEX,eAAO,MAAM,iBAAiB,iDAoEpB,CAAC;AAEX,eAAO,MAAM,gBAAgB,iDAoEnB,CAAC"}
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,iDA2DnB,CAAC;AAEX,eAAO,MAAM,UAAU,iDA4Cb,CAAC;AAEX,eAAO,MAAM,YAAY,iDA+Cf,CAAC;AAEX,eAAO,MAAM,iBAAiB,iDAsEpB,CAAC;AAEX,eAAO,MAAM,gBAAgB,iDAsEnB,CAAC"}
@@ -62,31 +62,40 @@ export const requestCommittee = task("committee:new", "Request a new ciphernode
62
62
  description: "parameters for the compute provider",
63
63
  defaultValue: ZeroAddress,
64
64
  type: ArgumentType.STRING,
65
+ })
66
+ .addOption({
67
+ name: "customParams",
68
+ description: "parameters for the custom params",
69
+ defaultValue: ZeroAddress,
70
+ type: ArgumentType.STRING,
65
71
  })
66
72
  .setAction(async () => ({
67
- default: async ({ filter, thresholdQuorum, thresholdTotal, windowStart, windowEnd, duration, e3Address, e3Params, computeParams, }, hre) => {
73
+ default: async ({ thresholdQuorum, thresholdTotal, windowStart, windowEnd, duration, e3Address, e3Params, computeParams, customParams, }, hre) => {
74
+ const connection = await hre.network.connect();
75
+ const { ethers } = connection;
68
76
  const { deployAndSaveEnclave } = await import("../scripts/deployAndSave/enclave");
69
- const { enclave } = await deployAndSaveEnclave({ hre });
77
+ const { deployAndSaveMockStableToken } = await import("../scripts/deployAndSave/mockStableToken");
78
+ const { enclave } = await deployAndSaveEnclave({
79
+ hre,
80
+ });
81
+ const { mockStableToken: mockUSDC } = await deployAndSaveMockStableToken({
82
+ hre,
83
+ });
84
+ const [signer] = await ethers.getSigners();
85
+ const enclaveContract = enclave.connect(signer);
86
+ const mockUSDCContract = mockUSDC.connect(signer);
70
87
  const enclaveArgs = readDeploymentArgs("Enclave", hre.globalOptions.network);
71
88
  if (!enclaveArgs) {
72
89
  throw new Error("Enclave deployment arguments not found");
73
90
  }
74
- const registryArgs = readDeploymentArgs("CiphernodeRegistry", hre.globalOptions.network);
91
+ const registryArgs = readDeploymentArgs("CiphernodeRegistryOwnable", hre.globalOptions.network);
75
92
  if (!registryArgs) {
76
93
  throw new Error("CiphernodeRegistry deployment arguments not found");
77
94
  }
78
- const filterArgs = readDeploymentArgs("NaiveRegistryFilter", hre.globalOptions.network);
79
- if (!filterArgs) {
80
- throw new Error("NaiveRegistryFilter deployment arguments not found");
81
- }
82
95
  const mockE3ProgramArgs = readDeploymentArgs("MockE3Program", hre.globalOptions.network);
83
96
  let e3ProgramParams = e3Params;
84
- const mockInputValidatorArgs = readDeploymentArgs("MockInputValidator", hre.globalOptions.network);
85
97
  if (e3ProgramParams === ZeroAddress) {
86
- if (!mockInputValidatorArgs) {
87
- throw new Error("MockInputValidator deployment arguments not found");
88
- }
89
- e3ProgramParams = zeroPadValue(mockInputValidatorArgs.address, 32);
98
+ e3ProgramParams = zeroPadValue(e3ProgramParams, 32);
90
99
  }
91
100
  let computeProviderParams = computeParams;
92
101
  const mockDecryptionVerifierArgs = readDeploymentArgs("MockDecryptionVerifier", hre.globalOptions.network);
@@ -96,24 +105,36 @@ export const requestCommittee = task("committee:new", "Request a new ciphernode
96
105
  }
97
106
  computeProviderParams = zeroPadValue(mockDecryptionVerifierArgs.address, 32);
98
107
  }
99
- console.log({
100
- filter: filter === ZeroAddress ? filterArgs.address : filter,
101
- threshold: [thresholdQuorum, thresholdTotal],
102
- startWindow: [windowStart, windowEnd],
103
- duration: duration,
104
- e3Program: e3Address === ZeroAddress ? mockE3ProgramArgs.address : e3Address,
105
- e3ProgramParams,
108
+ console.log("Preparing request with the following parameters:", {
109
+ computeParams,
106
110
  computeProviderParams,
107
111
  });
108
- const tx = await enclave.request({
109
- filter: filter === ZeroAddress ? filterArgs.address : filter,
112
+ const requestParams = {
110
113
  threshold: [thresholdQuorum, thresholdTotal],
111
114
  startWindow: [windowStart, windowEnd],
112
115
  duration: duration,
113
116
  e3Program: e3Address === ZeroAddress ? mockE3ProgramArgs.address : e3Address,
114
117
  e3ProgramParams,
115
118
  computeProviderParams,
116
- }, { value: "1000000000000000000" });
119
+ customParams,
120
+ };
121
+ console.log("Request parameters:", requestParams);
122
+ const fee = await enclaveContract.getE3Quote(requestParams);
123
+ console.log(`E3 fee: ${ethers.formatUnits(fee, 6)} USDC`);
124
+ const usdcBalance = await mockUSDCContract.balanceOf(signer.address);
125
+ console.log(`USDC balance: ${ethers.formatUnits(usdcBalance, 6)} USDC`);
126
+ if (usdcBalance < fee) {
127
+ const mintAmount = fee - usdcBalance + ethers.parseUnits("1000", 6);
128
+ console.log(`Minting ${ethers.formatUnits(mintAmount, 6)} USDC...`);
129
+ const mintTx = await mockUSDCContract.mint(signer.address, mintAmount);
130
+ await mintTx.wait();
131
+ console.log("USDC minted");
132
+ }
133
+ console.log("Approving USDC spending...");
134
+ const approveTx = await mockUSDCContract.approve(await enclaveContract.getAddress(), fee);
135
+ await approveTx.wait();
136
+ console.log("USDC approved");
137
+ const tx = await enclaveContract.request(requestParams);
117
138
  console.log("Requesting committee... ", tx.hash);
118
139
  await tx.wait();
119
140
  console.log(`Committee requested`);
@@ -130,7 +151,9 @@ export const enableE3 = task("enclave:enableE3", "Enable an E3 program")
130
151
  .setAction(async () => ({
131
152
  default: async ({ e3Address }, hre) => {
132
153
  const { deployAndSaveEnclave } = await import("../scripts/deployAndSave/enclave");
133
- const { enclave } = await deployAndSaveEnclave({ hre });
154
+ const { enclave } = await deployAndSaveEnclave({
155
+ hre,
156
+ });
134
157
  const tx = await enclave.enableE3Program(e3Address);
135
158
  console.log("Enabling E3 program... ", tx.hash);
136
159
  await tx.wait();
@@ -159,9 +182,12 @@ export const publishCommittee = task("committee:publish", "Publish the publickey
159
182
  })
160
183
  .setAction(async () => ({
161
184
  default: async ({ e3Id, nodes, publicKey }, hre) => {
162
- const { deployAndSaveNaiveRegistryFilter } = await import("../scripts/deployAndSave/naiveRegistryFilter");
163
- const { naiveRegistryFilter } = await deployAndSaveNaiveRegistryFilter({
185
+ const { deployAndSaveCiphernodeRegistryOwnable } = await import("../scripts/deployAndSave/ciphernodeRegistryOwnable");
186
+ const { deployAndSavePoseidonT3 } = await import("../scripts/deployAndSave/poseidonT3");
187
+ const poseidonT3 = await deployAndSavePoseidonT3({ hre });
188
+ const { ciphernodeRegistry } = await deployAndSaveCiphernodeRegistryOwnable({
164
189
  hre,
190
+ poseidonT3Address: poseidonT3,
165
191
  });
166
192
  const nodesToSend = nodes
167
193
  .split(",")
@@ -170,7 +196,7 @@ export const publishCommittee = task("committee:publish", "Publish the publickey
170
196
  if (nodesToSend.length === 0 && nodes.length > 0) {
171
197
  throw new Error("Invalid nodes format: no valid addresses found");
172
198
  }
173
- const tx = await naiveRegistryFilter.publishCommittee(e3Id, nodesToSend, publicKey);
199
+ const tx = await ciphernodeRegistry.publishCommittee(e3Id, nodesToSend, publicKey);
174
200
  console.log("Publishing committee... ", tx.hash);
175
201
  await tx.wait();
176
202
  console.log(`Committee public key published`);
@@ -189,11 +215,24 @@ export const activateE3 = task("e3:activate", "Activate an E3 program")
189
215
  description: "public key of the committee",
190
216
  defaultValue: "",
191
217
  type: ArgumentType.STRING,
218
+ })
219
+ .addOption({
220
+ name: "publicKeyFile",
221
+ description: "path to file containing the public key",
222
+ defaultValue: "",
223
+ type: ArgumentType.STRING,
192
224
  })
193
225
  .setAction(async () => ({
194
- default: async ({ e3Id, publicKey }, hre) => {
226
+ default: async ({ e3Id, publicKey: publicKeyArg, publicKeyFile }, hre) => {
227
+ const publicKey = publicKeyArg ||
228
+ (publicKeyFile ? fs.readFileSync(publicKeyFile, "utf8").trim() : "") ||
229
+ process.env.PUBLIC_KEY;
230
+ if (!publicKey)
231
+ throw new Error("No public key provided!");
195
232
  const { deployAndSaveEnclave } = await import("../scripts/deployAndSave/enclave");
196
- const { enclave } = await deployAndSaveEnclave({ hre });
233
+ const { enclave } = await deployAndSaveEnclave({
234
+ hre,
235
+ });
197
236
  const tx = await enclave.activate(e3Id, publicKey);
198
237
  console.log("Activating E3 program... ", tx.hash);
199
238
  await tx.wait();
@@ -223,7 +262,9 @@ export const publishInput = task("e3:publishInput", "Publish input for an E3 pro
223
262
  .setAction(async () => ({
224
263
  default: async ({ e3Id, data, dataFile }, hre) => {
225
264
  const { deployAndSaveEnclave } = await import("../scripts/deployAndSave/enclave");
226
- const { enclave } = await deployAndSaveEnclave({ hre });
265
+ const { enclave } = await deployAndSaveEnclave({
266
+ hre,
267
+ });
227
268
  let dataToSend = data;
228
269
  if (dataFile) {
229
270
  const file = fs.readFileSync(dataFile);
@@ -270,7 +311,9 @@ export const publishCiphertext = task("e3:publishCiphertext", "Publish ciphertex
270
311
  .setAction(async () => ({
271
312
  default: async ({ e3Id, data, dataFile, proof, proofFile }, hre) => {
272
313
  const { deployAndSaveEnclave } = await import("../scripts/deployAndSave/enclave");
273
- const { enclave } = await deployAndSaveEnclave({ hre });
314
+ const { enclave } = await deployAndSaveEnclave({
315
+ hre,
316
+ });
274
317
  let dataToSend = data;
275
318
  if (dataFile) {
276
319
  const file = fs.readFileSync(dataFile);
@@ -322,7 +365,9 @@ export const publishPlaintext = task("e3:publishPlaintext", "Publish plaintext o
322
365
  .setAction(async () => ({
323
366
  default: async ({ e3Id, data, dataFile, proof, proofFile }, hre) => {
324
367
  const { deployAndSaveEnclave } = await import("../scripts/deployAndSave/enclave");
325
- const { enclave } = await deployAndSaveEnclave({ hre });
368
+ const { enclave } = await deployAndSaveEnclave({
369
+ hre,
370
+ });
326
371
  let dataToSend = data;
327
372
  if (dataFile) {
328
373
  const file = fs.readFileSync(dataFile);