@hyperlane-xyz/core 5.4.1 → 5.4.2-superchain.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/hooks/SuperchainHook.sol +82 -0
- package/contracts/interfaces/IInterchainSecurityModule.sol +2 -1
- package/contracts/interfaces/hooks/IPostDispatchHook.sol +2 -1
- package/contracts/interfaces/optimism/ICrossL2Inbox.sol +60 -0
- package/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.sol +68 -0
- package/contracts/isms/hook/SuperchainIsm.sol +91 -0
- package/contracts/mock/MockOptimism.sol +73 -0
- package/dist/buildArtifact.js +1 -1
- package/dist/buildArtifact.json +1 -1
- package/dist/contracts/hooks/SuperchainHook.d.ts +411 -0
- package/dist/contracts/hooks/SuperchainHook.d.ts.map +1 -0
- package/dist/contracts/hooks/SuperchainHook.js +2 -0
- package/dist/contracts/hooks/SuperchainHook.js.map +1 -0
- package/dist/contracts/hooks/index.d.ts +1 -0
- package/dist/contracts/hooks/index.d.ts.map +1 -1
- package/dist/contracts/interfaces/optimism/ICrossL2Inbox.d.ts +233 -0
- package/dist/contracts/interfaces/optimism/ICrossL2Inbox.d.ts.map +1 -0
- package/dist/contracts/interfaces/optimism/ICrossL2Inbox.js +2 -0
- package/dist/contracts/interfaces/optimism/ICrossL2Inbox.js.map +1 -0
- package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.d.ts +209 -0
- package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.d.ts.map +1 -0
- package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.js +2 -0
- package/dist/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger.js.map +1 -0
- package/dist/contracts/interfaces/optimism/index.d.ts +2 -0
- package/dist/contracts/interfaces/optimism/index.d.ts.map +1 -1
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.d.ts +273 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.d.ts.map +1 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.js +2 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism.js.map +1 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.d.ts +288 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.d.ts.map +1 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.js +2 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm.js.map +1 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.d.ts +273 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.d.ts.map +1 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.js +2 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM.js.map +1 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/index.d.ts +2 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/index.d.ts.map +1 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/index.js +2 -0
- package/dist/contracts/isms/hook/SuperchainIsm.sol/index.js.map +1 -0
- package/dist/contracts/isms/hook/index.d.ts +2 -0
- package/dist/contracts/isms/hook/index.d.ts.map +1 -1
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.d.ts +110 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.js +2 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm.js.map +1 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.d.ts +125 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.js +2 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm.js.map +1 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts +3 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js +2 -0
- package/dist/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.d.ts +224 -0
- package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.d.ts.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.js +2 -0
- package/dist/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger.js.map +1 -0
- package/dist/contracts/mock/MockOptimism.sol/index.d.ts +1 -0
- package/dist/contracts/mock/MockOptimism.sol/index.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/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/SuperchainHook__factory.d.ts +262 -0
- package/dist/factories/contracts/hooks/SuperchainHook__factory.d.ts.map +1 -0
- package/dist/factories/contracts/hooks/SuperchainHook__factory.js +352 -0
- package/dist/factories/contracts/hooks/SuperchainHook__factory.js.map +1 -0
- 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/index.d.ts +1 -0
- package/dist/factories/contracts/hooks/index.d.ts.map +1 -1
- package/dist/factories/contracts/hooks/index.js +1 -0
- package/dist/factories/contracts/hooks/index.js.map +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/interfaces/optimism/ICrossL2Inbox__factory.d.ts +143 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossL2Inbox__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossL2Inbox__factory.js +189 -0
- package/dist/factories/contracts/interfaces/optimism/ICrossL2Inbox__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.d.ts +140 -0
- package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.d.ts.map +1 -0
- package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.js +185 -0
- package/dist/factories/contracts/interfaces/optimism/IL2toL2CrossDomainMessenger__factory.js.map +1 -0
- package/dist/factories/contracts/interfaces/optimism/index.d.ts +2 -0
- package/dist/factories/contracts/interfaces/optimism/index.d.ts.map +1 -1
- package/dist/factories/contracts/interfaces/optimism/index.js +2 -0
- package/dist/factories/contracts/interfaces/optimism/index.js.map +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/hook/ArbL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ArbL2ToL1Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/ERC5164Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPL2ToL1Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/OPStackIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/PolygonPosIsm__factory.js +1 -1
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.d.ts +165 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.js +229 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPL2ToL1Ism__factory.js.map +1 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.d.ts +175 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.js +242 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/OPStackIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.d.ts +165 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.js +229 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/SuperchainISM__factory.js.map +1 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.d.ts +2 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.js +5 -0
- package/dist/factories/contracts/isms/hook/SuperchainIsm.sol/index.js.map +1 -0
- package/dist/factories/contracts/isms/hook/index.d.ts +1 -0
- package/dist/factories/contracts/isms/hook/index.d.ts.map +1 -1
- package/dist/factories/contracts/isms/hook/index.js +1 -0
- package/dist/factories/contracts/isms/hook/index.js.map +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.d.ts +1 -1
- package/dist/factories/contracts/isms/hook/layer-zero/LayerZeroV2Ism__factory.js +1 -1
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.d.ts +79 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.js +109 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/AbstractRpcMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.d.ts +121 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.js +171 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/RpcMultisigIsm__factory.js.map +1 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts +3 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.d.ts.map +1 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js +6 -0
- package/dist/factories/contracts/isms/multisig/RpcValidatorMultisigIsm.sol/index.js.map +1 -0
- 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/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/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.d.ts +174 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.d.ts.map +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.js +237 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockL2toL2CrossDomainMessenger__factory.js.map +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismMessenger__factory.js +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.d.ts +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/MockOptimismPortal__factory.js +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/index.d.ts +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/index.d.ts.map +1 -1
- package/dist/factories/contracts/mock/MockOptimism.sol/index.js +1 -0
- package/dist/factories/contracts/mock/MockOptimism.sol/index.js.map +1 -1
- package/dist/factories/contracts/test/LightTestRecipient__factory.d.ts +1 -1
- package/dist/factories/contracts/test/LightTestRecipient__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/TestIsm__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestIsm__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/TestRecipient__factory.d.ts +1 -1
- package/dist/factories/contracts/test/TestRecipient__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/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/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
// ============ Internal Imports ============
|
|
17
|
+
import {AbstractPostDispatchHook, AbstractMessageIdAuthHook} from "./libs/AbstractMessageIdAuthHook.sol";
|
|
18
|
+
import {StandardHookMetadata} from "./libs/StandardHookMetadata.sol";
|
|
19
|
+
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
20
|
+
import {IPostDispatchHook} from "../interfaces/hooks/IPostDispatchHook.sol";
|
|
21
|
+
|
|
22
|
+
// ============ External Imports ============
|
|
23
|
+
import {IL2toL2CrossDomainMessenger} from "../interfaces/optimism/IL2toL2CrossDomainMessenger.sol";
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @title SuperchainHook
|
|
27
|
+
* @notice Message hook to send messages to L2 using the native Superchain interop.
|
|
28
|
+
*/
|
|
29
|
+
contract SuperchainHook is AbstractMessageIdAuthHook {
|
|
30
|
+
using StandardHookMetadata for bytes;
|
|
31
|
+
// ============ Constants ============
|
|
32
|
+
|
|
33
|
+
// precompile contract on L2 for sending messages to L2
|
|
34
|
+
IL2toL2CrossDomainMessenger public immutable messenger;
|
|
35
|
+
// Immutable quote amount
|
|
36
|
+
uint32 public immutable GAS_QUOTE;
|
|
37
|
+
|
|
38
|
+
// ============ Constructor ============
|
|
39
|
+
|
|
40
|
+
constructor(
|
|
41
|
+
address _mailbox,
|
|
42
|
+
uint32 _destinationDomain,
|
|
43
|
+
bytes32 _ism,
|
|
44
|
+
address _messenger,
|
|
45
|
+
uint32 _gasQuote
|
|
46
|
+
) AbstractMessageIdAuthHook(_mailbox, _destinationDomain, _ism) {
|
|
47
|
+
GAS_QUOTE = _gasQuote;
|
|
48
|
+
messenger = IL2toL2CrossDomainMessenger(_messenger);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/// @inheritdoc IPostDispatchHook
|
|
52
|
+
function hookType() external pure override returns (uint8) {
|
|
53
|
+
return uint8(IPostDispatchHook.Types.SUPERCHAIN);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/// @inheritdoc AbstractPostDispatchHook
|
|
57
|
+
function _quoteDispatch(
|
|
58
|
+
bytes calldata,
|
|
59
|
+
bytes calldata
|
|
60
|
+
) internal view override returns (uint256) {
|
|
61
|
+
// TODO: Request from a IGP as a child hook like https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/9093369186993468571b5d411e712ddd9a30c98c/solidity/contracts/hooks/ArbL2ToL1Hook.sol#L85
|
|
62
|
+
return GAS_QUOTE;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// ============ Internal functions ============
|
|
66
|
+
|
|
67
|
+
/// @inheritdoc AbstractMessageIdAuthHook
|
|
68
|
+
function _sendMessageId(
|
|
69
|
+
bytes calldata metadata,
|
|
70
|
+
bytes memory payload
|
|
71
|
+
) internal override {
|
|
72
|
+
require(
|
|
73
|
+
msg.value >= metadata.msgValue(0) + GAS_QUOTE,
|
|
74
|
+
"SuperchainHook: insufficient msg.value"
|
|
75
|
+
);
|
|
76
|
+
messenger.sendMessage(
|
|
77
|
+
destinationDomain,
|
|
78
|
+
TypeCasts.bytes32ToAddress(ism),
|
|
79
|
+
payload
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
/// @title ICrossL2Inbox
|
|
5
|
+
/// @notice Interface for the CrossL2Inbox contract.
|
|
6
|
+
interface ICrossL2Inbox {
|
|
7
|
+
/// @notice The struct for a pointer to a message payload in a remote (or local) chain.
|
|
8
|
+
struct Identifier {
|
|
9
|
+
address origin;
|
|
10
|
+
uint256 blockNumber;
|
|
11
|
+
uint256 logIndex;
|
|
12
|
+
uint256 timestamp;
|
|
13
|
+
uint256 chainId;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/// @notice Returns the interop start timestamp.
|
|
17
|
+
/// @return interopStart_ interop start timestamp.
|
|
18
|
+
function interopStart() external view returns (uint256 interopStart_);
|
|
19
|
+
|
|
20
|
+
/// @notice Returns the origin address of the Identifier.
|
|
21
|
+
/// @return origin_ The origin address of the Identifier.
|
|
22
|
+
function origin() external view returns (address origin_);
|
|
23
|
+
|
|
24
|
+
/// @notice Returns the block number of the Identifier.
|
|
25
|
+
/// @return blockNumber_ The block number of the Identifier.
|
|
26
|
+
function blockNumber() external view returns (uint256 blockNumber_);
|
|
27
|
+
|
|
28
|
+
/// @notice Returns the log index of the Identifier.
|
|
29
|
+
/// @return logIndex_ The log index of the Identifier.
|
|
30
|
+
function logIndex() external view returns (uint256 logIndex_);
|
|
31
|
+
|
|
32
|
+
/// @notice Returns the timestamp of the Identifier.
|
|
33
|
+
/// @return timestamp_ The timestamp of the Identifier.
|
|
34
|
+
function timestamp() external view returns (uint256 timestamp_);
|
|
35
|
+
|
|
36
|
+
/// @notice Returns the chain ID of the Identifier.
|
|
37
|
+
/// @return chainId_ The chain ID of the Identifier.
|
|
38
|
+
function chainId() external view returns (uint256 chainId_);
|
|
39
|
+
|
|
40
|
+
/// @notice Executes a cross chain message on the destination chain.
|
|
41
|
+
/// @param _id An Identifier pointing to the initiating message.
|
|
42
|
+
/// @param _target Account that is called with _msg.
|
|
43
|
+
/// @param _msg The message payload, matching the initiating message.
|
|
44
|
+
function executeMessage(
|
|
45
|
+
ICrossL2Inbox.Identifier calldata _id,
|
|
46
|
+
address _target,
|
|
47
|
+
bytes calldata _msg
|
|
48
|
+
) external payable;
|
|
49
|
+
|
|
50
|
+
/// @notice Validates a cross chain message on the destination chain
|
|
51
|
+
/// and emits an ExecutingMessage event. This function is useful
|
|
52
|
+
/// for applications that understand the schema of the _message payload and want to
|
|
53
|
+
/// process it in a custom way.
|
|
54
|
+
/// @param _id Identifier of the message.
|
|
55
|
+
/// @param _msgHash Hash of the message payload to call target with.
|
|
56
|
+
function validateMessage(
|
|
57
|
+
Identifier calldata _id,
|
|
58
|
+
bytes32 _msgHash
|
|
59
|
+
) external;
|
|
60
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
pragma solidity ^0.8.0;
|
|
3
|
+
|
|
4
|
+
import {ICrossL2Inbox} from "./ICrossL2Inbox.sol";
|
|
5
|
+
|
|
6
|
+
/// @title IL2ToL2CrossDomainMessenger
|
|
7
|
+
/// @notice Interface for the L2ToL2CrossDomainMessenger contract.
|
|
8
|
+
interface IL2toL2CrossDomainMessenger {
|
|
9
|
+
/// @notice Emitted whenever a message is sent to a destination
|
|
10
|
+
/// @param destination Chain ID of the destination chain.
|
|
11
|
+
/// @param target Target contract or wallet address.
|
|
12
|
+
/// @param messageNonce Nonce associated with the messsage sent
|
|
13
|
+
/// @param sender Address initiating this message call
|
|
14
|
+
/// @param message Message payload to call target with.
|
|
15
|
+
event SentMessage(
|
|
16
|
+
uint256 indexed destination,
|
|
17
|
+
address indexed target,
|
|
18
|
+
uint256 indexed messageNonce,
|
|
19
|
+
address sender,
|
|
20
|
+
bytes message
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
/// @notice Mapping of message hashes to boolean receipt values. Note that a message will only
|
|
24
|
+
/// be present in this mapping if it has successfully been relayed on this chain, and
|
|
25
|
+
/// can therefore not be relayed again.
|
|
26
|
+
/// @param _msgHash message hash to check.
|
|
27
|
+
/// @return Returns true if the message corresponding to the `_msgHash` was successfully relayed.
|
|
28
|
+
function successfulMessages(bytes32 _msgHash) external view returns (bool);
|
|
29
|
+
|
|
30
|
+
/// @notice Retrieves the next message nonce. Message version will be added to the upper two
|
|
31
|
+
/// bytes of the message nonce. Message version allows us to treat messages as having
|
|
32
|
+
/// different structures.
|
|
33
|
+
/// @return Nonce of the next message to be sent, with added message version.
|
|
34
|
+
function messageNonce() external view returns (uint256);
|
|
35
|
+
|
|
36
|
+
/// @notice Retrieves the sender of the current cross domain message.
|
|
37
|
+
/// @return sender_ Address of the sender of the current cross domain message.
|
|
38
|
+
function crossDomainMessageSender() external view returns (address sender_);
|
|
39
|
+
|
|
40
|
+
/// @notice Retrieves the source of the current cross domain message.
|
|
41
|
+
/// @return source_ Chain ID of the source of the current cross domain message.
|
|
42
|
+
function crossDomainMessageSource() external view returns (uint256 source_);
|
|
43
|
+
|
|
44
|
+
/// @notice Sends a message to some target address on a destination chain. Note that if the call
|
|
45
|
+
/// always reverts, then the message will be unrelayable, and any ETH sent will be
|
|
46
|
+
/// permanently locked. The same will occur if the target on the other chain is
|
|
47
|
+
/// considered unsafe (see the _isUnsafeTarget() function).
|
|
48
|
+
/// @param _destination Chain ID of the destination chain.
|
|
49
|
+
/// @param _target Target contract or wallet address.
|
|
50
|
+
/// @param _message Message to trigger the target address with.
|
|
51
|
+
/// @return msgHash_ The hash of the message being sent, which can be used for tracking whether
|
|
52
|
+
/// the message has successfully been relayed.
|
|
53
|
+
function sendMessage(
|
|
54
|
+
uint256 _destination,
|
|
55
|
+
address _target,
|
|
56
|
+
bytes calldata _message
|
|
57
|
+
) external returns (bytes32 msgHash_);
|
|
58
|
+
|
|
59
|
+
/// @notice Relays a message that was sent by the other CrossDomainMessenger contract. Can only
|
|
60
|
+
/// be executed via cross-chain call from the other messenger OR if the message was
|
|
61
|
+
/// already received once and is currently being replayed.
|
|
62
|
+
/// @param _id Identifier of the SentMessage event to be relayed
|
|
63
|
+
/// @param _sentMessage Message payload of the `SentMessage` event
|
|
64
|
+
function relayMessage(
|
|
65
|
+
ICrossL2Inbox.Identifier calldata _id,
|
|
66
|
+
bytes calldata _sentMessage
|
|
67
|
+
) external payable;
|
|
68
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT OR Apache-2.0
|
|
2
|
+
pragma solidity >=0.8.0;
|
|
3
|
+
|
|
4
|
+
/*@@@@@@@ @@@@@@@@@
|
|
5
|
+
@@@@@@@@@ @@@@@@@@@
|
|
6
|
+
@@@@@@@@@ @@@@@@@@@
|
|
7
|
+
@@@@@@@@@ @@@@@@@@@
|
|
8
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
9
|
+
@@@@@ HYPERLANE @@@@@@@
|
|
10
|
+
@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
11
|
+
@@@@@@@@@ @@@@@@@@@
|
|
12
|
+
@@@@@@@@@ @@@@@@@@@
|
|
13
|
+
@@@@@@@@@ @@@@@@@@@
|
|
14
|
+
@@@@@@@@@ @@@@@@@@*/
|
|
15
|
+
|
|
16
|
+
// ============ Internal Imports ============
|
|
17
|
+
import {IInterchainSecurityModule} from "../../interfaces/IInterchainSecurityModule.sol";
|
|
18
|
+
import {TypeCasts} from "../../libs/TypeCasts.sol";
|
|
19
|
+
import {Message} from "../../libs/Message.sol";
|
|
20
|
+
import {AbstractMessageIdAuthorizedIsm} from "./AbstractMessageIdAuthorizedIsm.sol";
|
|
21
|
+
|
|
22
|
+
// ============ External Imports ============
|
|
23
|
+
|
|
24
|
+
import {IL2toL2CrossDomainMessenger} from "../../interfaces/optimism/IL2toL2CrossDomainMessenger.sol";
|
|
25
|
+
import {ICrossL2Inbox} from "../../interfaces/optimism/ICrossL2Inbox.sol";
|
|
26
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* @title SuperchainISM
|
|
30
|
+
* @notice Uses the native Optimism bridge to verify interchain messages from L2 to L1.
|
|
31
|
+
*/
|
|
32
|
+
contract SuperchainISM is AbstractMessageIdAuthorizedIsm {
|
|
33
|
+
using TypeCasts for address;
|
|
34
|
+
using Message for bytes;
|
|
35
|
+
|
|
36
|
+
// ============ Constants ============
|
|
37
|
+
|
|
38
|
+
// module type for the ISM
|
|
39
|
+
uint8 public constant moduleType =
|
|
40
|
+
uint8(IInterchainSecurityModule.Types.SUPERCHAIN);
|
|
41
|
+
// L2toL2CrossDomainMessenger contract
|
|
42
|
+
IL2toL2CrossDomainMessenger immutable messenger;
|
|
43
|
+
|
|
44
|
+
// ============ Constructor ============
|
|
45
|
+
|
|
46
|
+
constructor(address _messenger) {
|
|
47
|
+
messenger = IL2toL2CrossDomainMessenger(_messenger);
|
|
48
|
+
require(
|
|
49
|
+
Address.isContract(_messenger),
|
|
50
|
+
"SuperchainISM: invalid L2toL2CrossDomainMessenger contract"
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ============ External Functions ============
|
|
55
|
+
|
|
56
|
+
/// @inheritdoc IInterchainSecurityModule
|
|
57
|
+
function verify(
|
|
58
|
+
bytes calldata metadata,
|
|
59
|
+
bytes calldata message
|
|
60
|
+
) external override returns (bool) {
|
|
61
|
+
bool verified = isVerified(message);
|
|
62
|
+
if (!verified) {
|
|
63
|
+
_verifyWithMessenger(metadata, message);
|
|
64
|
+
require(isVerified(message), "SuperchainIsm: message not verified");
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// ============ Internal function ============
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @notice Verify message directly using the portal.finalizeWithdrawal function.
|
|
73
|
+
* @dev This is a fallback in case the message is not verified by the stateful verify function first.
|
|
74
|
+
*/
|
|
75
|
+
function _verifyWithMessenger(
|
|
76
|
+
bytes calldata metadata,
|
|
77
|
+
bytes memory
|
|
78
|
+
) internal {
|
|
79
|
+
(ICrossL2Inbox.Identifier memory _id, bytes memory _sentMessage) = abi
|
|
80
|
+
.decode(metadata, (ICrossL2Inbox.Identifier, bytes));
|
|
81
|
+
messenger.relayMessage(_id, _sentMessage);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/// @inheritdoc AbstractMessageIdAuthorizedIsm
|
|
85
|
+
function _isAuthorized() internal view override returns (bool) {
|
|
86
|
+
return
|
|
87
|
+
msg.sender == address(messenger) &&
|
|
88
|
+
messenger.crossDomainMessageSender() ==
|
|
89
|
+
TypeCasts.bytes32ToAddress(authorizedHook);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -4,7 +4,10 @@ pragma solidity ^0.8.0;
|
|
|
4
4
|
import {CallLib} from "../middleware/libs/Call.sol";
|
|
5
5
|
import {TypeCasts} from "../libs/TypeCasts.sol";
|
|
6
6
|
import {ICrossDomainMessenger} from "../interfaces/optimism/ICrossDomainMessenger.sol";
|
|
7
|
+
import {IL2toL2CrossDomainMessenger} from "../interfaces/optimism/IL2toL2CrossDomainMessenger.sol";
|
|
8
|
+
import {ICrossL2Inbox} from "../interfaces/optimism/ICrossL2Inbox.sol";
|
|
7
9
|
import {IOptimismPortal} from "../interfaces/optimism/IOptimismPortal.sol";
|
|
10
|
+
import {Address} from "@openzeppelin/contracts/utils/Address.sol";
|
|
8
11
|
|
|
9
12
|
// for both L1 and L2
|
|
10
13
|
contract MockOptimismMessenger is ICrossDomainMessenger {
|
|
@@ -59,3 +62,73 @@ contract MockOptimismPortal is IOptimismPortal {
|
|
|
59
62
|
CallLib.call(call);
|
|
60
63
|
}
|
|
61
64
|
}
|
|
65
|
+
|
|
66
|
+
contract MockL2toL2CrossDomainMessenger is IL2toL2CrossDomainMessenger {
|
|
67
|
+
uint256 public messageNonce;
|
|
68
|
+
bool passMessages = true;
|
|
69
|
+
address originCaller;
|
|
70
|
+
|
|
71
|
+
function encodeCall(
|
|
72
|
+
address _originCaller,
|
|
73
|
+
address target,
|
|
74
|
+
bytes calldata call
|
|
75
|
+
) public view returns (bytes memory) {
|
|
76
|
+
return abi.encode(_originCaller, target, call);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function sendMessage(
|
|
80
|
+
uint256 _destination,
|
|
81
|
+
address _target,
|
|
82
|
+
bytes calldata _message
|
|
83
|
+
) external returns (bytes32 msgHash_) {}
|
|
84
|
+
|
|
85
|
+
/// @notice Relays a message that was sent by the other CrossDomainMessenger contract. Can only
|
|
86
|
+
/// be executed via cross-chain call from the other messenger OR if the message was
|
|
87
|
+
/// already received once and is currently being replayed.
|
|
88
|
+
/// @param _id Identifier of the SentMessage event to be relayed
|
|
89
|
+
/// @param _sentMessage Message payload of the `SentMessage` event
|
|
90
|
+
function relayMessage(
|
|
91
|
+
ICrossL2Inbox.Identifier calldata _id,
|
|
92
|
+
bytes calldata _sentMessage
|
|
93
|
+
) external payable {
|
|
94
|
+
require(
|
|
95
|
+
passMessages,
|
|
96
|
+
"MockL2toL2CrossDomainMessenger: passMessages is false"
|
|
97
|
+
);
|
|
98
|
+
(address _originCaller, address target, bytes memory call) = abi.decode(
|
|
99
|
+
_sentMessage,
|
|
100
|
+
(address, address, bytes)
|
|
101
|
+
);
|
|
102
|
+
originCaller = _originCaller;
|
|
103
|
+
Address.functionCall(target, call);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/// @notice Mapping of message hashes to boolean receipt values. Note that a message will only
|
|
107
|
+
/// be present in this mapping if it has successfully been relayed on this chain, and
|
|
108
|
+
/// can therefore not be relayed again.
|
|
109
|
+
/// @param _msgHash message hash to check.
|
|
110
|
+
/// @return Returns true if the message corresponding to the `_msgHash` was successfully relayed.
|
|
111
|
+
function successfulMessages(bytes32 _msgHash) external view returns (bool) {
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/// @notice Retrieves the sender of the current cross domain message.
|
|
116
|
+
/// @return sender_ Address of the sender of the current cross domain message.
|
|
117
|
+
function crossDomainMessageSender()
|
|
118
|
+
external
|
|
119
|
+
view
|
|
120
|
+
returns (address sender_)
|
|
121
|
+
{
|
|
122
|
+
return originCaller;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/// @notice Retrieves the source of the current cross domain message.
|
|
126
|
+
/// @return source_ Chain ID of the source of the current cross domain message.
|
|
127
|
+
function crossDomainMessageSource()
|
|
128
|
+
external
|
|
129
|
+
view
|
|
130
|
+
returns (uint256 source_)
|
|
131
|
+
{
|
|
132
|
+
return 0;
|
|
133
|
+
}
|
|
134
|
+
}
|