@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
package/contracts/Mailbox.sol
CHANGED
|
@@ -2,227 +2,92 @@
|
|
|
2
2
|
pragma solidity >=0.8.0;
|
|
3
3
|
|
|
4
4
|
// ============ Internal Imports ============
|
|
5
|
-
import {Versioned} from "./upgrade/Versioned.sol";
|
|
6
|
-
import {MerkleLib} from "./libs/Merkle.sol";
|
|
7
|
-
import {Message} from "./libs/Message.sol";
|
|
8
|
-
import {TypeCasts} from "./libs/TypeCasts.sol";
|
|
9
|
-
import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
|
|
10
|
-
import {IInterchainSecurityModule, ISpecifiesInterchainSecurityModule} from "../interfaces/IInterchainSecurityModule.sol";
|
|
11
5
|
import {IMailbox} from "../interfaces/IMailbox.sol";
|
|
12
|
-
|
|
13
6
|
// ============ External Imports ============
|
|
14
|
-
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
15
7
|
import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
contract Mailbox is
|
|
19
|
-
IMailbox,
|
|
20
|
-
OwnableUpgradeable,
|
|
21
|
-
ReentrancyGuardUpgradeable,
|
|
22
|
-
Versioned
|
|
23
|
-
{
|
|
24
|
-
// ============ Libraries ============
|
|
25
|
-
|
|
26
|
-
using MerkleLib for MerkleLib.Tree;
|
|
27
|
-
using Message for bytes;
|
|
28
|
-
using TypeCasts for bytes32;
|
|
29
|
-
using TypeCasts for address;
|
|
8
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
30
9
|
|
|
31
|
-
|
|
10
|
+
/**
|
|
11
|
+
* @title Mailbox
|
|
12
|
+
* @author Celo Labs Inc.
|
|
13
|
+
* @notice Shared utilities between Outbox and Inbox.
|
|
14
|
+
*/
|
|
15
|
+
abstract contract Mailbox is IMailbox, OwnableUpgradeable {
|
|
16
|
+
// ============ Immutable Variables ============
|
|
32
17
|
|
|
33
|
-
// Maximum bytes per message = 2 KiB (somewhat arbitrarily set to begin)
|
|
34
|
-
uint256 public constant MAX_MESSAGE_BODY_BYTES = 2 * 2**10;
|
|
35
18
|
// Domain of chain on which the contract is deployed
|
|
36
|
-
uint32 public immutable localDomain;
|
|
19
|
+
uint32 public immutable override localDomain;
|
|
37
20
|
|
|
38
|
-
// ============ Public
|
|
21
|
+
// ============ Public Variables ============
|
|
39
22
|
|
|
40
|
-
//
|
|
41
|
-
|
|
42
|
-
// An incremental merkle tree used to store outbound message IDs.
|
|
43
|
-
MerkleLib.Tree public tree;
|
|
44
|
-
// Mapping of message ID to whether or not that message has been delivered.
|
|
45
|
-
mapping(bytes32 => bool) public delivered;
|
|
23
|
+
// Address of the validator manager contract.
|
|
24
|
+
address public validatorManager;
|
|
46
25
|
|
|
47
26
|
// ============ Upgrade Gap ============
|
|
48
27
|
|
|
49
28
|
// gap for upgrade safety
|
|
50
|
-
uint256[
|
|
29
|
+
uint256[49] private __GAP;
|
|
51
30
|
|
|
52
31
|
// ============ Events ============
|
|
53
32
|
|
|
54
33
|
/**
|
|
55
|
-
* @notice Emitted when the
|
|
56
|
-
* @param
|
|
34
|
+
* @notice Emitted when the validator manager contract is changed
|
|
35
|
+
* @param validatorManager The address of the new validatorManager
|
|
57
36
|
*/
|
|
58
|
-
event
|
|
37
|
+
event ValidatorManagerSet(address validatorManager);
|
|
59
38
|
|
|
60
|
-
|
|
61
|
-
* @notice Emitted when a new message is dispatched via Hyperlane
|
|
62
|
-
* @param messageId The unique message identifier
|
|
63
|
-
* @param message Raw bytes of message
|
|
64
|
-
*/
|
|
65
|
-
event Dispatch(bytes32 indexed messageId, bytes message);
|
|
39
|
+
// ============ Modifiers ============
|
|
66
40
|
|
|
67
41
|
/**
|
|
68
|
-
* @notice
|
|
69
|
-
* @param messageId The unique message identifier
|
|
42
|
+
* @notice Ensures that a function is called by the validator manager contract.
|
|
70
43
|
*/
|
|
71
|
-
|
|
44
|
+
modifier onlyValidatorManager() {
|
|
45
|
+
require(msg.sender == validatorManager, "!validatorManager");
|
|
46
|
+
_;
|
|
47
|
+
}
|
|
72
48
|
|
|
73
49
|
// ============ Constructor ============
|
|
74
50
|
|
|
75
|
-
// solhint-disable-next-line no-empty-blocks
|
|
76
51
|
constructor(uint32 _localDomain) {
|
|
77
52
|
localDomain = _localDomain;
|
|
78
53
|
}
|
|
79
54
|
|
|
80
55
|
// ============ Initializer ============
|
|
81
56
|
|
|
82
|
-
function
|
|
83
|
-
|
|
57
|
+
function __Mailbox_initialize(address _validatorManager)
|
|
58
|
+
internal
|
|
59
|
+
onlyInitializing
|
|
60
|
+
{
|
|
61
|
+
// initialize owner
|
|
84
62
|
__Ownable_init();
|
|
85
|
-
|
|
63
|
+
_setValidatorManager(_validatorManager);
|
|
86
64
|
}
|
|
87
65
|
|
|
88
66
|
// ============ External Functions ============
|
|
89
67
|
|
|
90
68
|
/**
|
|
91
|
-
* @notice
|
|
92
|
-
* @
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* @notice Dispatches a message to the destination domain & recipient.
|
|
100
|
-
* @param _destinationDomain Domain of destination chain
|
|
101
|
-
* @param _recipientAddress Address of recipient on destination chain as bytes32
|
|
102
|
-
* @param _messageBody Raw bytes content of message body
|
|
103
|
-
* @return The message ID inserted into the Mailbox's merkle tree
|
|
69
|
+
* @notice Set a new validator manager contract
|
|
70
|
+
* @dev Mailbox(es) will initially be initialized using a trusted validator manager contract;
|
|
71
|
+
* we will progressively decentralize by swapping the trusted contract with a new implementation
|
|
72
|
+
* that implements Validator bonding & slashing, and rules for Validator selection & rotation
|
|
73
|
+
* @param _validatorManager the new validator manager contract
|
|
104
74
|
*/
|
|
105
|
-
function
|
|
106
|
-
|
|
107
|
-
bytes32 _recipientAddress,
|
|
108
|
-
bytes calldata _messageBody
|
|
109
|
-
) external override returns (bytes32) {
|
|
110
|
-
require(_messageBody.length <= MAX_MESSAGE_BODY_BYTES, "msg too long");
|
|
111
|
-
// Format the message into packed bytes.
|
|
112
|
-
bytes memory _message = Message.formatMessage(
|
|
113
|
-
VERSION,
|
|
114
|
-
count(),
|
|
115
|
-
localDomain,
|
|
116
|
-
msg.sender.addressToBytes32(),
|
|
117
|
-
_destinationDomain,
|
|
118
|
-
_recipientAddress,
|
|
119
|
-
_messageBody
|
|
120
|
-
);
|
|
121
|
-
|
|
122
|
-
// Insert the message ID into the merkle tree.
|
|
123
|
-
bytes32 _id = _message.id();
|
|
124
|
-
tree.insert(_id);
|
|
125
|
-
emit Dispatch(_id, _message);
|
|
126
|
-
return _id;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* @notice Attempts to deliver `_message` to its recipient. Verifies
|
|
131
|
-
* `_message` via the recipient's ISM using the provided `_metadata`.
|
|
132
|
-
* @param _metadata Metadata used by the ISM to verify `_message`.
|
|
133
|
-
* @param _message Formatted Hyperlane message (refer to Message.sol).
|
|
134
|
-
*/
|
|
135
|
-
function process(bytes calldata _metadata, bytes calldata _message)
|
|
136
|
-
external
|
|
137
|
-
override
|
|
138
|
-
nonReentrant
|
|
139
|
-
{
|
|
140
|
-
// Check that the message was intended for this mailbox.
|
|
141
|
-
require(_message.version() == VERSION, "!version");
|
|
142
|
-
require(_message.destination() == localDomain, "!destination");
|
|
143
|
-
|
|
144
|
-
// Check that the message hasn't already been delivered.
|
|
145
|
-
bytes32 _id = _message.id();
|
|
146
|
-
require(delivered[_id] == false, "delivered");
|
|
147
|
-
delivered[_id] = true;
|
|
148
|
-
|
|
149
|
-
// Verify the message via the ISM.
|
|
150
|
-
IInterchainSecurityModule _ism = _recipientIsm(
|
|
151
|
-
ISpecifiesInterchainSecurityModule(_message.recipientAddress())
|
|
152
|
-
);
|
|
153
|
-
require(_ism.verify(_metadata, _message), "!module");
|
|
154
|
-
|
|
155
|
-
// Deliver the message to the recipient.
|
|
156
|
-
uint32 _origin = _message.origin();
|
|
157
|
-
IMessageRecipient(_message.recipientAddress()).handle(
|
|
158
|
-
_origin,
|
|
159
|
-
_message.sender(),
|
|
160
|
-
_message.body()
|
|
161
|
-
);
|
|
162
|
-
emit Process(_id);
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// ============ Public Functions ============
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* @notice Calculates and returns tree's current root
|
|
169
|
-
*/
|
|
170
|
-
function root() public view returns (bytes32) {
|
|
171
|
-
return tree.root();
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* @notice Returns the number of inserted leaves in the tree
|
|
176
|
-
*/
|
|
177
|
-
function count() public view returns (uint32) {
|
|
178
|
-
// count cannot exceed 2**TREE_DEPTH, see MerkleLib.sol
|
|
179
|
-
return uint32(tree.count);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* @notice Returns a checkpoint representing the current merkle tree.
|
|
184
|
-
* @return root The root of the Outbox's merkle tree.
|
|
185
|
-
* @return index The index of the last element in the tree.
|
|
186
|
-
*/
|
|
187
|
-
function latestCheckpoint() public view returns (bytes32, uint32) {
|
|
188
|
-
return (root(), count() - 1);
|
|
75
|
+
function setValidatorManager(address _validatorManager) external onlyOwner {
|
|
76
|
+
_setValidatorManager(_validatorManager);
|
|
189
77
|
}
|
|
190
78
|
|
|
191
79
|
// ============ Internal Functions ============
|
|
192
80
|
|
|
193
81
|
/**
|
|
194
|
-
* @notice
|
|
195
|
-
* @param
|
|
196
|
-
*/
|
|
197
|
-
function _setDefaultIsm(address _module) internal {
|
|
198
|
-
require(Address.isContract(_module), "!contract");
|
|
199
|
-
defaultIsm = IInterchainSecurityModule(_module);
|
|
200
|
-
emit DefaultIsmSet(_module);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* @notice Returns the ISM to use for the recipient, defaulting to the
|
|
205
|
-
* default ISM if none is specified.
|
|
206
|
-
* @param _recipient The message recipient whose ISM should be returned.
|
|
207
|
-
* @return The ISM to use for `_recipient`.
|
|
82
|
+
* @notice Set the validator manager
|
|
83
|
+
* @param _validatorManager Address of the validator manager
|
|
208
84
|
*/
|
|
209
|
-
function
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
// This is useful for backwards compatibility and for convenience as
|
|
217
|
-
// recipients are not mandated to specify an ISM.
|
|
218
|
-
try _recipient.interchainSecurityModule() returns (
|
|
219
|
-
IInterchainSecurityModule _val
|
|
220
|
-
) {
|
|
221
|
-
// TODO: reconsider
|
|
222
|
-
if (address(_val) != address(0)) {
|
|
223
|
-
return _val;
|
|
224
|
-
}
|
|
225
|
-
} catch {}
|
|
226
|
-
return defaultIsm;
|
|
85
|
+
function _setValidatorManager(address _validatorManager) internal {
|
|
86
|
+
require(
|
|
87
|
+
Address.isContract(_validatorManager),
|
|
88
|
+
"!contract validatorManager"
|
|
89
|
+
);
|
|
90
|
+
validatorManager = _validatorManager;
|
|
91
|
+
emit ValidatorManagerSet(_validatorManager);
|
|
227
92
|
}
|
|
228
93
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
// ============ Internal Imports ============
|
|
5
|
+
import {MerkleLib} from "./libs/Merkle.sol";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @title MerkleTreeManager
|
|
9
|
+
* @author Celo Labs Inc.
|
|
10
|
+
* @notice Contains a Merkle tree instance and
|
|
11
|
+
* exposes view functions for the tree.
|
|
12
|
+
*/
|
|
13
|
+
contract MerkleTreeManager {
|
|
14
|
+
// ============ Libraries ============
|
|
15
|
+
|
|
16
|
+
using MerkleLib for MerkleLib.Tree;
|
|
17
|
+
MerkleLib.Tree public tree;
|
|
18
|
+
|
|
19
|
+
// ============ Upgrade Gap ============
|
|
20
|
+
|
|
21
|
+
// gap for upgrade safety
|
|
22
|
+
uint256[49] private __GAP;
|
|
23
|
+
|
|
24
|
+
// ============ Public Functions ============
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @notice Calculates and returns tree's current root
|
|
28
|
+
*/
|
|
29
|
+
function root() public view returns (bytes32) {
|
|
30
|
+
return tree.root();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
// ============ Internal Imports ============
|
|
5
|
+
import {Versioned} from "./upgrade/Versioned.sol";
|
|
6
|
+
import {Mailbox} from "./Mailbox.sol";
|
|
7
|
+
import {MerkleLib} from "./libs/Merkle.sol";
|
|
8
|
+
import {Message} from "./libs/Message.sol";
|
|
9
|
+
import {TypeCasts} from "./libs/TypeCasts.sol";
|
|
10
|
+
import {MerkleTreeManager} from "./MerkleTreeManager.sol";
|
|
11
|
+
import {IOutbox} from "../interfaces/IOutbox.sol";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @title Outbox
|
|
15
|
+
* @author Celo Labs Inc.
|
|
16
|
+
* @notice Accepts messages to be dispatched to remote chains,
|
|
17
|
+
* constructs a Merkle tree of the messages,
|
|
18
|
+
* and accepts signatures from a bonded Validator
|
|
19
|
+
* which notarize the Merkle tree roots.
|
|
20
|
+
* Accepts submissions of fraudulent signatures
|
|
21
|
+
* by the Validator and slashes the Validator in this case.
|
|
22
|
+
*/
|
|
23
|
+
contract Outbox is IOutbox, Versioned, MerkleTreeManager, Mailbox {
|
|
24
|
+
// ============ Libraries ============
|
|
25
|
+
|
|
26
|
+
using MerkleLib for MerkleLib.Tree;
|
|
27
|
+
using TypeCasts for address;
|
|
28
|
+
|
|
29
|
+
// ============ Constants ============
|
|
30
|
+
|
|
31
|
+
// Maximum bytes per message = 2 KiB
|
|
32
|
+
// (somewhat arbitrarily set to begin)
|
|
33
|
+
uint256 public constant MAX_MESSAGE_BODY_BYTES = 2 * 2**10;
|
|
34
|
+
|
|
35
|
+
// ============ Enums ============
|
|
36
|
+
|
|
37
|
+
// States:
|
|
38
|
+
// 0 - UnInitialized - before initialize function is called
|
|
39
|
+
// note: the contract is initialized at deploy time, so it should never be in this state
|
|
40
|
+
// 1 - Active - as long as the contract has not become fraudulent
|
|
41
|
+
// 2 - Failed - after a valid fraud proof has been submitted;
|
|
42
|
+
// contract will no longer accept updates or new messages
|
|
43
|
+
enum States {
|
|
44
|
+
UnInitialized,
|
|
45
|
+
Active,
|
|
46
|
+
Failed
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ============ Public Storage Variables ============
|
|
50
|
+
|
|
51
|
+
// Cached checkpoints, mapping root => leaf index.
|
|
52
|
+
// Cached checkpoints must have index > 0 as the presence of such
|
|
53
|
+
// a checkpoint cannot be distinguished from its absence.
|
|
54
|
+
mapping(bytes32 => uint256) public cachedCheckpoints;
|
|
55
|
+
// The latest cached root
|
|
56
|
+
bytes32 public latestCachedRoot;
|
|
57
|
+
// Current state of contract
|
|
58
|
+
States public state;
|
|
59
|
+
|
|
60
|
+
// ============ Upgrade Gap ============
|
|
61
|
+
|
|
62
|
+
// gap for upgrade safety
|
|
63
|
+
uint256[47] private __GAP;
|
|
64
|
+
|
|
65
|
+
// ============ Events ============
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* @notice Emitted when a checkpoint is cached.
|
|
69
|
+
* @param root Merkle root
|
|
70
|
+
* @param index Leaf index
|
|
71
|
+
*/
|
|
72
|
+
event CheckpointCached(bytes32 indexed root, uint256 indexed index);
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @notice Emitted when a new message is dispatched via Abacus
|
|
76
|
+
* @param leafIndex Index of message's leaf in merkle tree
|
|
77
|
+
* @param message Raw bytes of message
|
|
78
|
+
*/
|
|
79
|
+
event Dispatch(uint256 indexed leafIndex, bytes message);
|
|
80
|
+
|
|
81
|
+
event Fail();
|
|
82
|
+
|
|
83
|
+
// ============ Constructor ============
|
|
84
|
+
|
|
85
|
+
constructor(uint32 _localDomain) Mailbox(_localDomain) {} // solhint-disable-line no-empty-blocks
|
|
86
|
+
|
|
87
|
+
// ============ Initializer ============
|
|
88
|
+
|
|
89
|
+
function initialize(address _validatorManager) external initializer {
|
|
90
|
+
__Mailbox_initialize(_validatorManager);
|
|
91
|
+
state = States.Active;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// ============ Modifiers ============
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @notice Ensures that contract state != FAILED when the function is called
|
|
98
|
+
*/
|
|
99
|
+
modifier notFailed() {
|
|
100
|
+
require(state != States.Failed, "failed state");
|
|
101
|
+
_;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// ============ External Functions ============
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* @notice Dispatch the message it to the destination domain & recipient
|
|
108
|
+
* @dev Format the message, insert its hash into Merkle tree,
|
|
109
|
+
* and emit `Dispatch` event with message information.
|
|
110
|
+
* @param _destinationDomain Domain of destination chain
|
|
111
|
+
* @param _recipientAddress Address of recipient on destination chain as bytes32
|
|
112
|
+
* @param _messageBody Raw bytes content of message
|
|
113
|
+
* @return The leaf index of the dispatched message's hash in the Merkle tree.
|
|
114
|
+
*/
|
|
115
|
+
function dispatch(
|
|
116
|
+
uint32 _destinationDomain,
|
|
117
|
+
bytes32 _recipientAddress,
|
|
118
|
+
bytes calldata _messageBody
|
|
119
|
+
) external override notFailed returns (uint256) {
|
|
120
|
+
require(_messageBody.length <= MAX_MESSAGE_BODY_BYTES, "msg too long");
|
|
121
|
+
// The leaf has not been inserted yet at this point
|
|
122
|
+
uint256 _leafIndex = count();
|
|
123
|
+
// format the message into packed bytes
|
|
124
|
+
bytes memory _message = Message.formatMessage(
|
|
125
|
+
localDomain,
|
|
126
|
+
msg.sender.addressToBytes32(),
|
|
127
|
+
_destinationDomain,
|
|
128
|
+
_recipientAddress,
|
|
129
|
+
_messageBody
|
|
130
|
+
);
|
|
131
|
+
// insert the hashed message into the Merkle tree
|
|
132
|
+
bytes32 _messageHash = keccak256(
|
|
133
|
+
abi.encodePacked(_message, _leafIndex)
|
|
134
|
+
);
|
|
135
|
+
tree.insert(_messageHash);
|
|
136
|
+
emit Dispatch(_leafIndex, _message);
|
|
137
|
+
return _leafIndex;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* @notice Caches the current merkle root and index.
|
|
142
|
+
* @dev emits CheckpointCached event
|
|
143
|
+
*/
|
|
144
|
+
function cacheCheckpoint() external override notFailed {
|
|
145
|
+
(bytes32 _root, uint256 _index) = latestCheckpoint();
|
|
146
|
+
require(_index > 0, "!index");
|
|
147
|
+
cachedCheckpoints[_root] = _index;
|
|
148
|
+
latestCachedRoot = _root;
|
|
149
|
+
emit CheckpointCached(_root, _index);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* @notice Set contract state to FAILED.
|
|
154
|
+
* @dev Called by the validator manager when fraud is proven.
|
|
155
|
+
*/
|
|
156
|
+
function fail() external override onlyValidatorManager {
|
|
157
|
+
// set contract to FAILED
|
|
158
|
+
state = States.Failed;
|
|
159
|
+
emit Fail();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @notice Returns the latest entry in the checkpoint cache.
|
|
164
|
+
* @return root Latest cached root
|
|
165
|
+
* @return index Latest cached index
|
|
166
|
+
*/
|
|
167
|
+
function latestCachedCheckpoint()
|
|
168
|
+
external
|
|
169
|
+
view
|
|
170
|
+
returns (bytes32 root, uint256 index)
|
|
171
|
+
{
|
|
172
|
+
root = latestCachedRoot;
|
|
173
|
+
index = cachedCheckpoints[root];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* @notice Returns the number of inserted leaves in the tree
|
|
178
|
+
*/
|
|
179
|
+
function count() public view returns (uint256) {
|
|
180
|
+
return tree.count;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* @notice Returns a checkpoint representing the current merkle tree.
|
|
185
|
+
* @return root The root of the Outbox's merkle tree.
|
|
186
|
+
* @return index The index of the last element in the tree.
|
|
187
|
+
*/
|
|
188
|
+
function latestCheckpoint() public view returns (bytes32, uint256) {
|
|
189
|
+
return (root(), count() - 1);
|
|
190
|
+
}
|
|
191
|
+
}
|
package/contracts/Router.sol
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
pragma solidity >=0.6.11;
|
|
3
3
|
|
|
4
4
|
// ============ Internal Imports ============
|
|
5
|
-
import {
|
|
5
|
+
import {AbacusConnectionClient} from "./AbacusConnectionClient.sol";
|
|
6
|
+
import {IAbacusConnectionManager} from "../interfaces/IAbacusConnectionManager.sol";
|
|
6
7
|
import {IInterchainGasPaymaster} from "../interfaces/IInterchainGasPaymaster.sol";
|
|
7
8
|
import {IMessageRecipient} from "../interfaces/IMessageRecipient.sol";
|
|
8
|
-
import {
|
|
9
|
+
import {IOutbox} from "../interfaces/IOutbox.sol";
|
|
9
10
|
|
|
10
|
-
abstract contract Router is
|
|
11
|
+
abstract contract Router is AbacusConnectionClient, IMessageRecipient {
|
|
11
12
|
string constant NO_ROUTER_ENROLLED_REVERT_MESSAGE =
|
|
12
13
|
"No router enrolled for domain. Did you specify the right domain ID?";
|
|
13
14
|
|
|
@@ -40,16 +41,19 @@ abstract contract Router is HyperlaneConnectionClient, IMessageRecipient {
|
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
// ======== Initializer =========
|
|
43
|
-
function __Router_initialize(address
|
|
44
|
-
|
|
44
|
+
function __Router_initialize(address _abacusConnectionManager)
|
|
45
|
+
internal
|
|
46
|
+
onlyInitializing
|
|
47
|
+
{
|
|
48
|
+
__AbacusConnectionClient_initialize(_abacusConnectionManager);
|
|
45
49
|
}
|
|
46
50
|
|
|
47
51
|
function __Router_initialize(
|
|
48
|
-
address
|
|
52
|
+
address _abacusConnectionManager,
|
|
49
53
|
address _interchainGasPaymaster
|
|
50
54
|
) internal onlyInitializing {
|
|
51
|
-
|
|
52
|
-
|
|
55
|
+
__AbacusConnectionClient_initialize(
|
|
56
|
+
_abacusConnectionManager,
|
|
53
57
|
_interchainGasPaymaster
|
|
54
58
|
);
|
|
55
59
|
}
|
|
@@ -69,21 +73,6 @@ abstract contract Router is HyperlaneConnectionClient, IMessageRecipient {
|
|
|
69
73
|
_enrollRemoteRouter(_domain, _router);
|
|
70
74
|
}
|
|
71
75
|
|
|
72
|
-
/**
|
|
73
|
-
* @notice Batch version of `enrollRemoteRouter`
|
|
74
|
-
* @param _domains The domaisn of the remote Application Routers
|
|
75
|
-
* @param _routers The addresses of the remote Application Routers
|
|
76
|
-
*/
|
|
77
|
-
function enrollRemoteRouters(
|
|
78
|
-
uint32[] calldata _domains,
|
|
79
|
-
bytes32[] calldata _routers
|
|
80
|
-
) external virtual onlyOwner {
|
|
81
|
-
require(_domains.length == _routers.length, "!length");
|
|
82
|
-
for (uint256 i = 0; i < _domains.length; i += 1) {
|
|
83
|
-
_enrollRemoteRouter(_domains[i], _routers[i]);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
76
|
/**
|
|
88
77
|
* @notice Handles an incoming message
|
|
89
78
|
* @param _origin The origin domain
|
|
@@ -94,7 +83,7 @@ abstract contract Router is HyperlaneConnectionClient, IMessageRecipient {
|
|
|
94
83
|
uint32 _origin,
|
|
95
84
|
bytes32 _sender,
|
|
96
85
|
bytes calldata _message
|
|
97
|
-
) external virtual override
|
|
86
|
+
) external virtual override onlyInbox onlyRemoteRouter(_origin, _sender) {
|
|
98
87
|
// TODO: callbacks on success/failure
|
|
99
88
|
_handle(_origin, _sender, _message);
|
|
100
89
|
}
|
|
@@ -146,40 +135,60 @@ abstract contract Router is HyperlaneConnectionClient, IMessageRecipient {
|
|
|
146
135
|
}
|
|
147
136
|
|
|
148
137
|
/**
|
|
149
|
-
* @notice Dispatches a message to an enrolled router via the local router's
|
|
138
|
+
* @notice Dispatches a message to an enrolled router via the local router's Outbox.
|
|
139
|
+
* @notice Does not pay interchain gas.
|
|
140
|
+
* @dev Reverts if there is no enrolled router for _destinationDomain.
|
|
141
|
+
* @param _destinationDomain The domain of the chain to which to send the message.
|
|
142
|
+
* @param _msg The message to dispatch.
|
|
143
|
+
*/
|
|
144
|
+
function _dispatch(uint32 _destinationDomain, bytes memory _msg)
|
|
145
|
+
internal
|
|
146
|
+
returns (uint256)
|
|
147
|
+
{
|
|
148
|
+
return _dispatch(_outbox(), _destinationDomain, _msg);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* @notice Dispatches a message to an enrolled router via the local router's Outbox
|
|
150
153
|
* and pays for it to be relayed to the destination.
|
|
151
154
|
* @dev Reverts if there is no enrolled router for _destinationDomain.
|
|
152
155
|
* @param _destinationDomain The domain of the chain to which to send the message.
|
|
153
|
-
* @param
|
|
156
|
+
* @param _msg The message to dispatch.
|
|
154
157
|
* @param _gasPayment The amount of native tokens to pay for the message to be relayed.
|
|
155
158
|
*/
|
|
156
159
|
function _dispatchWithGas(
|
|
157
160
|
uint32 _destinationDomain,
|
|
158
|
-
bytes memory
|
|
161
|
+
bytes memory _msg,
|
|
159
162
|
uint256 _gasPayment
|
|
160
163
|
) internal {
|
|
161
|
-
|
|
164
|
+
IOutbox _outbox = _outbox();
|
|
165
|
+
uint256 _leafIndex = _dispatch(_outbox, _destinationDomain, _msg);
|
|
162
166
|
if (_gasPayment > 0) {
|
|
163
167
|
interchainGasPaymaster.payGasFor{value: _gasPayment}(
|
|
164
|
-
|
|
168
|
+
address(_outbox),
|
|
169
|
+
_leafIndex,
|
|
165
170
|
_destinationDomain
|
|
166
171
|
);
|
|
167
172
|
}
|
|
168
173
|
}
|
|
169
174
|
|
|
175
|
+
// ============ Private functions ============
|
|
176
|
+
|
|
170
177
|
/**
|
|
171
|
-
* @notice Dispatches a message to an enrolled router via the provided
|
|
178
|
+
* @notice Dispatches a message to an enrolled router via the provided Outbox.
|
|
172
179
|
* @dev Does not pay interchain gas.
|
|
173
180
|
* @dev Reverts if there is no enrolled router for _destinationDomain.
|
|
181
|
+
* @param _outbox The outbox contract to dispatch the message through.
|
|
174
182
|
* @param _destinationDomain The domain of the chain to which to send the message.
|
|
175
|
-
* @param
|
|
183
|
+
* @param _msg The message to dispatch.
|
|
176
184
|
*/
|
|
177
|
-
function _dispatch(
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
185
|
+
function _dispatch(
|
|
186
|
+
IOutbox _outbox,
|
|
187
|
+
uint32 _destinationDomain,
|
|
188
|
+
bytes memory _msg
|
|
189
|
+
) private returns (uint256) {
|
|
181
190
|
// Ensure that destination chain has an enrolled router.
|
|
182
191
|
bytes32 _router = _mustHaveRemoteRouter(_destinationDomain);
|
|
183
|
-
return
|
|
192
|
+
return _outbox.dispatch(_destinationDomain, _router, _msg);
|
|
184
193
|
}
|
|
185
194
|
}
|