@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.
- package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/ProxyAdmin.json +3 -3
- package/artifacts/@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol/artifacts.d.ts +3 -3
- package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/ITransparentUpgradeableProxy.json +1 -1
- package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy.json +3 -3
- package/artifacts/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/artifacts.d.ts +4 -4
- package/artifacts/build-info/{solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.json → solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.json} +27 -12
- package/artifacts/build-info/solc-0_8_28-e60a5d7c133605edcf61acdd5ba43ab44ee0928e.output.json +1 -0
- package/artifacts/contracts/E3RefundManager.sol/E3RefundManager.json +684 -0
- package/artifacts/contracts/E3RefundManager.sol/artifacts.d.ts +27 -0
- package/artifacts/contracts/Enclave.sol/Enclave.json +530 -182
- package/artifacts/contracts/Enclave.sol/artifacts.d.ts +4 -4
- package/artifacts/contracts/interfaces/IBondingRegistry.sol/IBondingRegistry.json +14 -1
- package/artifacts/contracts/interfaces/IBondingRegistry.sol/artifacts.d.ts +2 -2
- package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/ICiphernodeRegistry.json +55 -5
- package/artifacts/contracts/interfaces/ICiphernodeRegistry.sol/artifacts.d.ts +2 -2
- package/artifacts/contracts/interfaces/IComputeProvider.sol/IComputeProvider.json +1 -1
- package/artifacts/contracts/interfaces/IComputeProvider.sol/artifacts.d.ts +1 -1
- package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/IDecryptionVerifier.json +1 -1
- package/artifacts/contracts/interfaces/IDecryptionVerifier.sol/artifacts.d.ts +1 -1
- package/artifacts/contracts/interfaces/IE3Program.sol/IE3Program.json +19 -24
- package/artifacts/contracts/interfaces/IE3Program.sol/artifacts.d.ts +2 -2
- package/artifacts/contracts/interfaces/IE3RefundManager.sol/IE3RefundManager.json +470 -0
- package/artifacts/contracts/interfaces/IE3RefundManager.sol/artifacts.d.ts +27 -0
- package/artifacts/contracts/interfaces/IEnclave.sol/IEnclave.json +383 -128
- package/artifacts/contracts/interfaces/IEnclave.sol/artifacts.d.ts +2 -2
- package/artifacts/contracts/interfaces/ISlashVerifier.sol/ISlashVerifier.json +1 -1
- package/artifacts/contracts/interfaces/ISlashVerifier.sol/artifacts.d.ts +1 -1
- package/artifacts/contracts/interfaces/ISlashingManager.sol/ISlashingManager.json +1 -1
- package/artifacts/contracts/interfaces/ISlashingManager.sol/artifacts.d.ts +1 -1
- package/artifacts/contracts/lib/ExitQueueLib.sol/ExitQueueLib.json +1 -1
- package/artifacts/contracts/lib/ExitQueueLib.sol/artifacts.d.ts +1 -1
- package/artifacts/contracts/registry/BondingRegistry.sol/BondingRegistry.json +16 -3
- package/artifacts/contracts/registry/BondingRegistry.sol/artifacts.d.ts +4 -4
- package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/CiphernodeRegistryOwnable.json +91 -25
- package/artifacts/contracts/registry/CiphernodeRegistryOwnable.sol/artifacts.d.ts +6 -6
- package/artifacts/contracts/slashing/SlashingManager.sol/SlashingManager.json +3 -3
- package/artifacts/contracts/slashing/SlashingManager.sol/artifacts.d.ts +3 -3
- package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.json +57 -7
- package/artifacts/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.json +57 -7
- package/artifacts/contracts/test/MockCiphernodeRegistry.sol/artifacts.d.ts +8 -8
- package/artifacts/contracts/test/MockComputeProvider.sol/MockComputeProvider.json +3 -3
- package/artifacts/contracts/test/MockComputeProvider.sol/artifacts.d.ts +3 -3
- package/artifacts/contracts/test/MockDecryptionVerifier.sol/MockDecryptionVerifier.json +1 -1
- package/artifacts/contracts/test/MockDecryptionVerifier.sol/artifacts.d.ts +1 -1
- package/artifacts/contracts/test/MockE3Program.sol/MockE3Program.json +21 -26
- package/artifacts/contracts/test/MockE3Program.sol/artifacts.d.ts +4 -4
- package/artifacts/contracts/test/MockSlashingVerifier.sol/MockSlashingVerifier.json +1 -1
- package/artifacts/contracts/test/MockSlashingVerifier.sol/artifacts.d.ts +1 -1
- package/artifacts/contracts/test/MockStableToken.sol/MockUSDC.json +3 -3
- package/artifacts/contracts/test/MockStableToken.sol/artifacts.d.ts +3 -3
- package/artifacts/contracts/token/EnclaveTicketToken.sol/EnclaveTicketToken.json +14 -22
- package/artifacts/contracts/token/EnclaveTicketToken.sol/artifacts.d.ts +4 -4
- package/artifacts/contracts/token/EnclaveToken.sol/EnclaveToken.json +10 -10
- package/artifacts/contracts/token/EnclaveToken.sol/artifacts.d.ts +4 -4
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.json +89 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/CommitmentSchemeLib.json +13 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.json +186 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/FrLib.json +13 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/Honk.json +13 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/HonkVerificationKey.json +13 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/IVerifier.json +38 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/RelationsLib.json +13 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.json +400 -0
- package/artifacts/contracts/verifier/DkgPkVerifier.sol/artifacts.d.ts +155 -0
- package/artifacts/poseidon-solidity/PoseidonT3.sol/PoseidonT3.json +1 -1
- package/artifacts/poseidon-solidity/PoseidonT3.sol/artifacts.d.ts +1 -1
- package/contracts/E3RefundManager.sol +365 -0
- package/contracts/Enclave.sol +426 -119
- package/contracts/interfaces/IBondingRegistry.sol +6 -0
- package/contracts/interfaces/ICiphernodeRegistry.sol +29 -7
- package/contracts/interfaces/IE3.sol +2 -6
- package/contracts/interfaces/IE3Program.sol +3 -7
- package/contracts/interfaces/IE3RefundManager.sol +150 -0
- package/contracts/interfaces/IEnclave.sol +186 -64
- package/contracts/registry/BondingRegistry.sol +9 -0
- package/contracts/registry/CiphernodeRegistryOwnable.sol +89 -42
- package/contracts/test/MockCiphernodeRegistry.sol +20 -6
- package/contracts/test/MockE3Program.sol +3 -8
- package/contracts/verifier/DkgPkVerifier.sol +3140 -0
- package/dist/hardhat.config.d.ts.map +1 -1
- package/dist/hardhat.config.js +4 -4
- package/dist/ignition/modules/dkgPkVerifier.d.ts +3 -0
- package/dist/ignition/modules/dkgPkVerifier.d.ts.map +1 -0
- package/dist/ignition/modules/dkgPkVerifier.js +10 -0
- package/dist/ignition/modules/e3RefundManager.d.ts +3 -0
- package/dist/ignition/modules/e3RefundManager.d.ts.map +1 -0
- package/dist/ignition/modules/e3RefundManager.js +23 -0
- package/dist/ignition/modules/enclave.d.ts.map +1 -1
- package/dist/ignition/modules/enclave.js +10 -0
- package/dist/scripts/deployAndSave/e3RefundManager.d.ts +20 -0
- package/dist/scripts/deployAndSave/e3RefundManager.d.ts.map +1 -0
- package/dist/scripts/deployAndSave/e3RefundManager.js +55 -0
- package/dist/scripts/deployAndSave/enclave.d.ts +13 -1
- package/dist/scripts/deployAndSave/enclave.d.ts.map +1 -1
- package/dist/scripts/deployAndSave/enclave.js +8 -1
- package/dist/scripts/deployAndSave/verifiers.d.ts +29 -0
- package/dist/scripts/deployAndSave/verifiers.d.ts.map +1 -0
- package/dist/scripts/deployAndSave/verifiers.js +109 -0
- package/dist/scripts/deployEnclave.d.ts.map +1 -1
- package/dist/scripts/deployEnclave.js +36 -0
- package/dist/scripts/deployVerifiers.d.ts +2 -0
- package/dist/scripts/deployVerifiers.d.ts.map +1 -0
- package/dist/scripts/deployVerifiers.js +33 -0
- package/dist/scripts/index.d.ts +1 -0
- package/dist/scripts/index.d.ts.map +1 -1
- package/dist/scripts/index.js +1 -0
- package/dist/tasks/enclave.d.ts +0 -2
- package/dist/tasks/enclave.d.ts.map +1 -1
- package/dist/tasks/enclave.js +8 -72
- package/dist/tasks/program.d.ts +2 -0
- package/dist/tasks/program.d.ts.map +1 -0
- package/dist/tasks/program.js +55 -0
- package/dist/test/E3Lifecycle/E3Integration.spec.d.ts +2 -0
- package/dist/test/E3Lifecycle/E3Integration.spec.d.ts.map +1 -0
- package/dist/test/E3Lifecycle/E3Integration.spec.js +757 -0
- package/dist/test/Enclave.spec.js +83 -406
- package/dist/test/Registry/CiphernodeRegistryOwnable.spec.js +133 -59
- package/dist/types/contracts/E3RefundManager.d.ts +379 -0
- package/dist/types/contracts/E3RefundManager.d.ts.map +1 -0
- package/dist/types/contracts/E3RefundManager.js +24 -0
- package/dist/types/contracts/Enclave.d.ts +325 -73
- package/dist/types/contracts/Enclave.d.ts.map +1 -1
- package/dist/types/contracts/Enclave.js +27 -3
- package/dist/types/contracts/index.d.ts +3 -0
- package/dist/types/contracts/index.d.ts.map +1 -1
- package/dist/types/contracts/interfaces/IBondingRegistry.d.ts +11 -1
- package/dist/types/contracts/interfaces/IBondingRegistry.d.ts.map +1 -1
- package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts +35 -7
- package/dist/types/contracts/interfaces/ICiphernodeRegistry.d.ts.map +1 -1
- package/dist/types/contracts/interfaces/ICiphernodeRegistry.js +4 -0
- package/dist/types/contracts/interfaces/IE3Program.d.ts +16 -18
- package/dist/types/contracts/interfaces/IE3Program.d.ts.map +1 -1
- package/dist/types/contracts/interfaces/IE3RefundManager.d.ts +238 -0
- package/dist/types/contracts/interfaces/IE3RefundManager.d.ts.map +1 -0
- package/dist/types/contracts/interfaces/IE3RefundManager.js +16 -0
- package/dist/types/contracts/interfaces/IEnclave.d.ts +290 -62
- package/dist/types/contracts/interfaces/IEnclave.d.ts.map +1 -1
- package/dist/types/contracts/interfaces/IEnclave.js +27 -3
- package/dist/types/contracts/interfaces/index.d.ts +1 -0
- package/dist/types/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/types/contracts/registry/BondingRegistry.d.ts +11 -1
- package/dist/types/contracts/registry/BondingRegistry.d.ts.map +1 -1
- package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts +35 -7
- package/dist/types/contracts/registry/CiphernodeRegistryOwnable.d.ts.map +1 -1
- package/dist/types/contracts/registry/CiphernodeRegistryOwnable.js +4 -0
- package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts +35 -7
- package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.d.ts.map +1 -1
- package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry.js +4 -0
- package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts +35 -7
- package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.d.ts.map +1 -1
- package/dist/types/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey.js +4 -0
- package/dist/types/contracts/test/MockE3Program.d.ts +16 -18
- package/dist/types/contracts/test/MockE3Program.d.ts.map +1 -1
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts +36 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.d.ts.map +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier.js +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts +36 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.d.ts.map +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier.js +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts +36 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.d.ts.map +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/IVerifier.js +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts +138 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.d.ts.map +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib.js +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
- package/dist/types/contracts/verifier/DkgPkVerifier.sol/index.js +1 -0
- package/dist/types/contracts/verifier/index.d.ts +3 -0
- package/dist/types/contracts/verifier/index.d.ts.map +1 -0
- package/dist/types/contracts/verifier/index.js +1 -0
- package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts +1 -1
- package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.d.ts.map +1 -1
- package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/ProxyAdmin__factory.js +1 -1
- package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts +1 -1
- package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.d.ts.map +1 -1
- package/dist/types/factories/@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol/TransparentUpgradeableProxy__factory.js +1 -1
- package/dist/types/factories/contracts/E3RefundManager__factory.d.ts +540 -0
- package/dist/types/factories/contracts/E3RefundManager__factory.d.ts.map +1 -0
- package/dist/types/factories/contracts/E3RefundManager__factory.js +706 -0
- package/dist/types/factories/contracts/Enclave__factory.d.ts +412 -143
- package/dist/types/factories/contracts/Enclave__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/Enclave__factory.js +528 -180
- package/dist/types/factories/contracts/index.d.ts +2 -0
- package/dist/types/factories/contracts/index.d.ts.map +1 -1
- package/dist/types/factories/contracts/index.js +2 -0
- package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts +10 -0
- package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/interfaces/IBondingRegistry__factory.js +13 -0
- package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts +42 -4
- package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/interfaces/ICiphernodeRegistry__factory.js +54 -4
- package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts +14 -18
- package/dist/types/factories/contracts/interfaces/IE3Program__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/interfaces/IE3Program__factory.js +18 -23
- package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts +358 -0
- package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.d.ts.map +1 -0
- package/dist/types/factories/contracts/interfaces/IE3RefundManager__factory.js +471 -0
- package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts +303 -103
- package/dist/types/factories/contracts/interfaces/IEnclave__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/interfaces/IEnclave__factory.js +382 -127
- package/dist/types/factories/contracts/interfaces/index.d.ts +1 -0
- package/dist/types/factories/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/types/factories/contracts/interfaces/index.js +1 -0
- package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts +11 -1
- package/dist/types/factories/contracts/registry/BondingRegistry__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/registry/BondingRegistry__factory.js +14 -1
- package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts +62 -12
- package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/registry/CiphernodeRegistryOwnable__factory.js +79 -13
- package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts +1 -1
- package/dist/types/factories/contracts/slashing/SlashingManager__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/slashing/SlashingManager__factory.js +1 -1
- package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts +43 -5
- package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistryEmptyKey__factory.js +55 -5
- package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts +43 -5
- package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/test/MockCiphernodeRegistry.sol/MockCiphernodeRegistry__factory.js +55 -5
- package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts +1 -1
- package/dist/types/factories/contracts/test/MockComputeProvider__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/test/MockComputeProvider__factory.js +1 -1
- package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts +15 -19
- package/dist/types/factories/contracts/test/MockE3Program__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/test/MockE3Program__factory.js +19 -24
- package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts +1 -1
- package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/test/MockStableToken.sol/MockUSDC__factory.js +1 -1
- package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts +1 -1
- package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/token/EnclaveTicketToken__factory.js +1 -1
- package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts +1 -1
- package/dist/types/factories/contracts/token/EnclaveToken__factory.d.ts.map +1 -1
- package/dist/types/factories/contracts/token/EnclaveToken__factory.js +1 -1
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts +66 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.d.ts.map +1 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/BaseZKHonkVerifier__factory.js +90 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts +87 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.d.ts.map +1 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/DkgPkVerifier__factory.js +122 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts +26 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.d.ts.map +1 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/IVerifier__factory.js +39 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts +323 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.d.ts.map +1 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/ZKTranscriptLib__factory.js +422 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts +5 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.d.ts.map +1 -0
- package/dist/types/factories/contracts/verifier/DkgPkVerifier.sol/index.js +7 -0
- package/dist/types/factories/contracts/verifier/index.d.ts +2 -0
- package/dist/types/factories/contracts/verifier/index.d.ts.map +1 -0
- package/dist/types/factories/contracts/verifier/index.js +4 -0
- package/dist/types/index.d.ts +12 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -0
- package/package.json +17 -3
- package/artifacts/build-info/solc-0_8_28-c77ac33099bb85c15f46d194dd2b735e036cb799.output.json +0 -1
|
@@ -9,11 +9,15 @@ import { network } from "hardhat";
|
|
|
9
9
|
import { poseidon2 } from "poseidon-lite";
|
|
10
10
|
import BondingRegistryModule from "../../ignition/modules/bondingRegistry";
|
|
11
11
|
import CiphernodeRegistryModule from "../../ignition/modules/ciphernodeRegistry";
|
|
12
|
+
import E3RefundManagerModule from "../../ignition/modules/e3RefundManager";
|
|
13
|
+
import EnclaveModule from "../../ignition/modules/enclave";
|
|
12
14
|
import EnclaveTicketTokenModule from "../../ignition/modules/enclaveTicketToken";
|
|
13
15
|
import EnclaveTokenModule from "../../ignition/modules/enclaveToken";
|
|
16
|
+
import MockDecryptionVerifierModule from "../../ignition/modules/mockDecryptionVerifier";
|
|
17
|
+
import MockE3ProgramModule from "../../ignition/modules/mockE3Program";
|
|
14
18
|
import MockStableTokenModule from "../../ignition/modules/mockStableToken";
|
|
15
19
|
import SlashingManagerModule from "../../ignition/modules/slashingManager";
|
|
16
|
-
import { BondingRegistry__factory as BondingRegistryFactory, CiphernodeRegistryOwnable__factory as CiphernodeRegistryFactory, } from "../../types";
|
|
20
|
+
import { BondingRegistry__factory as BondingRegistryFactory, CiphernodeRegistryOwnable__factory as CiphernodeRegistryFactory, Enclave__factory as EnclaveFactory, } from "../../types";
|
|
17
21
|
const AddressOne = "0x0000000000000000000000000000000000000001";
|
|
18
22
|
const AddressTwo = "0x0000000000000000000000000000000000000002";
|
|
19
23
|
const AddressThree = "0x0000000000000000000000000000000000000003";
|
|
@@ -50,6 +54,12 @@ describe("CiphernodeRegistryOwnable", function () {
|
|
|
50
54
|
async function setup() {
|
|
51
55
|
const [owner, notTheOwner, operator1, operator2] = await ethers.getSigners();
|
|
52
56
|
const ownerAddress = await owner.getAddress();
|
|
57
|
+
const abiCoder = ethers.AbiCoder.defaultAbiCoder();
|
|
58
|
+
const polynomial_degree = ethers.toBigInt(2048);
|
|
59
|
+
const plaintext_modulus = ethers.toBigInt(1032193);
|
|
60
|
+
const moduli = [ethers.toBigInt("18014398492704769")];
|
|
61
|
+
const encodedE3ProgramParams = abiCoder.encode(["uint256", "uint256", "uint256[]"], [polynomial_degree, plaintext_modulus, moduli]);
|
|
62
|
+
const encryptionSchemeId = "0x2c2a814a0495f913a3a312fc4771e37552bc14f8a2d4075a08122d356f0849c6";
|
|
53
63
|
const usdcContract = await ignition.deploy(MockStableTokenModule, {
|
|
54
64
|
parameters: {
|
|
55
65
|
MockUSDC: {
|
|
@@ -96,10 +106,44 @@ describe("CiphernodeRegistryOwnable", function () {
|
|
|
96
106
|
},
|
|
97
107
|
},
|
|
98
108
|
});
|
|
109
|
+
const enclaveContract = await ignition.deploy(EnclaveModule, {
|
|
110
|
+
parameters: {
|
|
111
|
+
Enclave: {
|
|
112
|
+
params: encodedE3ProgramParams,
|
|
113
|
+
owner: ownerAddress,
|
|
114
|
+
maxDuration: 60 * 60 * 24 * 30, // 30 days
|
|
115
|
+
registry: AddressOne, // placeholder, will be updated
|
|
116
|
+
bondingRegistry: await bondingRegistryContract.bondingRegistry.getAddress(),
|
|
117
|
+
e3RefundManager: AddressOne, // placeholder, will be updated
|
|
118
|
+
feeToken: await usdcContract.mockUSDC.getAddress(),
|
|
119
|
+
timeoutConfig: {
|
|
120
|
+
committeeFormationWindow: 3600,
|
|
121
|
+
dkgWindow: 3600,
|
|
122
|
+
computeWindow: 3600,
|
|
123
|
+
decryptionWindow: 3600,
|
|
124
|
+
gracePeriod: 300,
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
const enclaveAddress = await enclaveContract.enclave.getAddress();
|
|
130
|
+
const enclave = EnclaveFactory.connect(enclaveAddress, owner);
|
|
131
|
+
const e3RefundManagerContract = await ignition.deploy(E3RefundManagerModule, {
|
|
132
|
+
parameters: {
|
|
133
|
+
E3RefundManager: {
|
|
134
|
+
owner: ownerAddress,
|
|
135
|
+
enclave: enclaveAddress,
|
|
136
|
+
treasury: ownerAddress,
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
const e3RefundManagerAddress = await e3RefundManagerContract.e3RefundManager.getAddress();
|
|
141
|
+
await enclave.setE3RefundManager(e3RefundManagerAddress);
|
|
142
|
+
// Deploy CiphernodeRegistry with real Enclave address
|
|
99
143
|
const registryContract = await ignition.deploy(CiphernodeRegistryModule, {
|
|
100
144
|
parameters: {
|
|
101
145
|
CiphernodeRegistry: {
|
|
102
|
-
enclaveAddress:
|
|
146
|
+
enclaveAddress: enclaveAddress,
|
|
103
147
|
owner: ownerAddress,
|
|
104
148
|
submissionWindow: SORTITION_SUBMISSION_WINDOW,
|
|
105
149
|
},
|
|
@@ -107,11 +151,20 @@ describe("CiphernodeRegistryOwnable", function () {
|
|
|
107
151
|
});
|
|
108
152
|
const registryAddress = await registryContract.cipherNodeRegistry.getAddress();
|
|
109
153
|
const registry = CiphernodeRegistryFactory.connect(registryAddress, owner);
|
|
154
|
+
// Update Enclave with correct registry address
|
|
155
|
+
await enclave.setCiphernodeRegistry(registryAddress);
|
|
110
156
|
const bondingRegistry = BondingRegistryFactory.connect(await bondingRegistryContract.bondingRegistry.getAddress(), owner);
|
|
111
157
|
await ticketTokenContract.enclaveTicketToken.setRegistry(await bondingRegistry.getAddress());
|
|
112
158
|
await bondingRegistry.setRegistry(registryAddress);
|
|
113
159
|
await bondingRegistry.setSlashingManager(await slashingManagerContract.slashingManager.getAddress());
|
|
114
160
|
await slashingManagerContract.slashingManager.setBondingRegistry(await bondingRegistry.getAddress());
|
|
161
|
+
// Set up mock E3Program and DecryptionVerifier for Enclave
|
|
162
|
+
const mockE3Program = await ignition.deploy(MockE3ProgramModule);
|
|
163
|
+
const mockDecryptionVerifier = await ignition.deploy(MockDecryptionVerifierModule);
|
|
164
|
+
await enclave.enableE3Program(await mockE3Program.mockE3Program.getAddress());
|
|
165
|
+
await enclave.setE3ProgramsParams([encodedE3ProgramParams]);
|
|
166
|
+
await enclave.setDecryptionVerifier(encryptionSchemeId, await mockDecryptionVerifier.mockDecryptionVerifier.getAddress());
|
|
167
|
+
await bondingRegistry.setRewardDistributor(enclaveAddress);
|
|
115
168
|
await registry.setBondingRegistry(await bondingRegistry.getAddress());
|
|
116
169
|
const tree = new LeanIMT(hash);
|
|
117
170
|
const licenseToken = enclTokenContract.enclaveToken;
|
|
@@ -129,17 +182,42 @@ describe("CiphernodeRegistryOwnable", function () {
|
|
|
129
182
|
operator1,
|
|
130
183
|
operator2,
|
|
131
184
|
registry,
|
|
185
|
+
enclave,
|
|
132
186
|
bondingRegistry,
|
|
133
187
|
licenseToken,
|
|
134
188
|
ticketToken,
|
|
135
189
|
usdcToken,
|
|
136
190
|
tree,
|
|
191
|
+
mockE3Program,
|
|
192
|
+
mockDecryptionVerifier,
|
|
137
193
|
request: {
|
|
138
|
-
e3Id:
|
|
194
|
+
e3Id: 0,
|
|
139
195
|
threshold: [2, 2],
|
|
140
196
|
},
|
|
141
197
|
};
|
|
142
198
|
}
|
|
199
|
+
// Helper to make a request through the Enclave contract
|
|
200
|
+
async function makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier, signer) {
|
|
201
|
+
const abiCoder = ethers.AbiCoder.defaultAbiCoder();
|
|
202
|
+
const polynomial_degree = ethers.toBigInt(2048);
|
|
203
|
+
const plaintext_modulus = ethers.toBigInt(1032193);
|
|
204
|
+
const moduli = [ethers.toBigInt("18014398492704769")];
|
|
205
|
+
const encodedE3ProgramParams = abiCoder.encode(["uint256", "uint256", "uint256[]"], [polynomial_degree, plaintext_modulus, moduli]);
|
|
206
|
+
const currentTime = await networkHelpers.time.latest();
|
|
207
|
+
const requestParams = {
|
|
208
|
+
threshold: [2, 2],
|
|
209
|
+
inputWindow: [currentTime + 100, currentTime + 300],
|
|
210
|
+
e3Program: await mockE3Program.mockE3Program.getAddress(),
|
|
211
|
+
e3ProgramParams: encodedE3ProgramParams,
|
|
212
|
+
computeProviderParams: abiCoder.encode(["address"], [await mockDecryptionVerifier.mockDecryptionVerifier.getAddress()]),
|
|
213
|
+
customParams: abiCoder.encode(["address"], ["0x1234567890123456789012345678901234567890"]),
|
|
214
|
+
};
|
|
215
|
+
const fee = await enclave.getE3Quote(requestParams);
|
|
216
|
+
const tokenContract = signer ? usdcToken.connect(signer) : usdcToken;
|
|
217
|
+
const enclaveContract = signer ? enclave.connect(signer) : enclave;
|
|
218
|
+
await tokenContract.approve(await enclave.getAddress(), fee);
|
|
219
|
+
return enclaveContract.request(requestParams);
|
|
220
|
+
}
|
|
143
221
|
describe("constructor / initialize()", function () {
|
|
144
222
|
it("correctly sets `_owner` and `enclave` ", async function () {
|
|
145
223
|
const poseidonFactory = await ethers.getContractFactory("PoseidonT3");
|
|
@@ -169,68 +247,61 @@ describe("CiphernodeRegistryOwnable", function () {
|
|
|
169
247
|
});
|
|
170
248
|
});
|
|
171
249
|
describe("requestCommittee()", function () {
|
|
172
|
-
it("
|
|
173
|
-
const { registry,
|
|
174
|
-
|
|
175
|
-
await
|
|
250
|
+
it("stores rootAt for the requested e3Id after a successful request", async function () {
|
|
251
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
|
|
252
|
+
// Request through Enclave
|
|
253
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
254
|
+
expect(await registry.rootAt(0)).to.equal(await registry.root());
|
|
176
255
|
});
|
|
177
256
|
it("stores the root of the ciphernode registry at the time of the request", async function () {
|
|
178
|
-
const { registry,
|
|
179
|
-
await
|
|
180
|
-
expect(await registry.rootAt(
|
|
257
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
|
|
258
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
259
|
+
expect(await registry.rootAt(0)).to.equal(await registry.root());
|
|
181
260
|
});
|
|
182
261
|
it("emits a CommitteeRequested event", async function () {
|
|
183
|
-
const { registry,
|
|
184
|
-
const tx = await
|
|
185
|
-
|
|
186
|
-
|
|
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);
|
|
262
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
|
|
263
|
+
const tx = await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
264
|
+
// Should emit CommitteeRequested from registry
|
|
265
|
+
await expect(tx).to.emit(registry, "CommitteeRequested");
|
|
197
266
|
});
|
|
198
267
|
it("returns true if the request is successful", async function () {
|
|
199
|
-
const { registry,
|
|
200
|
-
|
|
268
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
|
|
269
|
+
// We can verify by checking that root is stored after request
|
|
270
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
271
|
+
expect(await registry.rootAt(0)).to.not.equal(0);
|
|
201
272
|
});
|
|
202
273
|
});
|
|
203
274
|
describe("publishCommittee()", function () {
|
|
204
275
|
it("reverts if the caller is not the owner", async function () {
|
|
205
|
-
const { registry,
|
|
206
|
-
await
|
|
207
|
-
await registry.connect(operator1).submitTicket(
|
|
208
|
-
await registry.connect(operator2).submitTicket(
|
|
209
|
-
await finalizeCommitteeAfterWindow(registry,
|
|
276
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, notTheOwner, operator1, operator2, } = await loadFixture(setup);
|
|
277
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
278
|
+
await registry.connect(operator1).submitTicket(0, 1);
|
|
279
|
+
await registry.connect(operator2).submitTicket(0, 1);
|
|
280
|
+
await finalizeCommitteeAfterWindow(registry, 0);
|
|
210
281
|
await expect(registry
|
|
211
282
|
.connect(notTheOwner)
|
|
212
|
-
.publishCommittee(
|
|
283
|
+
.publishCommittee(0, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash)).to.be.revertedWithCustomError(registry, "OwnableUnauthorizedAccount");
|
|
213
284
|
});
|
|
214
285
|
it("stores the public key of the committee", async function () {
|
|
215
|
-
const { registry,
|
|
216
|
-
await
|
|
286
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, operator1, operator2, } = await loadFixture(setup);
|
|
287
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
217
288
|
await networkHelpers.mine(1);
|
|
218
|
-
await registry.connect(operator1).submitTicket(
|
|
219
|
-
await registry.connect(operator2).submitTicket(
|
|
220
|
-
await finalizeCommitteeAfterWindow(registry,
|
|
221
|
-
await registry.publishCommittee(
|
|
222
|
-
expect(await registry.committeePublicKey(
|
|
289
|
+
await registry.connect(operator1).submitTicket(0, 1);
|
|
290
|
+
await registry.connect(operator2).submitTicket(0, 1);
|
|
291
|
+
await finalizeCommitteeAfterWindow(registry, 0);
|
|
292
|
+
await registry.publishCommittee(0, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash);
|
|
293
|
+
expect(await registry.committeePublicKey(0)).to.equal(dataHash);
|
|
223
294
|
});
|
|
224
295
|
it("emits a CommitteePublished event", async function () {
|
|
225
|
-
const { registry,
|
|
226
|
-
await
|
|
296
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, operator1, operator2, } = await loadFixture(setup);
|
|
297
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
227
298
|
// Submit tickets from both operators and finalize
|
|
228
|
-
await registry.connect(operator1).submitTicket(
|
|
229
|
-
await registry.connect(operator2).submitTicket(
|
|
230
|
-
await finalizeCommitteeAfterWindow(registry,
|
|
231
|
-
await expect(await registry.publishCommittee(
|
|
299
|
+
await registry.connect(operator1).submitTicket(0, 1);
|
|
300
|
+
await registry.connect(operator2).submitTicket(0, 1);
|
|
301
|
+
await finalizeCommitteeAfterWindow(registry, 0);
|
|
302
|
+
await expect(await registry.publishCommittee(0, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash))
|
|
232
303
|
.to.emit(registry, "CommitteePublished")
|
|
233
|
-
.withArgs(
|
|
304
|
+
.withArgs(0, [await operator1.getAddress(), await operator2.getAddress()], data);
|
|
234
305
|
});
|
|
235
306
|
});
|
|
236
307
|
describe("addCiphernode()", function () {
|
|
@@ -318,18 +389,20 @@ describe("CiphernodeRegistryOwnable", function () {
|
|
|
318
389
|
});
|
|
319
390
|
describe("committeePublicKey()", function () {
|
|
320
391
|
it("returns the public key of the committee for the given e3Id", async function () {
|
|
321
|
-
const { registry,
|
|
322
|
-
|
|
323
|
-
await
|
|
324
|
-
await registry.connect(
|
|
325
|
-
await
|
|
326
|
-
await registry
|
|
327
|
-
|
|
392
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, operator1, operator2, } = await loadFixture(setup);
|
|
393
|
+
const e3Id = 0;
|
|
394
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
395
|
+
await registry.connect(operator1).submitTicket(e3Id, 1);
|
|
396
|
+
await registry.connect(operator2).submitTicket(e3Id, 1);
|
|
397
|
+
await finalizeCommitteeAfterWindow(registry, e3Id);
|
|
398
|
+
await registry.publishCommittee(e3Id, [await operator1.getAddress(), await operator2.getAddress()], data, dataHash);
|
|
399
|
+
expect(await registry.committeePublicKey(e3Id)).to.equal(dataHash);
|
|
328
400
|
});
|
|
329
401
|
it("reverts if the committee has not been published", async function () {
|
|
330
|
-
const { registry,
|
|
331
|
-
|
|
332
|
-
await
|
|
402
|
+
const { registry, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
|
|
403
|
+
const e3Id = 0;
|
|
404
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
405
|
+
await expect(registry.committeePublicKey(e3Id)).to.be.revertedWithCustomError(registry, "CommitteeNotPublished");
|
|
333
406
|
});
|
|
334
407
|
});
|
|
335
408
|
describe("isCiphernodeEligible()", function () {
|
|
@@ -360,9 +433,10 @@ describe("CiphernodeRegistryOwnable", function () {
|
|
|
360
433
|
});
|
|
361
434
|
describe("rootAt()", function () {
|
|
362
435
|
it("returns the root of the ciphernode registry merkle tree at the given e3Id", async function () {
|
|
363
|
-
const { registry, tree,
|
|
364
|
-
|
|
365
|
-
|
|
436
|
+
const { registry, tree, enclave, usdcToken, mockE3Program, mockDecryptionVerifier, } = await loadFixture(setup);
|
|
437
|
+
const e3Id = 0;
|
|
438
|
+
await makeRequest(enclave, usdcToken, mockE3Program, mockDecryptionVerifier);
|
|
439
|
+
expect(await registry.rootAt(e3Id)).to.equal(tree.root);
|
|
366
440
|
});
|
|
367
441
|
});
|
|
368
442
|
describe("treeSize()", function () {
|