@hyperlane-xyz/core 5.8.3 → 5.9.1
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/PackageVersioned.sol +1 -1
- package/contracts/client/MailboxClient.sol +1 -1
- package/contracts/client/Router.sol +1 -1
- package/contracts/hooks/README.md +58 -0
- package/contracts/isms/README.md +20 -0
- package/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.sol +17 -17
- package/contracts/isms/hook/ArbL2ToL1Ism.sol +1 -1
- package/contracts/isms/hook/OPL2ToL1Ism.sol +1 -1
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts +1 -32
- package/dist/contracts/isms/hook/AbstractMessageIdAuthorizedIsm.d.ts.map +1 -1
- package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts +1 -32
- package/dist/contracts/isms/hook/ArbL2ToL1Ism.d.ts.map +1 -1
- package/dist/contracts/isms/hook/ERC5164Ism.d.ts +1 -32
- package/dist/contracts/isms/hook/ERC5164Ism.d.ts.map +1 -1
- package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts +1 -32
- package/dist/contracts/isms/hook/OPL2ToL1Ism.d.ts.map +1 -1
- package/dist/contracts/isms/hook/OPStackIsm.d.ts +1 -32
- package/dist/contracts/isms/hook/OPStackIsm.d.ts.map +1 -1
- package/dist/contracts/isms/hook/PolygonPosIsm.d.ts +1 -32
- package/dist/contracts/isms/hook/PolygonPosIsm.d.ts.map +1 -1
- package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts +1 -32
- package/dist/contracts/isms/hook/layer-zero/LayerZeroV2Ism.d.ts.map +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.d.ts +1 -1
- package/dist/factories/contracts/AttributeCheckpointFraud__factory.js +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.d.ts +1 -1
- package/dist/factories/contracts/CheckpointFraudProofs__factory.js +1 -1
- package/dist/factories/contracts/Mailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/Mailbox__factory.js +1 -1
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.d.ts +1 -1
- package/dist/factories/contracts/avs/ECDSAStakeRegistry__factory.js +1 -1
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.d.ts +1 -1
- package/dist/factories/contracts/avs/HyperlaneServiceManager__factory.js +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ArbL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/MerkleTreeHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/MerkleTreeHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPL2ToL1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/OPStackHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/PausableHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/PausableHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/PolygonPosHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/ProtocolFee__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/ERC5164Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHookFactory__factory.js +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/aggregation/StaticAggregationHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/igp/InterchainGasPaymaster__factory.js +1 -1
- package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/igp/StorageGasOracle__factory.js +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV1Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/layer-zero/LayerZeroV2Hook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DestinationRecipientRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/DomainRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/routing/FallbackDomainRoutingHook__factory.js +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.d.ts +1 -1
- package/dist/factories/contracts/hooks/warp-route/RateLimitedHook__factory.js +1 -1
- package/dist/factories/contracts/isms/NoopIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/NoopIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/PausableIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/PausableIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/TrustedRelayerIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StaticAggregationIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/aggregation/StorageAggregationIsm.sol/StorageAggregationIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts +0 -10
- package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js +0 -13
- package/dist/factories/contracts/isms/hook/AbstractMessageIdAuthorizedIsm__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts +1 -11
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +1 -14
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -11
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -14
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts +1 -11
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +1 -14
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -11
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -14
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +1 -11
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +1 -14
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js.map +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +1 -11
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +1 -14
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js.map +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMerkleRootMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StaticMultisigIsm.sol/StaticMessageIdMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMerkleRootMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/StorageMultisigIsm.sol/StorageMessageIdMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/ValidatorAnnounce__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMerkleRootWeightedMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/multisig/WeightedMultisigIsm.sol/StaticMessageIdWeightedMultisigIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DefaultFallbackRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsmFactory.sol/DomainRoutingIsmFactory__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/DomainRoutingIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/routing/InterchainAccountIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/warp-route/RateLimitedIsm__factory.js +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainAccountRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/InterchainQueryRouter__factory.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/LiquidityLayerRouter__factory.js +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.js +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.d.ts +1 -1
- package/dist/factories/contracts/middleware/liquidity-layer/adapters/PortalAdapter__factory.js +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockHyperlaneEnvironment__factory.js +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockMailbox__factory.js +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestGasRouter__factory.js +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestInterchainGasPaymaster__factory.js +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMailbox__factory.js +1 -1
- package/dist/factories/contracts/test/TestMerkleTreeHook__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestMerkleTreeHook__factory.js +1 -1
- package/dist/factories/contracts/test/TestPostDispatchHook__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestPostDispatchHook__factory.js +1 -1
- 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/TestRemoteChallenger__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRemoteChallenger__factory.js +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRouter__factory.js +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestSendReceiver__factory.js +1 -1
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.d.ts +1 -1
- package/dist/factories/contracts/test/avs/TestHyperlaneServiceManager__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypERC721__factory.js +1 -1
- package/dist/factories/contracts/token/HypNative__factory.d.ts +1 -1
- package/dist/factories/contracts/token/HypNative__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/FastHypERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626Collateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626OwnerCollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC4626__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URICollateral__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypERC721URIStorage__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypFiatToken__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypNativeScaled__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20Lockbox__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/HypXERC20__factory.js +1 -1
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.d.ts +1 -1
- package/dist/factories/contracts/token/extensions/WHypERC4626__factory.js +1 -1
- package/package.json +2 -2
|
@@ -58,7 +58,7 @@ abstract contract MailboxClient is OwnableUpgradeable, PackageVersioned {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
/**
|
|
61
|
-
* @notice Only accept messages from
|
|
61
|
+
* @notice Only accept messages from a Hyperlane Mailbox contract
|
|
62
62
|
*/
|
|
63
63
|
modifier onlyMailbox() {
|
|
64
64
|
require(
|
|
@@ -145,7 +145,7 @@ abstract contract Router is MailboxClient, IMessageRecipient {
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
|
-
* @notice Assert that the given domain has
|
|
148
|
+
* @notice Assert that the given domain has an Application Router registered and return its address
|
|
149
149
|
* @param _domain The domain of the chain for which to get the Application Router
|
|
150
150
|
* @return _router The address of the remote Application Router on _domain
|
|
151
151
|
*/
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Post-Dispatch Hooks
|
|
2
|
+
|
|
3
|
+
Post-dispatch hooks allow developers to configure additional origin chain behavior with message content dispatched via the Mailbox.
|
|
4
|
+
|
|
5
|
+
```mermaid
|
|
6
|
+
flowchart TB
|
|
7
|
+
subgraph Origin
|
|
8
|
+
Sender
|
|
9
|
+
M_O[(Mailbox)]
|
|
10
|
+
Hook[IPostDispatchHook]
|
|
11
|
+
|
|
12
|
+
Sender -- "dispatch(..., metadata, hook)\n{value}" --> M_O
|
|
13
|
+
M_O -- "postDispatch(message, metadata)\n{value}" --> Hook
|
|
14
|
+
end
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
If the `postDispatch` function receives insufficient payment, it may revert.
|
|
18
|
+
|
|
19
|
+
> [!WARNING]
|
|
20
|
+
> Post-Dispatch Hooks may be replayable. Developers creating custom hooks should implement safe checks to prevent this behavior. [Here](./warp-route/RateLimitedHook.sol#L16) is an example implementation.
|
|
21
|
+
|
|
22
|
+
### Quote Dispatch (Fees)
|
|
23
|
+
|
|
24
|
+
Fees are often charged in `postDispatch` to cover costs such as destination chain transaction submission and security provisioning. To receive a quote for a corresponding `postDispatch` call, you can query the `quoteDispatch` function.
|
|
25
|
+
|
|
26
|
+
The Mailbox has a `quoteDispatch` function that returns the aggregate fee required for a `dispatch` call to be successful.
|
|
27
|
+
|
|
28
|
+
```mermaid
|
|
29
|
+
flowchart TB
|
|
30
|
+
subgraph Origin
|
|
31
|
+
Sender
|
|
32
|
+
M_O[(Mailbox)]
|
|
33
|
+
R_H[RequiredHook]
|
|
34
|
+
Hook[Hook]
|
|
35
|
+
|
|
36
|
+
Sender -- "quoteDispatch(..., metadata, hook)" --> M_O
|
|
37
|
+
M_O -- "required = quoteDispatch(message, metadata)" --> R_H
|
|
38
|
+
M_O -- "fee = hook.quoteDispatch(message, metadata)" --> Hook
|
|
39
|
+
M_O -- "required + fee" --> Sender
|
|
40
|
+
end
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
The custom `metadata` will be passed to the required hook's `quoteDispatch` and `postDispatch` functions, before being passed to the default hook's `postDispatch` function.
|
|
44
|
+
|
|
45
|
+
```mermaid
|
|
46
|
+
flowchart LR
|
|
47
|
+
subgraph Origin Chain
|
|
48
|
+
Sender
|
|
49
|
+
M_O[(Mailbox)]
|
|
50
|
+
R_H[RequiredHook]
|
|
51
|
+
D_H[DefaultHook]
|
|
52
|
+
Sender -- "dispatch(..., metadata){value}" --> M_O
|
|
53
|
+
|
|
54
|
+
M_O -. "fee = quoteDispatch(...)" .- R_H
|
|
55
|
+
M_O -- "postDispatch(metadata, ...)\n{fee}" --> R_H
|
|
56
|
+
M_O -. "postDispatch(metadata, ...)\n{value - fee}" ..-> D_H
|
|
57
|
+
end
|
|
58
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Interchain Security Modules
|
|
2
|
+
|
|
3
|
+
Interchain security modules allow developers to configure additional security checks for message content dispatched via the Mailbox.
|
|
4
|
+
|
|
5
|
+
```mermaid
|
|
6
|
+
flowchart LR
|
|
7
|
+
subgraph Destination Chain
|
|
8
|
+
ISM[InterchainSecurityModule]
|
|
9
|
+
Recipient[Recipient]
|
|
10
|
+
M_D[(Mailbox)]
|
|
11
|
+
|
|
12
|
+
M_D -- "verify(metadata, message)" --> ISM
|
|
13
|
+
ISM -. "interchainSecurityModule()" .- Recipient
|
|
14
|
+
M_D -- "handle(origin, sender, body)" --> Recipient
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
> [!WARNING]
|
|
20
|
+
> Interchain security modules may be replayable. Developers creating custom modules should include replay protection if necessary. [Here](./warp-route/RateLimitedIsm.sol#L23) is an example implementation.
|
|
@@ -27,7 +27,7 @@ import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Ini
|
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
29
|
* @title AbstractMessageIdAuthorizedIsm
|
|
30
|
-
* @notice Uses external verification options to verify interchain messages which need
|
|
30
|
+
* @notice Uses external verification options to verify interchain messages which need an authorized caller
|
|
31
31
|
*/
|
|
32
32
|
abstract contract AbstractMessageIdAuthorizedIsm is
|
|
33
33
|
IInterchainSecurityModule,
|
|
@@ -78,28 +78,13 @@ abstract contract AbstractMessageIdAuthorizedIsm is
|
|
|
78
78
|
) external virtual returns (bool) {
|
|
79
79
|
bool verified = isVerified(message);
|
|
80
80
|
if (verified) {
|
|
81
|
-
|
|
81
|
+
_releaseValueToRecipient(message);
|
|
82
82
|
}
|
|
83
83
|
return verified;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
// ============ Public Functions ============
|
|
87
87
|
|
|
88
|
-
/**
|
|
89
|
-
* @notice Release the value to the recipient if the message is verified.
|
|
90
|
-
* @param message Message to release value for.
|
|
91
|
-
*/
|
|
92
|
-
function releaseValueToRecipient(bytes calldata message) public {
|
|
93
|
-
bytes32 messageId = message.id();
|
|
94
|
-
uint256 _msgValue = verifiedMessages[messageId].clearBit(
|
|
95
|
-
VERIFIED_MASK_INDEX
|
|
96
|
-
);
|
|
97
|
-
if (_msgValue > 0) {
|
|
98
|
-
verifiedMessages[messageId] -= _msgValue;
|
|
99
|
-
payable(message.recipientAddress()).sendValue(_msgValue);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
88
|
/**
|
|
104
89
|
* @notice Check if a message is verified through preVerifyMessage first.
|
|
105
90
|
* @param message Message to check.
|
|
@@ -138,6 +123,21 @@ abstract contract AbstractMessageIdAuthorizedIsm is
|
|
|
138
123
|
|
|
139
124
|
// ============ Internal Functions ============
|
|
140
125
|
|
|
126
|
+
/**
|
|
127
|
+
* @notice Release the value to the recipient if the message is verified.
|
|
128
|
+
* @param message Message to release value for.
|
|
129
|
+
*/
|
|
130
|
+
function _releaseValueToRecipient(bytes calldata message) internal {
|
|
131
|
+
bytes32 messageId = message.id();
|
|
132
|
+
uint256 _msgValue = verifiedMessages[messageId].clearBit(
|
|
133
|
+
VERIFIED_MASK_INDEX
|
|
134
|
+
);
|
|
135
|
+
if (_msgValue > 0) {
|
|
136
|
+
verifiedMessages[messageId] -= _msgValue;
|
|
137
|
+
payable(message.recipientAddress()).sendValue(_msgValue);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
141
|
/**
|
|
142
142
|
* @notice Check if sender is authorized to message `preVerifyMessage`.
|
|
143
143
|
*/
|