-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOptimismReceiverModule.sol
19 lines (16 loc) · 1.06 KB
/
OptimismReceiverModule.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.27;
import {LibSatellite} from "src/libraries/LibSatellite.sol";
import {ISatellite} from "src/interfaces/ISatellite.sol";
import {AbstractReceiverModule} from "./AbstractReceiverModule.sol";
import {IL1CrossDomainMessenger} from "src/interfaces/external/IOptimismCrossDomainMessenger.sol";
/// @notice Implementation of the receiver module for Optimism
contract OptimismReceiverModule is AbstractReceiverModule {
function isCrossdomainCounterpart() internal view override returns (bool) {
/// @dev On Optimism, cross-chain messages always come from the same address (L1CrossDomainMessenger)
/// whose `xDomainMessageSender()` function should be called for retrieving the address of the sender
IL1CrossDomainMessenger messenger = IL1CrossDomainMessenger(0x4200000000000000000000000000000000000007);
ISatellite.SatelliteStorage storage s = LibSatellite.satelliteStorage();
return msg.sender == address(messenger) && s.senderSatellites[messenger.xDomainMessageSender()];
}
}