@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
|
@@ -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
|
+
}
|