Commit 78c42283 authored by Kevin Ho's avatar Kevin Ho Committed by GitHub

Update mock messengers (#46)

* start fixing mocks

* fix mock messenger

* update version, remove console import
parent 0bb89f9b
...@@ -34,7 +34,7 @@ contract OVM_BaseCrossDomainMessenger is iOVM_BaseCrossDomainMessenger { ...@@ -34,7 +34,7 @@ contract OVM_BaseCrossDomainMessenger is iOVM_BaseCrossDomainMessenger {
function sendMessage( function sendMessage(
address _target, address _target,
bytes memory _message, bytes memory _message,
uint256 _gasLimit uint32 _gasLimit
) )
override override
public public
......
// SPDX-License-Identifier: UNLICENSED // SPDX-License-Identifier: UNLICENSED
pragma solidity >0.5.0 <0.8.0; pragma solidity >=0.5.0 <0.8.0;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
/** /**
...@@ -24,6 +24,6 @@ interface iOVM_BaseCrossDomainMessenger { ...@@ -24,6 +24,6 @@ interface iOVM_BaseCrossDomainMessenger {
function sendMessage( function sendMessage(
address _target, address _target,
bytes calldata _message, bytes calldata _message,
uint256 _gasLimit uint32 _gasLimit
) external; ) external;
} }
...@@ -3,12 +3,12 @@ pragma solidity ^0.7.0; ...@@ -3,12 +3,12 @@ pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2; pragma experimental ABIEncoderV2;
/* Contract Imports */ /* Contract Imports */
import { OVM_BaseCrossDomainMessenger } from "../../OVM/bridge/OVM_BaseCrossDomainMessenger.sol"; import { iOVM_BaseCrossDomainMessenger } from "../../iOVM/bridge/iOVM_BaseCrossDomainMessenger.sol";
/** /**
* @title mockOVM_CrossDomainMessenger * @title mockOVM_CrossDomainMessenger
*/ */
contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger { contract mockOVM_CrossDomainMessenger is iOVM_BaseCrossDomainMessenger {
/*********** /***********
* Structs * * Structs *
...@@ -20,7 +20,7 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger { ...@@ -20,7 +20,7 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger {
address sender; address sender;
bytes message; bytes message;
uint256 messageNonce; uint256 messageNonce;
uint256 gasLimit; uint32 gasLimit;
} }
...@@ -32,6 +32,8 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger { ...@@ -32,6 +32,8 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger {
address internal targetMessengerAddress; address internal targetMessengerAddress;
uint256 internal lastRelayedMessage; uint256 internal lastRelayedMessage;
uint256 internal delay; uint256 internal delay;
uint256 public messageNonce;
address override public xDomainMessageSender;
/*************** /***************
...@@ -78,6 +80,7 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger { ...@@ -78,6 +80,7 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger {
bytes memory _message, bytes memory _message,
uint32 _gasLimit uint32 _gasLimit
) )
override
public public
{ {
mockOVM_CrossDomainMessenger targetMessenger = mockOVM_CrossDomainMessenger( mockOVM_CrossDomainMessenger targetMessenger = mockOVM_CrossDomainMessenger(
...@@ -120,7 +123,7 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger { ...@@ -120,7 +123,7 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger {
bool _exists bool _exists
) )
{ {
return fullReceivedMessages.length < lastRelayedMessage; return fullReceivedMessages.length > lastRelayedMessage;
} }
/** /**
...@@ -129,18 +132,13 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger { ...@@ -129,18 +132,13 @@ contract mockOVM_CrossDomainMessenger is OVM_BaseCrossDomainMessenger {
function relayNextMessage() function relayNextMessage()
public public
{ {
if (hasNextMessage() == false) { require(hasNextMessage(), "No pending messages to relay");
return;
}
ReceivedMessage memory nextMessage = fullReceivedMessages[lastRelayedMessage]; ReceivedMessage memory nextMessage = fullReceivedMessages[lastRelayedMessage];
if (nextMessage.timestamp + delay > block.timestamp) { require(nextMessage.timestamp + delay < block.timestamp, "Message is not ready to be relayed. The delay period is not up yet!");
return;
}
xDomainMessageSender = nextMessage.sender; xDomainMessageSender = nextMessage.sender;
nextMessage.target.call{gas: nextMessage.gasLimit}(nextMessage.message); (bool success,) = nextMessage.target.call{gas: nextMessage.gasLimit}(nextMessage.message);
require(success, "Cross-domain message call reverted. Did you set your gas limit high enough?");
lastRelayedMessage += 1; lastRelayedMessage += 1;
} }
} }
{ {
"name": "@eth-optimism/contracts", "name": "@eth-optimism/contracts",
"version": "0.0.2-alpha.6", "version": "0.0.2-alpha.7",
"main": "build/src/index.js", "main": "build/src/index.js",
"files": [ "files": [
"build/**/*.js", "build/**/*.js",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment