@enclave-e3/contracts 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +3 -3
  2. package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/artifacts.d.ts +3 -3
  3. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +1 -1
  4. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +3 -3
  5. package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/artifacts.d.ts +4 -4
  6. package/artifacts/build-info/{solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.json → solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.json} +27 -12
  7. package/artifacts/build-info/solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.output.json +1 -0
  8. package/artifacts/contracts/E3RefundManager.sol/E3RefundManager.json +684 -0
  9. package/artifacts/contracts/E3RefundManager.sol/artifacts.d.ts +27 -0
  10. package/artifacts/contracts/Enclave.sol/Enclave.json +530 -182
  11. package/artifacts/contracts/Enclave.sol/artifacts.d.ts +4 -4
  12. package/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json +14 -1
  13. package/artifacts/contracts/interfaces/IBondingRegistry.sol/artifacts.d.ts +2 -2
  14. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json +55 -5
  15. package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/artifacts.d.ts +2 -2
  16. package/artifacts/contracts/interfaces/IComputeProvider.sol/IComputeProvider.json +1 -1
  17. package/artifacts/contracts/interfaces/IComputeProvider.sol/artifacts.d.ts +1 -1
  18. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/IDecryptionVerifier.json +1 -1
  19. package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/artifacts.d.ts +1 -1
  20. package/artifacts/contracts/interfaces/IE3Program.sol/IE3Program.json +19 -24
  21. package/artifacts/contracts/interfaces/IE3Program.sol/artifacts.d.ts +2 -2
  22. package/artifacts/contracts/interfaces/IE3RefundManager.sol/IE3RefundManager.json +470 -0
  23. package/artifacts/contracts/interfaces/IE3RefundManager.sol/artifacts.d.ts +27 -0
  24. package/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json +383 -128
  25. package/artifacts/contracts/interfaces/IEnclave.sol/artifacts.d.ts +2 -2
  26. package/artifacts/contracts/interfaces/ISlashVerifier.sol/ISlashVerifier.json +1 -1
  27. package/artifacts/contracts/interfaces/ISlashVerifier.sol/artifacts.d.ts +1 -1
  28. package/artifacts/contracts/interfaces/ISlashingManager.sol/ISlashingManager.json +1 -1
  29. package/artifacts/contracts/interfaces/ISlashingManager.sol/artifacts.d.ts +1 -1
  30. package/artifacts/contracts/lib/ExitQueueLib.sol/ExitQueueLib.json +1 -1
  31. package/artifacts/contracts/lib/ExitQueueLib.sol/artifacts.d.ts +1 -1
  32. package/artifacts/contracts/registry/BondingRegistry.sol/BondingRegistry.json +16 -3
  33. package/artifacts/contracts/registry/BondingRegistry.sol/artifacts.d.ts +4 -4
  34. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/CiphernodeRegistryOwnable.json +91 -25
  35. package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/artifacts.d.ts +6 -6
  36. package/artifacts/contracts/slashing/SlashingManager.sol/SlashingManager.json +3 -3
  37. package/artifacts/contracts/slashing/SlashingManager.sol/artifacts.d.ts +3 -3
  38. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.json +57 -7
  39. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.json +57 -7
  40. package/artifacts/contracts/test/MockCiphernodeRegistry.sol/artifacts.d.ts +8 -8
  41. package/artifacts/contracts/test/MockComputeProvider.sol/MockComputeProvider.json +3 -3
  42. package/artifacts/contracts/test/MockComputeProvider.sol/artifacts.d.ts +3 -3
  43. package/artifacts/contracts/test/MockDecryptionVerifier.sol/MockDecryptionVerifier.json +1 -1
  44. package/artifacts/contracts/test/MockDecryptionVerifier.sol/artifacts.d.ts +1 -1
  45. package/artifacts/contracts/test/MockE3Program.sol/MockE3Program.json +21 -26
  46. package/artifacts/contracts/test/MockE3Program.sol/artifacts.d.ts +4 -4
  47. package/artifacts/contracts/test/MockSlashingVerifier.sol/MockSlashingVerifier.json +1 -1
  48. package/artifacts/contracts/test/MockSlashingVerifier.sol/artifacts.d.ts +1 -1
  49. package/artifacts/contracts/test/MockStableToken.sol/MockUSDC.json +3 -3
  50. package/artifacts/contracts/test/MockStableToken.sol/artifacts.d.ts +3 -3
  51. package/artifacts/contracts/token/EnclaveTicketToken.sol/EnclaveTicketToken.json +14 -22
  52. package/artifacts/contracts/token/EnclaveTicketToken.sol/artifacts.d.ts +4 -4
  53. package/artifacts/contracts/token/EnclaveToken.sol/EnclaveToken.json +10 -10
  54. package/artifacts/contracts/token/EnclaveToken.sol/artifacts.d.ts +4 -4
  55. package/artifacts/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.json +89 -0
  56. package/artifacts/contracts/verifier/DkgPkVerifier.sol/CommitmentSchemeLib.json +13 -0
  57. package/artifacts/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.json +186 -0
  58. package/artifacts/contracts/verifier/DkgPkVerifier.sol/FrLib.json +13 -0
  59. package/artifacts/contracts/verifier/DkgPkVerifier.sol/Honk.json +13 -0
  60. package/artifacts/contracts/verifier/DkgPkVerifier.sol/HonkVerificationKey.json +13 -0
  61. package/artifacts/contracts/verifier/DkgPkVerifier.sol/IVerifier.json +38 -0
  62. package/artifacts/contracts/verifier/DkgPkVerifier.sol/RelationsLib.json +13 -0
  63. package/artifacts/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.json +400 -0
  64. package/artifacts/contracts/verifier/DkgPkVerifier.sol/artifacts.d.ts +155 -0
  65. package/artifacts/poseidon-solidity/PoseidonT3.sol/PoseidonT3.json +1 -1
  66. package/artifacts/poseidon-solidity/PoseidonT3.sol/artifacts.d.ts +1 -1
  67. package/contracts/E3RefundManager.sol +365 -0
  68. package/contracts/Enclave.sol +426 -119
  69. package/contracts/interfaces/IBondingRegistry.sol +6 -0
  70. package/contracts/interfaces/ICiphernodeRegistry.sol +29 -7
  71. package/contracts/interfaces/IE3.sol +2 -6
  72. package/contracts/interfaces/IE3Program.sol +3 -7
  73. package/contracts/interfaces/IE3RefundManager.sol +150 -0
  74. package/contracts/interfaces/IEnclave.sol +186 -64
  75. package/contracts/registry/BondingRegistry.sol +9 -0
  76. package/contracts/registry/CiphernodeRegistryOwnable.sol +89 -42
  77. package/contracts/test/MockCiphernodeRegistry.sol +20 -6
  78. package/contracts/test/MockE3Program.sol +3 -8
  79. package/contracts/verifier/DkgPkVerifier.sol +3140 -0
  80. package/dist/hardhat.config.d.ts.map +1 -1
  81. package/dist/hardhat.config.js +4 -4
  82. package/dist/ignition/modules/dkgPkVerifier.d.ts +3 -0
  83. package/dist/ignition/modules/dkgPkVerifier.d.ts.map +1 -0
  84. package/dist/ignition/modules/dkgPkVerifier.js +10 -0
  85. package/dist/ignition/modules/e3RefundManager.d.ts +3 -0
  86. package/dist/ignition/modules/e3RefundManager.d.ts.map +1 -0
  87. package/dist/ignition/modules/e3RefundManager.js +23 -0
  88. package/dist/ignition/modules/enclave.d.ts.map +1 -1
  89. package/dist/ignition/modules/enclave.js +10 -0
  90. package/dist/scripts/deployAndSave/e3RefundManager.d.ts +20 -0
  91. package/dist/scripts/deployAndSave/e3RefundManager.d.ts.map +1 -0
  92. package/dist/scripts/deployAndSave/e3RefundManager.js +55 -0
  93. package/dist/scripts/deployAndSave/enclave.d.ts +13 -1
  94. package/dist/scripts/deployAndSave/enclave.d.ts.map +1 -1
  95. package/dist/scripts/deployAndSave/enclave.js +8 -1
  96. package/dist/scripts/deployAndSave/verifiers.d.ts +29 -0
  97. package/dist/scripts/deployAndSave/verifiers.d.ts.map +1 -0
  98. package/dist/scripts/deployAndSave/verifiers.js +109 -0
  99. package/dist/scripts/deployEnclave.d.ts.map +1 -1
  100. package/dist/scripts/deployEnclave.js +36 -0
  101. package/dist/scripts/deployVerifiers.d.ts +2 -0
  102. package/dist/scripts/deployVerifiers.d.ts.map +1 -0
  103. package/dist/scripts/deployVerifiers.js +33 -0
  104. package/dist/scripts/index.d.ts +1 -0
  105. package/dist/scripts/index.d.ts.map +1 -1
  106. package/dist/scripts/index.js +1 -0
  107. package/dist/tasks/enclave.d.ts +0 -2
  108. package/dist/tasks/enclave.d.ts.map +1 -1
  109. package/dist/tasks/enclave.js +8 -72
  110. package/dist/tasks/program.d.ts +2 -0
  111. package/dist/tasks/program.d.ts.map +1 -0
  112. package/dist/tasks/program.js +55 -0
  113. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts +2 -0
  114. package/dist/test/E3Lifecycle/E3Integration.spec.d.ts.map +1 -0
  115. package/dist/test/E3Lifecycle/E3Integration.spec.js +757 -0
  116. package/dist/test/Enclave.spec.js +83 -406
  117. package/dist/test/Registry/CiphernodeRegistryOwnable.spec.js +133 -59
  118. package/dist/types/contracts/E3RefundManager.d.ts +379 -0
  119. package/dist/types/contracts/E3RefundManager.d.ts.map +1 -0
  120. package/dist/types/contracts/E3RefundManager.js +24 -0
  121. package/dist/types/contracts/Enclave.d.ts +325 -73
  122. package/dist/types/contracts/Enclave.d.ts.map +1 -1
  123. package/dist/types/contracts/Enclave.js +27 -3
  124. package/dist/types/contracts/index.d.ts +3 -0
  125. package/dist/types/contracts/index.d.ts.map +1 -1
  126. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts +11 -1
  127. package/dist/types/contracts/interfaces/IBondingRegistry.d.ts.map +1 -1
  128. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts +35 -7
  129. package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts.map +1 -1
  130. package/dist/types/contracts/interfaces/ICiphernodeRegistry.js +4 -0
  131. package/dist/types/contracts/interfaces/IE3Program.d.ts +16 -18
  132. package/dist/types/contracts/interfaces/IE3Program.d.ts.map +1 -1
  133. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts +238 -0
  134. package/dist/types/contracts/interfaces/IE3RefundManager.d.ts.map +1 -0
  135. package/dist/types/contracts/interfaces/IE3RefundManager.js +16 -0
  136. package/dist/types/contracts/interfaces/IEnclave.d.ts +290 -62
  137. package/dist/types/contracts/interfaces/IEnclave.d.ts.map +1 -1
  138. package/dist/types/contracts/interfaces/IEnclave.js +27 -3
  139. package/dist/types/contracts/interfaces/index.d.ts +1 -0
  140. package/dist/types/contracts/interfaces/index.d.ts.map +1 -1
  141. package/dist/types/contracts/registry/BondingRegistry.d.ts +11 -1
  142. package/dist/types/contracts/registry/BondingRegistry.d.ts.map +1 -1
  143. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts +35 -7
  144. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts.map +1 -1
  145. package/dist/types/contracts/registry/CiphernodeRegistryOwnable.js +4 -0
  146. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts +35 -7
  147. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts.map +1 -1
  148. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.js +4 -0
  149. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts +35 -7
  150. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts.map +1 -1
  151. package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.js +4 -0
  152. package/dist/types/contracts/test/MockE3Program.d.ts +16 -18
  153. package/dist/types/contracts/test/MockE3Program.d.ts.map +1 -1
  154. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts +36 -0
  155. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts.map +1 -0
  156. package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.js +1 -0
  157. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts +36 -0
  158. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts.map +1 -0
  159. package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.js +1 -0
  160. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts +36 -0
  161. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts.map +1 -0
  162. package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.js +1 -0
  163. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts +138 -0
  164. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts.map +1 -0
  165. package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.js +1 -0
  166. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  167. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  168. package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.js +1 -0
  169. package/dist/types/contracts/verifier/index.d.ts +3 -0
  170. package/dist/types/contracts/verifier/index.d.ts.map +1 -0
  171. package/dist/types/contracts/verifier/index.js +1 -0
  172. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +1 -1
  173. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts.map +1 -1
  174. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.js +1 -1
  175. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts +1 -1
  176. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts.map +1 -1
  177. package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.js +1 -1
  178. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts +540 -0
  179. package/dist/types/factories/contracts/E3RefundManager__factory.d.ts.map +1 -0
  180. package/dist/types/factories/contracts/E3RefundManager__factory.js +706 -0
  181. package/dist/types/factories/contracts/Enclave__factory.d.ts +412 -143
  182. package/dist/types/factories/contracts/Enclave__factory.d.ts.map +1 -1
  183. package/dist/types/factories/contracts/Enclave__factory.js +528 -180
  184. package/dist/types/factories/contracts/index.d.ts +2 -0
  185. package/dist/types/factories/contracts/index.d.ts.map +1 -1
  186. package/dist/types/factories/contracts/index.js +2 -0
  187. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts +10 -0
  188. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts.map +1 -1
  189. package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.js +13 -0
  190. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts +42 -4
  191. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts.map +1 -1
  192. package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.js +54 -4
  193. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts +14 -18
  194. package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts.map +1 -1
  195. package/dist/types/factories/contracts/interfaces/IE3Program__factory.js +18 -23
  196. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts +358 -0
  197. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts.map +1 -0
  198. package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.js +471 -0
  199. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts +303 -103
  200. package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts.map +1 -1
  201. package/dist/types/factories/contracts/interfaces/IEnclave__factory.js +382 -127
  202. package/dist/types/factories/contracts/interfaces/index.d.ts +1 -0
  203. package/dist/types/factories/contracts/interfaces/index.d.ts.map +1 -1
  204. package/dist/types/factories/contracts/interfaces/index.js +1 -0
  205. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts +11 -1
  206. package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts.map +1 -1
  207. package/dist/types/factories/contracts/registry/BondingRegistry__factory.js +14 -1
  208. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts +62 -12
  209. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts.map +1 -1
  210. package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.js +79 -13
  211. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts +1 -1
  212. package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts.map +1 -1
  213. package/dist/types/factories/contracts/slashing/SlashingManager__factory.js +1 -1
  214. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts +43 -5
  215. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts.map +1 -1
  216. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.js +55 -5
  217. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts +43 -5
  218. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts.map +1 -1
  219. package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.js +55 -5
  220. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts +1 -1
  221. package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts.map +1 -1
  222. package/dist/types/factories/contracts/test/MockComputeProvider__factory.js +1 -1
  223. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts +15 -19
  224. package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts.map +1 -1
  225. package/dist/types/factories/contracts/test/MockE3Program__factory.js +19 -24
  226. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts +1 -1
  227. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts.map +1 -1
  228. package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.js +1 -1
  229. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts +1 -1
  230. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts.map +1 -1
  231. package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.js +1 -1
  232. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts +1 -1
  233. package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts.map +1 -1
  234. package/dist/types/factories/contracts/token/EnclaveToken__factory.js +1 -1
  235. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts +66 -0
  236. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts.map +1 -0
  237. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.js +90 -0
  238. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts +87 -0
  239. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts.map +1 -0
  240. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.js +122 -0
  241. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts +26 -0
  242. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts.map +1 -0
  243. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.js +39 -0
  244. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts +323 -0
  245. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts.map +1 -0
  246. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.js +422 -0
  247. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
  248. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
  249. package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.js +7 -0
  250. package/dist/types/factories/contracts/verifier/index.d.ts +2 -0
  251. package/dist/types/factories/contracts/verifier/index.d.ts.map +1 -0
  252. package/dist/types/factories/contracts/verifier/index.js +4 -0
  253. package/dist/types/index.d.ts +12 -0
  254. package/dist/types/index.d.ts.map +1 -1
  255. package/dist/types/index.js +6 -0
  256. package/package.json +17 -3
  257. package/artifacts/build-info/solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.output.json +0 -1
@@ -84,6 +84,9 @@ contract BondingRegistry is IBondingRegistry, OwnableUpgradeable {
84
84
  /// @dev Default 8000 = 80%. Allows operators to unbond up to 20% while remaining active
85
85
  uint256 public licenseActiveBps;
86
86
 
87
+ /// @notice Number of currently active operators
88
+ uint256 public numActiveOperators;
89
+
87
90
  /// @notice Operator state data structure
88
91
  /// @param licenseBond Amount of license tokens currently bonded
89
92
  /// @param exitUnlocksAt Timestamp when pending exit can be claimed
@@ -725,6 +728,12 @@ contract BondingRegistry is IBondingRegistry, OwnableUpgradeable {
725
728
 
726
729
  if (op.active != newActiveStatus) {
727
730
  op.active = newActiveStatus;
731
+ if (newActiveStatus) {
732
+ numActiveOperators++;
733
+ } else {
734
+ numActiveOperators--;
735
+ }
736
+
728
737
  emit OperatorActivationChanged(operator, newActiveStatus);
729
738
  }
730
739
  }
@@ -7,6 +7,7 @@ pragma solidity >=0.8.27;
7
7
 
8
8
  import { ICiphernodeRegistry } from "../interfaces/ICiphernodeRegistry.sol";
9
9
  import { IBondingRegistry } from "../interfaces/IBondingRegistry.sol";
10
+ import { IEnclave } from "../interfaces/IEnclave.sol";
10
11
  import {
11
12
  OwnableUpgradeable
12
13
  } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
@@ -40,10 +41,10 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
40
41
  ////////////////////////////////////////////////////////////
41
42
 
42
43
  /// @notice Address of the Enclave contract authorized to request committees
43
- address public enclave;
44
+ IEnclave public enclave;
44
45
 
45
46
  /// @notice Address of the bonding registry for checking node eligibility
46
- address public bondingRegistry;
47
+ IBondingRegistry public bondingRegistry;
47
48
 
48
49
  /// @notice Current number of registered ciphernodes
49
50
  uint256 public numCiphernodes;
@@ -89,8 +90,8 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
89
90
  /// @notice Submission Window has been closed for this E3
90
91
  error SubmissionWindowClosed();
91
92
 
92
- /// @notice Submission deadline has been reached for this E3
93
- error SubmissionDeadlineReached();
93
+ /// @notice Committee deadline has been reached for this E3
94
+ error CommitteeDeadlineReached();
94
95
 
95
96
  /// @notice Committee has already been finalized for this E3
96
97
  error CommitteeAlreadyFinalized();
@@ -142,6 +143,11 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
142
143
  /// @notice Caller is not authorized
143
144
  error Unauthorized();
144
145
 
146
+ /// @notice Not enough registered ciphernodes to meet threshold
147
+ /// @param requested The requested committee size (N)
148
+ /// @param available The number of registered ciphernodes
149
+ error InsufficientCiphernodes(uint256 requested, uint256 available);
150
+
145
151
  ////////////////////////////////////////////////////////////
146
152
  // //
147
153
  // Modifiers //
@@ -150,20 +156,20 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
150
156
 
151
157
  /// @dev Restricts function access to only the Enclave contract
152
158
  modifier onlyEnclave() {
153
- require(msg.sender == enclave, OnlyEnclave());
159
+ require(msg.sender == address(enclave), OnlyEnclave());
154
160
  _;
155
161
  }
156
162
 
157
163
  /// @dev Restricts function access to only the bonding registry
158
164
  modifier onlyBondingRegistry() {
159
- require(msg.sender == bondingRegistry, OnlyBondingRegistry());
165
+ require(msg.sender == address(bondingRegistry), OnlyBondingRegistry());
160
166
  _;
161
167
  }
162
168
 
163
169
  /// @dev Restricts function access to owner or bonding registry
164
170
  modifier onlyOwnerOrBondingVault() {
165
171
  require(
166
- msg.sender == owner() || msg.sender == bondingRegistry,
172
+ msg.sender == owner() || msg.sender == address(bondingRegistry),
167
173
  NotOwnerOrBondingRegistry()
168
174
  );
169
175
  _;
@@ -189,11 +195,10 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
189
195
  /// @param _submissionWindow The submission window for the E3 sortition in seconds
190
196
  function initialize(
191
197
  address _owner,
192
- address _enclave,
198
+ IEnclave _enclave,
193
199
  uint256 _submissionWindow
194
200
  ) public initializer {
195
201
  require(_owner != address(0), ZeroAddress());
196
- require(_enclave != address(0), ZeroAddress());
197
202
 
198
203
  __Ownable_init(msg.sender);
199
204
  setEnclave(_enclave);
@@ -216,11 +221,17 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
216
221
  Committee storage c = committees[e3Id];
217
222
  require(!c.initialized, CommitteeAlreadyRequested());
218
223
 
224
+ uint256 activeCount = bondingRegistry.numActiveOperators();
225
+ require(
226
+ threshold[1] <= activeCount,
227
+ InsufficientCiphernodes(threshold[1], activeCount)
228
+ );
229
+
219
230
  c.initialized = true;
220
231
  c.finalized = false;
221
232
  c.seed = seed;
222
233
  c.requestBlock = block.number;
223
- c.submissionDeadline = block.timestamp + sortitionSubmissionWindow;
234
+ c.committeeDeadline = block.timestamp + sortitionSubmissionWindow;
224
235
  c.threshold = threshold;
225
236
  roots[e3Id] = root();
226
237
 
@@ -229,7 +240,7 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
229
240
  seed,
230
241
  threshold,
231
242
  c.requestBlock,
232
- c.submissionDeadline
243
+ c.committeeDeadline
233
244
  );
234
245
  success = true;
235
246
  }
@@ -257,6 +268,8 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
257
268
  // TODO: Need a Proof that the public key is generated from the committee
258
269
  c.publicKey = publicKeyHash;
259
270
  publicKeyHashes[e3Id] = publicKeyHash;
271
+ // Progress E3 to KeyPublished stage
272
+ enclave.onCommitteePublished(e3Id, publicKeyHash);
260
273
  emit CommitteePublished(e3Id, nodes, publicKey);
261
274
  }
