@hyperlane-xyz/core 0.5.2 → 0.5.4-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/contracts/Call.sol +7 -0
- package/contracts/{AbacusConnectionClient.sol → HyperlaneConnectionClient.sol} +69 -56
- package/contracts/InterchainGasPaymaster.sol +9 -11
- package/contracts/Mailbox.sol +179 -44
- package/contracts/OwnableMulticall.sol +1 -5
- package/contracts/Router.sol +21 -45
- package/contracts/isms/MultisigIsm.sol +340 -0
- package/contracts/libs/Message.sol +107 -66
- package/contracts/libs/MultisigIsmMetadata.sol +187 -0
- package/contracts/middleware/InterchainAccountRouter.sol +9 -6
- package/contracts/middleware/InterchainQueryRouter.sol +15 -9
- package/contracts/middleware/liquidity-layer/LiquidityLayerRouter.sol +134 -0
- package/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.sol +246 -0
- package/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.sol +18 -0
- package/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.sol +12 -0
- package/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.sol +59 -0
- package/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.sol +38 -0
- package/contracts/mock/MockCircleBridge.sol +38 -0
- package/contracts/mock/MockCircleMessageTransmitter.sol +43 -0
- package/contracts/mock/MockHyperlaneEnvironment.sol +60 -0
- package/contracts/mock/MockInterchainAccountRouter.sol +98 -0
- package/contracts/mock/MockMailbox.sol +79 -0
- package/contracts/mock/MockToken.sol +14 -0
- package/contracts/test/TestHyperlaneConnectionClient.sol +14 -0
- package/contracts/test/TestIsm.sol +20 -0
- package/contracts/test/TestLiquidityLayerMessageRecipient.sol +24 -0
- package/contracts/test/TestMailbox.sol +34 -4
- package/contracts/test/TestMerkle.sol +9 -4
- package/contracts/test/TestMessage.sol +24 -12
- package/contracts/test/TestMultisigIsm.sol +23 -0
- package/contracts/test/TestQuerySender.sol +72 -0
- package/contracts/test/TestSendReceiver.sol +6 -15
- package/contracts/test/TestTokenRecipient.sol +44 -0
- package/dist/@openzeppelin/contracts/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts/index.d.ts.map +1 -1
- package/dist/@openzeppelin/contracts/token/ERC20/IERC20.d.ts +139 -0
- package/dist/@openzeppelin/contracts/token/ERC20/IERC20.d.ts.map +1 -0
- package/dist/{contracts/Outbox.js → @openzeppelin/contracts/token/ERC20/IERC20.js} +1 -1
- package/dist/@openzeppelin/contracts/token/ERC20/IERC20.js.map +1 -0
- package/dist/@openzeppelin/contracts/token/ERC20/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts/token/ERC20/index.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts/token/ERC20/index.js +3 -0
- package/dist/@openzeppelin/contracts/token/ERC20/index.js.map +1 -0
- package/dist/@openzeppelin/contracts/token/index.d.ts +3 -0
- package/dist/@openzeppelin/contracts/token/index.d.ts.map +1 -0
- package/dist/{interfaces/IOutbox.js → @openzeppelin/contracts/token/index.js} +1 -1
- package/dist/@openzeppelin/contracts/token/index.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -1
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.d.ts +204 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.js +4 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.d.ts +139 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.d.ts.map +1 -0
- package/dist/{contracts/MerkleTreeManager.js → @openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.js} +1 -1
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.d.ts +163 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.d.ts.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.js +4 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts +2 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts.map +1 -0
- package/dist/{contracts/validator-manager → @openzeppelin/contracts-upgradeable/token/ERC20/extensions}/index.js +0 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts +5 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts.map +1 -0
- package/dist/{contracts/Inbox.js → @openzeppelin/contracts-upgradeable/token/ERC20/index.js} +1 -1
- package/dist/@openzeppelin/contracts-upgradeable/token/ERC20/index.js.map +1 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/index.d.ts +3 -0
- package/dist/@openzeppelin/contracts-upgradeable/token/index.d.ts.map +1 -0
- package/dist/{interfaces/IInbox.js → @openzeppelin/contracts-upgradeable/token/index.js} +1 -1
- package/dist/@openzeppelin/contracts-upgradeable/token/index.js.map +1 -0
- package/dist/contracts/{AbacusConnectionClient.d.ts → HyperlaneConnectionClient.d.ts} +69 -36
- package/dist/contracts/HyperlaneConnectionClient.d.ts.map +1 -0
- package/dist/contracts/HyperlaneConnectionClient.js +4 -0
- package/dist/contracts/HyperlaneConnectionClient.js.map +1 -0
- package/dist/contracts/InterchainGasPaymaster.d.ts +11 -13
- package/dist/contracts/InterchainGasPaymaster.d.ts.map +1 -1
- package/dist/contracts/Mailbox.d.ts +151 -28
- package/dist/contracts/Mailbox.d.ts.map +1 -1
- package/dist/contracts/OwnableSpecifiesISM.d.ts +134 -0
- package/dist/contracts/OwnableSpecifiesISM.d.ts.map +1 -0
- package/dist/contracts/OwnableSpecifiesISM.js +4 -0
- package/dist/contracts/OwnableSpecifiesISM.js.map +1 -0
- package/dist/contracts/Router.d.ts +65 -32
- package/dist/contracts/Router.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +3 -7
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/isms/MultisigIsm.d.ts +235 -0
- package/dist/contracts/isms/MultisigIsm.d.ts.map +1 -0
- package/dist/contracts/{mock/MockOutbox.js → isms/MultisigIsm.js} +1 -1
- package/dist/contracts/isms/MultisigIsm.js.map +1 -0
- package/dist/contracts/isms/index.d.ts +2 -0
- package/dist/contracts/isms/index.d.ts.map +1 -0
- package/dist/contracts/isms/index.js +3 -0
- package/dist/contracts/isms/index.js.map +1 -0
- package/dist/contracts/middleware/InterchainAccountRouter.d.ts +71 -38
- package/dist/contracts/middleware/InterchainAccountRouter.d.ts.map +1 -1
- package/dist/contracts/middleware/InterchainQueryRouter.d.ts +72 -39
- package/dist/contracts/middleware/InterchainQueryRouter.d.ts.map +1 -1
- package/dist/contracts/middleware/index.d.ts +2 -0
- package/dist/contracts/middleware/index.d.ts.map +1 -1
- package/dist/contracts/middleware/index.js +1 -0
- package/dist/contracts/middleware/index.js.map +1 -1
- package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts +324 -0
- package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/LiquidityLayerRouter.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts +449 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts +2 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/index.js +3 -0
- package/dist/contracts/middleware/liquidity-layer/adapters/index.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/index.d.ts +6 -0
- package/dist/contracts/middleware/liquidity-layer/index.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/index.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/index.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.d.ts +67 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.d.ts.map +1 -0
- package/dist/contracts/{AbacusConnectionClient.js → middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.js} +1 -1
- package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter.js.map +1 -0
- package/dist/contracts/{test/TestValidatorManager.d.ts → middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.d.ts} +14 -21
- package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.d.ts +78 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.d.ts +59 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts +3 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.js +3 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/circle/index.js.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts +5 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/index.js +4 -0
- package/dist/contracts/middleware/liquidity-layer/interfaces/index.js.map +1 -0
- package/dist/contracts/mock/MockCircleBridge.d.ts +86 -0
- package/dist/contracts/mock/MockCircleBridge.d.ts.map +1 -0
- package/dist/contracts/mock/MockCircleBridge.js +4 -0
- package/dist/contracts/mock/MockCircleBridge.js.map +1 -0
- package/dist/contracts/mock/MockCircleMessageTransmitter.d.ts +77 -0
- package/dist/contracts/mock/MockCircleMessageTransmitter.d.ts.map +1 -0
- package/dist/contracts/mock/MockCircleMessageTransmitter.js +4 -0
- package/dist/contracts/mock/MockCircleMessageTransmitter.js.map +1 -0
- package/dist/contracts/mock/{MockInbox.d.ts → MockHyperlaneEnvironment.d.ts} +33 -17
- package/dist/contracts/mock/MockHyperlaneEnvironment.d.ts.map +1 -0
- package/dist/contracts/{AbacusConnectionManager.js → mock/MockHyperlaneEnvironment.js} +1 -1
- package/dist/contracts/mock/MockHyperlaneEnvironment.js.map +1 -0
- package/dist/contracts/mock/MockInterchainAccountRouter.d.ts +124 -0
- package/dist/contracts/mock/MockInterchainAccountRouter.d.ts.map +1 -0
- package/dist/contracts/mock/MockInterchainAccountRouter.js +4 -0
- package/dist/contracts/mock/MockInterchainAccountRouter.js.map +1 -0
- package/dist/contracts/mock/MockMailbox.d.ts +185 -0
- package/dist/contracts/mock/MockMailbox.d.ts.map +1 -0
- package/dist/contracts/mock/MockMailbox.js +4 -0
- package/dist/contracts/mock/MockMailbox.js.map +1 -0
- package/dist/contracts/mock/MockToken.d.ts +236 -0
- package/dist/contracts/mock/MockToken.d.ts.map +1 -0
- package/dist/contracts/mock/{MockInbox.js → MockToken.js} +1 -1
- package/dist/contracts/mock/MockToken.js.map +1 -0
- package/dist/contracts/mock/index.d.ts +6 -2
- package/dist/contracts/mock/index.d.ts.map +1 -1
- package/dist/contracts/test/{TestAbacusConnectionClient.d.ts → TestHyperlaneConnectionClient.d.ts} +69 -52
- package/dist/contracts/test/TestHyperlaneConnectionClient.d.ts.map +1 -0
- package/dist/contracts/test/TestHyperlaneConnectionClient.js +4 -0
- package/dist/contracts/test/TestHyperlaneConnectionClient.js.map +1 -0
- package/dist/contracts/test/TestIsm.d.ts +67 -0
- package/dist/contracts/test/TestIsm.d.ts.map +1 -0
- package/dist/contracts/test/TestIsm.js +4 -0
- package/dist/contracts/test/TestIsm.js.map +1 -0
- package/dist/contracts/test/TestLiquidityLayerMessageRecipient.d.ts +72 -0
- package/dist/contracts/test/TestLiquidityLayerMessageRecipient.d.ts.map +1 -0
- package/dist/contracts/test/TestLiquidityLayerMessageRecipient.js +4 -0
- package/dist/contracts/test/TestLiquidityLayerMessageRecipient.js.map +1 -0
- package/dist/contracts/test/TestMailbox.d.ts +164 -33
- package/dist/contracts/test/TestMailbox.d.ts.map +1 -1
- package/dist/contracts/test/TestMessage.d.ts +30 -10
- package/dist/contracts/test/TestMessage.d.ts.map +1 -1
- package/dist/contracts/test/TestMultisigIsm.d.ts +251 -0
- package/dist/contracts/test/TestMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/test/TestMultisigIsm.js +4 -0
- package/dist/contracts/test/TestMultisigIsm.js.map +1 -0
- package/dist/contracts/test/TestQuerySender.d.ts +215 -0
- package/dist/contracts/test/TestQuerySender.d.ts.map +1 -0
- package/dist/contracts/test/TestQuerySender.js +4 -0
- package/dist/contracts/test/TestQuerySender.js.map +1 -0
- package/dist/contracts/test/TestRouter.d.ts +65 -32
- package/dist/contracts/test/TestRouter.d.ts.map +1 -1
- package/dist/contracts/test/TestTokenRecipient.d.ts +151 -0
- package/dist/contracts/test/TestTokenRecipient.d.ts.map +1 -0
- package/dist/contracts/test/TestTokenRecipient.js +4 -0
- package/dist/contracts/test/TestTokenRecipient.js.map +1 -0
- package/dist/contracts/test/index.d.ts +6 -5
- package/dist/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts/index.d.ts +1 -0
- package/dist/factories/@openzeppelin/contracts/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts/index.js +2 -1
- package/dist/factories/@openzeppelin/contracts/index.js.map +1 -1
- package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.d.ts +36 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.js +201 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/IERC20__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/index.d.ts +2 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/index.js +9 -0
- package/dist/factories/@openzeppelin/contracts/token/ERC20/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts/token/index.d.ts +2 -0
- package/dist/factories/@openzeppelin/contracts/token/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts/token/index.js +31 -0
- package/dist/factories/@openzeppelin/contracts/token/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/index.d.ts +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -1
- package/dist/factories/@openzeppelin/contracts-upgradeable/index.js +2 -1
- package/dist/factories/@openzeppelin/contracts-upgradeable/index.js.map +1 -1
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.d.ts +48 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.js +324 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable__factory.js.map +1 -0
- package/dist/factories/{contracts/validator-manager/MultisigValidatorManager__factory.d.ts → @openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.d.ts} +5 -5
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.js +201 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.d.ts +36 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.d.ts.map +1 -0
- package/dist/factories/{contracts/validator-manager/MultisigValidatorManager__factory.js → @openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.js} +76 -122
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable__factory.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts +2 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.js +9 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/extensions/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts +4 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.js +35 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/ERC20/index.js.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.d.ts +2 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.d.ts.map +1 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.js +31 -0
- package/dist/factories/@openzeppelin/contracts-upgradeable/token/index.js.map +1 -0
- package/dist/factories/contracts/{AbacusConnectionClient__factory.d.ts → HyperlaneConnectionClient__factory.d.ts} +5 -5
- package/dist/factories/contracts/HyperlaneConnectionClient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/{AbacusConnectionClient__factory.js → HyperlaneConnectionClient__factory.js} +61 -22
- package/dist/factories/contracts/HyperlaneConnectionClient__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 +7 -18
- package/dist/factories/contracts/InterchainGasPaymaster__factory.js.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts +29 -13
- package/dist/factories/contracts/Mailbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/Mailbox__factory.js +239 -11
- package/dist/factories/contracts/Mailbox__factory.js.map +1 -1
- package/dist/factories/contracts/OwnableMulticall__factory.d.ts +1 -1
- package/dist/factories/contracts/OwnableMulticall__factory.js +1 -1
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts +55 -0
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.d.ts.map +1 -0
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.js +145 -0
- package/dist/factories/contracts/OwnableSpecifiesISM__factory.js.map +1 -0
- package/dist/factories/contracts/Router__factory.d.ts.map +1 -1
- package/dist/factories/contracts/Router__factory.js +65 -26
- package/dist/factories/contracts/Router__factory.js.map +1 -1
- package/dist/factories/contracts/index.d.ts +2 -6
- package/dist/factories/contracts/index.d.ts.map +1 -1
- package/dist/factories/contracts/index.js +4 -12
- package/dist/factories/contracts/index.js.map +1 -1
- package/dist/factories/contracts/isms/MultisigIsm__factory.d.ts +55 -0
- package/dist/factories/contracts/isms/MultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/MultisigIsm__factory.js +363 -0
- package/dist/factories/contracts/isms/MultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/index.d.ts +2 -0
- package/dist/factories/contracts/isms/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/index.js +9 -0
- package/dist/factories/contracts/isms/index.js.map +1 -0
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -12
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +78 -33
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js.map +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -12
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts.map +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +81 -30
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js.map +1 -1
- 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 +25 -1
- package/dist/factories/contracts/middleware/index.js.map +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +419 -0
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts +48 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js +623 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/CircleBridgeAdapter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts +2 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js +9 -0
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/index.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/index.d.ts +4 -0
- package/dist/factories/contracts/middleware/liquidity-layer/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/index.js +34 -0
- package/dist/factories/contracts/middleware/liquidity-layer/index.js.map +1 -0
- package/dist/factories/{interfaces/IAbacusConnectionManager__factory.d.ts → contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.d.ts} +5 -5
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.js +91 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerAdapter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.d.ts +19 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.js +51 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/ILiquidityLayerMessageRecipient__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.d.ts +36 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.js +104 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleBridge__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.d.ts +23 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.js +61 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/ICircleMessageTransmitter__factory.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts +3 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.js +11 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/circle/index.js.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts +4 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.d.ts.map +1 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js +35 -0
- package/dist/factories/contracts/middleware/liquidity-layer/interfaces/index.js.map +1 -0
- package/dist/factories/contracts/mock/MockCircleBridge__factory.d.ts +59 -0
- package/dist/factories/contracts/mock/MockCircleBridge__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockCircleBridge__factory.js +151 -0
- package/dist/factories/contracts/mock/MockCircleBridge__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.d.ts +45 -0
- package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.js +142 -0
- package/dist/factories/contracts/mock/MockCircleMessageTransmitter__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +45 -0
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +109 -0
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts +69 -0
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js +181 -0
- package/dist/factories/contracts/mock/MockInterchainAccountRouter__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +45 -0
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockMailbox__factory.js +252 -0
- package/dist/factories/contracts/mock/MockMailbox__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockToken__factory.d.ts +48 -0
- package/dist/factories/contracts/mock/{MockInbox__factory.d.ts.map → MockToken__factory.d.ts.map} +1 -1
- package/dist/factories/contracts/mock/MockToken__factory.js +355 -0
- package/dist/factories/contracts/mock/MockToken__factory.js.map +1 -0
- package/dist/factories/contracts/mock/index.d.ts +6 -2
- package/dist/factories/contracts/mock/index.d.ts.map +1 -1
- package/dist/factories/contracts/mock/index.js +13 -5
- package/dist/factories/contracts/mock/index.js.map +1 -1
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts +55 -0
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js +249 -0
- package/dist/factories/contracts/test/TestHyperlaneConnectionClient__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestIsm__factory.d.ts +35 -0
- package/dist/factories/contracts/test/TestIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestIsm__factory.js +91 -0
- package/dist/factories/contracts/test/TestIsm__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.d.ts +44 -0
- package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.js +111 -0
- package/dist/factories/contracts/test/TestLiquidityLayerMessageRecipient__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -8
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.js +235 -13
- 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 +40 -7
- package/dist/factories/contracts/test/TestMessage__factory.js.map +1 -1
- package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts +48 -0
- package/dist/factories/contracts/test/TestMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestMultisigIsm__factory.js +406 -0
- package/dist/factories/contracts/test/TestMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestQuerySender__factory.d.ts +55 -0
- package/dist/factories/contracts/test/TestQuerySender__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestQuerySender__factory.js +253 -0
- package/dist/factories/contracts/test/TestQuerySender__factory.js.map +1 -0
- package/dist/factories/contracts/test/TestQuery__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.d.ts.map +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.js +1 -1
- package/dist/factories/contracts/test/TestQuery__factory.js.map +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 +70 -31
- 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/TestTokenRecipient__factory.d.ts +55 -0
- package/dist/factories/contracts/test/TestTokenRecipient__factory.d.ts.map +1 -0
- package/dist/factories/contracts/test/TestTokenRecipient__factory.js +232 -0
- package/dist/factories/contracts/test/TestTokenRecipient__factory.js.map +1 -0
- package/dist/factories/contracts/test/index.d.ts +6 -5
- package/dist/factories/contracts/test/index.d.ts.map +1 -1
- package/dist/factories/contracts/test/index.js +13 -11
- package/dist/factories/contracts/test/index.js.map +1 -1
- package/dist/factories/interfaces/IInterchainAccountRouter__factory.d.ts +33 -0
- package/dist/factories/interfaces/IInterchainAccountRouter__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IInterchainAccountRouter__factory.js +78 -0
- package/dist/factories/interfaces/IInterchainAccountRouter__factory.js.map +1 -0
- package/dist/factories/interfaces/IInterchainGasPaymaster__factory.d.ts.map +1 -1
- package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js +3 -8
- package/dist/factories/interfaces/IInterchainGasPaymaster__factory.js.map +1 -1
- package/dist/factories/interfaces/IInterchainQueryRouter__factory.d.ts +33 -0
- package/dist/factories/interfaces/IInterchainQueryRouter__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IInterchainQueryRouter__factory.js +100 -0
- package/dist/factories/interfaces/IInterchainQueryRouter__factory.js.map +1 -0
- package/dist/factories/interfaces/{IInbox__factory.d.ts → IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts} +10 -16
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js +42 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js.map +1 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts +19 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js +31 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js.map +1 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.d.ts +3 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +1 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.js +11 -0
- package/dist/factories/interfaces/IInterchainSecurityModule.sol/index.js.map +1 -0
- package/dist/factories/interfaces/IMailbox__factory.d.ts +5 -1
- package/dist/factories/interfaces/IMailbox__factory.d.ts.map +1 -1
- package/dist/factories/interfaces/IMailbox__factory.js +81 -3
- package/dist/factories/interfaces/IMailbox__factory.js.map +1 -1
- package/dist/factories/interfaces/{IOutbox__factory.d.ts → IMultisigIsm__factory.d.ts} +5 -5
- package/dist/factories/interfaces/IMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/interfaces/{IInbox__factory.js → IMultisigIsm__factory.js} +55 -41
- package/dist/factories/interfaces/IMultisigIsm__factory.js.map +1 -0
- package/dist/factories/interfaces/index.d.ts +4 -4
- package/dist/factories/interfaces/index.d.ts.map +1 -1
- package/dist/factories/interfaces/index.js +31 -9
- package/dist/factories/interfaces/index.js.map +1 -1
- package/dist/index.d.ts +58 -38
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +60 -40
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IInterchainAccountRouter.d.ts +67 -0
- package/dist/interfaces/IInterchainAccountRouter.d.ts.map +1 -0
- package/dist/interfaces/IInterchainAccountRouter.js +4 -0
- package/dist/interfaces/IInterchainAccountRouter.js.map +1 -0
- package/dist/interfaces/IInterchainGasPaymaster.d.ts +7 -7
- package/dist/interfaces/IInterchainGasPaymaster.d.ts.map +1 -1
- package/dist/interfaces/IInterchainQueryRouter.d.ts +75 -0
- package/dist/interfaces/IInterchainQueryRouter.d.ts.map +1 -0
- package/dist/interfaces/IInterchainQueryRouter.js +4 -0
- package/dist/interfaces/IInterchainQueryRouter.js.map +1 -0
- package/dist/{contracts/mock/MockOutbox.d.ts → interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts} +14 -14
- package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts.map +1 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js +4 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js.map +1 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts +43 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts.map +1 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js +4 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js.map +1 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/index.d.ts +3 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/index.d.ts.map +1 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/index.js +3 -0
- package/dist/interfaces/IInterchainSecurityModule.sol/index.js.map +1 -0
- package/dist/interfaces/IMailbox.d.ts +58 -10
- package/dist/interfaces/IMailbox.d.ts.map +1 -1
- package/dist/interfaces/IMultisigIsm.d.ts +75 -0
- package/dist/interfaces/IMultisigIsm.d.ts.map +1 -0
- package/dist/interfaces/IMultisigIsm.js +4 -0
- package/dist/interfaces/IMultisigIsm.js.map +1 -0
- package/dist/interfaces/index.d.ts +5 -4
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js +1 -0
- package/dist/interfaces/index.js.map +1 -1
- package/interfaces/IInterchainAccountRouter.sol +15 -0
- package/interfaces/IInterchainGasPaymaster.sol +3 -5
- package/interfaces/IInterchainQueryRouter.sol +18 -0
- package/interfaces/IInterchainSecurityModule.sol +16 -0
- package/interfaces/IMailbox.sol +15 -2
- package/interfaces/IMultisigIsm.sol +18 -0
- package/package.json +4 -3
- package/contracts/AbacusConnectionManager.sol +0 -145
- package/contracts/Inbox.sol +0 -148
- package/contracts/MerkleTreeManager.sol +0 -32
- package/contracts/Outbox.sol +0 -191
- package/contracts/mock/MockInbox.sol +0 -52
- package/contracts/mock/MockOutbox.sol +0 -30
- package/contracts/test/TestAbacusConnectionClient.sol +0 -23
- package/contracts/test/TestInbox.sol +0 -54
- package/contracts/test/TestMultisigValidatorManager.sol +0 -26
- package/contracts/test/TestOutbox.sol +0 -46
- package/contracts/test/TestValidatorManager.sol +0 -21
- package/contracts/validator-manager/InboxValidatorManager.sol +0 -58
- package/contracts/validator-manager/MultisigValidatorManager.sol +0 -271
- package/contracts/validator-manager/OutboxValidatorManager.sol +0 -244
- package/dist/contracts/AbacusConnectionClient.d.ts.map +0 -1
- package/dist/contracts/AbacusConnectionClient.js.map +0 -1
- package/dist/contracts/AbacusConnectionManager.d.ts +0 -213
- package/dist/contracts/AbacusConnectionManager.d.ts.map +0 -1
- package/dist/contracts/AbacusConnectionManager.js.map +0 -1
- package/dist/contracts/Inbox.d.ts +0 -207
- package/dist/contracts/Inbox.d.ts.map +0 -1
- package/dist/contracts/Inbox.js.map +0 -1
- package/dist/contracts/MerkleTreeManager.d.ts +0 -53
- package/dist/contracts/MerkleTreeManager.d.ts.map +0 -1
- package/dist/contracts/MerkleTreeManager.js.map +0 -1
- package/dist/contracts/Outbox.d.ts +0 -331
- package/dist/contracts/Outbox.d.ts.map +0 -1
- package/dist/contracts/Outbox.js.map +0 -1
- package/dist/contracts/mock/MockInbox.d.ts.map +0 -1
- package/dist/contracts/mock/MockInbox.js.map +0 -1
- package/dist/contracts/mock/MockOutbox.d.ts.map +0 -1
- package/dist/contracts/mock/MockOutbox.js.map +0 -1
- package/dist/contracts/test/TestAbacusConnectionClient.d.ts.map +0 -1
- package/dist/contracts/test/TestAbacusConnectionClient.js +0 -4
- package/dist/contracts/test/TestAbacusConnectionClient.js.map +0 -1
- package/dist/contracts/test/TestInbox.d.ts +0 -263
- package/dist/contracts/test/TestInbox.d.ts.map +0 -1
- package/dist/contracts/test/TestInbox.js +0 -4
- package/dist/contracts/test/TestInbox.js.map +0 -1
- package/dist/contracts/test/TestMultisigValidatorManager.d.ts +0 -247
- package/dist/contracts/test/TestMultisigValidatorManager.d.ts.map +0 -1
- package/dist/contracts/test/TestMultisigValidatorManager.js +0 -4
- package/dist/contracts/test/TestMultisigValidatorManager.js.map +0 -1
- package/dist/contracts/test/TestOutbox.d.ts +0 -371
- package/dist/contracts/test/TestOutbox.d.ts.map +0 -1
- package/dist/contracts/test/TestOutbox.js +0 -4
- package/dist/contracts/test/TestOutbox.js.map +0 -1
- package/dist/contracts/test/TestValidatorManager.d.ts.map +0 -1
- package/dist/contracts/test/TestValidatorManager.js +0 -4
- package/dist/contracts/test/TestValidatorManager.js.map +0 -1
- package/dist/contracts/validator-manager/InboxValidatorManager.d.ts +0 -263
- package/dist/contracts/validator-manager/InboxValidatorManager.d.ts.map +0 -1
- package/dist/contracts/validator-manager/InboxValidatorManager.js +0 -4
- package/dist/contracts/validator-manager/InboxValidatorManager.js.map +0 -1
- package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts +0 -239
- package/dist/contracts/validator-manager/MultisigValidatorManager.d.ts.map +0 -1
- package/dist/contracts/validator-manager/MultisigValidatorManager.js +0 -4
- package/dist/contracts/validator-manager/MultisigValidatorManager.js.map +0 -1
- package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts +0 -335
- package/dist/contracts/validator-manager/OutboxValidatorManager.d.ts.map +0 -1
- package/dist/contracts/validator-manager/OutboxValidatorManager.js +0 -4
- package/dist/contracts/validator-manager/OutboxValidatorManager.js.map +0 -1
- package/dist/contracts/validator-manager/index.d.ts +0 -4
- package/dist/contracts/validator-manager/index.d.ts.map +0 -1
- package/dist/contracts/validator-manager/index.js.map +0 -1
- package/dist/factories/contracts/AbacusConnectionClient__factory.d.ts.map +0 -1
- package/dist/factories/contracts/AbacusConnectionClient__factory.js.map +0 -1
- package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts +0 -55
- package/dist/factories/contracts/AbacusConnectionManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/AbacusConnectionManager__factory.js +0 -276
- package/dist/factories/contracts/AbacusConnectionManager__factory.js.map +0 -1
- package/dist/factories/contracts/Inbox__factory.d.ts +0 -59
- package/dist/factories/contracts/Inbox__factory.d.ts.map +0 -1
- package/dist/factories/contracts/Inbox__factory.js +0 -278
- package/dist/factories/contracts/Inbox__factory.js.map +0 -1
- package/dist/factories/contracts/MerkleTreeManager__factory.d.ts +0 -31
- package/dist/factories/contracts/MerkleTreeManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/MerkleTreeManager__factory.js +0 -67
- package/dist/factories/contracts/MerkleTreeManager__factory.js.map +0 -1
- package/dist/factories/contracts/Outbox__factory.d.ts +0 -59
- package/dist/factories/contracts/Outbox__factory.d.ts.map +0 -1
- package/dist/factories/contracts/Outbox__factory.js +0 -415
- package/dist/factories/contracts/Outbox__factory.js.map +0 -1
- package/dist/factories/contracts/mock/MockInbox__factory.d.ts +0 -31
- package/dist/factories/contracts/mock/MockInbox__factory.js +0 -76
- package/dist/factories/contracts/mock/MockInbox__factory.js.map +0 -1
- package/dist/factories/contracts/mock/MockOutbox__factory.d.ts +0 -45
- package/dist/factories/contracts/mock/MockOutbox__factory.d.ts.map +0 -1
- package/dist/factories/contracts/mock/MockOutbox__factory.js +0 -86
- package/dist/factories/contracts/mock/MockOutbox__factory.js.map +0 -1
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts +0 -48
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.d.ts.map +0 -1
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js +0 -242
- package/dist/factories/contracts/test/TestAbacusConnectionClient__factory.js.map +0 -1
- package/dist/factories/contracts/test/TestInbox__factory.d.ts +0 -59
- package/dist/factories/contracts/test/TestInbox__factory.d.ts.map +0 -1
- package/dist/factories/contracts/test/TestInbox__factory.js +0 -371
- package/dist/factories/contracts/test/TestInbox__factory.js.map +0 -1
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts +0 -59
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js +0 -349
- package/dist/factories/contracts/test/TestMultisigValidatorManager__factory.js.map +0 -1
- package/dist/factories/contracts/test/TestOutbox__factory.d.ts +0 -59
- package/dist/factories/contracts/test/TestOutbox__factory.d.ts.map +0 -1
- package/dist/factories/contracts/test/TestOutbox__factory.js +0 -483
- package/dist/factories/contracts/test/TestOutbox__factory.js.map +0 -1
- package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts +0 -31
- package/dist/factories/contracts/test/TestValidatorManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/test/TestValidatorManager__factory.js +0 -79
- package/dist/factories/contracts/test/TestValidatorManager__factory.js.map +0 -1
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts +0 -59
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js +0 -373
- package/dist/factories/contracts/validator-manager/InboxValidatorManager__factory.js.map +0 -1
- package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/validator-manager/MultisigValidatorManager__factory.js.map +0 -1
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts +0 -59
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.d.ts.map +0 -1
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js +0 -560
- package/dist/factories/contracts/validator-manager/OutboxValidatorManager__factory.js.map +0 -1
- package/dist/factories/contracts/validator-manager/index.d.ts +0 -4
- package/dist/factories/contracts/validator-manager/index.d.ts.map +0 -1
- package/dist/factories/contracts/validator-manager/index.js +0 -13
- package/dist/factories/contracts/validator-manager/index.js.map +0 -1
- package/dist/factories/interfaces/IAbacusConnectionManager__factory.d.ts.map +0 -1
- package/dist/factories/interfaces/IAbacusConnectionManager__factory.js +0 -63
- package/dist/factories/interfaces/IAbacusConnectionManager__factory.js.map +0 -1
- package/dist/factories/interfaces/IInbox__factory.d.ts.map +0 -1
- package/dist/factories/interfaces/IInbox__factory.js.map +0 -1
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts +0 -19
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.d.ts.map +0 -1
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.js +0 -57
- package/dist/factories/interfaces/IMultisigValidatorManager__factory.js.map +0 -1
- package/dist/factories/interfaces/IOutbox__factory.d.ts.map +0 -1
- package/dist/factories/interfaces/IOutbox__factory.js +0 -155
- package/dist/factories/interfaces/IOutbox__factory.js.map +0 -1
- package/dist/interfaces/IAbacusConnectionManager.d.ts +0 -59
- package/dist/interfaces/IAbacusConnectionManager.d.ts.map +0 -1
- package/dist/interfaces/IAbacusConnectionManager.js +0 -4
- package/dist/interfaces/IAbacusConnectionManager.js.map +0 -1
- package/dist/interfaces/IInbox.d.ts +0 -83
- package/dist/interfaces/IInbox.d.ts.map +0 -1
- package/dist/interfaces/IInbox.js.map +0 -1
- package/dist/interfaces/IMultisigValidatorManager.d.ts +0 -59
- package/dist/interfaces/IMultisigValidatorManager.d.ts.map +0 -1
- package/dist/interfaces/IMultisigValidatorManager.js +0 -4
- package/dist/interfaces/IMultisigValidatorManager.js.map +0 -1
- package/dist/interfaces/IOutbox.d.ts +0 -148
- package/dist/interfaces/IOutbox.d.ts.map +0 -1
- package/dist/interfaces/IOutbox.js.map +0 -1
- package/interfaces/IAbacusConnectionManager.sol +0 -12
- package/interfaces/IInbox.sol +0 -16
- package/interfaces/IMultisigValidatorManager.sol +0 -11
- package/interfaces/IOutbox.sol +0 -27
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
// ============ External Imports ============
|
|
5
|
+
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
|
|
6
|
+
import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
|
|
7
|
+
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
|
8
|
+
|
|
9
|
+
// ============ Internal Imports ============
|
|
10
|
+
import {IMultisigIsm} from "../../interfaces/IMultisigIsm.sol";
|
|
11
|
+
import {Message} from "../libs/Message.sol";
|
|
12
|
+
import {MultisigIsmMetadata} from "../libs/MultisigIsmMetadata.sol";
|
|
13
|
+
import {MerkleLib} from "../libs/Merkle.sol";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @title MultisigIsm
|
|
17
|
+
* @notice Manages an ownable set of validators that ECDSA sign checkpoints to
|
|
18
|
+
* reach a quorum.
|
|
19
|
+
*/
|
|
20
|
+
contract MultisigIsm is IMultisigIsm, Ownable {
|
|
21
|
+
// ============ Libraries ============
|
|
22
|
+
|
|
23
|
+
using EnumerableSet for EnumerableSet.AddressSet;
|
|
24
|
+
using Message for bytes;
|
|
25
|
+
using MultisigIsmMetadata for bytes;
|
|
26
|
+
using MerkleLib for MerkleLib.Tree;
|
|
27
|
+
|
|
28
|
+
// ============ Mutable Storage ============
|
|
29
|
+
|
|
30
|
+
/// @notice The validator threshold for each remote domain.
|
|
31
|
+
mapping(uint32 => uint256) public threshold;
|
|
32
|
+
|
|
33
|
+
/// @notice The validator set for each remote domain.
|
|
34
|
+
mapping(uint32 => EnumerableSet.AddressSet) private validatorSet;
|
|
35
|
+
|
|
36
|
+
/// @notice A succinct commitment to the validator set and threshold for each remote
|
|
37
|
+
/// domain.
|
|
38
|
+
mapping(uint32 => bytes32) public commitment;
|
|
39
|
+
|
|
40
|
+
// ============ Events ============
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @notice Emitted when a validator is enrolled in a validator set.
|
|
44
|
+
* @param domain The remote domain of the validator set.
|
|
45
|
+
* @param validator The address of the validator.
|
|
46
|
+
* @param validatorCount The number of enrolled validators in the validator set.
|
|
47
|
+
* @param commitment A commitment to the validator set and threshold.
|
|
48
|
+
*/
|
|
49
|
+
event ValidatorEnrolled(
|
|
50
|
+
uint32 indexed domain,
|
|
51
|
+
address indexed validator,
|
|
52
|
+
uint256 validatorCount,
|
|
53
|
+
bytes32 commitment
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* @notice Emitted when a validator is unenrolled from a validator set.
|
|
58
|
+
* @param domain The remote domain of the validator set.
|
|
59
|
+
* @param validator The address of the validator.
|
|
60
|
+
* @param validatorCount The number of enrolled validators in the validator set.
|
|
61
|
+
* @param commitment A commitment to the validator set and threshold.
|
|
62
|
+
*/
|
|
63
|
+
event ValidatorUnenrolled(
|
|
64
|
+
uint32 indexed domain,
|
|
65
|
+
address indexed validator,
|
|
66
|
+
uint256 validatorCount,
|
|
67
|
+
bytes32 commitment
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* @notice Emitted when the quorum threshold is set.
|
|
72
|
+
* @param domain The remote domain of the validator set.
|
|
73
|
+
* @param threshold The new quorum threshold.
|
|
74
|
+
* @param commitment A commitment to the validator set and threshold.
|
|
75
|
+
*/
|
|
76
|
+
event ThresholdSet(
|
|
77
|
+
uint32 indexed domain,
|
|
78
|
+
uint256 threshold,
|
|
79
|
+
bytes32 commitment
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
// ============ Constructor ============
|
|
83
|
+
|
|
84
|
+
// solhint-disable-next-line no-empty-blocks
|
|
85
|
+
constructor() Ownable() {}
|
|
86
|
+
|
|
87
|
+
// ============ External Functions ============
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @notice Enrolls a validator into a validator set.
|
|
91
|
+
* @dev Reverts if `_validator` is already in the validator set.
|
|
92
|
+
* @param _domain The remote domain of the validator set.
|
|
93
|
+
* @param _validator The validator to add to the validator set.
|
|
94
|
+
*/
|
|
95
|
+
function enrollValidator(uint32 _domain, address _validator)
|
|
96
|
+
external
|
|
97
|
+
onlyOwner
|
|
98
|
+
{
|
|
99
|
+
require(_validator != address(0), "zero address");
|
|
100
|
+
require(validatorSet[_domain].add(_validator), "already enrolled");
|
|
101
|
+
bytes32 _commitment = _updateCommitment(_domain);
|
|
102
|
+
emit ValidatorEnrolled(
|
|
103
|
+
_domain,
|
|
104
|
+
_validator,
|
|
105
|
+
validatorCount(_domain),
|
|
106
|
+
_commitment
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @notice Unenrolls a validator from a validator set.
|
|
112
|
+
* @dev Reverts if `_validator` is not in the validator set.
|
|
113
|
+
* @param _domain The remote domain of the validator set.
|
|
114
|
+
* @param _validator The validator to remove from the validator set.
|
|
115
|
+
*/
|
|
116
|
+
function unenrollValidator(uint32 _domain, address _validator)
|
|
117
|
+
external
|
|
118
|
+
onlyOwner
|
|
119
|
+
{
|
|
120
|
+
require(validatorSet[_domain].remove(_validator), "!enrolled");
|
|
121
|
+
uint256 _validatorCount = validatorCount(_domain);
|
|
122
|
+
require(
|
|
123
|
+
_validatorCount >= threshold[_domain],
|
|
124
|
+
"violates quorum threshold"
|
|
125
|
+
);
|
|
126
|
+
bytes32 _commitment = _updateCommitment(_domain);
|
|
127
|
+
emit ValidatorUnenrolled(
|
|
128
|
+
_domain,
|
|
129
|
+
_validator,
|
|
130
|
+
_validatorCount,
|
|
131
|
+
_commitment
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @notice Sets the quorum threshold.
|
|
137
|
+
* @param _domain The remote domain of the validator set.
|
|
138
|
+
* @param _threshold The new quorum threshold.
|
|
139
|
+
*/
|
|
140
|
+
function setThreshold(uint32 _domain, uint256 _threshold)
|
|
141
|
+
external
|
|
142
|
+
onlyOwner
|
|
143
|
+
{
|
|
144
|
+
require(
|
|
145
|
+
_threshold > 0 && _threshold <= validatorCount(_domain),
|
|
146
|
+
"!range"
|
|
147
|
+
);
|
|
148
|
+
threshold[_domain] = _threshold;
|
|
149
|
+
bytes32 _commitment = _updateCommitment(_domain);
|
|
150
|
+
emit ThresholdSet(_domain, _threshold, _commitment);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* @notice Returns whether an address is enrolled in a validator set.
|
|
155
|
+
* @param _domain The remote domain of the validator set.
|
|
156
|
+
* @param _address The address to test for set membership.
|
|
157
|
+
* @return True if the address is enrolled, false otherwise.
|
|
158
|
+
*/
|
|
159
|
+
function isEnrolled(uint32 _domain, address _address)
|
|
160
|
+
external
|
|
161
|
+
view
|
|
162
|
+
returns (bool)
|
|
163
|
+
{
|
|
164
|
+
EnumerableSet.AddressSet storage _validatorSet = validatorSet[_domain];
|
|
165
|
+
return _validatorSet.contains(_address);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// ============ Public Functions ============
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* @notice Verifies that a quorum of the origin domain's validators signed
|
|
172
|
+
* a checkpoint, and verifies the merkle proof of `_message` against that
|
|
173
|
+
* checkpoint.
|
|
174
|
+
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
175
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
176
|
+
*/
|
|
177
|
+
function verify(bytes calldata _metadata, bytes calldata _message)
|
|
178
|
+
public
|
|
179
|
+
view
|
|
180
|
+
returns (bool)
|
|
181
|
+
{
|
|
182
|
+
require(_verifyMerkleProof(_metadata, _message), "!merkle");
|
|
183
|
+
require(_verifyValidatorSignatures(_metadata, _message), "!sigs");
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @notice Gets the current validator set
|
|
189
|
+
* @param _domain The remote domain of the validator set.
|
|
190
|
+
* @return The addresses of the validator set.
|
|
191
|
+
*/
|
|
192
|
+
function validators(uint32 _domain) public view returns (address[] memory) {
|
|
193
|
+
EnumerableSet.AddressSet storage _validatorSet = validatorSet[_domain];
|
|
194
|
+
uint256 _validatorCount = _validatorSet.length();
|
|
195
|
+
address[] memory _validators = new address[](_validatorCount);
|
|
196
|
+
for (uint256 i = 0; i < _validatorCount; i++) {
|
|
197
|
+
_validators[i] = _validatorSet.at(i);
|
|
198
|
+
}
|
|
199
|
+
return _validators;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* @notice Returns the number of validators enrolled in the validator set.
|
|
204
|
+
* @param _domain The remote domain of the validator set.
|
|
205
|
+
* @return The number of validators enrolled in the validator set.
|
|
206
|
+
*/
|
|
207
|
+
function validatorCount(uint32 _domain) public view returns (uint256) {
|
|
208
|
+
return validatorSet[_domain].length();
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// ============ Internal Functions ============
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* @notice Updates the commitment to the validator set for `_domain`.
|
|
215
|
+
* @param _domain The remote domain of the validator set.
|
|
216
|
+
* @return The commitment to the validator set for `_domain`.
|
|
217
|
+
*/
|
|
218
|
+
function _updateCommitment(uint32 _domain) internal returns (bytes32) {
|
|
219
|
+
address[] memory _validators = validators(_domain);
|
|
220
|
+
uint256 _threshold = threshold[_domain];
|
|
221
|
+
bytes32 _commitment = keccak256(
|
|
222
|
+
abi.encodePacked(_threshold, _validators)
|
|
223
|
+
);
|
|
224
|
+
commitment[_domain] = _commitment;
|
|
225
|
+
return _commitment;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* @notice Verifies the merkle proof of `_message` against the provided
|
|
230
|
+
* checkpoint.
|
|
231
|
+
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
232
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
233
|
+
*/
|
|
234
|
+
function _verifyMerkleProof(
|
|
235
|
+
bytes calldata _metadata,
|
|
236
|
+
bytes calldata _message
|
|
237
|
+
) internal pure returns (bool) {
|
|
238
|
+
// calculate the expected root based on the proof
|
|
239
|
+
bytes32 _calculatedRoot = MerkleLib.branchRoot(
|
|
240
|
+
_message.id(),
|
|
241
|
+
_metadata.proof(),
|
|
242
|
+
_message.nonce()
|
|
243
|
+
);
|
|
244
|
+
return _calculatedRoot == _metadata.root();
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* @notice Verifies that a quorum of the origin domain's validators signed
|
|
249
|
+
* the provided checkpoint.
|
|
250
|
+
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
251
|
+
* @param _message Formatted Hyperlane message (see Message.sol).
|
|
252
|
+
*/
|
|
253
|
+
function _verifyValidatorSignatures(
|
|
254
|
+
bytes calldata _metadata,
|
|
255
|
+
bytes calldata _message
|
|
256
|
+
) internal view returns (bool) {
|
|
257
|
+
uint256 _threshold = _metadata.threshold();
|
|
258
|
+
bytes32 _digest;
|
|
259
|
+
{
|
|
260
|
+
uint32 _origin = _message.origin();
|
|
261
|
+
|
|
262
|
+
bytes32 _commitment = keccak256(
|
|
263
|
+
abi.encodePacked(_threshold, _metadata.validators())
|
|
264
|
+
);
|
|
265
|
+
// Ensures the validator set encoded in the metadata matches
|
|
266
|
+
// what we've stored on chain.
|
|
267
|
+
// NB: An empty validator set in `_metadata` will result in a
|
|
268
|
+
// non-zero computed commitment, and this check will fail
|
|
269
|
+
// as the commitment in storage will be zero.
|
|
270
|
+
require(_commitment == commitment[_origin], "!commitment");
|
|
271
|
+
_digest = _getCheckpointDigest(_metadata, _origin);
|
|
272
|
+
}
|
|
273
|
+
uint256 _validatorCount = _metadata.validatorCount();
|
|
274
|
+
uint256 _validatorIndex = 0;
|
|
275
|
+
// Assumes that signatures are ordered by validator
|
|
276
|
+
for (uint256 i = 0; i < _threshold; ++i) {
|
|
277
|
+
address _signer = ECDSA.recover(_digest, _metadata.signatureAt(i));
|
|
278
|
+
// Loop through remaining validators until we find a match
|
|
279
|
+
for (
|
|
280
|
+
;
|
|
281
|
+
_validatorIndex < _validatorCount &&
|
|
282
|
+
_signer != _metadata.validatorAt(_validatorIndex);
|
|
283
|
+
++_validatorIndex
|
|
284
|
+
) {}
|
|
285
|
+
// Fail if we never found a match
|
|
286
|
+
require(_validatorIndex < _validatorCount, "!threshold");
|
|
287
|
+
++_validatorIndex;
|
|
288
|
+
}
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* @notice Returns the domain hash that validators are expected to use
|
|
294
|
+
* when signing checkpoints.
|
|
295
|
+
* @param _origin The origin domain of the checkpoint.
|
|
296
|
+
* @param _originMailbox The address of the origin mailbox as bytes32.
|
|
297
|
+
* @return The domain hash.
|
|
298
|
+
*/
|
|
299
|
+
function _getDomainHash(uint32 _origin, bytes32 _originMailbox)
|
|
300
|
+
internal
|
|
301
|
+
pure
|
|
302
|
+
returns (bytes32)
|
|
303
|
+
{
|
|
304
|
+
// Including the origin mailbox address in the signature allows the slashing
|
|
305
|
+
// protocol to enroll multiple mailboxes. Otherwise, a valid signature for
|
|
306
|
+
// mailbox A would be indistinguishable from a fraudulent signature for mailbox
|
|
307
|
+
// B.
|
|
308
|
+
// The slashing protocol should slash if validators sign attestations for
|
|
309
|
+
// anything other than a whitelisted mailbox.
|
|
310
|
+
return
|
|
311
|
+
keccak256(abi.encodePacked(_origin, _originMailbox, "HYPERLANE"));
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
/**
|
|
315
|
+
* @notice Returns the digest validators are expected to sign when signing checkpoints.
|
|
316
|
+
* @param _metadata ABI encoded module metadata (see MultisigIsmMetadata.sol)
|
|
317
|
+
* @param _origin The origin domain of the checkpoint.
|
|
318
|
+
* @return The digest of the checkpoint.
|
|
319
|
+
*/
|
|
320
|
+
function _getCheckpointDigest(bytes calldata _metadata, uint32 _origin)
|
|
321
|
+
internal
|
|
322
|
+
pure
|
|
323
|
+
returns (bytes32)
|
|
324
|
+
{
|
|
325
|
+
bytes32 _domainHash = _getDomainHash(
|
|
326
|
+
_origin,
|
|
327
|
+
_metadata.originMailbox()
|
|
328
|
+
);
|
|
329
|
+
return
|
|
330
|
+
ECDSA.toEthSignedMessageHash(
|
|
331
|
+
keccak256(
|
|
332
|
+
abi.encodePacked(
|
|
333
|
+
_domainHash,
|
|
334
|
+
_metadata.root(),
|
|
335
|
+
_metadata.index()
|
|
336
|
+
)
|
|
337
|
+
)
|
|
338
|
+
);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
@@ -4,24 +4,35 @@ pragma solidity >=0.8.0;
|
|
|
4
4
|
import {TypeCasts} from "./TypeCasts.sol";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* @title Message Library
|
|
8
|
-
* @
|
|
9
|
-
* @notice Library for formatted messages used by Outbox and Replica.
|
|
7
|
+
* @title Hyperlane Message Library
|
|
8
|
+
* @notice Library for formatted messages used by Mailbox
|
|
10
9
|
**/
|
|
11
10
|
library Message {
|
|
12
11
|
using TypeCasts for bytes32;
|
|
13
12
|
|
|
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
|
+
|
|
14
21
|
/**
|
|
15
|
-
* @notice Returns formatted (packed) message with provided fields
|
|
22
|
+
* @notice Returns formatted (packed) Hyperlane message with provided fields
|
|
16
23
|
* @dev This function should only be used in memory message construction.
|
|
17
|
-
* @param
|
|
24
|
+
* @param _version The version of the origin and destination Mailboxes
|
|
25
|
+
* @param _nonce A nonce to uniquely identify the message on its origin chain
|
|
26
|
+
* @param _originDomain Domain of origin chain
|
|
18
27
|
* @param _sender Address of sender as bytes32
|
|
19
28
|
* @param _destinationDomain Domain of destination chain
|
|
20
29
|
* @param _recipient Address of recipient on destination chain as bytes32
|
|
21
30
|
* @param _messageBody Raw bytes of message body
|
|
22
31
|
* @return Formatted message
|
|
23
|
-
|
|
32
|
+
*/
|
|
24
33
|
function formatMessage(
|
|
34
|
+
uint8 _version,
|
|
35
|
+
uint32 _nonce,
|
|
25
36
|
uint32 _originDomain,
|
|
26
37
|
bytes32 _sender,
|
|
27
38
|
uint32 _destinationDomain,
|
|
@@ -30,6 +41,8 @@ library Message {
|
|
|
30
41
|
) internal pure returns (bytes memory) {
|
|
31
42
|
return
|
|
32
43
|
abi.encodePacked(
|
|
44
|
+
_version,
|
|
45
|
+
_nonce,
|
|
33
46
|
_originDomain,
|
|
34
47
|
_sender,
|
|
35
48
|
_destinationDomain,
|
|
@@ -39,84 +52,112 @@ library Message {
|
|
|
39
52
|
}
|
|
40
53
|
|
|
41
54
|
/**
|
|
42
|
-
* @notice Returns
|
|
43
|
-
* @
|
|
44
|
-
* @
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
* @notice Returns the message ID.
|
|
56
|
+
* @param _message ABI encoded Hyperlane message.
|
|
57
|
+
* @return ID of `_message`
|
|
58
|
+
*/
|
|
59
|
+
function id(bytes memory _message) internal pure returns (bytes32) {
|
|
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
|
|
47
129
|
*/
|
|
48
|
-
function
|
|
130
|
+
function recipient(bytes calldata _message)
|
|
49
131
|
internal
|
|
50
132
|
pure
|
|
51
133
|
returns (bytes32)
|
|
52
134
|
{
|
|
53
|
-
return
|
|
135
|
+
return bytes32(_message[RECIPIENT_OFFSET:BODY_OFFSET]);
|
|
54
136
|
}
|
|
55
137
|
|
|
56
138
|
/**
|
|
57
|
-
* @notice
|
|
58
|
-
* @
|
|
59
|
-
* @
|
|
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
|
|
139
|
+
* @notice Returns the message recipient as address.
|
|
140
|
+
* @param _message ABI encoded Hyperlane message.
|
|
141
|
+
* @return Recipient of `_message` as address
|
|
65
142
|
*/
|
|
66
|
-
function
|
|
143
|
+
function recipientAddress(bytes calldata _message)
|
|
67
144
|
internal
|
|
68
145
|
pure
|
|
69
|
-
returns (
|
|
70
|
-
uint32 origin,
|
|
71
|
-
bytes32 sender,
|
|
72
|
-
uint32 destination,
|
|
73
|
-
bytes32 recipient,
|
|
74
|
-
bytes calldata body
|
|
75
|
-
)
|
|
146
|
+
returns (address)
|
|
76
147
|
{
|
|
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
|
-
);
|
|
148
|
+
return recipient(_message).bytes32ToAddress();
|
|
84
149
|
}
|
|
85
150
|
|
|
86
151
|
/**
|
|
87
|
-
* @notice
|
|
88
|
-
* @
|
|
89
|
-
* @
|
|
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
|
|
152
|
+
* @notice Returns the message body.
|
|
153
|
+
* @param _message ABI encoded Hyperlane message.
|
|
154
|
+
* @return Body of `_message`
|
|
95
155
|
*/
|
|
96
|
-
function
|
|
156
|
+
function body(bytes calldata _message)
|
|
97
157
|
internal
|
|
98
158
|
pure
|
|
99
|
-
returns (
|
|
100
|
-
uint32,
|
|
101
|
-
address,
|
|
102
|
-
uint32,
|
|
103
|
-
address,
|
|
104
|
-
bytes calldata
|
|
105
|
-
)
|
|
159
|
+
returns (bytes calldata)
|
|
106
160
|
{
|
|
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
|
-
);
|
|
161
|
+
return bytes(_message[BODY_OFFSET:]);
|
|
121
162
|
}
|
|
122
163
|
}
|