-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathL1ToArbitrumSenderModule.sol
25 lines (22 loc) · 1.1 KB
/
L1ToArbitrumSenderModule.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.19;
import {LibSatellite} from "src/libraries/LibSatellite.sol";
import {IArbitrumInbox} from "src/interfaces/external/IArbitrumInbox.sol";
import {IL1ToArbitrumSenderModule} from "src/interfaces/modules/messaging/sender/IL1ToArbitrumSenderModule.sol";
import {AccessController} from "src/libraries/AccessController.sol";
contract L1ToArbitrumSenderModule is IL1ToArbitrumSenderModule, AccessController {
/// @inheritdoc IL1ToArbitrumSenderModule
function sendMessageL1ToArbitrum(uint256 satelliteAddress, address inboxAddress, bytes memory _data, bytes memory _xDomainMsgGasData) external payable onlyModule {
(uint256 l2GasLimit, uint256 maxFeePerGas, uint256 maxSubmissionCost) = abi.decode(_xDomainMsgGasData, (uint256, uint256, uint256));
IArbitrumInbox(inboxAddress).createRetryableTicket{value: msg.value}(
address(uint160(satelliteAddress)),
0,
maxSubmissionCost,
msg.sender,
address(0),
l2GasLimit,
maxFeePerGas,
_data
);
}
}