@hyperlane-xyz/core 0.5.4-3 → 0.5.6
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 -70
- 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 -3
- 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/V2CompatibilityMiddleware.d.ts +290 -0
- package/dist/contracts/middleware/V2CompatibilityMiddleware.d.ts.map +1 -0
- package/dist/contracts/middleware/V2CompatibilityMiddleware.js +4 -0
- package/dist/contracts/middleware/V2CompatibilityMiddleware.js.map +1 -0
- package/dist/contracts/middleware/V2CompatibilityMiddlewareRouter.d.ts +290 -0
- package/dist/contracts/middleware/V2CompatibilityMiddlewareRouter.d.ts.map +1 -0
- package/dist/contracts/middleware/V2CompatibilityMiddlewareRouter.js +4 -0
- package/dist/contracts/middleware/V2CompatibilityMiddlewareRouter.js.map +1 -0
- package/dist/contracts/middleware/V2CompatibilityRouter.d.ts +306 -0
- package/dist/contracts/middleware/V2CompatibilityRouter.d.ts.map +1 -0
- package/dist/contracts/middleware/V2CompatibilityRouter.js +4 -0
- package/dist/contracts/middleware/V2CompatibilityRouter.js.map +1 -0
- package/dist/contracts/middleware/index.d.ts +1 -0
- package/dist/contracts/middleware/index.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 -1
- 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 -3
- 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 -2
- package/dist/factories/contracts/index.d.ts.map +1 -1
- package/dist/factories/contracts/index.js +12 -4
- 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/V2CompatibilityMiddlewareRouter__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/V2CompatibilityMiddlewareRouter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/V2CompatibilityMiddlewareRouter__factory.js +371 -0
- package/dist/factories/contracts/middleware/V2CompatibilityMiddlewareRouter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/V2CompatibilityMiddleware__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/V2CompatibilityMiddleware__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/V2CompatibilityMiddleware__factory.js +371 -0
- package/dist/factories/contracts/middleware/V2CompatibilityMiddleware__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/V2CompatibilityRouter__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/V2CompatibilityRouter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/V2CompatibilityRouter__factory.js +389 -0
- package/dist/factories/contracts/middleware/V2CompatibilityRouter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/index.d.ts +1 -0
- package/dist/factories/contracts/middleware/index.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/index.js +3 -1
- package/dist/factories/contracts/middleware/index.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 -1
- package/dist/factories/contracts/mock/index.d.ts.map +1 -1
- package/dist/factories/contracts/mock/index.js +7 -3
- 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.d.ts.map +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 -3
- package/dist/factories/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/contracts/test/index.js +11 -7
- 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 -2
- package/dist/factories/interfaces/index.d.ts.map +1 -1
- package/dist/factories/interfaces/index.js +9 -27
- package/dist/factories/interfaces/index.js.map +1 -1
- package/dist/index.d.ts +46 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -20
- 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 -3
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js +0 -1
- package/dist/interfaces/index.js.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
|
@@ -4,35 +4,24 @@ pragma solidity >=0.8.0;
|
|
|
4
4
|
import {TypeCasts} from "./TypeCasts.sol";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @title
|
|
8
|
-
* @
|
|
7
|
+
* @title Message Library
|
|
8
|
+
* @author Celo Labs Inc.
|
|
9
|
+
* @notice Library for formatted messages used by Outbox and Replica.
|
|
9
10
|
**/
|
|
10
11
|
library Message {
|
|
11
12
|
using TypeCasts for bytes32;
|
|
12
13
|
|
|
13
|
-
uint256 private constant VERSION_OFFSET = 0;
|
|
14
|
-
uint256 private constant NONCE_OFFSET = 1;
|
|
15
|
-
uint256 private constant ORIGIN_OFFSET = 5;
|
|
16
|
-
uint256 private constant SENDER_OFFSET = 9;
|
|
17
|
-
uint256 private constant DESTINATION_OFFSET = 41;
|
|
18
|
-
uint256 private constant RECIPIENT_OFFSET = 45;
|
|
19
|
-
uint256 private constant BODY_OFFSET = 77;
|
|
20
|
-
|
|
21
14
|
/**
|
|
22
|
-
* @notice Returns formatted (packed)
|
|
15
|
+
* @notice Returns formatted (packed) message with provided fields
|
|
23
16
|
* @dev This function should only be used in memory message construction.
|
|
24
|
-
* @param
|
|
25
|
-
* @param _nonce A nonce to uniquely identify the message on its origin chain
|
|
26
|
-
* @param _originDomain Domain of origin chain
|
|
17
|
+
* @param _originDomain Domain of home chain
|
|
27
18
|
* @param _sender Address of sender as bytes32
|
|
28
19
|
* @param _destinationDomain Domain of destination chain
|
|
29
20
|
* @param _recipient Address of recipient on destination chain as bytes32
|
|
30
21
|
* @param _messageBody Raw bytes of message body
|
|
31
22
|
* @return Formatted message
|
|
32
|
-
|
|
23
|
+
**/
|
|
33
24
|
function formatMessage(
|
|
34
|
-
uint8 _version,
|
|
35
|
-
uint32 _nonce,
|
|
36
25
|
uint32 _originDomain,
|
|
37
26
|
bytes32 _sender,
|
|
38
27
|
uint32 _destinationDomain,
|
|
@@ -41,8 +30,6 @@ library Message {
|
|
|
41
30
|
) internal pure returns (bytes memory) {
|
|
42
31
|
return
|
|
43
32
|
abi.encodePacked(
|
|
44
|
-
_version,
|
|
45
|
-
_nonce,
|
|
46
33
|
_originDomain,
|
|
47
34
|
_sender,
|
|
48
35
|
_destinationDomain,
|
|
@@ -52,112 +39,84 @@ library Message {
|
|
|
52
39
|
}
|
|
53
40
|
|
|
54
41
|
/**
|
|
55
|
-
* @notice Returns
|
|
56
|
-
* @
|
|
57
|
-
* @
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return keccak256(_message);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @notice Returns the message version.
|
|
65
|
-
* @param _message ABI encoded Hyperlane message.
|
|
66
|
-
* @return Version of `_message`
|
|
67
|
-
*/
|
|
68
|
-
function version(bytes calldata _message) internal pure returns (uint8) {
|
|
69
|
-
return uint8(bytes1(_message[VERSION_OFFSET:NONCE_OFFSET]));
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* @notice Returns the message nonce.
|
|
74
|
-
* @param _message ABI encoded Hyperlane message.
|
|
75
|
-
* @return Nonce of `_message`
|
|
76
|
-
*/
|
|
77
|
-
function nonce(bytes calldata _message) internal pure returns (uint32) {
|
|
78
|
-
return uint32(bytes4(_message[NONCE_OFFSET:ORIGIN_OFFSET]));
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* @notice Returns the message origin domain.
|
|
83
|
-
* @param _message ABI encoded Hyperlane message.
|
|
84
|
-
* @return Origin domain of `_message`
|
|
85
|
-
*/
|
|
86
|
-
function origin(bytes calldata _message) internal pure returns (uint32) {
|
|
87
|
-
return uint32(bytes4(_message[ORIGIN_OFFSET:SENDER_OFFSET]));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* @notice Returns the message sender as bytes32.
|
|
92
|
-
* @param _message ABI encoded Hyperlane message.
|
|
93
|
-
* @return Sender of `_message` as bytes32
|
|
94
|
-
*/
|
|
95
|
-
function sender(bytes calldata _message) internal pure returns (bytes32) {
|
|
96
|
-
return bytes32(_message[SENDER_OFFSET:DESTINATION_OFFSET]);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* @notice Returns the message sender as address.
|
|
101
|
-
* @param _message ABI encoded Hyperlane message.
|
|
102
|
-
* @return Sender of `_message` as address
|
|
103
|
-
*/
|
|
104
|
-
function senderAddress(bytes calldata _message)
|
|
105
|
-
internal
|
|
106
|
-
pure
|
|
107
|
-
returns (address)
|
|
108
|
-
{
|
|
109
|
-
return sender(_message).bytes32ToAddress();
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* @notice Returns the message destination domain.
|
|
114
|
-
* @param _message ABI encoded Hyperlane message.
|
|
115
|
-
* @return Destination domain of `_message`
|
|
116
|
-
*/
|
|
117
|
-
function destination(bytes calldata _message)
|
|
118
|
-
internal
|
|
119
|
-
pure
|
|
120
|
-
returns (uint32)
|
|
121
|
-
{
|
|
122
|
-
return uint32(bytes4(_message[DESTINATION_OFFSET:RECIPIENT_OFFSET]));
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* @notice Returns the message recipient as bytes32.
|
|
127
|
-
* @param _message ABI encoded Hyperlane message.
|
|
128
|
-
* @return Recipient of `_message` as bytes32
|
|
42
|
+
* @notice Returns leaf of formatted message with provided fields.
|
|
43
|
+
* @dev hash of abi packed message and leaf index.
|
|
44
|
+
* @param _message Raw bytes of message contents.
|
|
45
|
+
* @param _leafIndex Index of the message in the tree
|
|
46
|
+
* @return Leaf (hash) of formatted message
|
|
129
47
|
*/
|
|
130
|
-
function
|
|
48
|
+
function leaf(bytes calldata _message, uint256 _leafIndex)
|
|
131
49
|
internal
|
|
132
50
|
pure
|
|
133
51
|
returns (bytes32)
|
|
134
52
|
{
|
|
135
|
-
return
|
|
53
|
+
return keccak256(abi.encodePacked(_message, _leafIndex));
|
|
136
54
|
}
|
|
137
55
|
|
|
138
56
|
/**
|
|
139
|
-
* @notice
|
|
140
|
-
* @
|
|
141
|
-
* @
|
|
57
|
+
* @notice Decode raw message bytes into structured message fields.
|
|
58
|
+
* @dev Efficiently slices calldata into structured message fields.
|
|
59
|
+
* @param _message Raw bytes of message contents.
|
|
60
|
+
* @return origin Domain of home chain
|
|
61
|
+
* @return sender Address of sender as bytes32
|
|
62
|
+
* @return destination Domain of destination chain
|
|
63
|
+
* @return recipient Address of recipient on destination chain as bytes32
|
|
64
|
+
* @return body Raw bytes of message body
|
|
142
65
|
*/
|
|
143
|
-
function
|
|
66
|
+
function destructure(bytes calldata _message)
|
|
144
67
|
internal
|
|
145
68
|
pure
|
|
146
|
-
returns (
|
|
69
|
+
returns (
|
|
70
|
+
uint32 origin,
|
|
71
|
+
bytes32 sender,
|
|
72
|
+
uint32 destination,
|
|
73
|
+
bytes32 recipient,
|
|
74
|
+
bytes calldata body
|
|
75
|
+
)
|
|
147
76
|
{
|
|
148
|
-
return
|
|
77
|
+
return (
|
|
78
|
+
uint32(bytes4(_message[0:4])),
|
|
79
|
+
bytes32(_message[4:36]),
|
|
80
|
+
uint32(bytes4(_message[36:40])),
|
|
81
|
+
bytes32(_message[40:72]),
|
|
82
|
+
bytes(_message[72:])
|
|
83
|
+
);
|
|
149
84
|
}
|
|
150
85
|
|
|
151
86
|
/**
|
|
152
|
-
* @notice
|
|
153
|
-
* @
|
|
154
|
-
* @
|
|
87
|
+
* @notice Decode raw message bytes into structured message fields.
|
|
88
|
+
* @dev Efficiently slices calldata into structured message fields.
|
|
89
|
+
* @param _message Raw bytes of message contents.
|
|
90
|
+
* @return origin Domain of home chain
|
|
91
|
+
* @return sender Address of sender as address (bytes20)
|
|
92
|
+
* @return destination Domain of destination chain
|
|
93
|
+
* @return recipient Address of recipient on destination chain as address (bytes20)
|
|
94
|
+
* @return body Raw bytes of message body
|
|
155
95
|
*/
|
|
156
|
-
function
|
|
96
|
+
function destructureAddresses(bytes calldata _message)
|
|
157
97
|
internal
|
|
158
98
|
pure
|
|
159
|
-
returns (
|
|
99
|
+
returns (
|
|
100
|
+
uint32,
|
|
101
|
+
address,
|
|
102
|
+
uint32,
|
|
103
|
+
address,
|
|
104
|
+
bytes calldata
|
|
105
|
+
)
|
|
160
106
|
{
|
|
161
|
-
|
|
107
|
+
(
|
|
108
|
+
uint32 _origin,
|
|
109
|
+
bytes32 _sender,
|
|
110
|
+
uint32 destination,
|
|
111
|
+
bytes32 _recipient,
|
|
112
|
+
bytes calldata body
|
|
113
|
+
) = destructure(_message);
|
|
114
|
+
return (
|
|
115
|
+
_origin,
|
|
116
|
+
_sender.bytes32ToAddress(),
|
|
117
|
+
destination,
|
|
118
|
+
_recipient.bytes32ToAddress(),
|
|
119
|
+
body
|
|
120
|
+
);
|
|
162
121
|
}
|
|
163
122
|
}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.13;
|
|
3
3
|
|
|
4
|
-
// ============ Internal Imports ============
|
|
5
4
|
import {OwnableMulticall, Call} from "../OwnableMulticall.sol";
|
|
6
|
-
import {Router} from "../Router.sol";
|
|
7
5
|
import {IInterchainAccountRouter} from "../../interfaces/IInterchainAccountRouter.sol";
|
|
8
6
|
|
|
9
7
|
// ============ External Imports ============
|
|
8
|
+
import {Router} from "../Router.sol";
|
|
10
9
|
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
|
|
11
10
|
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
12
11
|
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
@@ -27,24 +26,34 @@ contract InterchainAccountRouter is Router, IInterchainAccountRouter {
|
|
|
27
26
|
|
|
28
27
|
function initialize(
|
|
29
28
|
address _owner,
|
|
30
|
-
address
|
|
29
|
+
address _abacusConnectionManager,
|
|
31
30
|
address _interchainGasPaymaster
|
|
32
31
|
) public initializer {
|
|
33
32
|
// Transfer ownership of the contract to deployer
|
|
34
33
|
_transferOwnership(_owner);
|
|
35
|
-
// Set the addresses for the
|
|
34
|
+
// Set the addresses for the ACM and IGP
|
|
36
35
|
// Alternatively, this could be done later in an initialize method
|
|
37
|
-
|
|
36
|
+
_setAbacusConnectionManager(_abacusConnectionManager);
|
|
38
37
|
_setInterchainGasPaymaster(_interchainGasPaymaster);
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
function dispatch(uint32 _destinationDomain, Call[] calldata calls)
|
|
42
41
|
external
|
|
43
|
-
returns (
|
|
42
|
+
returns (uint256)
|
|
44
43
|
{
|
|
45
44
|
return _dispatch(_destinationDomain, abi.encode(msg.sender, calls));
|
|
46
45
|
}
|
|
47
46
|
|
|
47
|
+
function dispatch(
|
|
48
|
+
uint32 _destinationDomain,
|
|
49
|
+
address target,
|
|
50
|
+
bytes calldata data
|
|
51
|
+
) external returns (uint256) {
|
|
52
|
+
Call[] memory calls = new Call[](1);
|
|
53
|
+
calls[0] = Call({to: target, data: data});
|
|
54
|
+
return _dispatch(_destinationDomain, abi.encode(msg.sender, calls));
|
|
55
|
+
}
|
|
56
|
+
|
|
48
57
|
function getInterchainAccount(uint32 _origin, address _sender)
|
|
49
58
|
public
|
|
50
59
|
view
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
pragma solidity ^0.8.13;
|
|
3
3
|
|
|
4
|
-
// ============ Internal Imports ============
|
|
5
4
|
import {OwnableMulticall, Call} from "../OwnableMulticall.sol";
|
|
6
|
-
import {Router} from "../Router.sol";
|
|
7
5
|
import {IInterchainQueryRouter} from "../../interfaces/IInterchainQueryRouter.sol";
|
|
8
6
|
|
|
9
7
|
// ============ External Imports ============
|
|
8
|
+
import {Router} from "../Router.sol";
|
|
10
9
|
import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
|
|
11
10
|
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
12
11
|
import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
|
|
@@ -33,17 +32,37 @@ contract InterchainQueryRouter is
|
|
|
33
32
|
|
|
34
33
|
function initialize(
|
|
35
34
|
address _owner,
|
|
36
|
-
address
|
|
35
|
+
address _abacusConnectionManager,
|
|
37
36
|
address _interchainGasPaymaster
|
|
38
37
|
) public initializer {
|
|
39
38
|
// Transfer ownership of the contract to deployer
|
|
40
39
|
_transferOwnership(_owner);
|
|
41
|
-
// Set the addresses for the
|
|
40
|
+
// Set the addresses for the ACM and IGP
|
|
42
41
|
// Alternatively, this could be done later in an initialize method
|
|
43
|
-
|
|
42
|
+
_setAbacusConnectionManager(_abacusConnectionManager);
|
|
44
43
|
_setInterchainGasPaymaster(_interchainGasPaymaster);
|
|
45
44
|
}
|
|
46
45
|
|
|
46
|
+
/**
|
|
47
|
+
* @param _destinationDomain Domain of destination chain
|
|
48
|
+
* @param target The address of the contract to query on destination chain.
|
|
49
|
+
* @param queryData The calldata of the view call to make on the destination chain.
|
|
50
|
+
* @param callback Callback function selector on `msg.sender` and optionally abi-encoded prefix arguments.
|
|
51
|
+
*/
|
|
52
|
+
function query(
|
|
53
|
+
uint32 _destinationDomain,
|
|
54
|
+
address target,
|
|
55
|
+
bytes calldata queryData,
|
|
56
|
+
bytes calldata callback
|
|
57
|
+
) external returns (uint256 leafIndex) {
|
|
58
|
+
// TODO: fix this ugly arrayification
|
|
59
|
+
Call[] memory calls = new Call[](1);
|
|
60
|
+
calls[0] = Call({to: target, data: queryData});
|
|
61
|
+
bytes[] memory callbacks = new bytes[](1);
|
|
62
|
+
callbacks[0] = callback;
|
|
63
|
+
leafIndex = query(_destinationDomain, calls, callbacks);
|
|
64
|
+
}
|
|
65
|
+
|
|
47
66
|
/**
|
|
48
67
|
* @param _destinationDomain Domain of destination chain
|
|
49
68
|
* @param call Call (to and data packed struct) to be made on destination chain.
|
|
@@ -53,13 +72,13 @@ contract InterchainQueryRouter is
|
|
|
53
72
|
uint32 _destinationDomain,
|
|
54
73
|
Call calldata call,
|
|
55
74
|
bytes calldata callback
|
|
56
|
-
) external returns (
|
|
75
|
+
) external returns (uint256 leafIndex) {
|
|
57
76
|
// TODO: fix this ugly arrayification
|
|
58
77
|
Call[] memory calls = new Call[](1);
|
|
59
78
|
calls[0] = call;
|
|
60
79
|
bytes[] memory callbacks = new bytes[](1);
|
|
61
80
|
callbacks[0] = callback;
|
|
62
|
-
|
|
81
|
+
leafIndex = query(_destinationDomain, calls, callbacks);
|
|
63
82
|
}
|
|
64
83
|
|
|
65
84
|
/**
|
|
@@ -71,12 +90,12 @@ contract InterchainQueryRouter is
|
|
|
71
90
|
uint32 _destinationDomain,
|
|
72
91
|
Call[] memory calls,
|
|
73
92
|
bytes[] memory callbacks
|
|
74
|
-
) public returns (
|
|
93
|
+
) public returns (uint256 leafIndex) {
|
|
75
94
|
require(
|
|
76
95
|
calls.length == callbacks.length,
|
|
77
96
|
"InterchainQueryRouter: calls and callbacks must be same length"
|
|
78
97
|
);
|
|
79
|
-
|
|
98
|
+
leafIndex = _dispatch(
|
|
80
99
|
_destinationDomain,
|
|
81
100
|
abi.encode(Action.DISPATCH, msg.sender, calls, callbacks)
|
|
82
101
|
);
|
|
@@ -21,13 +21,14 @@ contract LiquidityLayerRouter is Router {
|
|
|
21
21
|
|
|
22
22
|
function initialize(
|
|
23
23
|
address _owner,
|
|
24
|
-
address
|
|
24
|
+
address _abacusConnectionManager,
|
|
25
25
|
address _interchainGasPaymaster
|
|
26
26
|
) public initializer {
|
|
27
27
|
// Transfer ownership of the contract to deployer
|
|
28
28
|
_transferOwnership(_owner);
|
|
29
|
+
// Set the addresses for the ACM and IGP
|
|
29
30
|
// Alternatively, this could be done later in an initialize method
|
|
30
|
-
|
|
31
|
+
_setAbacusConnectionManager(_abacusConnectionManager);
|
|
31
32
|
_setInterchainGasPaymaster(_interchainGasPaymaster);
|
|
32
33
|
}
|
|
33
34
|
|
|
@@ -74,7 +74,8 @@ contract CircleBridgeAdapter is ILiquidityLayerAdapter, Router {
|
|
|
74
74
|
// Transfer ownership of the contract to deployer
|
|
75
75
|
_transferOwnership(_owner);
|
|
76
76
|
|
|
77
|
-
// Set the addresses for the IGP to address(0) -
|
|
77
|
+
// Set the addresses for the ACM and IGP to address(0) - they aren't used.
|
|
78
|
+
_setAbacusConnectionManager(address(0));
|
|
78
79
|
_setInterchainGasPaymaster(address(0));
|
|
79
80
|
|
|
80
81
|
circleBridge = ICircleBridge(_circleBridge);
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.13;
|
|
3
|
+
|
|
4
|
+
import {Router} from "../../../Router.sol";
|
|
5
|
+
|
|
6
|
+
import {IPortalTokenBridge} from "../interfaces/portal/IPortalTokenBridge.sol";
|
|
7
|
+
import {ILiquidityLayerAdapter} from "../interfaces/ILiquidityLayerAdapter.sol";
|
|
8
|
+
import {TypeCasts} from "../../../libs/TypeCasts.sol";
|
|
9
|
+
|
|
10
|
+
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
|
11
|
+
|
|
12
|
+
contract PortalAdapter is ILiquidityLayerAdapter, Router {
|
|
13
|
+
/// @notice The Portal TokenBridge contract.
|
|
14
|
+
IPortalTokenBridge public portalTokenBridge;
|
|
15
|
+
|
|
16
|
+
/// @notice The LiquidityLayerRouter contract.
|
|
17
|
+
address public liquidityLayerRouter;
|
|
18
|
+
|
|
19
|
+
/// @notice Hyperlane domain => Wormhole domain.
|
|
20
|
+
mapping(uint32 => uint16) public hyperlaneDomainToWormholeDomain;
|
|
21
|
+
/// @notice transferId => token address
|
|
22
|
+
mapping(bytes32 => address) public portalTransfersProcessed;
|
|
23
|
+
|
|
24
|
+
uint32 localDomain;
|
|
25
|
+
// We could technically use Portal's sequence number here but it doesn't
|
|
26
|
+
// get passed through, so we would have to parse the VAA twice
|
|
27
|
+
// 224 bits should be large enough and allows us to pack into a single slot
|
|
28
|
+
// with a Hyperlane domain
|
|
29
|
+
uint224 public nonce = 0;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @notice Emits the nonce of the Portal message when a token is bridged.
|
|
33
|
+
* @param nonce The nonce of the Portal message.
|
|
34
|
+
* @param portalSequence The sequence of the Portal message.
|
|
35
|
+
* @param destination The hyperlane domain of the destination
|
|
36
|
+
*/
|
|
37
|
+
event BridgedToken(
|
|
38
|
+
uint256 nonce,
|
|
39
|
+
uint64 portalSequence,
|
|
40
|
+
uint32 destination
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @notice Emitted when the Hyperlane domain to Wormhole domain mapping is updated.
|
|
45
|
+
* @param hyperlaneDomain The Hyperlane domain.
|
|
46
|
+
* @param wormholeDomain The Wormhole domain.
|
|
47
|
+
*/
|
|
48
|
+
event DomainAdded(uint32 indexed hyperlaneDomain, uint32 wormholeDomain);
|
|
49
|
+
|
|
50
|
+
modifier onlyLiquidityLayerRouter() {
|
|
51
|
+
require(msg.sender == liquidityLayerRouter, "!liquidityLayerRouter");
|
|
52
|
+
_;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @param _localDomain The local hyperlane domain
|
|
57
|
+
* @param _owner The new owner.
|
|
58
|
+
* @param _portalTokenBridge The Portal TokenBridge contract.
|
|
59
|
+
* @param _liquidityLayerRouter The LiquidityLayerRouter contract.
|
|
60
|
+
*/
|
|
61
|
+
function initialize(
|
|
62
|
+
uint32 _localDomain,
|
|
63
|
+
address _owner,
|
|
64
|
+
address _portalTokenBridge,
|
|
65
|
+
address _liquidityLayerRouter
|
|
66
|
+
) public initializer {
|
|
67
|
+
// Transfer ownership of the contract to deployer
|
|
68
|
+
_transferOwnership(_owner);
|
|
69
|
+
|
|
70
|
+
localDomain = _localDomain;
|
|
71
|
+
portalTokenBridge = IPortalTokenBridge(_portalTokenBridge);
|
|
72
|
+
liquidityLayerRouter = _liquidityLayerRouter;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Sends tokens as requested by the router
|
|
77
|
+
* @param _destinationDomain The hyperlane domain of the destination
|
|
78
|
+
* @param _token The token address
|
|
79
|
+
* @param _amount The amount of tokens to send
|
|
80
|
+
*/
|
|
81
|
+
function sendTokens(
|
|
82
|
+
uint32 _destinationDomain,
|
|
83
|
+
bytes32, // _recipientAddress, unused
|
|
84
|
+
address _token,
|
|
85
|
+
uint256 _amount
|
|
86
|
+
) external onlyLiquidityLayerRouter returns (bytes memory) {
|
|
87
|
+
nonce = nonce + 1;
|
|
88
|
+
uint16 _wormholeDomain = hyperlaneDomainToWormholeDomain[
|
|
89
|
+
_destinationDomain
|
|
90
|
+
];
|
|
91
|
+
|
|
92
|
+
bytes32 _remoteRouter = _mustHaveRemoteRouter(_destinationDomain);
|
|
93
|
+
|
|
94
|
+
// Approve the token to Portal. We assume that the LiquidityLayerRouter
|
|
95
|
+
// has already transferred the token to this contract.
|
|
96
|
+
require(
|
|
97
|
+
IERC20(_token).approve(address(portalTokenBridge), _amount),
|
|
98
|
+
"!approval"
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
uint64 portalSequence = portalTokenBridge.transferTokensWithPayload(
|
|
102
|
+
_token,
|
|
103
|
+
_amount,
|
|
104
|
+
_wormholeDomain,
|
|
105
|
+
_remoteRouter,
|
|
106
|
+
// Nonce for grouping Portal messages in the same tx, not relevant for us
|
|
107
|
+
// https://book.wormhole.com/technical/evm/coreLayer.html#emitting-a-vaa
|
|
108
|
+
0,
|
|
109
|
+
// Portal Payload used in completeTransfer
|
|
110
|
+
abi.encode(localDomain, nonce)
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
emit BridgedToken(nonce, portalSequence, _destinationDomain);
|
|
114
|
+
return abi.encode(nonce);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Sends the tokens to the recipient as requested by the router
|
|
119
|
+
* @param _originDomain The hyperlane domain of the origin
|
|
120
|
+
* @param _recipient The address of the recipient
|
|
121
|
+
* @param _amount The amount of tokens to send
|
|
122
|
+
* @param _adapterData The adapter data from the origin chain, containing the nonce
|
|
123
|
+
*/
|
|
124
|
+
function receiveTokens(
|
|
125
|
+
uint32 _originDomain, // Hyperlane domain
|
|
126
|
+
address _recipient,
|
|
127
|
+
uint256 _amount,
|
|
128
|
+
bytes calldata _adapterData // The adapter data from the message
|
|
129
|
+
) external onlyLiquidityLayerRouter returns (address, uint256) {
|
|
130
|
+
// Get the nonce information from the adapterData
|
|
131
|
+
uint224 _nonce = abi.decode(_adapterData, (uint224));
|
|
132
|
+
|
|
133
|
+
address _tokenAddress = portalTransfersProcessed[
|
|
134
|
+
transferId(_originDomain, _nonce)
|
|
135
|
+
];
|
|
136
|
+
|
|
137
|
+
require(
|
|
138
|
+
_tokenAddress != address(0x0),
|
|
139
|
+
"Portal Transfer has not yet been completed"
|
|
140
|
+
);
|
|
141
|
+
|
|
142
|
+
IERC20 _token = IERC20(_tokenAddress);
|
|
143
|
+
|
|
144
|
+
// Transfer the token out to the recipient
|
|
145
|
+
// TODO: use safeTransfer
|
|
146
|
+
// Portal doesn't charge any fee, so we can safely transfer out the
|
|
147
|
+
// exact amount that was bridged over.
|
|
148
|
+
require(_token.transfer(_recipient, _amount), "!transfer out");
|
|
149
|
+
return (_tokenAddress, _amount);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Completes the Portal transfer which sends the funds to this adapter.
|
|
154
|
+
* The router can call receiveTokens to move those funds to the ultimate recipient.
|
|
155
|
+
* @param encodedVm The VAA from the Wormhole Guardians
|
|
156
|
+
*/
|
|
157
|
+
function completeTransfer(bytes memory encodedVm) public {
|
|
158
|
+
bytes memory _tokenBridgeTransferWithPayload = portalTokenBridge
|
|
159
|
+
.completeTransferWithPayload(encodedVm);
|
|
160
|
+
IPortalTokenBridge.TransferWithPayload
|
|
161
|
+
memory _transfer = portalTokenBridge.parseTransferWithPayload(
|
|
162
|
+
_tokenBridgeTransferWithPayload
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
(uint32 _originDomain, uint224 _nonce) = abi.decode(
|
|
166
|
+
_transfer.payload,
|
|
167
|
+
(uint32, uint224)
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
// Logic taken from here https://github.com/wormhole-foundation/wormhole/blob/dev.v2/ethereum/contracts/bridge/Bridge.sol#L503
|
|
171
|
+
address tokenAddress = _transfer.tokenChain ==
|
|
172
|
+
hyperlaneDomainToWormholeDomain[localDomain]
|
|
173
|
+
? TypeCasts.bytes32ToAddress(_transfer.tokenAddress)
|
|
174
|
+
: portalTokenBridge.wrappedAsset(
|
|
175
|
+
_transfer.tokenChain,
|
|
176
|
+
_transfer.tokenAddress
|
|
177
|
+
);
|
|
178
|
+
|
|
179
|
+
portalTransfersProcessed[
|
|
180
|
+
transferId(_originDomain, _nonce)
|
|
181
|
+
] = tokenAddress;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// This contract is only a Router to be aware of remote router addresses,
|
|
185
|
+
// and doesn't actually send/handle Hyperlane messages directly
|
|
186
|
+
function _handle(
|
|
187
|
+
uint32, // origin
|
|
188
|
+
bytes32, // sender
|
|
189
|
+
bytes calldata // message
|
|
190
|
+
) internal pure override {
|
|
191
|
+
revert("No messages expected");
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function addDomain(uint32 _hyperlaneDomain, uint16 _wormholeDomain)
|
|
195
|
+
external
|
|
196
|
+
onlyOwner
|
|
197
|
+
{
|
|
198
|
+
hyperlaneDomainToWormholeDomain[_hyperlaneDomain] = _wormholeDomain;
|
|
199
|
+
|
|
200
|
+
emit DomainAdded(_hyperlaneDomain, _wormholeDomain);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* The key that is used to track fulfilled Portal transfers
|
|
205
|
+
* @param _hyperlaneDomain The hyperlane of the origin
|
|
206
|
+
* @param _nonce The nonce of the adapter on the origin
|
|
207
|
+
*/
|
|
208
|
+
function transferId(uint32 _hyperlaneDomain, uint224 _nonce)
|
|
209
|
+
public
|
|
210
|
+
pure
|
|
211
|
+
returns (bytes32)
|
|
212
|
+
{
|
|
213
|
+
return bytes32(abi.encodePacked(_hyperlaneDomain, _nonce));
|
|
214
|
+
}
|
|
215
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
pragma solidity ^0.8.13;
|
|
3
|
+
|
|
4
|
+
// Portal's interface from their docs
|
|
5
|
+
interface IPortalTokenBridge {
|
|
6
|
+
struct Transfer {
|
|
7
|
+
uint8 payloadID;
|
|
8
|
+
uint256 amount;
|
|
9
|
+
bytes32 tokenAddress;
|
|
10
|
+
uint16 tokenChain;
|
|
11
|
+
bytes32 to;
|
|
12
|
+
uint16 toChain;
|
|
13
|
+
uint256 fee;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
struct TransferWithPayload {
|
|
17
|
+
uint8 payloadID;
|
|
18
|
+
uint256 amount;
|
|
19
|
+
bytes32 tokenAddress;
|
|
20
|
+
uint16 tokenChain;
|
|
21
|
+
bytes32 to;
|
|
22
|
+
uint16 toChain;
|
|
23
|
+
bytes32 fromAddress;
|
|
24
|
+
bytes payload;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
struct AssetMeta {
|
|
28
|
+
uint8 payloadID;
|
|
29
|
+
bytes32 tokenAddress;
|
|
30
|
+
uint16 tokenChain;
|
|
31
|
+
uint8 decimals;
|
|
32
|
+
bytes32 symbol;
|
|
33
|
+
bytes32 name;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
struct RegisterChain {
|
|
37
|
+
bytes32 module;
|
|
38
|
+
uint8 action;
|
|
39
|
+
uint16 chainId;
|
|
40
|
+
uint16 emitterChainID;
|
|
41
|
+
bytes32 emitterAddress;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
struct UpgradeContract {
|
|
45
|
+
bytes32 module;
|
|
46
|
+
uint8 action;
|
|
47
|
+
uint16 chainId;
|
|
48
|
+
bytes32 newContract;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
struct RecoverChainId {
|
|
52
|
+
bytes32 module;
|
|
53
|
+
uint8 action;
|
|
54
|
+
uint256 evmChainId;
|
|
55
|
+
uint16 newChainId;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
event ContractUpgraded(
|
|
59
|
+
address indexed oldContract,
|
|
60
|
+
address indexed newContract
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
function transferTokensWithPayload(
|
|
64
|
+
address token,
|
|
65
|
+
uint256 amount,
|
|
66
|
+
uint16 recipientChain,
|
|
67
|
+
bytes32 recipient,
|
|
68
|
+
uint32 nonce,
|
|
69
|
+
bytes memory payload
|
|
70
|
+
) external payable returns (uint64 sequence);
|
|
71
|
+
|
|
72
|
+
function completeTransferWithPayload(bytes memory encodedVm)
|
|
73
|
+
external
|
|
74
|
+
returns (bytes memory);
|
|
75
|
+
|
|
76
|
+
function parseTransferWithPayload(bytes memory encoded)
|
|
77
|
+
external
|
|
78
|
+
pure
|
|
79
|
+
returns (TransferWithPayload memory transfer);
|
|
80
|
+
|
|
81
|
+
function wrappedAsset(uint16 tokenChainId, bytes32 tokenAddress)
|
|
82
|
+
external
|
|
83
|
+
view
|
|
84
|
+
returns (address);
|
|
85
|
+
|
|
86
|
+
function isWrappedAsset(address token) external view returns (bool);
|
|
87
|
+
}
|