262
275
 
@@ -306,8 +319,8 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
306
319
  require(c.initialized, CommitteeNotRequested());
307
320
  require(!c.finalized, CommitteeAlreadyFinalized());
308
321
  require(
309
- block.timestamp <= c.submissionDeadline,
310
- SubmissionDeadlineReached()
322
+ block.timestamp <= c.committeeDeadline,
323
+ CommitteeDeadlineReached()
311
324
  );
312
325
  require(!c.submitted[msg.sender], NodeAlreadySubmitted());
313
326
  require(isCiphernodeEligible(msg.sender), NodeNotEligible());
@@ -333,32 +346,38 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
333
346
  }
334
347
 
335
348
  /// @notice Finalize the committee after submission window closes
336
- /// @dev Can be called by anyone after the deadline. Reverts if not enough nodes submitted.
349
+ /// @dev Can be called by anyone after the deadline. If threshold not met, marks E3 as failed.
337
350
  /// @param e3Id ID of the E3 computation
338
- function finalizeCommittee(uint256 e3Id) external {
351
+ /// @return success True if committee formed successfully, false if threshold not met
352
+ function finalizeCommittee(uint256 e3Id) external returns (bool success) {
339
353
  Committee storage c = committees[e3Id];
340
354
  require(c.initialized, CommitteeNotRequested());
341
355
  require(!c.finalized, CommitteeAlreadyFinalized());
342
356
  require(
343
- block.timestamp >= c.submissionDeadline,
357
+ block.timestamp >= c.committeeDeadline,
344
358
  SubmissionWindowNotClosed()
345
359
  );
346
- // TODO: Handle what happens if the threshold is not met.
347
- require(c.topNodes.length >= c.threshold[1], ThresholdNotMet());
348
-
349
360
  c.finalized = true;
350
- c.committee = c.topNodes;
361
+ bool thresholdMet = c.topNodes.length >= c.threshold[1];
362
+
363
+ if (!thresholdMet) {
364
+ c.failed = true;
365
+ emit CommitteeFormationFailed(
366
+ e3Id,
367
+ c.topNodes.length,
368
+ c.threshold[1]
369
+ );
370
+ enclave.onE3Failed(
371
+ e3Id,
372
+ uint8(IEnclave.FailureReason.InsufficientCommitteeMembers)
373
+ );
374
+ return false;
375
+ }
351
376
 
377
+ c.committee = c.topNodes;
378
+ enclave.onCommitteeFinalized(e3Id);
352
379
  emit CommitteeFinalized(e3Id, c.topNodes);
353
- }
354
-
355
- /// @notice Check if submission window is still open for an E3
356
- /// @param e3Id ID of the E3 computation
357
- /// @return Whether the submission window is open
358
- function isOpen(uint256 e3Id) public view returns (bool) {
359
- Committee storage c = committees[e3Id];
360
- if (!c.initialized || c.finalized) return false;
361
- return block.timestamp <= c.submissionDeadline;
380
+ return true;
362
381
  }
363
382
 
364
383
  ////////////////////////////////////////////////////////////
@@ -370,19 +389,21 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
370
389
  /// @notice Sets the Enclave contract address
371
390
  /// @dev Only callable by owner
372
391
  /// @param _enclave Address of the Enclave contract
373
- function setEnclave(address _enclave) public onlyOwner {
374
- require(_enclave != address(0), ZeroAddress());
392
+ function setEnclave(IEnclave _enclave) public onlyOwner {
393
+ require(address(_enclave) != address(0), ZeroAddress());
375
394
  enclave = _enclave;
376
- emit EnclaveSet(_enclave);
395
+ emit EnclaveSet(address(_enclave));
377
396
  }
378
397
 
379
398
  /// @notice Sets the bonding registry contract address
380
399
  /// @dev Only callable by owner
381
400
  /// @param _bondingRegistry Address of the bonding registry contract
382
- function setBondingRegistry(address _bondingRegistry) public onlyOwner {
383
- require(_bondingRegistry != address(0), ZeroAddress());
401
+ function setBondingRegistry(
402
+ IBondingRegistry _bondingRegistry
403
+ ) public onlyOwner {
404
+ require(address(_bondingRegistry) != address(0), ZeroAddress());
384
405
  bondingRegistry = _bondingRegistry;
385
- emit BondingRegistrySet(_bondingRegistry);
406
+ emit BondingRegistrySet(address(_bondingRegistry));
386
407
  }
387
408
 
388
409
  /// @inheritdoc ICiphernodeRegistry
@@ -399,6 +420,15 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
399
420
  // //
400
421
  ////////////////////////////////////////////////////////////
401
422
 
423
+ /// @notice Check if submission window is still open for an E3
424
+ /// @param e3Id ID of the E3 computation
425
+ /// @return Whether the submission window is open
426
+ function isOpen(uint256 e3Id) public view returns (bool) {
427
+ Committee storage c = committees[e3Id];
428
+ if (!c.initialized || c.finalized) return false;
429
+ return block.timestamp <= c.committeeDeadline;
430
+ }
431
+
402
432
  /// @inheritdoc ICiphernodeRegistry
403
433
  function committeePublicKey(
404
434
  uint256 e3Id
@@ -411,8 +441,11 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
411
441
  function isCiphernodeEligible(address node) public view returns (bool) {
412
442
  if (!isEnabled(node)) return false;
413
443
 
414
- require(bondingRegistry != address(0), BondingRegistryNotSet());
415
- return IBondingRegistry(bondingRegistry).isActive(node);
444
+ require(
445
+ address(bondingRegistry) != address(0),
446
+ BondingRegistryNotSet()
447
+ );
448
+ return bondingRegistry.isActive(node);
416
449
  }
417
450
 
418
451
  /// @inheritdoc ICiphernodeRegistry
@@ -451,7 +484,16 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
451
484
  /// @notice Returns the address of the bonding registry
452
485
  /// @return Address of the bonding registry contract
453
486
  function getBondingRegistry() external view returns (address) {
454
- return bondingRegistry;
487
+ return address(bondingRegistry);
488
+ }
489
+
490
+ /// @inheritdoc ICiphernodeRegistry
491
+ function getCommitteeDeadline(
492
+ uint256 e3Id
493
+ ) external view returns (uint256) {
494
+ Committee storage c = committees[e3Id];
495
+ require(c.initialized, CommitteeNotRequested());
496
+ return c.committeeDeadline;
455
497
  }
456
498
 
457
499
  ////////////////////////////////////////////////////////////
@@ -489,15 +531,20 @@ contract CiphernodeRegistryOwnable is ICiphernodeRegistry, OwnableUpgradeable {
489
531
  uint256 e3Id
490
532
  ) internal view {
491
533
  require(ticketNumber > 0, InvalidTicketNumber());
492
- require(bondingRegistry != address(0), BondingRegistryNotSet());
534
+ require(
535
+ address(bondingRegistry) != address(0),
536
+ BondingRegistryNotSet()
537
+ );
493
538
 
494
539
  Committee storage c = committees[e3Id];
495
540
 
496
541
  // @todo Ensure we check everywhere that we use the block before the request block
497
542
  // to ensure cases where everything is done in the same block are handled correctly.
498
- uint256 ticketBalance = IBondingRegistry(bondingRegistry)
499
- .getTicketBalanceAtBlock(node, c.requestBlock - 1);
500
- uint256 ticketPrice = IBondingRegistry(bondingRegistry).ticketPrice();
543
+ uint256 ticketBalance = bondingRegistry.getTicketBalanceAtBlock(
544
+ node,
545
+ c.requestBlock - 1
546
+ );
547
+ uint256 ticketPrice = bondingRegistry.ticketPrice();
501
548
 
502
549
  require(ticketPrice > 0, InvalidTicketNumber());
503
550
  uint256 availableTickets = ticketBalance / ticketPrice;
@@ -6,6 +6,8 @@
6
6
  pragma solidity >=0.8.27;
7
7
 
8
8
  import { ICiphernodeRegistry } from "../interfaces/ICiphernodeRegistry.sol";
9
+ import { IEnclave } from "../interfaces/IEnclave.sol";
10
+ import { IBondingRegistry } from "../interfaces/IBondingRegistry.sol";
9
11
 
10
12
  contract MockCiphernodeRegistry is ICiphernodeRegistry {
11
13
  function requestCommittee(
@@ -16,6 +18,10 @@ contract MockCiphernodeRegistry is ICiphernodeRegistry {
16
18
  success = true;
17
19
  }
18
20
 
21
+ function getCommitteeDeadline(uint256) external view returns (uint256) {
22
+ return block.timestamp + 10;
23
+ }
24
+
19
25
  function isEnabled(address) external pure returns (bool) {
20
26
  return true;
21
27
  }
@@ -69,16 +75,18 @@ contract MockCiphernodeRegistry is ICiphernodeRegistry {
69
75
  }
70
76
 
71
77
  // solhint-disable-next-line no-empty-blocks
72
- function setEnclave(address) external pure {}
78
+ function setEnclave(IEnclave) external pure {}
73
79
 
74
80
  // solhint-disable-next-line no-empty-blocks
75
- function setBondingRegistry(address) external pure {}
81
+ function setBondingRegistry(IBondingRegistry) external pure {}
76
82
 
77
83
  // solhint-disable-next-line no-empty-blocks
78
84
  function submitTicket(uint256, uint256) external pure {}
79
85
 
80
86
  // solhint-disable-next-line no-empty-blocks
81
- function finalizeCommittee(uint256) external pure {}
87
+ function finalizeCommittee(uint256) external pure returns (bool) {
88
+ return true;
89
+ }
82
90
 
83
91
  // solhint-disable-next-line no-empty-blocks
84
92
  function setSortitionSubmissionWindow(uint256) external pure {}
@@ -99,6 +107,10 @@ contract MockCiphernodeRegistryEmptyKey is ICiphernodeRegistry {
99
107
  success = true;
100
108
  }
101
109
 
110
+ function getCommitteeDeadline(uint256) external view returns (uint256) {
111
+ return block.timestamp + 10;
112
+ }
113
+
102
114
  function isEnabled(address) external pure returns (bool) {
103
115
  return true;
104
116
  }
@@ -148,10 +160,10 @@ contract MockCiphernodeRegistryEmptyKey is ICiphernodeRegistry {
148
160
  }
149
161
 
150
162
  // solhint-disable-next-line no-empty-blocks
151
- function setEnclave(address) external pure {}
163
+ function setEnclave(IEnclave) external pure {}
152
164
 
153
165
  // solhint-disable-next-line no-empty-blocks
154
- function setBondingRegistry(address) external pure {}
166
+ function setBondingRegistry(IBondingRegistry) external pure {}
155
167
 
156
168
  // solhint-disable-next-line no-empty-blocks
157
169
  function setSortitionSubmissionWindow(uint256) external pure {}
@@ -160,7 +172,9 @@ contract MockCiphernodeRegistryEmptyKey is ICiphernodeRegistry {
160
172
  function submitTicket(uint256, uint256) external pure {}
161
173
 
162
174
  // solhint-disable-next-line no-empty-blocks
163
- function finalizeCommittee(uint256) external pure {}
175
+ function finalizeCommittee(uint256) external pure returns (bool) {
176
+ return true;
177
+ }
164
178
 
165
179
  function isOpen(uint256) external pure returns (bool) {
166
180
  return false;
@@ -10,13 +10,12 @@ import { IE3Program } from "../interfaces/IE3Program.sol";
10
10
  contract MockE3Program is IE3Program {
11
11
  error InvalidParams(bytes e3ProgramParams, bytes computeProviderParams);
12
12
  error E3AlreadyInitialized();
13
+ error InvalidInput();
13
14
 
14
15
  bytes32 public constant ENCRYPTION_SCHEME_ID = keccak256("fhe.rs:BFV");
15
16
 
16
17
  mapping(uint256 e3Id => bytes32 paramsHash) public paramsHashes;
17
18
 
18
- error InvalidInput();
19
-
20
19
  function validate(
21
20
  uint256 e3Id,
22
21
  uint256,
@@ -34,12 +33,8 @@ contract MockE3Program is IE3Program {
34
33
  return ENCRYPTION_SCHEME_ID;
35
34
  }
36
35
 
37
- function validateInput(
38
- uint256,
39
- address sender,
40
- bytes memory data
41
- ) external pure {
42
- if (data.length == 3 || sender == address(0)) {
36
+ function publishInput(uint256, bytes memory data) external pure {
37
+ if (data.length == 3) {
43
38
  revert InvalidInput();
44
39
  }
45
40
  }