@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
|
@@ -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
|
-
|
|
44
|
+
IEnclave public enclave;
|
|
44
45
|
|
|
45
46
|
/// @notice Address of the bonding registry for checking node eligibility
|
|
46
|
-
|
|
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
|
|
93
|
-
error
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
310
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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(
|
|
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(
|
|
383
|
-
|
|
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(
|
|
415
|
-
|
|
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(
|
|
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 =
|
|
499
|
-
|
|
500
|
-
|
|
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(
|
|
78
|
+
function setEnclave(IEnclave) external pure {}
|
|
73
79
|
|
|
74
80
|
// solhint-disable-next-line no-empty-blocks
|
|
75
|
-
function setBondingRegistry(
|
|
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(
|
|
163
|
+
function setEnclave(IEnclave) external pure {}
|
|
152
164
|
|
|
153
165
|
// solhint-disable-next-line no-empty-blocks
|
|
154
|
-
function setBondingRegistry(
|
|
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
|
|
38
|
-
|
|
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
|
}
|