@hyperlane-xyz/core 3.11.0 → 3.12.0
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/README.md +18 -2
- package/contracts/avs/ECDSAServiceManagerBase.sol +273 -0
- package/contracts/avs/ECDSAStakeRegistry.sol +536 -0
- package/contracts/avs/ECDSAStakeRegistryStorage.sol +55 -0
- package/contracts/avs/HyperlaneServiceManager.sol +297 -0
- package/contracts/hooks/PolygonPosHook.sol +83 -0
- package/contracts/interfaces/avs/IRemoteChallenger.sol +24 -0
- package/contracts/interfaces/avs/vendored/IAVSDirectory.sol +24 -0
- package/contracts/interfaces/avs/vendored/IDelegationManager.sol +32 -0
- package/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.sol +99 -0
- package/contracts/interfaces/avs/vendored/IPaymentCoordinator.sol +46 -0
- package/contracts/interfaces/avs/vendored/IServiceManager.sol +28 -0
- package/contracts/interfaces/avs/vendored/IServiceManagerUI.sol +67 -0
- package/contracts/interfaces/avs/vendored/ISignatureUtils.sol +27 -0
- package/contracts/interfaces/avs/vendored/ISlasher.sol +11 -0
- package/contracts/interfaces/avs/vendored/IStrategy.sol +107 -0
- package/contracts/isms/hook/PolygonPosIsm.sol +58 -0
- package/contracts/libs/EnumerableMapEnrollment.sol +115 -0
- package/contracts/test/TestRemoteChallenger.sol +21 -0
- package/contracts/test/avs/TestAVSDirectory.sol +87 -0
- package/contracts/test/avs/TestDelegationManager.sol +33 -0
- package/contracts/test/avs/TestHyperlaneServiceManager.sol +30 -0
- package/contracts/test/avs/TestPaymentCoordinator.sol +20 -0
- package/contracts/test/avs/TestSlasher.sol +8 -0
- package/contracts/token/extensions/HypFiatTokenCollateral.sol +1 -0
- package/contracts/token/extensions/HypXERC20Collateral.sol +1 -0
- package/dist/@openzeppelin/contracts/crosschain/index.d.ts +3 -0
- package/dist/@openzeppelin/contracts/crosschain/index.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/crosschain/index.js +2 -0
- package/dist/@openzeppelin/contracts/crosschain/index.js.map +1 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.d.ts +66 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.js +2 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild.js.map +1 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/index.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/index.js +2 -0
- package/dist/@openzeppelin/contracts/crosschain/polygon/index.js.map +1 -0
- package/dist/@openzeppelin/contracts/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts/index.d.ts.map +1 -1
- package/dist/@openzeppelin/contracts/vendor/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
- package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.d.ts +66 -0
- package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.js +2 -0
- package/dist/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor.js.map +1 -0
- package/dist/@openzeppelin/contracts/vendor/polygon/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts/vendor/polygon/index.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/vendor/polygon/index.js +2 -0
- package/dist/@openzeppelin/contracts/vendor/polygon/index.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.d.ts +54 -0
- package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.js +2 -0
- package/dist/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts.map +1 -1
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/avs/ECDSAServiceManagerBase.d.ts +423 -0
- package/dist/contracts/avs/ECDSAServiceManagerBase.d.ts.map +1 -0
- package/dist/contracts/avs/ECDSAServiceManagerBase.js +2 -0
- package/dist/contracts/avs/ECDSAServiceManagerBase.js.map +1 -0
- package/dist/contracts/avs/ECDSAStakeRegistry.d.ts +693 -0
- package/dist/contracts/avs/ECDSAStakeRegistry.d.ts.map +1 -0
- package/dist/contracts/avs/ECDSAStakeRegistry.js +2 -0
- package/dist/contracts/avs/ECDSAStakeRegistry.js.map +1 -0
- package/dist/contracts/avs/ECDSAStakeRegistryStorage.d.ts +157 -0
- package/dist/contracts/avs/ECDSAStakeRegistryStorage.d.ts.map +1 -0
- package/dist/contracts/avs/ECDSAStakeRegistryStorage.js +2 -0
- package/dist/contracts/avs/ECDSAStakeRegistryStorage.js.map +1 -0
- package/dist/contracts/avs/HyperlaneServiceManager.d.ts +736 -0
- package/dist/contracts/avs/HyperlaneServiceManager.d.ts.map +1 -0
- package/dist/contracts/avs/HyperlaneServiceManager.js +2 -0
- package/dist/contracts/avs/HyperlaneServiceManager.js.map +1 -0
- package/dist/contracts/avs/index.d.ts +5 -0
- package/dist/contracts/avs/index.d.ts.map +1 -0
- package/dist/contracts/avs/index.js +2 -0
- package/dist/contracts/avs/index.js.map +1 -0
- package/dist/contracts/hooks/PolygonPosHook.d.ts +518 -0
- package/dist/contracts/hooks/PolygonPosHook.d.ts.map +1 -0
- package/dist/contracts/hooks/PolygonPosHook.js +2 -0
- package/dist/contracts/hooks/PolygonPosHook.js.map +1 -0
- package/dist/contracts/hooks/index.d.ts +1 -0
- package/dist/contracts/hooks/index.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/interfaces/avs/IRemoteChallenger.d.ts +81 -0
- package/dist/contracts/interfaces/avs/IRemoteChallenger.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/IRemoteChallenger.js +2 -0
- package/dist/contracts/interfaces/avs/IRemoteChallenger.js.map +1 -0
- package/dist/contracts/interfaces/avs/index.d.ts +4 -0
- package/dist/contracts/interfaces/avs/index.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/index.js +2 -0
- package/dist/contracts/interfaces/avs/index.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.d.ts +160 -0
- package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/IAVSDirectory.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts +93 -0
- package/dist/contracts/interfaces/avs/vendored/IDelegationManager.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IDelegationManager.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/IDelegationManager.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.d.ts +157 -0
- package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.d.ts +96 -0
- package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/IPaymentCoordinator.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManager.d.ts +250 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManager.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManager.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManager.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.d.ts +189 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/IServiceManagerUI.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/ISlasher.d.ts +66 -0
- package/dist/contracts/interfaces/avs/vendored/ISlasher.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/ISlasher.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/ISlasher.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IStrategy.d.ts +295 -0
- package/dist/contracts/interfaces/avs/vendored/IStrategy.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/IStrategy.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/IStrategy.js.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/index.d.ts +9 -0
- package/dist/contracts/interfaces/avs/vendored/index.d.ts.map +1 -0
- package/dist/contracts/interfaces/avs/vendored/index.js +2 -0
- package/dist/contracts/interfaces/avs/vendored/index.js.map +1 -0
- package/dist/contracts/interfaces/index.d.ts +2 -0
- package/dist/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/contracts/isms/hook/PolygonPosIsm.d.ts +243 -0
- package/dist/contracts/isms/hook/PolygonPosIsm.d.ts.map +1 -0
- package/dist/contracts/isms/hook/PolygonPosIsm.js +2 -0
- package/dist/contracts/isms/hook/PolygonPosIsm.js.map +1 -0
- package/dist/contracts/isms/hook/index.d.ts +1 -0
- package/dist/contracts/isms/hook/index.d.ts.map +1 -1
- package/dist/contracts/libs/EnumerableMapEnrollment.d.ts +73 -0
- package/dist/contracts/libs/EnumerableMapEnrollment.d.ts.map +1 -0
- package/dist/contracts/libs/EnumerableMapEnrollment.js +2 -0
- package/dist/contracts/libs/EnumerableMapEnrollment.js.map +1 -0
- package/dist/contracts/libs/index.d.ts +1 -0
- package/dist/contracts/libs/index.d.ts.map +1 -1
- package/dist/contracts/test/TestRemoteChallenger.d.ts +81 -0
- package/dist/contracts/test/TestRemoteChallenger.d.ts.map +1 -0
- package/dist/contracts/test/TestRemoteChallenger.js +2 -0
- package/dist/contracts/test/TestRemoteChallenger.js.map +1 -0
- package/dist/contracts/test/avs/TestAVSDirectory.d.ts +235 -0
- package/dist/contracts/test/avs/TestAVSDirectory.d.ts.map +1 -0
- package/dist/contracts/test/avs/TestAVSDirectory.js +2 -0
- package/dist/contracts/test/avs/TestAVSDirectory.js.map +1 -0
- package/dist/contracts/test/avs/TestDelegationManager.d.ts +154 -0
- package/dist/contracts/test/avs/TestDelegationManager.d.ts.map +1 -0
- package/dist/contracts/test/avs/TestDelegationManager.js +2 -0
- package/dist/contracts/test/avs/TestDelegationManager.js.map +1 -0
- package/dist/contracts/test/avs/TestHyperlaneServiceManager.d.ts +767 -0
- package/dist/contracts/test/avs/TestHyperlaneServiceManager.d.ts.map +1 -0
- package/dist/contracts/test/avs/TestHyperlaneServiceManager.js +2 -0
- package/dist/contracts/test/avs/TestHyperlaneServiceManager.js.map +1 -0
- package/dist/contracts/test/avs/TestPaymentCoordinator.d.ts +96 -0
- package/dist/contracts/test/avs/TestPaymentCoordinator.d.ts.map +1 -0
- package/dist/contracts/test/avs/TestPaymentCoordinator.js +2 -0
- package/dist/contracts/test/avs/TestPaymentCoordinator.js.map +1 -0
- package/dist/contracts/test/avs/TestSlasher.d.ts +66 -0
- package/dist/contracts/test/avs/TestSlasher.d.ts.map +1 -0
- package/dist/contracts/test/avs/TestSlasher.js +2 -0
- package/dist/contracts/test/avs/TestSlasher.js.map +1 -0
- package/dist/contracts/test/avs/index.d.ts +6 -0
- package/dist/contracts/test/avs/index.d.ts.map +1 -0
- package/dist/contracts/test/avs/index.js +2 -0
- package/dist/contracts/test/avs/index.js.map +1 -0
- package/dist/contracts/test/index.d.ts +3 -0
- package/dist/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts/crosschain/index.d.ts +2 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/index.js +5 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.d.ts +31 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.js +44 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/CrossChainEnabledPolygonChild__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.d.ts +2 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.js +5 -0
- package/dist/factories/@openzeppelin/contracts/crosschain/polygon/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/index.d.ts +1 -0
- package/dist/factories/@openzeppelin/contracts/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts/index.js +1 -0
- package/dist/factories/@openzeppelin/contracts/index.js.map +1 -1
- package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts +1 -0
- package/dist/factories/@openzeppelin/contracts/vendor/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts/vendor/index.js +1 -0
- package/dist/factories/@openzeppelin/contracts/vendor/index.js.map +1 -1
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.d.ts +27 -0
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.js +39 -0
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/IFxMessageProcessor__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.d.ts +2 -0
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.js +5 -0
- package/dist/factories/@openzeppelin/contracts/vendor/polygon/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.d.ts +27 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.js +40 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/IERC1271Upgradeable__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.js +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/interfaces/index.js.map +1 -1
- package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.d.ts +221 -0
- package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.d.ts.map +1 -0
- package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.js +291 -0
- package/dist/factories/contracts/avs/ECDSAServiceManagerBase__factory.js.map +1 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.d.ts +205 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.d.ts.map +1 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.js +266 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistryStorage__factory.js.map +1 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +577 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts.map +1 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +762 -0
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js.map +1 -0
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +444 -0
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +587 -0
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js.map +1 -0
- package/dist/factories/contracts/avs/index.d.ts +5 -0
- package/dist/factories/contracts/avs/index.d.ts.map +1 -0
- package/dist/factories/contracts/avs/index.js +8 -0
- package/dist/factories/contracts/avs/index.js.map +1 -0
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +316 -0
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts.map +1 -0
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +423 -0
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.js.map +1 -0
- package/dist/factories/contracts/hooks/index.d.ts +1 -0
- package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/index.js +1 -0
- package/dist/factories/contracts/hooks/index.js.map +1 -1
- package/dist/factories/contracts/index.d.ts +1 -0
- package/dist/factories/contracts/index.d.ts.map +1 -1
- package/dist/factories/contracts/index.js +1 -0
- package/dist/factories/contracts/index.js.map +1 -1
- package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.d.ts +29 -0
- package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.js +42 -0
- package/dist/factories/contracts/interfaces/avs/IRemoteChallenger__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/index.d.ts +3 -0
- package/dist/factories/contracts/interfaces/avs/index.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/index.js +6 -0
- package/dist/factories/contracts/interfaces/avs/index.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.d.ts +71 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.js +96 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IAVSDirectory__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts +54 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js +75 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IDelegationManager__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.d.ts +205 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.js +266 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IECDSAStakeRegistryEventsAndErrors__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.d.ts +49 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.js +68 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IPaymentCoordinator__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.d.ts +90 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.js +122 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManagerUI__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.d.ts +130 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.js +174 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IServiceManager__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.d.ts +19 -0
- package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.js +29 -0
- package/dist/factories/contracts/interfaces/avs/vendored/ISlasher__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.d.ts +173 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.js +235 -0
- package/dist/factories/contracts/interfaces/avs/vendored/IStrategy__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/index.d.ts +9 -0
- package/dist/factories/contracts/interfaces/avs/vendored/index.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/avs/vendored/index.js +12 -0
- package/dist/factories/contracts/interfaces/avs/vendored/index.js.map +1 -0
- package/dist/factories/contracts/interfaces/index.d.ts +1 -0
- package/dist/factories/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/index.js +1 -0
- package/dist/factories/contracts/interfaces/index.js.map +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +153 -0
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +212 -0
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
- package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/index.js +1 -0
- package/dist/factories/contracts/isms/hook/index.js.map +1 -1
- package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.d.ts +67 -0
- package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.d.ts.map +1 -0
- package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.js +101 -0
- package/dist/factories/contracts/libs/EnumerableMapEnrollment__factory.js.map +1 -0
- package/dist/factories/contracts/libs/index.d.ts +1 -0
- package/dist/factories/contracts/libs/index.d.ts.map +1 -1
- package/dist/factories/contracts/libs/index.js +1 -0
- package/dist/factories/contracts/libs/index.js.map +1 -1
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts +49 -0
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +76 -0
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.js.map +1 -0
- package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.d.ts +157 -0
- package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.js +216 -0
- package/dist/factories/contracts/test/avs/TestAVSDirectory__factory.js.map +1 -0
- package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts +112 -0
- package/dist/factories/contracts/test/avs/TestDelegationManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js +159 -0
- package/dist/factories/contracts/test/avs/TestDelegationManager__factory.js.map +1 -0
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +458 -0
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +605 -0
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js.map +1 -0
- package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.d.ts +61 -0
- package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.js +91 -0
- package/dist/factories/contracts/test/avs/TestPaymentCoordinator__factory.js.map +1 -0
- package/dist/factories/contracts/test/avs/TestSlasher__factory.d.ts +31 -0
- package/dist/factories/contracts/test/avs/TestSlasher__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/avs/TestSlasher__factory.js +52 -0
- package/dist/factories/contracts/test/avs/TestSlasher__factory.js.map +1 -0
- package/dist/factories/contracts/test/avs/index.d.ts +6 -0
- package/dist/factories/contracts/test/avs/index.d.ts.map +1 -0
- package/dist/factories/contracts/test/avs/index.js +9 -0
- package/dist/factories/contracts/test/avs/index.js.map +1 -0
- package/dist/factories/contracts/test/index.d.ts +2 -0
- package/dist/factories/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/contracts/test/index.js +2 -0
- package/dist/factories/contracts/test/index.js.map +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatTokenCollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Collateral__factory.js +1 -1
- package/dist/factories/fx-portal/contracts/index.d.ts +2 -0
- package/dist/factories/fx-portal/contracts/index.d.ts.map +1 -0
- package/dist/factories/fx-portal/contracts/index.js +5 -0
- package/dist/factories/fx-portal/contracts/index.js.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.d.ts +83 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.d.ts.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.js +113 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel__factory.js.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.d.ts +51 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.d.ts.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.js +78 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager__factory.js.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.d.ts +23 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.d.ts.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.js +34 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender__factory.js.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts +4 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js +7 -0
- package/dist/factories/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/index.d.ts +2 -0
- package/dist/factories/fx-portal/contracts/tunnel/index.d.ts.map +1 -0
- package/dist/factories/fx-portal/contracts/tunnel/index.js +5 -0
- package/dist/factories/fx-portal/contracts/tunnel/index.js.map +1 -0
- package/dist/factories/fx-portal/index.d.ts +2 -0
- package/dist/factories/fx-portal/index.d.ts.map +1 -0
- package/dist/factories/fx-portal/index.js +5 -0
- package/dist/factories/fx-portal/index.js.map +1 -0
- package/dist/factories/index.d.ts +1 -0
- package/dist/factories/index.d.ts.map +1 -1
- package/dist/factories/index.js +1 -0
- package/dist/factories/index.js.map +1 -1
- package/dist/fx-portal/contracts/index.d.ts +3 -0
- package/dist/fx-portal/contracts/index.d.ts.map +1 -0
- package/dist/fx-portal/contracts/index.js +2 -0
- package/dist/fx-portal/contracts/index.js.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.d.ts +172 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.d.ts.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.js +2 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/FxBaseRootTunnel.js.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.d.ts +122 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.d.ts.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.js +2 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/ICheckpointManager.js.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.d.ts +66 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.d.ts.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.js +2 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/IFxStateSender.js.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts +4 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.d.ts.map +1 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js +2 -0
- package/dist/fx-portal/contracts/tunnel/FxBaseRootTunnel.sol/index.js.map +1 -0
- package/dist/fx-portal/contracts/tunnel/index.d.ts +3 -0
- package/dist/fx-portal/contracts/tunnel/index.d.ts.map +1 -0
- package/dist/fx-portal/contracts/tunnel/index.js +2 -0
- package/dist/fx-portal/contracts/tunnel/index.js.map +1 -0
- package/dist/fx-portal/index.d.ts +3 -0
- package/dist/fx-portal/index.d.ts.map +1 -0
- package/dist/fx-portal/index.js +2 -0
- package/dist/fx-portal/index.js.map +1 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
// ============ Internal Imports ============
|
|
17
|
+
import {Enrollment, EnrollmentStatus, EnumerableMapEnrollment} from "../libs/EnumerableMapEnrollment.sol";
|
|
18
|
+
import {IAVSDirectory} from "../interfaces/avs/vendored/IAVSDirectory.sol";
|
|
19
|
+
import {IRemoteChallenger} from "../interfaces/avs/IRemoteChallenger.sol";
|
|
20
|
+
import {ISlasher} from "../interfaces/avs/vendored/ISlasher.sol";
|
|
21
|
+
import {ECDSAServiceManagerBase} from "./ECDSAServiceManagerBase.sol";
|
|
22
|
+
|
|
23
|
+
contract HyperlaneServiceManager is ECDSAServiceManagerBase {
|
|
24
|
+
// ============ Libraries ============
|
|
25
|
+
|
|
26
|
+
using EnumerableMapEnrollment for EnumerableMapEnrollment.AddressToEnrollmentMap;
|
|
27
|
+
|
|
28
|
+
// ============ Public Storage ============
|
|
29
|
+
|
|
30
|
+
// Slasher contract responsible for slashing operators
|
|
31
|
+
// @dev slasher needs to be updated once slashing is implemented
|
|
32
|
+
ISlasher internal slasher;
|
|
33
|
+
|
|
34
|
+
// ============ Events ============
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @notice Emitted when an operator is enrolled in a challenger
|
|
38
|
+
* @param operator The address of the operator
|
|
39
|
+
* @param challenger The address of the challenger
|
|
40
|
+
*/
|
|
41
|
+
event OperatorEnrolledToChallenger(
|
|
42
|
+
address operator,
|
|
43
|
+
IRemoteChallenger challenger
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* @notice Emitted when an operator is queued for unenrollment from a challenger
|
|
48
|
+
* @param operator The address of the operator
|
|
49
|
+
* @param challenger The address of the challenger
|
|
50
|
+
* @param unenrollmentStartBlock The block number at which the unenrollment was queued
|
|
51
|
+
* @param challengeDelayBlocks The number of blocks to wait before unenrollment is complete
|
|
52
|
+
*/
|
|
53
|
+
event OperatorQueuedUnenrollmentFromChallenger(
|
|
54
|
+
address operator,
|
|
55
|
+
IRemoteChallenger challenger,
|
|
56
|
+
uint256 unenrollmentStartBlock,
|
|
57
|
+
uint256 challengeDelayBlocks
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* @notice Emitted when an operator is unenrolled from a challenger
|
|
62
|
+
* @param operator The address of the operator
|
|
63
|
+
* @param challenger The address of the challenger
|
|
64
|
+
* @param unenrollmentEndBlock The block number at which the unenrollment was completed
|
|
65
|
+
*/
|
|
66
|
+
event OperatorUnenrolledFromChallenger(
|
|
67
|
+
address operator,
|
|
68
|
+
IRemoteChallenger challenger,
|
|
69
|
+
uint256 unenrollmentEndBlock
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
// ============ Internal Storage ============
|
|
73
|
+
|
|
74
|
+
// Mapping of operators to challengers they are enrolled in (enumerable required for remove-all)
|
|
75
|
+
mapping(address => EnumerableMapEnrollment.AddressToEnrollmentMap)
|
|
76
|
+
internal enrolledChallengers;
|
|
77
|
+
|
|
78
|
+
// ============ Modifiers ============
|
|
79
|
+
|
|
80
|
+
// Only allows the challenger the operator is enrolled in to call the function
|
|
81
|
+
modifier onlyEnrolledChallenger(address operator) {
|
|
82
|
+
(bool exists, ) = enrolledChallengers[operator].tryGet(msg.sender);
|
|
83
|
+
require(
|
|
84
|
+
exists,
|
|
85
|
+
"HyperlaneServiceManager: Operator not enrolled in challenger"
|
|
86
|
+
);
|
|
87
|
+
_;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ============ Constructor ============
|
|
91
|
+
|
|
92
|
+
constructor(
|
|
93
|
+
address _avsDirectory,
|
|
94
|
+
address _stakeRegistry,
|
|
95
|
+
address _paymentCoordinator,
|
|
96
|
+
address _delegationManager
|
|
97
|
+
)
|
|
98
|
+
ECDSAServiceManagerBase(
|
|
99
|
+
_avsDirectory,
|
|
100
|
+
_stakeRegistry,
|
|
101
|
+
_paymentCoordinator,
|
|
102
|
+
_delegationManager
|
|
103
|
+
)
|
|
104
|
+
{}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @notice Initializes the HyperlaneServiceManager contract with the owner address
|
|
108
|
+
*/
|
|
109
|
+
function initialize(address _owner) public initializer {
|
|
110
|
+
__ServiceManagerBase_init(_owner);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// ============ External Functions ============
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @notice Enrolls as an operator into a list of challengers
|
|
117
|
+
* @param _challengers The list of challengers to enroll into
|
|
118
|
+
*/
|
|
119
|
+
function enrollIntoChallengers(
|
|
120
|
+
IRemoteChallenger[] memory _challengers
|
|
121
|
+
) external {
|
|
122
|
+
for (uint256 i = 0; i < _challengers.length; i++) {
|
|
123
|
+
enrollIntoChallenger(_challengers[i]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* @notice starts an operator for unenrollment from a list of challengers
|
|
129
|
+
* @param _challengers The list of challengers to unenroll from
|
|
130
|
+
*/
|
|
131
|
+
function startUnenrollment(
|
|
132
|
+
IRemoteChallenger[] memory _challengers
|
|
133
|
+
) external {
|
|
134
|
+
for (uint256 i = 0; i < _challengers.length; i++) {
|
|
135
|
+
startUnenrollment(_challengers[i]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* @notice Completes the unenrollment of an operator from a list of challengers
|
|
141
|
+
* @param _challengers The list of challengers to unenroll from
|
|
142
|
+
*/
|
|
143
|
+
function completeUnenrollment(address[] memory _challengers) external {
|
|
144
|
+
_completeUnenrollment(msg.sender, _challengers);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* @notice Sets the slasher contract responsible for slashing operators
|
|
149
|
+
* @param _slasher The address of the slasher contract
|
|
150
|
+
*/
|
|
151
|
+
function setSlasher(ISlasher _slasher) external onlyOwner {
|
|
152
|
+
slasher = _slasher;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* @notice returns the status of a challenger an operator is enrolled in
|
|
157
|
+
* @param _operator The address of the operator
|
|
158
|
+
* @param _challenger specified IRemoteChallenger contract
|
|
159
|
+
*/
|
|
160
|
+
function getChallengerEnrollment(
|
|
161
|
+
address _operator,
|
|
162
|
+
IRemoteChallenger _challenger
|
|
163
|
+
) external view returns (Enrollment memory enrollment) {
|
|
164
|
+
return enrolledChallengers[_operator].get(address(_challenger));
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* @notice forwards a call to the Slasher contract to freeze an operator
|
|
169
|
+
* @param operator The address of the operator to freeze.
|
|
170
|
+
* @dev only the enrolled challengers can call this function
|
|
171
|
+
*/
|
|
172
|
+
function freezeOperator(
|
|
173
|
+
address operator
|
|
174
|
+
) external virtual onlyEnrolledChallenger(operator) {
|
|
175
|
+
slasher.freezeOperator(operator);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// ============ Public Functions ============
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @notice returns the list of challengers an operator is enrolled in
|
|
182
|
+
* @param _operator The address of the operator
|
|
183
|
+
*/
|
|
184
|
+
function getOperatorChallengers(
|
|
185
|
+
address _operator
|
|
186
|
+
) public view returns (address[] memory) {
|
|
187
|
+
return enrolledChallengers[_operator].keys();
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* @notice Enrolls as an operator into a single challenger
|
|
192
|
+
* @param challenger The challenger to enroll into
|
|
193
|
+
*/
|
|
194
|
+
function enrollIntoChallenger(IRemoteChallenger challenger) public {
|
|
195
|
+
require(
|
|
196
|
+
enrolledChallengers[msg.sender].set(
|
|
197
|
+
address(challenger),
|
|
198
|
+
Enrollment(EnrollmentStatus.ENROLLED, 0)
|
|
199
|
+
)
|
|
200
|
+
);
|
|
201
|
+
emit OperatorEnrolledToChallenger(msg.sender, challenger);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* @notice starts an operator for unenrollment from a challenger
|
|
206
|
+
* @param challenger The challenger to unenroll from
|
|
207
|
+
*/
|
|
208
|
+
function startUnenrollment(IRemoteChallenger challenger) public {
|
|
209
|
+
(bool exists, Enrollment memory enrollment) = enrolledChallengers[
|
|
210
|
+
msg.sender
|
|
211
|
+
].tryGet(address(challenger));
|
|
212
|
+
require(
|
|
213
|
+
exists && enrollment.status == EnrollmentStatus.ENROLLED,
|
|
214
|
+
"HyperlaneServiceManager: challenger isn't enrolled"
|
|
215
|
+
);
|
|
216
|
+
|
|
217
|
+
enrolledChallengers[msg.sender].set(
|
|
218
|
+
address(challenger),
|
|
219
|
+
Enrollment(
|
|
220
|
+
EnrollmentStatus.PENDING_UNENROLLMENT,
|
|
221
|
+
uint248(block.number)
|
|
222
|
+
)
|
|
223
|
+
);
|
|
224
|
+
emit OperatorQueuedUnenrollmentFromChallenger(
|
|
225
|
+
msg.sender,
|
|
226
|
+
challenger,
|
|
227
|
+
block.number,
|
|
228
|
+
challenger.challengeDelayBlocks()
|
|
229
|
+
);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* @notice Completes the unenrollment of an operator from a challenger
|
|
234
|
+
* @param challenger The challenger to unenroll from
|
|
235
|
+
*/
|
|
236
|
+
function completeUnenrollment(address challenger) public {
|
|
237
|
+
_completeUnenrollment(msg.sender, challenger);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// ============ Internal Functions ============
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* @notice Completes the unenrollment of an operator from a list of challengers
|
|
244
|
+
* @param operator The address of the operator
|
|
245
|
+
* @param _challengers The list of challengers to unenroll from
|
|
246
|
+
*/
|
|
247
|
+
function _completeUnenrollment(
|
|
248
|
+
address operator,
|
|
249
|
+
address[] memory _challengers
|
|
250
|
+
) internal {
|
|
251
|
+
for (uint256 i = 0; i < _challengers.length; i++) {
|
|
252
|
+
_completeUnenrollment(operator, _challengers[i]);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* @notice Completes the unenrollment of an operator from a challenger
|
|
258
|
+
* @param operator The address of the operator
|
|
259
|
+
* @param _challenger The challenger to unenroll from
|
|
260
|
+
*/
|
|
261
|
+
function _completeUnenrollment(
|
|
262
|
+
address operator,
|
|
263
|
+
address _challenger
|
|
264
|
+
) internal {
|
|
265
|
+
IRemoteChallenger challenger = IRemoteChallenger(_challenger);
|
|
266
|
+
(bool exists, Enrollment memory enrollment) = enrolledChallengers[
|
|
267
|
+
operator
|
|
268
|
+
].tryGet(address(challenger));
|
|
269
|
+
|
|
270
|
+
require(
|
|
271
|
+
exists &&
|
|
272
|
+
enrollment.status == EnrollmentStatus.PENDING_UNENROLLMENT &&
|
|
273
|
+
block.number >=
|
|
274
|
+
enrollment.unenrollmentStartBlock +
|
|
275
|
+
challenger.challengeDelayBlocks(),
|
|
276
|
+
"HyperlaneServiceManager: Invalid unenrollment"
|
|
277
|
+
);
|
|
278
|
+
|
|
279
|
+
enrolledChallengers[operator].remove(address(challenger));
|
|
280
|
+
emit OperatorUnenrolledFromChallenger(
|
|
281
|
+
operator,
|
|
282
|
+
challenger,
|
|
283
|
+
block.number
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/// @inheritdoc ECDSAServiceManagerBase
|
|
288
|
+
function _deregisterOperatorFromAVS(
|
|
289
|
+
address operator
|
|
290
|
+
) internal virtual override {
|
|
291
|
+
address[] memory challengers = getOperatorChallengers(operator);
|
|
292
|
+
_completeUnenrollment(operator, challengers);
|
|
293
|
+
|
|
294
|
+
IAVSDirectory(avsDirectory).deregisterOperatorFromAVS(operator);
|
|
295
|
+
emit OperatorDeregisteredFromAVS(operator);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
// ============ Internal Imports ============
|
|
17
|
+
import {AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
|
|
18
|
+
import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
|
|
19
|
+
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
20
|
+
import {Message} from "../libs/Message.sol";
|
|
21
|
+
import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
|
|
22
|
+
|
|
23
|
+
// ============ External Imports ============
|
|
24
|
+
import {FxBaseRootTunnel} from "fx-portal/contracts/tunnel/FxBaseRootTunnel.sol";
|
|
25
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @title PolygonPosHook
|
|
29
|
+
* @notice Message hook to inform the PolygonPosIsm of messages published through
|
|
30
|
+
* the native PoS bridge.
|
|
31
|
+
*/
|
|
32
|
+
contract PolygonPosHook is AbstractMessageIdAuthHook, FxBaseRootTunnel {
|
|
33
|
+
using StandardHookMetadata for bytes;
|
|
34
|
+
|
|
35
|
+
// ============ Constructor ============
|
|
36
|
+
|
|
37
|
+
constructor(
|
|
38
|
+
address _mailbox,
|
|
39
|
+
uint32 _destinationDomain,
|
|
40
|
+
bytes32 _ism,
|
|
41
|
+
address _cpManager,
|
|
42
|
+
address _fxRoot
|
|
43
|
+
)
|
|
44
|
+
AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism)
|
|
45
|
+
FxBaseRootTunnel(_cpManager, _fxRoot)
|
|
46
|
+
{
|
|
47
|
+
require(
|
|
48
|
+
Address.isContract(_cpManager),
|
|
49
|
+
"PolygonPosHook: invalid cpManager contract"
|
|
50
|
+
);
|
|
51
|
+
require(
|
|
52
|
+
Address.isContract(_fxRoot),
|
|
53
|
+
"PolygonPosHook: invalid fxRoot contract"
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// ============ Internal functions ============
|
|
58
|
+
function _quoteDispatch(
|
|
59
|
+
bytes calldata,
|
|
60
|
+
bytes calldata
|
|
61
|
+
) internal pure override returns (uint256) {
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/// @inheritdoc AbstractMessageIdAuthHook
|
|
66
|
+
function _sendMessageId(
|
|
67
|
+
bytes calldata metadata,
|
|
68
|
+
bytes memory payload
|
|
69
|
+
) internal override {
|
|
70
|
+
require(
|
|
71
|
+
metadata.msgValue(0) == 0,
|
|
72
|
+
"PolygonPosHook: does not support msgValue"
|
|
73
|
+
);
|
|
74
|
+
require(msg.value == 0, "PolygonPosHook: does not support msgValue");
|
|
75
|
+
_sendMessageToChild(payload);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
bytes public latestData;
|
|
79
|
+
|
|
80
|
+
function _processMessageFromChild(bytes memory data) internal override {
|
|
81
|
+
latestData = data;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
interface IRemoteChallenger {
|
|
17
|
+
/// @notice Returns the number of blocks that must be mined before a challenge can be handled
|
|
18
|
+
/// @return The number of blocks that must be mined before a challenge can be handled
|
|
19
|
+
function challengeDelayBlocks() external view returns (uint256);
|
|
20
|
+
|
|
21
|
+
/// @notice Handles a challenge for an operator
|
|
22
|
+
/// @param operator The address of the operator
|
|
23
|
+
function handleChallenge(address operator) external;
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import "./ISignatureUtils.sol";
|
|
5
|
+
|
|
6
|
+
/// part of mock interfaces for vendoring necessary Eigenlayer contracts for the hyperlane AVS
|
|
7
|
+
/// @author Layr Labs, Inc.
|
|
8
|
+
interface IAVSDirectory is ISignatureUtils {
|
|
9
|
+
enum OperatorAVSRegistrationStatus {
|
|
10
|
+
UNREGISTERED,
|
|
11
|
+
REGISTERED
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
event AVSMetadataURIUpdated(address indexed avs, string metadataURI);
|
|
15
|
+
|
|
16
|
+
function registerOperatorToAVS(
|
|
17
|
+
address operator,
|
|
18
|
+
ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
|
|
19
|
+
) external;
|
|
20
|
+
|
|
21
|
+
function deregisterOperatorFromAVS(address operator) external;
|
|
22
|
+
|
|
23
|
+
function updateAVSMetadataURI(string calldata metadataURI) external;
|
|
24
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {IStrategy} from "./IStrategy.sol";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @title DelegationManager
|
|
8
|
+
* @author Layr Labs, Inc.
|
|
9
|
+
* @notice Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service
|
|
10
|
+
* @notice This is the contract for delegation in EigenLayer. The main functionalities of this contract are
|
|
11
|
+
* - enabling anyone to register as an operator in EigenLayer
|
|
12
|
+
* - allowing operators to specify parameters related to stakers who delegate to them
|
|
13
|
+
* - enabling any staker to delegate its stake to the operator of its choice (a given staker can only delegate to a single operator at a time)
|
|
14
|
+
* - enabling a staker to undelegate its assets from the operator it is delegated to (performed as part of the withdrawal process, initiated through the StrategyManager)
|
|
15
|
+
*/
|
|
16
|
+
interface IDelegationManager {
|
|
17
|
+
struct OperatorDetails {
|
|
18
|
+
address earningsReceiver;
|
|
19
|
+
address delegationApprover;
|
|
20
|
+
uint32 stakerOptOutWindowBlocks;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function registerAsOperator(
|
|
24
|
+
OperatorDetails calldata registeringOperatorDetails,
|
|
25
|
+
string calldata metadataURI
|
|
26
|
+
) external;
|
|
27
|
+
|
|
28
|
+
function getOperatorShares(
|
|
29
|
+
address operator,
|
|
30
|
+
IStrategy[] memory strategies
|
|
31
|
+
) external view returns (uint256[] memory);
|
|
32
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.12;
|
|
3
|
+
|
|
4
|
+
import {IStrategy} from "./IStrategy.sol";
|
|
5
|
+
|
|
6
|
+
struct StrategyParams {
|
|
7
|
+
IStrategy strategy; // The strategy contract reference
|
|
8
|
+
uint96 multiplier; // The multiplier applied to the strategy
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
struct Quorum {
|
|
12
|
+
StrategyParams[] strategies; // An array of strategy parameters to define the quorum
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/// part of mock interfaces for vendoring necessary Eigenlayer contracts for the hyperlane AVS
|
|
16
|
+
/// @author Layr Labs, Inc.
|
|
17
|
+
interface IECDSAStakeRegistryEventsAndErrors {
|
|
18
|
+
/// @notice Emitted when the system registers an operator
|
|
19
|
+
/// @param _operator The address of the registered operator
|
|
20
|
+
/// @param _avs The address of the associated AVS
|
|
21
|
+
event OperatorRegistered(address indexed _operator, address indexed _avs);
|
|
22
|
+
|
|
23
|
+
/// @notice Emitted when the system deregisters an operator
|
|
24
|
+
/// @param _operator The address of the deregistered operator
|
|
25
|
+
/// @param _avs The address of the associated AVS
|
|
26
|
+
event OperatorDeregistered(address indexed _operator, address indexed _avs);
|
|
27
|
+
|
|
28
|
+
/// @notice Emitted when the system updates the quorum
|
|
29
|
+
/// @param _old The previous quorum configuration
|
|
30
|
+
/// @param _new The new quorum configuration
|
|
31
|
+
event QuorumUpdated(Quorum _old, Quorum _new);
|
|
32
|
+
|
|
33
|
+
/// @notice Emitted when the weight to join the operator set updates
|
|
34
|
+
/// @param _old The previous minimum weight
|
|
35
|
+
/// @param _new The new minimumWeight
|
|
36
|
+
event MinimumWeightUpdated(uint256 _old, uint256 _new);
|
|
37
|
+
|
|
38
|
+
/// @notice Emitted when the weight required to be an operator changes
|
|
39
|
+
/// @param oldMinimumWeight The previous weight
|
|
40
|
+
/// @param newMinimumWeight The updated weight
|
|
41
|
+
event UpdateMinimumWeight(
|
|
42
|
+
uint256 oldMinimumWeight,
|
|
43
|
+
uint256 newMinimumWeight
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
/// @notice Emitted when the system updates an operator's weight
|
|
47
|
+
/// @param _operator The address of the operator updated
|
|
48
|
+
/// @param oldWeight The operator's weight before the update
|
|
49
|
+
/// @param newWeight The operator's weight after the update
|
|
50
|
+
event OperatorWeightUpdated(
|
|
51
|
+
address indexed _operator,
|
|
52
|
+
uint256 oldWeight,
|
|
53
|
+
uint256 newWeight
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
/// @notice Emitted when the system updates the total weight
|
|
57
|
+
/// @param oldTotalWeight The total weight before the update
|
|
58
|
+
/// @param newTotalWeight The total weight after the update
|
|
59
|
+
event TotalWeightUpdated(uint256 oldTotalWeight, uint256 newTotalWeight);
|
|
60
|
+
|
|
61
|
+
/// @notice Emits when setting a new threshold weight.
|
|
62
|
+
event ThresholdWeightUpdated(uint256 _thresholdWeight);
|
|
63
|
+
|
|
64
|
+
/// @notice Indicates when the lengths of the signers array and signatures array do not match.
|
|
65
|
+
error LengthMismatch();
|
|
66
|
+
|
|
67
|
+
/// @notice Indicates encountering an invalid length for the signers or signatures array.
|
|
68
|
+
error InvalidLength();
|
|
69
|
+
|
|
70
|
+
/// @notice Indicates encountering an invalid signature.
|
|
71
|
+
error InvalidSignature();
|
|
72
|
+
|
|
73
|
+
/// @notice Thrown when the threshold update is greater than BPS
|
|
74
|
+
error InvalidThreshold();
|
|
75
|
+
|
|
76
|
+
/// @notice Thrown when missing operators in an update
|
|
77
|
+
error MustUpdateAllOperators();
|
|
78
|
+
|
|
79
|
+
/// @notice Indicates operator weights were out of sync and the signed weight exceed the total
|
|
80
|
+
error InvalidSignedWeight();
|
|
81
|
+
|
|
82
|
+
/// @notice Indicates the total signed stake fails to meet the required threshold.
|
|
83
|
+
error InsufficientSignedStake();
|
|
84
|
+
|
|
85
|
+
/// @notice Indicates an individual signer's weight fails to meet the required threshold.
|
|
86
|
+
error InsufficientWeight();
|
|
87
|
+
|
|
88
|
+
/// @notice Indicates the quorum is invalid
|
|
89
|
+
error InvalidQuorum();
|
|
90
|
+
|
|
91
|
+
/// @notice Indicates the system finds a list of items unsorted
|
|
92
|
+
error NotSorted();
|
|
93
|
+
|
|
94
|
+
/// @notice Thrown when registering an already registered operator
|
|
95
|
+
error OperatorAlreadyRegistered();
|
|
96
|
+
|
|
97
|
+
/// @notice Thrown when de-registering or updating the stake for an unregistered operator
|
|
98
|
+
error OperatorNotRegistered();
|
|
99
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
5
|
+
import "./IStrategy.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @title Interface for the `IPaymentCoordinator` contract.
|
|
9
|
+
* @author Layr Labs, Inc.
|
|
10
|
+
* @notice Terms of Service: https://docs.eigenlayer.xyz/overview/terms-of-service
|
|
11
|
+
* @notice Allows AVSs to make "Range Payments", which get distributed amongst the AVSs' confirmed
|
|
12
|
+
* Operators and the Stakers delegated to those Operators.
|
|
13
|
+
* Calculations are performed based on the completed Range Payments, with the results posted in
|
|
14
|
+
* a Merkle root against which Stakers & Operators can make claims.
|
|
15
|
+
*/
|
|
16
|
+
interface IPaymentCoordinator {
|
|
17
|
+
/// STRUCTS ///
|
|
18
|
+
struct StrategyAndMultiplier {
|
|
19
|
+
IStrategy strategy;
|
|
20
|
+
// weight used to compare shares in multiple strategies against one another
|
|
21
|
+
uint96 multiplier;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
struct RangePayment {
|
|
25
|
+
// Strategies & relative weights of shares in the strategies
|
|
26
|
+
StrategyAndMultiplier[] strategiesAndMultipliers;
|
|
27
|
+
IERC20 token;
|
|
28
|
+
uint256 amount;
|
|
29
|
+
uint64 startTimestamp;
|
|
30
|
+
uint64 duration;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/// EXTERNAL FUNCTIONS ///
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @notice Creates a new range payment on behalf of an AVS, to be split amongst the
|
|
37
|
+
* set of stakers delegated to operators who are registered to the `avs`
|
|
38
|
+
* @param rangePayments The range payments being created
|
|
39
|
+
* @dev Expected to be called by the ServiceManager of the AVS on behalf of which the payment is being made
|
|
40
|
+
* @dev The duration of the `rangePayment` cannot exceed `MAX_PAYMENT_DURATION`
|
|
41
|
+
* @dev The tokens are sent to the `claimingManager` contract
|
|
42
|
+
* @dev This function will revert if the `rangePayment` is malformed,
|
|
43
|
+
* e.g. if the `strategies` and `weights` arrays are of non-equal lengths
|
|
44
|
+
*/
|
|
45
|
+
function payForRange(RangePayment[] calldata rangePayments) external;
|
|
46
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: BUSL-1.1
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
import {IPaymentCoordinator} from "./IPaymentCoordinator.sol";
|
|
5
|
+
import {IServiceManagerUI} from "./IServiceManagerUI.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @title Minimal interface for a ServiceManager-type contract that forms the single point for an AVS to push updates to EigenLayer
|
|
9
|
+
* @author Layr Labs, Inc.
|
|
10
|
+
*/
|
|
11
|
+
interface IServiceManager is IServiceManagerUI {
|
|
12
|
+
/**
|
|
13
|
+
* @notice Creates a new range payment on behalf of an AVS, to be split amongst the
|
|
14
|
+
* set of stakers delegated to operators who are registered to the `avs`.
|
|
15
|
+
* Note that the owner calling this function must have approved the tokens to be transferred to the ServiceManager
|
|
16
|
+
* and of course has the required balances.
|
|
17
|
+
* @param rangePayments The range payments being created
|
|
18
|
+
* @dev Expected to be called by the ServiceManager of the AVS on behalf of which the payment is being made
|
|
19
|
+
* @dev The duration of the `rangePayment` cannot exceed `paymentCoordinator.MAX_PAYMENT_DURATION()`
|
|
20
|
+
* @dev The tokens are sent to the `PaymentCoordinator` contract
|
|
21
|
+
* @dev Strategies must be in ascending order of addresses to check for duplicates
|
|
22
|
+
* @dev This function will revert if the `rangePayment` is malformed,
|
|
23
|
+
* e.g. if the `strategies` and `weights` arrays are of non-equal lengths
|
|
24
|
+
*/
|
|
25
|
+
function payForRange(
|
|
26
|
+
IPaymentCoordinator.RangePayment[] calldata rangePayments
|
|
27
|
+
) external;
|
|
28
|
+
}
|