@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
@@ -0,0 +1,365 @@
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
+ pragma solidity >=0.8.27;
7
+ import {
8
+ OwnableUpgradeable
9
+ } from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
10
+ import {
11
+ SafeERC20
12
+ } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
13
+ import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
14
+ import { IE3RefundManager } from "./interfaces/IE3RefundManager.sol";
15
+ import { IEnclave } from "./interfaces/IEnclave.sol";
16
+ import { IBondingRegistry } from "./interfaces/IBondingRegistry.sol";
17
+
18
+ /**
19
+ * @title E3RefundManager
20
+ * @notice Manages refund distribution for failed E3 computations
21
+ * @dev Implements fault-attribution based refund system
22
+ *
23
+ */
24
+ contract E3RefundManager is IE3RefundManager, OwnableUpgradeable {
25
+ using SafeERC20 for IERC20;
26
+ ////////////////////////////////////////////////////////////
27
+ // //
28
+ // Storage Variables //
29
+ // //
30
+ ////////////////////////////////////////////////////////////
31
+ /// @notice The Enclave contract (contains lifecycle functionality)
32
+ IEnclave public enclave;
33
+ /// @notice The fee token used for payments
34
+ IERC20 public feeToken;
35
+ /// @notice The bonding registry for node rewards
36
+ IBondingRegistry public bondingRegistry;
37
+ /// @notice Protocol treasury for protocol fee collection
38
+ address public treasury;
39
+ /// @notice Work value allocation configuration
40
+ WorkValueAllocation internal _workAllocation;
41
+ /// @notice Maps E3 ID to refund distribution
42
+ mapping(uint256 e3Id => RefundDistribution) internal _distributions;
43
+ /// @notice Tracks claims per E3 per address
44
+ mapping(uint256 e3Id => mapping(address => bool)) internal _claimed;
45
+ /// @notice Maps E3 ID to honest node addresses
46
+ mapping(uint256 e3Id => address[]) internal _honestNodes;
47
+ ////////////////////////////////////////////////////////////
48
+ // //
49
+ // Modifiers //
50
+ // //
51
+ ////////////////////////////////////////////////////////////
52
+ /// @notice Restricts function to Enclave contract only
53
+ modifier onlyEnclave() {
54
+ if (msg.sender != address(enclave)) revert Unauthorized();
55
+ _;
56
+ }
57
+
58
+ ////////////////////////////////////////////////////////////
59
+ // //
60
+ // Initialization //
61
+ // //
62
+ ////////////////////////////////////////////////////////////
63
+ /// @notice Constructor that disables initializers
64
+ constructor() {
65
+ _disableInitializers();
66
+ }
67
+
68
+ /// @notice Initializes the E3RefundManager contract
69
+ /// @param _owner The owner address
70
+ /// @param _enclave The Enclave contract address
71
+ /// @param _treasury The protocol treasury address
72
+ function initialize(
73
+ address _owner,
74
+ address _enclave,
75
+ address _treasury
76
+ ) public initializer {
77
+ __Ownable_init(msg.sender);
78
+
79
+ require(_enclave != address(0), "Invalid enclave");
80
+ require(_treasury != address(0), "Invalid treasury");
81
+
82
+ enclave = IEnclave(_enclave);
83
+ feeToken = enclave.feeToken();
84
+ bondingRegistry = enclave.bondingRegistry();
85
+ treasury = _treasury;
86
+
87
+ _workAllocation = WorkValueAllocation({
88
+ committeeFormationBps: 1000,
89
+ dkgBps: 3000,
90
+ decryptionBps: 5500,
91
+ protocolBps: 500
92
+ });
93
+
94
+ if (_owner != owner()) transferOwnership(_owner);
95
+ }
96
+
97
+ ////////////////////////////////////////////////////////////
98
+ // //
99
+ // Refund Calculation //
100
+ // //
101
+ ////////////////////////////////////////////////////////////
102
+ /// @inheritdoc IE3RefundManager
103
+ function calculateRefund(
104
+ uint256 e3Id,
105
+ uint256 originalPayment,
106
+ address[] calldata honestNodes
107
+ ) external onlyEnclave {
108
+ require(!_distributions[e3Id].calculated, "Already calculated");
109
+ require(originalPayment > 0, "No payment");
110
+
111
+ // Calculate work value based on stage
112
+ IEnclave.E3Stage failedAt = _getFailedAtStage(e3Id);
113
+ (uint16 workCompletedBps, uint16 workRemainingBps) = calculateWorkValue(
114
+ failedAt
115
+ );
116
+
117
+ // Calculate base distribution
118
+ uint256 honestNodeAmount = (originalPayment * workCompletedBps) / 10000;
119
+ uint256 requesterAmount = (originalPayment * workRemainingBps) / 10000;
120
+ uint256 protocolAmount = originalPayment -
121
+ honestNodeAmount -
122
+ requesterAmount;
123
+
124
+ // Store distribution
125
+ _distributions[e3Id] = RefundDistribution({
126
+ requesterAmount: requesterAmount,
127
+ honestNodeAmount: honestNodeAmount,
128
+ protocolAmount: protocolAmount,
129
+ totalSlashed: 0,
130
+ honestNodeCount: honestNodes.length,
131
+ calculated: true
132
+ });
133
+
134
+ // Store honest nodes
135
+ for (uint256 i = 0; i < honestNodes.length; i++) {
136
+ _honestNodes[e3Id].push(honestNodes[i]);
137
+ }
138
+
139
+ // Transfer protocol fee to treasury immediately
140
+ if (protocolAmount > 0) {
141
+ feeToken.safeTransfer(treasury, protocolAmount);
142
+ }
143
+
144
+ emit RefundDistributionCalculated(
145
+ e3Id,
146
+ requesterAmount,
147
+ honestNodeAmount,
148
+ protocolAmount,
149
+ 0
150
+ );
151
+ }
152
+
153
+ /// @notice Get the stage at which E3 failed (for work calculation)
154
+ function _getFailedAtStage(
155
+ uint256 e3Id
156
+ ) internal view returns (IEnclave.E3Stage) {
157
+ IEnclave.FailureReason reason = enclave.getFailureReason(e3Id);
158
+
159
+ // Map failure reason to stage
160
+ if (
161
+ reason == IEnclave.FailureReason.CommitteeFormationTimeout ||
162
+ reason == IEnclave.FailureReason.InsufficientCommitteeMembers
163
+ ) {
164
+ return IEnclave.E3Stage.Requested;
165
+ }
166
+ if (
167
+ reason == IEnclave.FailureReason.DKGTimeout ||
168
+ reason == IEnclave.FailureReason.DKGInvalidShares
169
+ ) {
170
+ return IEnclave.E3Stage.CommitteeFinalized;
171
+ }
172
+ if (reason == IEnclave.FailureReason.NoInputsReceived) {
173
+ return IEnclave.E3Stage.KeyPublished;
174
+ }
175
+ if (
176
+ reason == IEnclave.FailureReason.ComputeTimeout ||
177
+ reason == IEnclave.FailureReason.ComputeProviderExpired ||
178
+ reason == IEnclave.FailureReason.ComputeProviderFailed ||
179
+ reason == IEnclave.FailureReason.RequesterCancelled
180
+ ) {
181
+ return IEnclave.E3Stage.KeyPublished;
182
+ }
183
+ if (
184
+ reason == IEnclave.FailureReason.DecryptionTimeout ||
185
+ reason == IEnclave.FailureReason.DecryptionInvalidShares ||
186
+ reason == IEnclave.FailureReason.VerificationFailed
187
+ ) {
188
+ return IEnclave.E3Stage.CiphertextReady;
189
+ }
190
+
191
+ return IEnclave.E3Stage.None;
192
+ }
193
+
194
+ /// @inheritdoc IE3RefundManager
195
+ function calculateWorkValue(
196
+ IEnclave.E3Stage stage
197
+ ) public view returns (uint16 workCompletedBps, uint16 workRemainingBps) {
198
+ WorkValueAllocation memory alloc = _workAllocation;
199
+
200
+ if (
201
+ stage == IEnclave.E3Stage.Requested ||
202
+ stage == IEnclave.E3Stage.None
203
+ ) {
204
+ // Failed at Requested = no work done
205
+ workCompletedBps = 0;
206
+ } else if (stage == IEnclave.E3Stage.CommitteeFinalized) {
207
+ // Failed during DKG = sortition work done
208
+ workCompletedBps = alloc.committeeFormationBps;
209
+ } else if (stage == IEnclave.E3Stage.KeyPublished) {
210
+ // Failed during input phase = sortition + DKG done (no additional work)
211
+ workCompletedBps = alloc.committeeFormationBps + alloc.dkgBps;
212
+ } else if (stage == IEnclave.E3Stage.CiphertextReady) {
213
+ // Failed during decryption = sortition + DKG done (awaiting decryption shares)
214
+ workCompletedBps = alloc.committeeFormationBps + alloc.dkgBps;
215
+ }
216
+
217
+ workRemainingBps = 10000 - workCompletedBps - alloc.protocolBps;
218
+ }
219
+
220
+ ////////////////////////////////////////////////////////////
221
+ // //
222
+ // Claiming Functions //
223
+ // //
224
+ ////////////////////////////////////////////////////////////
225
+ /// @inheritdoc IE3RefundManager
226
+ function claimRequesterRefund(
227
+ uint256 e3Id
228
+ ) external returns (uint256 amount) {
229
+ RefundDistribution storage dist = _distributions[e3Id];
230
+ if (!dist.calculated) revert RefundNotCalculated(e3Id);
231
+
232
+ address requester = enclave.getRequester(e3Id);
233
+ if (msg.sender != requester) revert NotRequester(e3Id, msg.sender);
234
+
235
+ if (_claimed[e3Id][msg.sender]) revert AlreadyClaimed(e3Id, msg.sender);
236
+
237
+ amount = dist.requesterAmount;
238
+ if (amount == 0) revert NoRefundAvailable(e3Id);
239
+
240
+ _claimed[e3Id][msg.sender] = true;
241
+
242
+ feeToken.safeTransfer(msg.sender, amount);
243
+
244
+ emit RefundClaimed(e3Id, msg.sender, amount, "REQUESTER");
245
+ }
246
+
247
+ /// @inheritdoc IE3RefundManager
248
+ function claimHonestNodeReward(
249
+ uint256 e3Id
250
+ ) external returns (uint256 amount) {
251
+ RefundDistribution storage dist = _distributions[e3Id];
252
+ require(dist.calculated, RefundNotCalculated(e3Id));
253
+ require(!_claimed[e3Id][msg.sender], AlreadyClaimed(e3Id, msg.sender));
254
+
255
+ // Check if caller is honest node
256
+ address[] memory nodes = _honestNodes[e3Id];
257
+ bool isHonest = false;
258
+ for (uint256 i = 0; i < nodes.length && !isHonest; i++) {
259
+ isHonest = (nodes[i] == msg.sender);
260
+ }
261
+ require(isHonest, NotHonestNode(e3Id, msg.sender));
262
+
263
+ require(dist.honestNodeCount > 0, NoRefundAvailable(e3Id));
264
+ amount = dist.honestNodeAmount / dist.honestNodeCount;
265
+ require(amount > 0, NoRefundAvailable(e3Id));
266
+
267
+ _claimed[e3Id][msg.sender] = true;
268
+
269
+ // Distribute reward through bonding registry
270
+ feeToken.approve(address(bondingRegistry), amount);
271
+
272
+ address[] memory nodeArray = new address[](1);
273
+ nodeArray[0] = msg.sender;
274
+ uint256[] memory amountArray = new uint256[](1);
275
+ amountArray[0] = amount;
276
+
277
+ bondingRegistry.distributeRewards(feeToken, nodeArray, amountArray);
278
+
279
+ emit RefundClaimed(e3Id, msg.sender, amount, "HONEST_NODE");
280
+ }
281
+
282
+ /// @inheritdoc IE3RefundManager
283
+ function routeSlashedFunds(
284
+ uint256 e3Id,
285
+ uint256 amount
286
+ ) external onlyEnclave {
287
+ RefundDistribution storage dist = _distributions[e3Id];
288
+ require(dist.calculated, "Not calculated");
289
+
290
+ // Add slashed funds to distribution
291
+ // Note: slashing should be finalized before claims are made.
292
+ // 50% to requester, 50% to honest nodes for non-participation
293
+ uint256 toRequester = amount / 2;
294
+ uint256 toHonestNodes = amount - toRequester;
295
+
296
+ dist.requesterAmount += toRequester;
297
+ dist.honestNodeAmount += toHonestNodes;
298
+ dist.totalSlashed += amount;
299
+
300
+ emit SlashedFundsRouted(e3Id, amount);
301
+ }
302
+
303
+ ////////////////////////////////////////////////////////////
304
+ // //
305
+ // View Functions //
306
+ // //
307
+ ////////////////////////////////////////////////////////////
308
+ /// @inheritdoc IE3RefundManager
309
+ function getRefundDistribution(
310
+ uint256 e3Id
311
+ ) external view returns (RefundDistribution memory) {
312
+ return _distributions[e3Id];
313
+ }
314
+
315
+ /// @inheritdoc IE3RefundManager
316
+ function hasClaimed(
317
+ uint256 e3Id,
318
+ address claimant
319
+ ) external view returns (bool) {
320
+ return _claimed[e3Id][claimant];
321
+ }
322
+
323
+ /// @inheritdoc IE3RefundManager
324
+ function getWorkAllocation()
325
+ external
326
+ view
327
+ returns (WorkValueAllocation memory)
328
+ {
329
+ return _workAllocation;
330
+ }
331
+
332
+ ////////////////////////////////////////////////////////////
333
+ // //
334
+ // Admin Functions //
335
+ // //
336
+ ////////////////////////////////////////////////////////////
337
+ /// @inheritdoc IE3RefundManager
338
+ function setWorkAllocation(
339
+ WorkValueAllocation calldata allocation
340
+ ) external onlyOwner {
341
+ uint256 total = uint256(allocation.committeeFormationBps) +
342
+ uint256(allocation.dkgBps) +
343
+ uint256(allocation.decryptionBps) +
344
+ uint256(allocation.protocolBps);
345
+ require(total == 10000, "Must sum to 10000");
346
+
347
+ _workAllocation = allocation;
348
+
349
+ emit WorkAllocationUpdated(allocation);
350
+ }
351
+
352
+ /// @notice Set the Enclave contract address
353
+ /// @param _enclave New Enclave address
354
+ function setEnclave(address _enclave) external onlyOwner {
355
+ require(_enclave != address(0), "Invalid enclave");
356
+ enclave = IEnclave(_enclave);
357
+ }
358
+
359
+ /// @notice Set the treasury address
360
+ /// @param _treasury New treasury address
361
+ function setTreasury(address _treasury) external onlyOwner {
362
+ require(_treasury != address(0), "Invalid treasury");
363
+ treasury = _treasury;
364
+ }
365
+ }