Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
pragma solidity ^0.5.0;

/* Interface Imports */
import { ICrossDomainMessenger } from "./interfaces/CrossDomainMessenger.interface.sol";

/**
* @title L1CrossDomainMessenger
* @title BaseCrossDomainMessenger
*/
contract BaseCrossDomainMessenger {
/*
contract BaseCrossDomainMessenger is ICrossDomainMessenger {
/*
* Contract Variables
*/

Expand All @@ -14,7 +17,6 @@ contract BaseCrossDomainMessenger {
uint256 public messageNonce;
address public xDomainMessageSender;


/*
* Public Functions
*/
Expand All @@ -31,6 +33,30 @@ contract BaseCrossDomainMessenger {
targetMessengerAddress = _targetMessengerAddress;
}

/**
* Sends a cross domain message to the target messenger.
* .inheritdoc IL2CrossDomainMessenger
*/
function sendMessage(
address _target,
bytes memory _message,
uint32 _gasLimit
)
public
{
bytes memory xDomainCalldata = _getXDomainCalldata(
_target,
msg.sender,
_message,
messageNonce
);

_sendXDomainMessage(xDomainCalldata, _gasLimit);

messageNonce += 1;
sentMessages[keccak256(xDomainCalldata)] = true;
}


/*
* Internal Functions
Expand Down Expand Up @@ -64,4 +90,14 @@ contract BaseCrossDomainMessenger {
_messageNonce
);
}

/**
* Sends a cross domain message.
* @param _message Message to send.
* @param _gasLimit OVM gas limit for the message.
*/
function _sendXDomainMessage(
bytes memory _message,
uint32 _gasLimit
) internal;
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ pragma experimental ABIEncoderV2;
import { ContractResolver } from "../utils/resolvers/ContractResolver.sol";
import { EthMerkleTrie } from "../utils/libraries/EthMerkleTrie.sol";
import { BytesLib } from "../utils/libraries/BytesLib.sol";

/* Interface Imports */
import { IL1CrossDomainMessenger } from "./L1CrossDomainMessenger.interface.sol";
import { DataTypes } from "../utils/libraries/DataTypes.sol";

/* Contract Imports */
import { BaseCrossDomainMessenger } from "./BaseCrossDomainMessenger.sol";
Expand All @@ -17,7 +15,19 @@ import { StateCommitmentChain } from "../chain/StateCommitmentChain.sol";
/**
* @title L1CrossDomainMessenger
*/
contract L1CrossDomainMessenger is IL1CrossDomainMessenger, BaseCrossDomainMessenger, ContractResolver {
contract L1CrossDomainMessenger is BaseCrossDomainMessenger, ContractResolver {

/*
* Data Structures
*/

struct L2MessageInclusionProof {
bytes32 stateRoot;
uint256 stateRootIndex;
DataTypes.StateElementInclusionProof stateRootProof;
bytes stateTrieWitness;
bytes storageTrieWitness;
}
/*
* Constructor
*/
Expand Down Expand Up @@ -81,30 +91,6 @@ contract L1CrossDomainMessenger is IL1CrossDomainMessenger, BaseCrossDomainMesse
receivedMessages[keccak256(xDomainCalldata)] = true;
}

/**
* Sends a cross domain message to the target messenger.
* .inheritdoc IL1CrossDomainMessenger
*/
function sendMessage(
address _target,
bytes memory _message,
uint32 _gasLimit
)
public
{
bytes memory xDomainCalldata = _getXDomainCalldata(
_target,
msg.sender,
_message,
messageNonce
);

_sendXDomainMessage(xDomainCalldata, _gasLimit);

messageNonce += 1;
sentMessages[keccak256(xDomainCalldata)] = true;
}

/**
* Replays a cross domain message to the target messenger.
* .inheritdoc IL1CrossDomainMessenger
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
pragma solidity ^0.5.0;

/* Interface Imports */
import { IL2CrossDomainMessenger } from "./L2CrossDomainMessenger.interface.sol";
import { IL1MessageSender } from "../ovm/precompiles/L1MessageSender.interface.sol";
import { IL2ToL1MessagePasser } from "../ovm/precompiles/L2ToL1MessagePasser.interface.sol";

Expand All @@ -11,15 +10,14 @@ import { BaseCrossDomainMessenger } from "./BaseCrossDomainMessenger.sol";
/**
* @title L2CrossDomainMessenger
*/
contract L2CrossDomainMessenger is IL2CrossDomainMessenger, BaseCrossDomainMessenger{
contract L2CrossDomainMessenger is BaseCrossDomainMessenger {
/*
* Contract Variables
*/

address private l1MessageSenderPrecompileAddress;
address private l2ToL1MessagePasserPrecompileAddress;


/*
* Constructor
*/
Expand All @@ -43,30 +41,6 @@ contract L2CrossDomainMessenger is IL2CrossDomainMessenger, BaseCrossDomainMesse
* Public Functions
*/

/**
* Sends a cross domain message to the target messenger.
* .inheritdoc IL2CrossDomainMessenger
*/
function sendMessage(
address _target,
bytes memory _message,
uint256 _gasLimit
)
public
{
bytes memory xDomainCalldata = _getXDomainCalldata(
_target,
msg.sender,
_message,
messageNonce
);

_sendXDomainMessage(xDomainCalldata, _gasLimit);

messageNonce += 1;
sentMessages[keccak256(xDomainCalldata)] = true;
}

/**
* Relays a cross domain message to a contract.
* .inheritdoc IL2CrossDomainMessenger
Expand Down Expand Up @@ -134,7 +108,7 @@ contract L2CrossDomainMessenger is IL2CrossDomainMessenger, BaseCrossDomainMesse
*/
function _sendXDomainMessage(
bytes memory _message,
uint256 _gasLimit
uint32 _gasLimit
)
internal
{
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.5.0;
pragma experimental ABIEncoderV2;

/**
* @title ICrossDomainMessenger
*/
interface ICrossDomainMessenger {

/********************
* View Functions *
********************/

function receivedMessages(bytes32 messageHash) external view returns (bool);
function sentMessages(bytes32 messageHash) external view returns (bool);
function targetMessengerAddress() external view returns (address);
function messageNonce() external view returns (uint256);
function xDomainMessageSender() external view returns (address);

/********************
* Public Functions *
********************/


/**
* Sets the target messenger address.
* @param _targetMessengerAddress New messenger address.
*/
function setTargetMessengerAddress(
address _targetMessengerAddress
) external;

/**
* Sends a cross domain message to the target messenger.
* @param _target Target contract address.
* @param _message Message to send to the target.
* @param _gasLimit Gas limit for the provided message.
*/
function sendMessage(
address _target,
bytes calldata _message,
uint32 _gasLimit
) external;

}
Loading