@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CiphernodeRegistryOwnable.spec.d.ts","sourceRoot":"","sources":["../../../test/Registry/CiphernodeRegistryOwnable.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,374 @@
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 { LeanIMT } from "@zk-kit/lean-imt";
7
+ import { expect } from "chai";
8
+ import { network } from "hardhat";
9
+ import { poseidon2 } from "poseidon-lite";
10
+ import BondingRegistryModule from "../../ignition/modules/bondingRegistry";
11
+ import CiphernodeRegistryModule from "../../ignition/modules/ciphernodeRegistry";
12
+ import EnclaveTicketTokenModule from "../../ignition/modules/enclaveTicketToken";
13
+ import EnclaveTokenModule from "../../ignition/modules/enclaveToken";
14
+ import MockStableTokenModule from "../../ignition/modules/mockStableToken";
15
+ import SlashingManagerModule from "../../ignition/modules/slashingManager";
16
+ import { BondingRegistry__factory as BondingRegistryFactory, CiphernodeRegistryOwnable__factory as CiphernodeRegistryFactory, } from "../../types";
17
+ const AddressOne = "0x0000000000000000000000000000000000000001";
18
+ const AddressTwo = "0x0000000000000000000000000000000000000002";
19
+ const AddressThree = "0x0000000000000000000000000000000000000003";
20
+ const { ethers, networkHelpers, ignition } = await network.connect();
21
+ const { loadFixture } = networkHelpers;
22
+ const data = "0xda7a";
23
+ const dataHash = ethers.keccak256(data);
24
+ const SORTITION_SUBMISSION_WINDOW = 3;
25
+ // Hash function used to compute the tree nodes.
26
+ const hash = (a, b) => poseidon2([a, b]);
27
+ describe("CiphernodeRegistryOwnable", function () {
28
+ async function finalizeCommitteeAfterWindow(registry, e3Id) {
29
+ await networkHelpers.time.increase(SORTITION_SUBMISSION_WINDOW + 1);
30
+ await registry.finalizeCommittee(e3Id);
31
+ }
32
+ async function setupOperatorForSortition(operator, bondingRegistry, licenseToken, usdcToken, ticketToken, registry) {
33
+ const operatorAddress = await operator.getAddress();
34
+ await licenseToken.mintAllocation(operatorAddress, ethers.parseEther("10000"), "Test allocation");
35
+ await usdcToken.mint(operatorAddress, ethers.parseUnits("100000", 6));
36
+ await licenseToken
37
+ .connect(operator)
38
+ .approve(await bondingRegistry.getAddress(), ethers.parseEther("2000"));
39
+ await bondingRegistry
40
+ .connect(operator)
41
+ .bondLicense(ethers.parseEther("1000"));
42
+ await bondingRegistry.connect(operator).registerOperator();
43
+ const ticketAmount = ethers.parseUnits("100", 6);
44
+ await usdcToken
45
+ .connect(operator)
46
+ .approve(await ticketToken.getAddress(), ticketAmount);
47
+ await bondingRegistry.connect(operator).addTicketBalance(ticketAmount);
48
+ await registry.addCiphernode(operatorAddress);
49
+ }
50
+ async function setup() {
51
+ const [owner, notTheOwner, operator1, operator2] = await ethers.getSigners();
52
+ const ownerAddress = await owner.getAddress();
53
+ const usdcContract = await ignition.deploy(MockStableTokenModule, {
54
+ parameters: {
55
+ MockUSDC: {
56
+ initialSupply: 1000000,
57
+ },
58
+ },
59
+ });
60
+ const enclTokenContract = await ignition.deploy(EnclaveTokenModule, {
61
+ parameters: {
62
+ EnclaveToken: {
63
+ owner: ownerAddress,
64
+ },
65
+ },
66
+ });
67
+ const ticketTokenContract = await ignition.deploy(EnclaveTicketTokenModule, {
68
+ parameters: {
69
+ EnclaveTicketToken: {
70
+ baseToken: await usdcContract.mockUSDC.getAddress(),
71
+ registry: AddressOne,
72
+ owner: ownerAddress,
73
+ },
74
+ },
75
+ });
76
+ const slashingManagerContract = await ignition.deploy(SlashingManagerModule, {
77
+ parameters: {
78
+ SlashingManager: {
79
+ admin: ownerAddress,
80
+ bondingRegistry: AddressOne,
81
+ },
82
+ },
83
+ });
84
+ const bondingRegistryContract = await ignition.deploy(BondingRegistryModule, {
85
+ parameters: {
86
+ BondingRegistry: {
87
+ owner: ownerAddress,
88
+ ticketToken: await ticketTokenContract.enclaveTicketToken.getAddress(),
89
+ licenseToken: await enclTokenContract.enclaveToken.getAddress(),
90
+ registry: AddressOne,
91
+ slashedFundsTreasury: ownerAddress,
92
+ ticketPrice: ethers.parseUnits("10", 6),
93
+ licenseRequiredBond: ethers.parseEther("1000"),
94
+ minTicketBalance: 5,
95
+ exitDelay: 7 * 24 * 60 * 60,
96
+ },
97
+ },
98
+ });
99
+ const registryContract = await ignition.deploy(CiphernodeRegistryModule, {
100
+ parameters: {
101
+ CiphernodeRegistry: {
102
+ enclaveAddress: ownerAddress,
103
+ owner: ownerAddress,
104
+ submissionWindow: SORTITION_SUBMISSION_WINDOW,
105
+ },
106
+ },
107
+ });
108
+ const registryAddress = await registryContract.cipherNodeRegistry.getAddress();
109
+ const registry = CiphernodeRegistryFactory.connect(registryAddress, owner);
110
+ const bondingRegistry = BondingRegistryFactory.connect(await bondingRegistryContract.bondingRegistry.getAddress(), owner);
111
+ await ticketTokenContract.enclaveTicketToken.setRegistry(await bondingRegistry.getAddress());
112
+ await bondingRegistry.setRegistry(registryAddress);
113
+ await bondingRegistry.setSlashingManager(await slashingManagerContract.slashingManager.getAddress());
114
+ await slashingManagerContract.slashingManager.setBondingRegistry(await bondingRegistry.getAddress());
115
+ await registry.setBondingRegistry(await bondingRegistry.getAddress());
116
+ const tree = new LeanIMT(hash);
117
+ const licenseToken = enclTokenContract.enclaveToken;
118
+ const ticketToken = ticketTokenContract.enclaveTicketToken;
119
+ const usdcToken = usdcContract.mockUSDC;
120
+ await licenseToken.setTransferRestriction(false);
121
+ await setupOperatorForSortition(operator1, bondingRegistry, licenseToken, usdcToken, ticketToken, registry);
122
+ tree.insert(BigInt(await operator1.getAddress()));
123
+ await setupOperatorForSortition(operator2, bondingRegistry, licenseToken, usdcToken, ticketToken, registry);
124
+ tree.insert(BigInt(await operator2.getAddress()));
125
+ await networkHelpers.mine(1);
126
+ return {
127
+ owner,
128
+ notTheOwner,
129
+ operator1,
130
+ operator2,
131
+ registry,
132
+ bondingRegistry,
133
+ licenseToken,
134
+ ticketToken,
135
+ usdcToken,
136
+ tree,
137
+ request: {
138
+ e3Id: 1,
139
+ threshold: [2, 2],
140
+ },
141
+ };
142
+ }
143
+ describe("constructor / initialize()", function () {
144
+ it("correctly sets `_owner` and `enclave` ", async function () {
145
+ const poseidonFactory = await ethers.getContractFactory("PoseidonT3");
146
+ const poseidonDeployment = await poseidonFactory.deploy();
147
+ await poseidonDeployment.waitForDeployment();
148
+ const poseidonAddress = await poseidonDeployment.getAddress();
149
+ const [deployer] = await ethers.getSigners();
150
+ if (!deployer)
151
+ throw new Error("Bad getSigners() output");
152
+ const ciphernodeRegistryFactory = await ethers.getContractFactory("CiphernodeRegistryOwnable", {
153
+ libraries: {
154
+ PoseidonT3: poseidonAddress,
155
+ },
156
+ });
157
+ const implementation = await ciphernodeRegistryFactory.deploy();
158
+ await implementation.waitForDeployment();
159
+ const implementationAddress = await implementation.getAddress();
160
+ const initData = ciphernodeRegistryFactory.interface.encodeFunctionData("initialize", [deployer.address, AddressTwo, SORTITION_SUBMISSION_WINDOW]);
161
+ const proxyFactory = await ethers.getContractFactory("TransparentUpgradeableProxy");
162
+ const proxy = await proxyFactory.deploy(implementationAddress, deployer.address, initData);
163
+ await proxy.waitForDeployment();
164
+ const proxyAddress = await proxy.getAddress();
165
+ const ciphernodeRegistry = CiphernodeRegistryFactory.connect(proxyAddress, deployer);
166
+ expect(await ciphernodeRegistry.owner()).to.equal(deployer.address);
167
+ expect(await ciphernodeRegistry.enclave()).to.equal(AddressTwo);
168
+ expect(await ciphernodeRegistry.sortitionSubmissionWindow()).to.equal(SORTITION_SUBMISSION_WINDOW);
169
+ });
170
+ });
171
+ describe("requestCommittee()", function () {
172
+ it("reverts if committee has already been requested for given e3Id", async function () {
173
+ const { registry, request } = await loadFixture(setup);
174
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
175
+ await expect(registry.requestCommittee(request.e3Id, 0, request.threshold)).to.be.revertedWithCustomError(registry, "CommitteeAlreadyRequested");
176
+ });
177
+ it("stores the root of the ciphernode registry at the time of the request", async function () {
178
+ const { registry, request } = await loadFixture(setup);
179
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
180
+ expect(await registry.rootAt(request.e3Id)).to.equal(await registry.root());
181
+ });
182
+ it("emits a CommitteeRequested event", async function () {
183
+ const { registry, request } = await loadFixture(setup);
184
+ const tx = await registry.requestCommittee(request.e3Id, 0n, request.threshold);
185
+ const receipt = await tx.wait();
186
+ if (!receipt)
187
+ throw new Error("Transaction failed");
188
+ const sWindow = await registry.sortitionSubmissionWindow();
189
+ const block = await ethers.provider.getBlock(receipt.blockNumber);
190
+ if (!block)
191
+ throw new Error("Block not found");
192
+ const expectedBlockNumber = BigInt(receipt.blockNumber);
193
+ const expectedDeadline = BigInt(block.timestamp) + sWindow;
194
+ await expect(tx)
195
+ .to.emit(registry, "CommitteeRequested")
196
+ .withArgs(request.e3Id, 0n, request.threshold, expectedBlockNumber, expectedDeadline);
197
+ });
198
+ it("returns true if the request is successful", async function () {
199
+ const { registry, request } = await loadFixture(setup);
200
+ expect(await registry.requestCommittee.staticCall(request.e3Id, 0, request.threshold)).to.be.true;
201
+ });
202
+ });
203
+ describe("publishCommittee()", function () {
204
+ it("reverts if the caller is not the owner", async function () {
205
+ const { registry, request, notTheOwner, operator1, operator2 } = await loadFixture(setup);
206
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
207
+ await registry.connect(operator1).submitTicket(request.e3Id, 1);
208
+ await registry.connect(operator2).submitTicket(request.e3Id, 1);
209
+ await finalizeCommitteeAfterWindow(registry, request.e3Id);
210
+ await expect(registry
211
+ .connect(notTheOwner)
212
+ .publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data)).to.be.revertedWithCustomError(registry, "OwnableUnauthorizedAccount");
213
+ });
214
+ it("stores the public key of the committee", async function () {
215
+ const { registry, request, operator1, operator2 } = await loadFixture(setup);
216
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
217
+ await networkHelpers.mine(1);
218
+ await registry.connect(operator1).submitTicket(request.e3Id, 1);
219
+ await registry.connect(operator2).submitTicket(request.e3Id, 1);
220
+ await finalizeCommitteeAfterWindow(registry, request.e3Id);
221
+ await registry.publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data);
222
+ expect(await registry.committeePublicKey(request.e3Id)).to.equal(dataHash);
223
+ });
224
+ it("emits a CommitteePublished event", async function () {
225
+ const { registry, request, operator1, operator2 } = await loadFixture(setup);
226
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
227
+ // Submit tickets from both operators and finalize
228
+ await registry.connect(operator1).submitTicket(request.e3Id, 1);
229
+ await registry.connect(operator2).submitTicket(request.e3Id, 1);
230
+ await finalizeCommitteeAfterWindow(registry, request.e3Id);
231
+ await expect(await registry.publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data))
232
+ .to.emit(registry, "CommitteePublished")
233
+ .withArgs(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data);
234
+ });
235
+ });
236
+ describe("addCiphernode()", function () {
237
+ it("reverts if the caller is not the owner", async function () {
238
+ const { registry, notTheOwner } = await loadFixture(setup);
239
+ await expect(registry.connect(notTheOwner).addCiphernode(AddressThree)).to.be.revertedWithCustomError(registry, "NotOwnerOrBondingRegistry");
240
+ });
241
+ it("adds the ciphernode to the registry", async function () {
242
+ const { registry } = await loadFixture(setup);
243
+ expect(await registry.addCiphernode(AddressThree));
244
+ expect(await registry.isEnabled(AddressThree)).to.be.true;
245
+ });
246
+ it("increments numCiphernodes", async function () {
247
+ const { registry } = await loadFixture(setup);
248
+ const numCiphernodes = await registry.numCiphernodes();
249
+ expect(await registry.addCiphernode(AddressThree));
250
+ expect(await registry.numCiphernodes()).to.equal(numCiphernodes + BigInt(1));
251
+ });
252
+ it("emits a CiphernodeAdded event", async function () {
253
+ const { registry } = await loadFixture(setup);
254
+ const treeSize = await registry.treeSize();
255
+ const numCiphernodes = await registry.numCiphernodes();
256
+ await expect(await registry.addCiphernode(AddressThree))
257
+ .to.emit(registry, "CiphernodeAdded")
258
+ .withArgs(AddressThree, treeSize, numCiphernodes + BigInt(1), treeSize + BigInt(1));
259
+ });
260
+ });
261
+ describe("removeCiphernode()", function () {
262
+ it("reverts if the caller is not the owner", async function () {
263
+ const { registry, notTheOwner } = await loadFixture(setup);
264
+ await expect(registry.connect(notTheOwner).removeCiphernode(AddressOne, [])).to.be.revertedWithCustomError(registry, "NotOwnerOrBondingRegistry");
265
+ });
266
+ it("removes the ciphernode from the registry", async function () {
267
+ const { registry, operator1, tree } = await loadFixture(setup);
268
+ const operator1Address = await operator1.getAddress();
269
+ const localTree = new LeanIMT(hash);
270
+ for (let i = 0; i < tree.size; i++) {
271
+ localTree.insert(tree.leaves[i]);
272
+ }
273
+ const index = localTree.indexOf(BigInt(operator1Address));
274
+ const proof = localTree.generateProof(index);
275
+ localTree.update(index, BigInt(0));
276
+ expect(await registry.isEnabled(operator1Address)).to.be.true;
277
+ expect(await registry.removeCiphernode(operator1Address, proof.siblings));
278
+ expect(await registry.isEnabled(operator1Address)).to.be.false;
279
+ expect(await registry.root()).to.equal(localTree.root);
280
+ });
281
+ it("decrements numCiphernodes", async function () {
282
+ const { registry, operator1, tree } = await loadFixture(setup);
283
+ const operator1Address = await operator1.getAddress();
284
+ const numCiphernodes = await registry.numCiphernodes();
285
+ const index = tree.indexOf(BigInt(operator1Address));
286
+ const proof = tree.generateProof(index);
287
+ expect(await registry.removeCiphernode(operator1Address, proof.siblings));
288
+ expect(await registry.numCiphernodes()).to.equal(numCiphernodes - BigInt(1));
289
+ });
290
+ it("emits a CiphernodeRemoved event", async function () {
291
+ const { registry, operator1, tree } = await loadFixture(setup);
292
+ const operator1Address = await operator1.getAddress();
293
+ const numCiphernodes = await registry.numCiphernodes();
294
+ const size = await registry.treeSize();
295
+ const index = tree.indexOf(BigInt(operator1Address));
296
+ const proof = tree.generateProof(index);
297
+ await expect(registry.removeCiphernode(operator1Address, proof.siblings))
298
+ .to.emit(registry, "CiphernodeRemoved")
299
+ .withArgs(operator1Address, index, numCiphernodes - BigInt(1), size);
300
+ });
301
+ });
302
+ describe("setEnclave()", function () {
303
+ it("reverts if the caller is not the owner", async function () {
304
+ const { registry, notTheOwner } = await loadFixture(setup);
305
+ await expect(registry.connect(notTheOwner).setEnclave(AddressThree)).to.be.revertedWithCustomError(registry, "OwnableUnauthorizedAccount");
306
+ });
307
+ it("sets the enclave address", async function () {
308
+ const { registry } = await loadFixture(setup);
309
+ expect(await registry.setEnclave(AddressThree));
310
+ expect(await registry.enclave()).to.equal(AddressThree);
311
+ });
312
+ it("emits an EnclaveSet event", async function () {
313
+ const { registry } = await loadFixture(setup);
314
+ await expect(await registry.setEnclave(AddressThree))
315
+ .to.emit(registry, "EnclaveSet")
316
+ .withArgs(AddressThree);
317
+ });
318
+ });
319
+ describe("committeePublicKey()", function () {
320
+ it("returns the public key of the committee for the given e3Id", async function () {
321
+ const { registry, request, operator1, operator2 } = await loadFixture(setup);
322
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
323
+ await registry.connect(operator1).submitTicket(request.e3Id, 1);
324
+ await registry.connect(operator2).submitTicket(request.e3Id, 1);
325
+ await finalizeCommitteeAfterWindow(registry, request.e3Id);
326
+ await registry.publishCommittee(request.e3Id, [await operator1.getAddress(), await operator2.getAddress()], data);
327
+ expect(await registry.committeePublicKey(request.e3Id)).to.equal(dataHash);
328
+ });
329
+ it("reverts if the committee has not been published", async function () {
330
+ const { registry, request } = await loadFixture(setup);
331
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
332
+ await expect(registry.committeePublicKey(request.e3Id)).to.be.revertedWithCustomError(registry, "CommitteeNotPublished");
333
+ });
334
+ });
335
+ describe("isCiphernodeEligible()", function () {
336
+ it("returns true if the ciphernode is in the registry", async function () {
337
+ const { registry, operator1 } = await loadFixture(setup);
338
+ expect(await registry.isEnabled(await operator1.getAddress())).to.be.true;
339
+ });
340
+ it("returns false if the ciphernode is not in the registry", async function () {
341
+ const { registry } = await loadFixture(setup);
342
+ expect(await registry.isCiphernodeEligible(AddressThree)).to.be.false;
343
+ });
344
+ });
345
+ describe("isEnabled()", function () {
346
+ it("returns true if the ciphernode is currently enabled", async function () {
347
+ const { registry, operator1 } = await loadFixture(setup);
348
+ expect(await registry.isEnabled(await operator1.getAddress())).to.be.true;
349
+ });
350
+ it("returns false if the ciphernode is not currently enabled", async function () {
351
+ const { registry } = await loadFixture(setup);
352
+ expect(await registry.isEnabled(AddressThree)).to.be.false;
353
+ });
354
+ });
355
+ describe("root()", function () {
356
+ it("returns the root of the ciphernode registry merkle tree", async function () {
357
+ const { registry, tree } = await loadFixture(setup);
358
+ expect(await registry.root()).to.equal(tree.root);
359
+ });
360
+ });
361
+ describe("rootAt()", function () {
362
+ it("returns the root of the ciphernode registry merkle tree at the given e3Id", async function () {
363
+ const { registry, tree, request } = await loadFixture(setup);
364
+ await registry.requestCommittee(request.e3Id, 0, request.threshold);
365
+ expect(await registry.rootAt(request.e3Id)).to.equal(tree.root);
366
+ });
367
+ });
368
+ describe("treeSize()", function () {
369
+ it("returns the size of the ciphernode registry merkle tree", async function () {
370
+ const { registry, tree } = await loadFixture(setup);
371
+ expect(await registry.treeSize()).to.equal(tree.size);
372
+ });
373
+ });
374
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SlashingManager.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlashingManager.spec.d.ts","sourceRoot":"","sources":["../../../test/Slashing/SlashingManager.spec.ts"],"names":[],"mappings":""}