mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-02-04 18:55:18 -05:00
68 lines
1.7 KiB
Solidity
68 lines
1.7 KiB
Solidity
// SPDX-License-Identifier: UNLICENSED
|
|
pragma solidity ^0.8.0;
|
|
|
|
contract MockBridgeL2 {
|
|
/*********************************
|
|
* Events from L2ScrollMessenger *
|
|
*********************************/
|
|
|
|
event SentMessage(
|
|
address indexed target,
|
|
address sender,
|
|
uint256 value,
|
|
uint256 fee,
|
|
uint256 deadline,
|
|
bytes message,
|
|
uint256 messageNonce,
|
|
uint256 gasLimit
|
|
);
|
|
|
|
event MessageDropped(bytes32 indexed msgHash);
|
|
|
|
event RelayedMessage(bytes32 indexed msgHash);
|
|
|
|
event FailedRelayedMessage(bytes32 indexed msgHash);
|
|
|
|
/*************
|
|
* Variables *
|
|
*************/
|
|
|
|
/// @notice Message nonce, used to avoid relay attack.
|
|
uint256 public messageNonce;
|
|
|
|
/************************************
|
|
* Functions from L2ScrollMessenger *
|
|
************************************/
|
|
|
|
function sendMessage(
|
|
address _to,
|
|
uint256 _fee,
|
|
bytes memory _message,
|
|
uint256 _gasLimit
|
|
) external payable {
|
|
// solhint-disable-next-line not-rely-on-time
|
|
uint256 _deadline = block.timestamp + 1 days;
|
|
uint256 _nonce = messageNonce;
|
|
uint256 _value;
|
|
unchecked {
|
|
_value = msg.value - _fee;
|
|
}
|
|
bytes32 _msghash = keccak256(abi.encodePacked(msg.sender, _to, _value, _fee, _deadline, _nonce, _message));
|
|
emit SentMessage(_to, msg.sender, _value, _fee, _deadline, _message, _nonce, _gasLimit);
|
|
messageNonce = _nonce + 1;
|
|
}
|
|
|
|
function relayMessageWithProof(
|
|
address _from,
|
|
address _to,
|
|
uint256 _value,
|
|
uint256 _fee,
|
|
uint256 _deadline,
|
|
uint256 _nonce,
|
|
bytes memory _message
|
|
) external {
|
|
bytes32 _msghash = keccak256(abi.encodePacked(_from, _to, _value, _fee, _deadline, _nonce, _message));
|
|
emit RelayedMessage(_msghash);
|
|
}
|
|
}
|