@hyperlane-xyz/core 0.5.4-2 → 0.5.5
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/contracts/{HyperlaneConnectionClient.sol → AbacusConnectionClient.sol} +56 -69
- package/contracts/AbacusConnectionManager.sol +145 -0
- package/contracts/Inbox.sol +148 -0
- package/contracts/InterchainGasPaymaster.sol +11 -9
- package/contracts/Mailbox.sol +44 -179
- package/contracts/MerkleTreeManager.sol +32 -0
- package/contracts/Outbox.sol +191 -0
- package/contracts/Router.sol +45 -36
- package/contracts/libs/Message.sol +66 -107
- package/contracts/middleware/InterchainAccountRouter.sol +15 -6
- package/contracts/middleware/InterchainQueryRouter.sol +28 -9
- package/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol +3 -2
- package/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol +2 -1
- package/contracts/middleware/liquidity-layer/adapters/PortalAdapter.sol +215 -0
- package/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.sol +87 -0
- package/contracts/mock/MockHyperlaneEnvironment.sol +47 -10
- package/contracts/mock/MockInbox.sol +52 -0
- package/contracts/mock/MockInterchainAccountRouter.sol +18 -4
- package/contracts/mock/MockOutbox.sol +30 -0
- package/contracts/mock/MockPortalBridge.sol +89 -0
- package/contracts/test/TestAbacusConnectionClient.sol +23 -0
- package/contracts/test/TestInbox.sol +54 -0
- package/contracts/test/TestMailbox.sol +4 -34
- package/contracts/test/TestMerkle.sol +4 -9
- package/contracts/test/TestMessage.sol +12 -24
- package/contracts/test/TestMultisigValidatorManager.sol +26 -0
- package/contracts/test/TestOutbox.sol +46 -0
- package/contracts/test/TestSendReceiver.sol +15 -6
- package/contracts/test/TestValidatorManager.sol +21 -0
- package/contracts/validator-manager/InboxValidatorManager.sol +58 -0
- package/contracts/validator-manager/MultisigValidatorManager.sol +271 -0
- package/contracts/validator-manager/OutboxValidatorManager.sol +244 -0
- package/dist/contracts/{OwnableSpecifiesISM.d.ts → AbacusConnectionClient.d.ts} +65 -30
- package/dist/contracts/AbacusConnectionClient.d.ts.map +1 -0
- package/dist/contracts/AbacusConnectionClient.js +4 -0
- package/dist/contracts/AbacusConnectionClient.js.map +1 -0
- package/dist/contracts/AbacusConnectionManager.d.ts +213 -0
- package/dist/contracts/AbacusConnectionManager.d.ts.map +1 -0
- package/dist/contracts/AbacusConnectionManager.js +4 -0
- package/dist/contracts/AbacusConnectionManager.js.map +1 -0
- package/dist/contracts/Inbox.d.ts +207 -0
- package/dist/contracts/Inbox.d.ts.map +1 -0
- package/dist/contracts/{OwnableSpecifiesISM.js → Inbox.js} +1 -1
- package/dist/contracts/Inbox.js.map +1 -0
- package/dist/contracts/InterchainGasPaymaster.d.ts +13 -11
- package/dist/contracts/InterchainGasPaymaster.d.ts.map +1 -1
- package/dist/contracts/Mailbox.d.ts +28 -151
- package/dist/contracts/Mailbox.d.ts.map +1 -1
- package/dist/contracts/MerkleTreeManager.d.ts +53 -0
- package/dist/contracts/MerkleTreeManager.d.ts.map +1 -0
- package/dist/contracts/MerkleTreeManager.js +4 -0
- package/dist/contracts/MerkleTreeManager.js.map +1 -0
- package/dist/contracts/Outbox.d.ts +331 -0
- package/dist/contracts/Outbox.d.ts.map +1 -0
- package/dist/contracts/Outbox.js +4 -0
- package/dist/contracts/Outbox.js.map +1 -0
- package/dist/contracts/Router.d.ts +32 -81
- package/dist/contracts/Router.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +7 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/middleware/InterchainAccountRouter.d.ts +56 -89
- package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
- package/dist/contracts/middleware/InterchainQueryRouter.d.ts +55 -88
- package/dist/contracts/middleware/InterchainQueryRouter.d.ts.map +1 -1
- package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts +37 -86
- package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts.map +1 -1
- package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts +32 -81
- package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts.map +1 -1
- package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts +378 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/PortalAdapter.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts +1 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -1
- package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts +2 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -1
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.d.ts +148 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts +2 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.js +3 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/portal/index.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.d.ts +291 -0
- package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.js +4 -0
- package/dist/contracts/middleware/token-bridge/TokenBridgeRouter.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.d.ts +416 -0
- package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.js +4 -0
- package/dist/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/adapters/index.d.ts +2 -0
- package/dist/contracts/middleware/token-bridge/adapters/index.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/adapters/index.js +3 -0
- package/dist/contracts/middleware/token-bridge/adapters/index.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/index.d.ts +6 -0
- package/dist/contracts/middleware/token-bridge/index.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/index.js +4 -0
- package/dist/contracts/middleware/token-bridge/index.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.d.ts +67 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.js +4 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.d.ts +51 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.js +4 -0
- package/dist/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.d.ts +78 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.js +4 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.d.ts +59 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.js +4 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/index.d.ts +3 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/index.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/index.js +3 -0
- package/dist/contracts/middleware/token-bridge/interfaces/circle/index.js.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/index.d.ts +5 -0
- package/dist/contracts/middleware/token-bridge/interfaces/index.d.ts.map +1 -0
- package/dist/contracts/middleware/token-bridge/interfaces/index.js +4 -0
- package/dist/contracts/middleware/token-bridge/interfaces/index.js.map +1 -0
- package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts +33 -9
- package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts.map +1 -1
- package/dist/contracts/mock/MockInbox.d.ts +67 -0
- package/dist/contracts/mock/MockInbox.d.ts.map +1 -0
- package/dist/contracts/mock/MockInbox.js +4 -0
- package/dist/contracts/mock/MockInbox.js.map +1 -0
- package/dist/contracts/mock/MockInterchainAccountRouter.d.ts +24 -8
- package/dist/contracts/mock/MockInterchainAccountRouter.d.ts.map +1 -1
- package/dist/contracts/mock/MockOutbox.d.ts +51 -0
- package/dist/contracts/mock/MockOutbox.d.ts.map +1 -0
- package/dist/contracts/mock/MockOutbox.js +4 -0
- package/dist/contracts/mock/MockOutbox.js.map +1 -0
- package/dist/contracts/mock/MockPortalBridge.d.ts +164 -0
- package/dist/contracts/mock/MockPortalBridge.d.ts.map +1 -0
- package/dist/contracts/mock/MockPortalBridge.js +4 -0
- package/dist/contracts/mock/MockPortalBridge.js.map +1 -0
- package/dist/contracts/mock/index.d.ts +3 -0
- package/dist/contracts/mock/index.d.ts.map +1 -1
- package/dist/contracts/test/TestAbacusConnectionClient.d.ts +209 -0
- package/dist/contracts/test/TestAbacusConnectionClient.d.ts.map +1 -0
- package/dist/contracts/test/TestAbacusConnectionClient.js +4 -0
- package/dist/contracts/test/TestAbacusConnectionClient.js.map +1 -0
- package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts +5 -5
- package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts.map +1 -1
- package/dist/contracts/test/TestInbox.d.ts +263 -0
- package/dist/contracts/test/TestInbox.d.ts.map +1 -0
- package/dist/contracts/test/TestInbox.js +4 -0
- package/dist/contracts/test/TestInbox.js.map +1 -0
- package/dist/contracts/test/TestMailbox.d.ts +33 -164
- package/dist/contracts/test/TestMailbox.d.ts.map +1 -1
- package/dist/contracts/test/TestMessage.d.ts +10 -30
- package/dist/contracts/test/TestMessage.d.ts.map +1 -1
- package/dist/contracts/test/TestMultisigValidatorManager.d.ts +247 -0
- package/dist/contracts/test/TestMultisigValidatorManager.d.ts.map +1 -0
- package/dist/contracts/test/TestMultisigValidatorManager.js +4 -0
- package/dist/contracts/test/TestMultisigValidatorManager.js.map +1 -0
- package/dist/contracts/test/TestOutbox.d.ts +371 -0
- package/dist/contracts/test/TestOutbox.d.ts.map +1 -0
- package/dist/contracts/test/TestOutbox.js +4 -0
- package/dist/contracts/test/TestOutbox.js.map +1 -0
- package/dist/contracts/test/TestRouter.d.ts +32 -81
- package/dist/contracts/test/TestRouter.d.ts.map +1 -1
- package/dist/contracts/test/TestTokenBridgeMessageRecipient.d.ts +72 -0
- package/dist/contracts/test/TestTokenBridgeMessageRecipient.d.ts.map +1 -0
- package/dist/contracts/test/TestTokenBridgeMessageRecipient.js +4 -0
- package/dist/contracts/test/TestTokenBridgeMessageRecipient.js.map +1 -0
- package/dist/contracts/test/TestValidatorManager.d.ts +58 -0
- package/dist/contracts/test/TestValidatorManager.d.ts.map +1 -0
- package/dist/contracts/test/TestValidatorManager.js +4 -0
- package/dist/contracts/test/TestValidatorManager.js.map +1 -0
- package/dist/contracts/test/index.d.ts +5 -0
- package/dist/contracts/test/index.d.ts.map +1 -1
- package/dist/contracts/validator-manager/InboxValidatorManager.d.ts +263 -0
- package/dist/contracts/validator-manager/InboxValidatorManager.d.ts.map +1 -0
- package/dist/contracts/validator-manager/InboxValidatorManager.js +4 -0
- package/dist/contracts/validator-manager/InboxValidatorManager.js.map +1 -0
- package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts +239 -0
- package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts.map +1 -0
- package/dist/contracts/validator-manager/MultisigValidatorManager.js +4 -0
- package/dist/contracts/validator-manager/MultisigValidatorManager.js.map +1 -0
- package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts +335 -0
- package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts.map +1 -0
- package/dist/contracts/validator-manager/OutboxValidatorManager.js +4 -0
- package/dist/contracts/validator-manager/OutboxValidatorManager.js.map +1 -0
- package/dist/contracts/validator-manager/index.d.ts +4 -0
- package/dist/contracts/validator-manager/index.d.ts.map +1 -0
- package/dist/contracts/validator-manager/index.js +3 -0
- package/dist/contracts/validator-manager/index.js.map +1 -0
- package/dist/factories/contracts/AbacusConnectionClient__factory.d.ts +43 -0
- package/dist/factories/contracts/AbacusConnectionClient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/AbacusConnectionClient__factory.js +161 -0
- package/dist/factories/contracts/AbacusConnectionClient__factory.js.map +1 -0
- package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts +55 -0
- package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/AbacusConnectionManager__factory.js +276 -0
- package/dist/factories/contracts/AbacusConnectionManager__factory.js.map +1 -0
- package/dist/factories/contracts/Inbox__factory.d.ts +59 -0
- package/dist/factories/contracts/Inbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/Inbox__factory.js +278 -0
- package/dist/factories/contracts/Inbox__factory.js.map +1 -0
- package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts +1 -1
- package/dist/factories/contracts/InterchainGasPaymaster__factory.d.ts.map +1 -1
- package/dist/factories/contracts/InterchainGasPaymaster__factory.js +18 -7
- package/dist/factories/contracts/InterchainGasPaymaster__factory.js.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts +13 -29
- package/dist/factories/contracts/Mailbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.js +11 -239
- package/dist/factories/contracts/Mailbox__factory.js.map +1 -1
- package/dist/factories/contracts/MerkleTreeManager__factory.d.ts +31 -0
- package/dist/factories/contracts/MerkleTreeManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/MerkleTreeManager__factory.js +67 -0
- package/dist/factories/contracts/MerkleTreeManager__factory.js.map +1 -0
- package/dist/factories/contracts/Outbox__factory.d.ts +59 -0
- package/dist/factories/contracts/Outbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/Outbox__factory.js +415 -0
- package/dist/factories/contracts/Outbox__factory.js.map +1 -0
- package/dist/factories/contracts/Router__factory.d.ts.map +1 -1
- package/dist/factories/contracts/Router__factory.js +26 -83
- package/dist/factories/contracts/Router__factory.js.map +1 -1
- package/dist/factories/contracts/index.d.ts +6 -0
- package/dist/factories/contracts/index.d.ts.map +1 -1
- package/dist/factories/contracts/index.js +12 -1
- package/dist/factories/contracts/index.js.map +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +58 -86
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +68 -91
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +31 -88
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +31 -88
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +540 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js +3 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js +2 -1
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.d.ts +56 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.js +204 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/IPortalTokenBridge__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts +2 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.js +9 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/portal/index.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.js +380 -0
- package/dist/factories/contracts/middleware/token-bridge/TokenBridgeRouter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.js +584 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/CircleBridgeAdapter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/index.d.ts +2 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/index.js +9 -0
- package/dist/factories/contracts/middleware/token-bridge/adapters/index.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/index.d.ts +4 -0
- package/dist/factories/contracts/middleware/token-bridge/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/index.js +34 -0
- package/dist/factories/contracts/middleware/token-bridge/index.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.d.ts +23 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.js +91 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeAdapter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.d.ts +19 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.js +51 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/ITokenBridgeMessageRecipient__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.d.ts +36 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.js +104 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleBridge__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.d.ts +23 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.js +61 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/ICircleMessageTransmitter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.d.ts +3 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.js +11 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/circle/index.js.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/index.d.ts +4 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/index.js +35 -0
- package/dist/factories/contracts/middleware/token-bridge/interfaces/index.js.map +1 -0
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +60 -3
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockInbox__factory.d.ts +31 -0
- package/dist/factories/contracts/mock/MockInbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockInbox__factory.js +76 -0
- package/dist/factories/contracts/mock/MockInbox__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js +33 -4
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js.map +1 -1
- package/dist/factories/contracts/mock/MockOutbox__factory.d.ts +45 -0
- package/dist/factories/contracts/mock/MockOutbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockOutbox__factory.js +86 -0
- package/dist/factories/contracts/mock/MockOutbox__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts +79 -0
- package/dist/factories/contracts/mock/MockPortalBridge__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockPortalBridge__factory.js +296 -0
- package/dist/factories/contracts/mock/MockPortalBridge__factory.js.map +1 -0
- package/dist/factories/contracts/mock/index.d.ts +3 -0
- package/dist/factories/contracts/mock/index.d.ts.map +1 -1
- package/dist/factories/contracts/mock/index.js +7 -1
- package/dist/factories/contracts/mock/index.js.map +1 -1
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts +48 -0
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js +242 -0
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +2 -2
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestInbox__factory.d.ts +59 -0
- package/dist/factories/contracts/test/TestInbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestInbox__factory.js +371 -0
- package/dist/factories/contracts/test/TestInbox__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts +8 -1
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.js +13 -235
- package/dist/factories/contracts/test/TestMailbox__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestMerkle__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMerkle__factory.js +1 -1
- package/dist/factories/contracts/test/TestMessage__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMessage__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestMessage__factory.js +7 -40
- package/dist/factories/contracts/test/TestMessage__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts +59 -0
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js +349 -0
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestOutbox__factory.d.ts +59 -0
- package/dist/factories/contracts/test/TestOutbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestOutbox__factory.js +483 -0
- package/dist/factories/contracts/test/TestOutbox__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestQuerySender__factory.js +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.js +31 -88
- package/dist/factories/contracts/test/TestRouter__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.js +2 -2
- package/dist/factories/contracts/test/TestSendReceiver__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.d.ts +44 -0
- package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.js +111 -0
- package/dist/factories/contracts/test/TestTokenBridgeMessageRecipient__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts +31 -0
- package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestValidatorManager__factory.js +79 -0
- package/dist/factories/contracts/test/TestValidatorManager__factory.js.map +1 -0
- package/dist/factories/contracts/test/index.d.ts +5 -0
- package/dist/factories/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/contracts/test/index.js +11 -1
- package/dist/factories/contracts/test/index.js.map +1 -1
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts +59 -0
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js +373 -0
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js.map +1 -0
- package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.d.ts +36 -0
- package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.js +286 -0
- package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.js.map +1 -0
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts +59 -0
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts.map +1 -0
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js +560 -0
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js.map +1 -0
- package/dist/factories/contracts/validator-manager/index.d.ts +4 -0
- package/dist/factories/contracts/validator-manager/index.d.ts.map +1 -0
- package/dist/factories/contracts/validator-manager/index.js +13 -0
- package/dist/factories/contracts/validator-manager/index.js.map +1 -0
- package/dist/factories/interfaces/IAbacusConnectionManager__factory.d.ts +23 -0
- package/dist/factories/interfaces/IAbacusConnectionManager__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IAbacusConnectionManager__factory.js +63 -0
- package/dist/factories/interfaces/IAbacusConnectionManager__factory.js.map +1 -0
- package/dist/factories/interfaces/IInbox__factory.d.ts +29 -0
- package/dist/factories/interfaces/IInbox__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IInbox__factory.js +90 -0
- package/dist/factories/interfaces/IInbox__factory.js.map +1 -0
- package/dist/factories/interfaces/IInterchainAccountRouter__factory.d.ts.map +1 -1
- package/dist/factories/interfaces/IInterchainAccountRouter__factory.js +31 -2
- package/dist/factories/interfaces/IInterchainAccountRouter__factory.js.map +1 -1
- package/dist/factories/interfaces/IInterchainGasPaymaster__factory.d.ts.map +1 -1
- package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js +8 -3
- package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js.map +1 -1
- package/dist/factories/interfaces/IInterchainQueryRouter__factory.d.ts.map +1 -1
- package/dist/factories/interfaces/IInterchainQueryRouter__factory.js +38 -4
- package/dist/factories/interfaces/IInterchainQueryRouter__factory.js.map +1 -1
- package/dist/factories/interfaces/IMailbox__factory.d.ts +1 -5
- package/dist/factories/interfaces/IMailbox__factory.d.ts.map +1 -1
- package/dist/factories/interfaces/IMailbox__factory.js +3 -81
- package/dist/factories/interfaces/IMailbox__factory.js.map +1 -1
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts +19 -0
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.js +57 -0
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.js.map +1 -0
- package/dist/factories/interfaces/IOutbox__factory.d.ts +23 -0
- package/dist/factories/interfaces/IOutbox__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IOutbox__factory.js +155 -0
- package/dist/factories/interfaces/IOutbox__factory.js.map +1 -0
- package/dist/factories/interfaces/index.d.ts +4 -0
- package/dist/factories/interfaces/index.d.ts.map +1 -1
- package/dist/factories/interfaces/index.js +9 -1
- package/dist/factories/interfaces/index.js.map +1 -1
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IAbacusConnectionManager.d.ts +59 -0
- package/dist/interfaces/IAbacusConnectionManager.d.ts.map +1 -0
- package/dist/interfaces/IAbacusConnectionManager.js +4 -0
- package/dist/interfaces/IAbacusConnectionManager.js.map +1 -0
- package/dist/interfaces/IInbox.d.ts +83 -0
- package/dist/interfaces/IInbox.d.ts.map +1 -0
- package/dist/interfaces/IInbox.js +4 -0
- package/dist/interfaces/IInbox.js.map +1 -0
- package/dist/interfaces/IInterchainAccountRouter.d.ts +24 -8
- package/dist/interfaces/IInterchainAccountRouter.d.ts.map +1 -1
- package/dist/interfaces/IInterchainGasPaymaster.d.ts +7 -7
- package/dist/interfaces/IInterchainGasPaymaster.d.ts.map +1 -1
- package/dist/interfaces/IInterchainQueryRouter.d.ts +19 -3
- package/dist/interfaces/IInterchainQueryRouter.d.ts.map +1 -1
- package/dist/interfaces/IMailbox.d.ts +10 -58
- package/dist/interfaces/IMailbox.d.ts.map +1 -1
- package/dist/interfaces/IMultisigValidatorManager.d.ts +59 -0
- package/dist/interfaces/IMultisigValidatorManager.d.ts.map +1 -0
- package/dist/interfaces/IMultisigValidatorManager.js +4 -0
- package/dist/interfaces/IMultisigValidatorManager.js.map +1 -0
- package/dist/interfaces/IOutbox.d.ts +148 -0
- package/dist/interfaces/IOutbox.d.ts.map +1 -0
- package/dist/interfaces/IOutbox.js +4 -0
- package/dist/interfaces/IOutbox.js.map +1 -0
- package/dist/interfaces/index.d.ts +4 -0
- package/dist/interfaces/index.d.ts.map +1 -1
- package/interfaces/IAbacusConnectionManager.sol +12 -0
- package/interfaces/IInbox.sol +16 -0
- package/interfaces/IInterchainAccountRouter.sol +7 -1
- package/interfaces/IInterchainGasPaymaster.sol +5 -3
- package/interfaces/IInterchainQueryRouter.sol +9 -2
- package/interfaces/IMailbox.sol +2 -15
- package/interfaces/IMultisigValidatorManager.sol +11 -0
- package/interfaces/IOutbox.sol +27 -0
- package/package.json +3 -4
- package/contracts/isms/MultisigIsm.sol +0 -340
- package/contracts/libs/MultisigIsmMetadata.sol +0 -187
- package/contracts/mock/MockMailbox.sol +0 -79
- package/contracts/test/TestHyperlaneConnectionClient.sol +0 -14
- package/contracts/test/TestIsm.sol +0 -20
- package/contracts/test/TestMultisigIsm.sol +0 -23
- package/dist/contracts/OwnableSpecifiesISM.d.ts.map +0 -1
- package/dist/contracts/OwnableSpecifiesISM.js.map +0 -1
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts +0 -55
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts.map +0 -1
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.js +0 -145
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.js.map +0 -1
- package/interfaces/IInterchainSecurityModule.sol +0 -16
- package/interfaces/IMultisigIsm.sol +0 -18
|
@@ -1,340 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
-
pragma solidity >=0.8.0;
|
|
3
|
-
|
|
4
|
-
// ============ External Imports ============
|
|
5
|
-
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
6
|
-
import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
|
|
7
|
-
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
|
8
|
-
|
|
9
|
-
// ============ Internal Imports ============
|
|
10
|
-
import {IMultisigIsm} from "../../interfaces/IMultisigIsm.sol";
|
|
11
|
-
import {Message} from "../libs/Message.sol";
|
|
12
|
-
import {MultisigIsmMetadata} from "../libs/MultisigIsmMetadata.sol";
|
|
13
|
-
import {MerkleLib} from "../libs/Merkle.sol";
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @title MultisigIsm
|
|
17
|
-
* @notice Manages an ownable set of validators that ECDSA sign checkpoints to
|
|
18
|
-
* reach a quorum.
|
|
19
|
-
*/
|
|
20
|
-
contract MultisigIsm is IMultisigIsm, Ownable {
|
|
21
|
-
// ============ Libraries ============
|
|
22
|
-
|
|
23
|
-
using EnumerableSet for EnumerableSet.AddressSet;
|
|
24
|
-
using Message for bytes;
|
|
25
|
-
using MultisigIsmMetadata for bytes;
|
|
26
|
-
using MerkleLib for MerkleLib.Tree;
|
|
27
|
-
|
|
28
|
-
// ============ Mutable Storage ============
|
|
29
|
-
|
|
30
|
-
/// @notice The validator threshold for each remote domain.
|
|
31
|
-
mapping(uint32 => uint256) public threshold;
|
|
32
|
-
|
|
33
|
-
/// @notice The validator set for each remote domain.
|
|
34
|
-
mapping(uint32 => EnumerableSet.AddressSet) private validatorSet;
|
|
35
|
-
|
|
36
|
-
/// @notice A succinct commitment to the validator set and threshold for each remote
|
|
37
|
-
/// domain.
|
|
38
|
-
mapping(uint32 => bytes32) public commitment;
|
|
39
|
-
|
|
40
|
-
// ============ Events ============
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @notice Emitted when a validator is enrolled in a validator set.
|
|
44
|
-
* @param domain The remote domain of the validator set.
|
|
45
|
-
* @param validator The address of the validator.
|
|
46
|
-
* @param validatorCount The number of enrolled validators in the validator set.
|
|
47
|
-
* @param commitment A commitment to the validator set and threshold.
|
|
48
|
-
*/
|
|
49
|
-
event ValidatorEnrolled(
|
|
50
|
-
uint32 indexed domain,
|
|
51
|
-
address indexed validator,
|
|
52
|
-
uint256 validatorCount,
|
|
53
|
-
bytes32 commitment
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* @notice Emitted when a validator is unenrolled from a validator set.
|
|
58
|
-
* @param domain The remote domain of the validator set.
|
|
59
|
-
* @param validator The address of the validator.
|
|
60
|
-
* @param validatorCount The number of enrolled validators in the validator set.
|
|
61
|
-
* @param commitment A commitment to the validator set and threshold.
|
|
62
|
-
*/
|
|
63
|
-
event ValidatorUnenrolled(
|
|
64
|
-
uint32 indexed domain,
|
|
65
|
-
address indexed validator,
|
|
66
|
-
uint256 validatorCount,
|
|
67
|
-
bytes32 commitment
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* @notice Emitted when the quorum threshold is set.
|
|
72
|
-
* @param domain The remote domain of the validator set.
|
|
73
|
-
* @param threshold The new quorum threshold.
|
|
74
|
-
* @param commitment A commitment to the validator set and threshold.
|
|
75
|
-
*/
|
|
76
|
-
event ThresholdSet(
|
|
77
|
-
uint32 indexed domain,
|
|
78
|
-
uint256 threshold,
|
|
79
|
-
bytes32 commitment
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
// ============ Constructor ============
|
|
83
|
-
|
|
84
|
-
// solhint-disable-next-line no-empty-blocks
|
|
85
|
-
constructor() Ownable() {}
|
|
86
|
-
|
|
87
|
-
// ============ External Functions ============
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* @notice Enrolls a validator into a validator set.
|
|
91
|
-
* @dev Reverts if `_validator` is already in the validator set.
|
|
92
|
-
* @param _domain The remote domain of the validator set.
|
|
93
|
-
* @param _validator The validator to add to the validator set.
|
|
94
|
-
*/
|
|
95
|
-
function enrollValidator(uint32 _domain, address _validator)
|
|
96
|
-
external
|
|
97
|
-
onlyOwner
|
|
98
|
-
{
|
|
99
|
-
require(_validator != address(0), "zero address");
|
|
100
|
-
require(validatorSet[_domain].add(_validator), "already enrolled");
|
|
101
|
-
bytes32 _commitment = _updateCommitment(_domain);
|
|
102
|
-
emit ValidatorEnrolled(
|
|
103
|
-
_domain,
|
|
104
|
-
_validator,
|
|
105
|
-
validatorCount(_domain),
|
|
106
|
-
_commitment
|
|
107
|
-
);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* @notice Unenrolls a validator from a validator set.
|
|
112
|
-
* @dev Reverts if `_validator` is not in the validator set.
|
|
113
|
-
* @param _domain The remote domain of the validator set.
|
|
114
|
-
* @param _validator The validator to remove from the validator set.
|
|
115
|
-
*/
|
|
116
|
-
function unenrollValidator(uint32 _domain, address _validator)
|
|
117
|
-
external
|
|
118
|
-
onlyOwner
|
|
119
|
-
{
|
|
120
|
-
require(validatorSet[_domain].remove(_validator), "!enrolled");
|
|
121
|
-
uint256 _validatorCount = validatorCount(_domain);
|
|
122
|
-
require(
|
|
123
|
-
_validatorCount >= threshold[_domain],
|
|
124
|
-
"violates quorum threshold"
|
|
125
|
-
);
|
|
126
|
-
bytes32 _commitment = _updateCommitment(_domain);
|
|
127
|
-
emit ValidatorUnenrolled(
|
|
128
|
-
_domain,
|
|
129
|
-
_validator,
|
|
130
|
-
_validatorCount,
|
|
131
|
-
_commitment
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* @notice Sets the quorum threshold.
|
|
137
|
-
* @param _domain The remote domain of the validator set.
|
|
138
|
-
* @param _threshold The new quorum threshold.
|
|
139
|
-
*/
|
|
140
|
-
function setThreshold(uint32 _domain, uint256 _threshold)
|
|
141
|
-
external
|
|
142
|
-
onlyOwner
|
|
143
|
-
{
|
|
144
|
-
require(
|
|
145
|
-
_threshold > 0 && _threshold <= validatorCount(_domain),
|
|
146
|
-
"!range"
|
|
147
|
-
);
|
|
148
|
-
threshold[_domain] = _threshold;
|
|
149
|
-
bytes32 _commitment = _updateCommitment(_domain);
|
|
150
|
-
emit ThresholdSet(_domain, _threshold, _commitment);
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* @notice Returns whether an address is enrolled in a validator set.
|
|
155
|
-
* @param _domain The remote domain of the validator set.
|
|
156
|
-
* @param _address The address to test for set membership.
|
|
157
|
-
* @return True if the address is enrolled, false otherwise.
|
|
158
|
-
*/
|
|
159
|
-
function isEnrolled(uint32 _domain, address _address)
|
|
160
|
-
external
|
|
161
|
-
view
|
|
162
|
-
returns (bool)
|
|
163
|
-
{
|
|
164
|
-
EnumerableSet.AddressSet storage _validatorSet = validatorSet[_domain];
|
|
165
|
-
return _validatorSet.contains(_address);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// ============ Public Functions ============
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* @notice Verifies that a quorum of the origin domain's validators signed
|
|
172
|
-
* a checkpoint, and verifies the merkle proof of `_message` against that
|
|
173
|
-
* checkpoint.
|
|
174
|
-
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
175
|
-
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
176
|
-
*/
|
|
177
|
-
function verify(bytes calldata _metadata, bytes calldata _message)
|
|
178
|
-
public
|
|
179
|
-
view
|
|
180
|
-
returns (bool)
|
|
181
|
-
{
|
|
182
|
-
require(_verifyMerkleProof(_metadata, _message), "!merkle");
|
|
183
|
-
require(_verifyValidatorSignatures(_metadata, _message), "!sigs");
|
|
184
|
-
return true;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/**
|
|
188
|
-
* @notice Gets the current validator set
|
|
189
|
-
* @param _domain The remote domain of the validator set.
|
|
190
|
-
* @return The addresses of the validator set.
|
|
191
|
-
*/
|
|
192
|
-
function validators(uint32 _domain) public view returns (address[] memory) {
|
|
193
|
-
EnumerableSet.AddressSet storage _validatorSet = validatorSet[_domain];
|
|
194
|
-
uint256 _validatorCount = _validatorSet.length();
|
|
195
|
-
address[] memory _validators = new address[](_validatorCount);
|
|
196
|
-
for (uint256 i = 0; i < _validatorCount; i++) {
|
|
197
|
-
_validators[i] = _validatorSet.at(i);
|
|
198
|
-
}
|
|
199
|
-
return _validators;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* @notice Returns the number of validators enrolled in the validator set.
|
|
204
|
-
* @param _domain The remote domain of the validator set.
|
|
205
|
-
* @return The number of validators enrolled in the validator set.
|
|
206
|
-
*/
|
|
207
|
-
function validatorCount(uint32 _domain) public view returns (uint256) {
|
|
208
|
-
return validatorSet[_domain].length();
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// ============ Internal Functions ============
|
|
212
|
-
|
|
213
|
-
/**
|
|
214
|
-
* @notice Updates the commitment to the validator set for `_domain`.
|
|
215
|
-
* @param _domain The remote domain of the validator set.
|
|
216
|
-
* @return The commitment to the validator set for `_domain`.
|
|
217
|
-
*/
|
|
218
|
-
function _updateCommitment(uint32 _domain) internal returns (bytes32) {
|
|
219
|
-
address[] memory _validators = validators(_domain);
|
|
220
|
-
uint256 _threshold = threshold[_domain];
|
|
221
|
-
bytes32 _commitment = keccak256(
|
|
222
|
-
abi.encodePacked(_threshold, _validators)
|
|
223
|
-
);
|
|
224
|
-
commitment[_domain] = _commitment;
|
|
225
|
-
return _commitment;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* @notice Verifies the merkle proof of `_message` against the provided
|
|
230
|
-
* checkpoint.
|
|
231
|
-
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
232
|
-
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
233
|
-
*/
|
|
234
|
-
function _verifyMerkleProof(
|
|
235
|
-
bytes calldata _metadata,
|
|
236
|
-
bytes calldata _message
|
|
237
|
-
) internal pure returns (bool) {
|
|
238
|
-
// calculate the expected root based on the proof
|
|
239
|
-
bytes32 _calculatedRoot = MerkleLib.branchRoot(
|
|
240
|
-
_message.id(),
|
|
241
|
-
_metadata.proof(),
|
|
242
|
-
_message.nonce()
|
|
243
|
-
);
|
|
244
|
-
return _calculatedRoot == _metadata.root();
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* @notice Verifies that a quorum of the origin domain's validators signed
|
|
249
|
-
* the provided checkpoint.
|
|
250
|
-
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
251
|
-
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
252
|
-
*/
|
|
253
|
-
function _verifyValidatorSignatures(
|
|
254
|
-
bytes calldata _metadata,
|
|
255
|
-
bytes calldata _message
|
|
256
|
-
) internal view returns (bool) {
|
|
257
|
-
uint256 _threshold = _metadata.threshold();
|
|
258
|
-
bytes32 _digest;
|
|
259
|
-
{
|
|
260
|
-
uint32 _origin = _message.origin();
|
|
261
|
-
|
|
262
|
-
bytes32 _commitment = keccak256(
|
|
263
|
-
abi.encodePacked(_threshold, _metadata.validators())
|
|
264
|
-
);
|
|
265
|
-
// Ensures the validator set encoded in the metadata matches
|
|
266
|
-
// what we've stored on chain.
|
|
267
|
-
// NB: An empty validator set in `_metadata` will result in a
|
|
268
|
-
// non-zero computed commitment, and this check will fail
|
|
269
|
-
// as the commitment in storage will be zero.
|
|
270
|
-
require(_commitment == commitment[_origin], "!commitment");
|
|
271
|
-
_digest = _getCheckpointDigest(_metadata, _origin);
|
|
272
|
-
}
|
|
273
|
-
uint256 _validatorCount = _metadata.validatorCount();
|
|
274
|
-
uint256 _validatorIndex = 0;
|
|
275
|
-
// Assumes that signatures are ordered by validator
|
|
276
|
-
for (uint256 i = 0; i < _threshold; ++i) {
|
|
277
|
-
address _signer = ECDSA.recover(_digest, _metadata.signatureAt(i));
|
|
278
|
-
// Loop through remaining validators until we find a match
|
|
279
|
-
for (
|
|
280
|
-
;
|
|
281
|
-
_validatorIndex < _validatorCount &&
|
|
282
|
-
_signer != _metadata.validatorAt(_validatorIndex);
|
|
283
|
-
++_validatorIndex
|
|
284
|
-
) {}
|
|
285
|
-
// Fail if we never found a match
|
|
286
|
-
require(_validatorIndex < _validatorCount, "!threshold");
|
|
287
|
-
++_validatorIndex;
|
|
288
|
-
}
|
|
289
|
-
return true;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* @notice Returns the domain hash that validators are expected to use
|
|
294
|
-
* when signing checkpoints.
|
|
295
|
-
* @param _origin The origin domain of the checkpoint.
|
|
296
|
-
* @param _originMailbox The address of the origin mailbox as bytes32.
|
|
297
|
-
* @return The domain hash.
|
|
298
|
-
*/
|
|
299
|
-
function _getDomainHash(uint32 _origin, bytes32 _originMailbox)
|
|
300
|
-
internal
|
|
301
|
-
pure
|
|
302
|
-
returns (bytes32)
|
|
303
|
-
{
|
|
304
|
-
// Including the origin mailbox address in the signature allows the slashing
|
|
305
|
-
// protocol to enroll multiple mailboxes. Otherwise, a valid signature for
|
|
306
|
-
// mailbox A would be indistinguishable from a fraudulent signature for mailbox
|
|
307
|
-
// B.
|
|
308
|
-
// The slashing protocol should slash if validators sign attestations for
|
|
309
|
-
// anything other than a whitelisted mailbox.
|
|
310
|
-
return
|
|
311
|
-
keccak256(abi.encodePacked(_origin, _originMailbox, "HYPERLANE"));
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
/**
|
|
315
|
-
* @notice Returns the digest validators are expected to sign when signing checkpoints.
|
|
316
|
-
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
317
|
-
* @param _origin The origin domain of the checkpoint.
|
|
318
|
-
* @return The digest of the checkpoint.
|
|
319
|
-
*/
|
|
320
|
-
function _getCheckpointDigest(bytes calldata _metadata, uint32 _origin)
|
|
321
|
-
internal
|
|
322
|
-
pure
|
|
323
|
-
returns (bytes32)
|
|
324
|
-
{
|
|
325
|
-
bytes32 _domainHash = _getDomainHash(
|
|
326
|
-
_origin,
|
|
327
|
-
_metadata.originMailbox()
|
|
328
|
-
);
|
|
329
|
-
return
|
|
330
|
-
ECDSA.toEthSignedMessageHash(
|
|
331
|
-
keccak256(
|
|
332
|
-
abi.encodePacked(
|
|
333
|
-
_domainHash,
|
|
334
|
-
_metadata.root(),
|
|
335
|
-
_metadata.index()
|
|
336
|
-
)
|
|
337
|
-
)
|
|
338
|
-
);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
-
pragma solidity >=0.8.0;
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Format of metadata:
|
|
6
|
-
* [ 0: 32] Merkle root
|
|
7
|
-
* [ 32: 64] Root index
|
|
8
|
-
* [ 64: 96] Origin mailbox address
|
|
9
|
-
* [ 96:1120] Merkle proof
|
|
10
|
-
* [1120:1152] Threshold
|
|
11
|
-
* [1152:????] Validator signatures, 65 bytes each, length == Threshold
|
|
12
|
-
* [????:????] Addresses of the entire validator set, left padded to bytes32
|
|
13
|
-
*/
|
|
14
|
-
library MultisigIsmMetadata {
|
|
15
|
-
uint256 private constant MERKLE_ROOT_OFFSET = 0;
|
|
16
|
-
uint256 private constant MERKLE_INDEX_OFFSET = 32;
|
|
17
|
-
uint256 private constant ORIGIN_MAILBOX_OFFSET = 64;
|
|
18
|
-
uint256 private constant MERKLE_PROOF_OFFSET = 96;
|
|
19
|
-
uint256 private constant THRESHOLD_OFFSET = 1120;
|
|
20
|
-
uint256 private constant SIGNATURES_OFFSET = 1152;
|
|
21
|
-
uint256 private constant SIGNATURE_LENGTH = 65;
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* @notice Returns the merkle root of the signed checkpoint.
|
|
25
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
26
|
-
* @return Merkle root of the signed checkpoint
|
|
27
|
-
*/
|
|
28
|
-
function root(bytes calldata _metadata) internal pure returns (bytes32) {
|
|
29
|
-
return bytes32(_metadata[MERKLE_ROOT_OFFSET:MERKLE_INDEX_OFFSET]);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @notice Returns the index of the signed checkpoint.
|
|
34
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
35
|
-
* @return Index of the signed checkpoint
|
|
36
|
-
*/
|
|
37
|
-
function index(bytes calldata _metadata) internal pure returns (uint256) {
|
|
38
|
-
return
|
|
39
|
-
uint256(
|
|
40
|
-
bytes32(_metadata[MERKLE_INDEX_OFFSET:ORIGIN_MAILBOX_OFFSET])
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* @notice Returns the origin mailbox of the signed checkpoint as bytes32.
|
|
46
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
47
|
-
* @return Origin mailbox of the signed checkpoint as bytes32
|
|
48
|
-
*/
|
|
49
|
-
function originMailbox(bytes calldata _metadata)
|
|
50
|
-
internal
|
|
51
|
-
pure
|
|
52
|
-
returns (bytes32)
|
|
53
|
-
{
|
|
54
|
-
return bytes32(_metadata[ORIGIN_MAILBOX_OFFSET:MERKLE_PROOF_OFFSET]);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @notice Returns the merkle proof branch of the message.
|
|
59
|
-
* @dev This appears to be more gas efficient than returning a calldata
|
|
60
|
-
* slice and using that.
|
|
61
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
62
|
-
* @return Merkle proof branch of the message.
|
|
63
|
-
*/
|
|
64
|
-
function proof(bytes calldata _metadata)
|
|
65
|
-
internal
|
|
66
|
-
pure
|
|
67
|
-
returns (bytes32[32] memory)
|
|
68
|
-
{
|
|
69
|
-
return
|
|
70
|
-
abi.decode(
|
|
71
|
-
_metadata[MERKLE_PROOF_OFFSET:THRESHOLD_OFFSET],
|
|
72
|
-
(bytes32[32])
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* @notice Returns the number of required signatures. Verified against
|
|
78
|
-
* the commitment stored in the module.
|
|
79
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
80
|
-
* @return The number of required signatures.
|
|
81
|
-
*/
|
|
82
|
-
function threshold(bytes calldata _metadata)
|
|
83
|
-
internal
|
|
84
|
-
pure
|
|
85
|
-
returns (uint256)
|
|
86
|
-
{
|
|
87
|
-
return uint256(bytes32(_metadata[THRESHOLD_OFFSET:SIGNATURES_OFFSET]));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* @notice Returns the validator ECDSA signature at `_index`.
|
|
92
|
-
* @dev Assumes signatures are sorted by validator
|
|
93
|
-
* @dev Assumes `_metadata` encodes `threshold` signatures.
|
|
94
|
-
* @dev Assumes `_index` is less than `threshold`
|
|
95
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
96
|
-
* @param _index The index of the signature to return.
|
|
97
|
-
* @return The validator ECDSA signature at `_index`.
|
|
98
|
-
*/
|
|
99
|
-
function signatureAt(bytes calldata _metadata, uint256 _index)
|
|
100
|
-
internal
|
|
101
|
-
pure
|
|
102
|
-
returns (bytes calldata)
|
|
103
|
-
{
|
|
104
|
-
uint256 _start = SIGNATURES_OFFSET + (_index * SIGNATURE_LENGTH);
|
|
105
|
-
uint256 _end = _start + SIGNATURE_LENGTH;
|
|
106
|
-
return _metadata[_start:_end];
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* @notice Returns the validator address at `_index`.
|
|
111
|
-
* @dev Assumes `_index` is less than the number of validators
|
|
112
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
113
|
-
* @param _index The index of the validator to return.
|
|
114
|
-
* @return The validator address at `_index`.
|
|
115
|
-
*/
|
|
116
|
-
function validatorAt(bytes calldata _metadata, uint256 _index)
|
|
117
|
-
internal
|
|
118
|
-
pure
|
|
119
|
-
returns (address)
|
|
120
|
-
{
|
|
121
|
-
// Validator addresses are left padded to bytes32 in order to match
|
|
122
|
-
// abi.encodePacked(address[]).
|
|
123
|
-
uint256 _start = _validatorsOffset(_metadata) + (_index * 32) + 12;
|
|
124
|
-
uint256 _end = _start + 20;
|
|
125
|
-
return address(bytes20(_metadata[_start:_end]));
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* @notice Returns the validator set encoded as bytes. Verified against the
|
|
130
|
-
* commitment stored in the module.
|
|
131
|
-
* @dev Validator addresses are encoded as tightly packed array of bytes32,
|
|
132
|
-
* sorted to match the enumerable set stored by the module.
|
|
133
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
134
|
-
* @return The validator set encoded as bytes.
|
|
135
|
-
*/
|
|
136
|
-
function validators(bytes calldata _metadata)
|
|
137
|
-
internal
|
|
138
|
-
pure
|
|
139
|
-
returns (bytes calldata)
|
|
140
|
-
{
|
|
141
|
-
return _metadata[_validatorsOffset(_metadata):];
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/**
|
|
145
|
-
* @notice Returns the size of the validator set encoded in the metadata
|
|
146
|
-
* @dev Validator addresses are encoded as tightly packed array of bytes32,
|
|
147
|
-
* sorted to match the enumerable set stored by the module.
|
|
148
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
149
|
-
* @return The size of the validator set encoded in the metadata
|
|
150
|
-
*/
|
|
151
|
-
function commitment(bytes calldata _metadata)
|
|
152
|
-
internal
|
|
153
|
-
pure
|
|
154
|
-
returns (uint256)
|
|
155
|
-
{
|
|
156
|
-
return (_metadata.length - _validatorsOffset(_metadata)) / 32;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* @notice Returns the size of the validator set encoded in the metadata
|
|
161
|
-
* @dev Validator addresses are encoded as tightly packed array of bytes32,
|
|
162
|
-
* sorted to match the enumerable set stored by the module.
|
|
163
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
164
|
-
* @return The size of the validator set encoded in the metadata
|
|
165
|
-
*/
|
|
166
|
-
function validatorCount(bytes calldata _metadata)
|
|
167
|
-
internal
|
|
168
|
-
pure
|
|
169
|
-
returns (uint256)
|
|
170
|
-
{
|
|
171
|
-
return (_metadata.length - _validatorsOffset(_metadata)) / 32;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* @notice Returns the offset in bytes of the list of validators within
|
|
176
|
-
* `_metadata`.
|
|
177
|
-
* @param _metadata ABI encoded Multisig ISM metadata.
|
|
178
|
-
* @return The index at which the list of validators starts
|
|
179
|
-
*/
|
|
180
|
-
function _validatorsOffset(bytes calldata _metadata)
|
|
181
|
-
private
|
|
182
|
-
pure
|
|
183
|
-
returns (uint256)
|
|
184
|
-
{
|
|
185
|
-
return SIGNATURES_OFFSET + (threshold(_metadata) * SIGNATURE_LENGTH);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
pragma solidity ^0.8.0;
|
|
3
|
-
|
|
4
|
-
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
5
|
-
import {IMessageRecipient} from "../../interfaces/IMessageRecipient.sol";
|
|
6
|
-
|
|
7
|
-
contract MockMailbox {
|
|
8
|
-
using TypeCasts for address;
|
|
9
|
-
using TypeCasts for bytes32;
|
|
10
|
-
// Domain of chain on which the contract is deployed
|
|
11
|
-
uint32 public immutable domain;
|
|
12
|
-
uint32 public immutable version = 0;
|
|
13
|
-
|
|
14
|
-
uint256 public outboundNonce = 0;
|
|
15
|
-
uint256 public inboundUnprocessedNonce = 0;
|
|
16
|
-
uint256 public inboundProcessedNonce = 0;
|
|
17
|
-
mapping(uint32 => MockMailbox) public remoteMailboxes;
|
|
18
|
-
mapping(uint256 => Message) public inboundMessages;
|
|
19
|
-
|
|
20
|
-
struct Message {
|
|
21
|
-
uint32 origin;
|
|
22
|
-
address sender;
|
|
23
|
-
address recipient;
|
|
24
|
-
bytes body;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
constructor(uint32 _domain) {
|
|
28
|
-
domain = _domain;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function addRemoteMailbox(uint32 _domain, MockMailbox _mailbox) external {
|
|
32
|
-
remoteMailboxes[_domain] = _mailbox;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function dispatch(
|
|
36
|
-
uint32 _destinationDomain,
|
|
37
|
-
bytes32 _recipientAddress,
|
|
38
|
-
bytes calldata _messageBody
|
|
39
|
-
) external returns (bytes32) {
|
|
40
|
-
MockMailbox _destinationMailbox = remoteMailboxes[_destinationDomain];
|
|
41
|
-
require(
|
|
42
|
-
address(_destinationMailbox) != address(0),
|
|
43
|
-
"Missing remote mailbox"
|
|
44
|
-
);
|
|
45
|
-
_destinationMailbox.addInboundMessage(
|
|
46
|
-
domain,
|
|
47
|
-
msg.sender,
|
|
48
|
-
_recipientAddress.bytes32ToAddress(),
|
|
49
|
-
_messageBody
|
|
50
|
-
);
|
|
51
|
-
outboundNonce++;
|
|
52
|
-
return bytes32(0);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function addInboundMessage(
|
|
56
|
-
uint32 _origin,
|
|
57
|
-
address _sender,
|
|
58
|
-
address _recipient,
|
|
59
|
-
bytes calldata _body
|
|
60
|
-
) external {
|
|
61
|
-
inboundMessages[inboundUnprocessedNonce] = Message(
|
|
62
|
-
_origin,
|
|
63
|
-
_sender,
|
|
64
|
-
_recipient,
|
|
65
|
-
_body
|
|
66
|
-
);
|
|
67
|
-
inboundUnprocessedNonce++;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function processNextInboundMessage() public {
|
|
71
|
-
Message memory _message = inboundMessages[inboundProcessedNonce];
|
|
72
|
-
IMessageRecipient(_message.recipient).handle(
|
|
73
|
-
_message.origin,
|
|
74
|
-
_message.sender.addressToBytes32(),
|
|
75
|
-
_message.body
|
|
76
|
-
);
|
|
77
|
-
inboundProcessedNonce++;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
-
pragma solidity >=0.6.11;
|
|
3
|
-
import {HyperlaneConnectionClient} from "../HyperlaneConnectionClient.sol";
|
|
4
|
-
import {IMailbox} from "../../interfaces/IMailbox.sol";
|
|
5
|
-
|
|
6
|
-
contract TestHyperlaneConnectionClient is HyperlaneConnectionClient {
|
|
7
|
-
function initialize(address _abacusConnectionManager) external initializer {
|
|
8
|
-
__HyperlaneConnectionClient_initialize(_abacusConnectionManager);
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
function localDomain() external view returns (uint32) {
|
|
12
|
-
return mailbox.localDomain();
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
-
pragma solidity >=0.8.0;
|
|
3
|
-
|
|
4
|
-
import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
|
|
5
|
-
|
|
6
|
-
contract TestIsm is IInterchainSecurityModule {
|
|
7
|
-
bool public accept;
|
|
8
|
-
|
|
9
|
-
function setAccept(bool _val) external {
|
|
10
|
-
accept = _val;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
function verify(bytes calldata, bytes calldata)
|
|
14
|
-
external
|
|
15
|
-
view
|
|
16
|
-
returns (bool)
|
|
17
|
-
{
|
|
18
|
-
return accept;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
-
pragma solidity >=0.8.0;
|
|
3
|
-
|
|
4
|
-
// ============ Internal Imports ============
|
|
5
|
-
import {MultisigIsm} from "../isms/MultisigIsm.sol";
|
|
6
|
-
|
|
7
|
-
contract TestMultisigIsm is MultisigIsm {
|
|
8
|
-
function getDomainHash(uint32 _origin, bytes32 _originMailbox)
|
|
9
|
-
external
|
|
10
|
-
pure
|
|
11
|
-
returns (bytes32)
|
|
12
|
-
{
|
|
13
|
-
return _getDomainHash(_origin, _originMailbox);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
function getCheckpointDigest(bytes calldata _metadata, uint32 _origin)
|
|
17
|
-
external
|
|
18
|
-
pure
|
|
19
|
-
returns (bytes32)
|
|
20
|
-
{
|
|
21
|
-
return _getCheckpointDigest(_metadata, _origin);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OwnableSpecifiesISM.d.ts","sourceRoot":"","sources":["../../types/contracts/OwnableSpecifiesISM.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OwnableSpecifiesISM.js","sourceRoot":"","sources":["../../types/contracts/OwnableSpecifiesISM.ts"],"names":[],"mappings":";AAAA,+CAA+C"}
|