Commit b4feae2f authored by ben-chain's avatar ben-chain Committed by GitHub

add L2Relayer check (#144)

parent 6b7ed526
......@@ -45,6 +45,25 @@ contract OVM_L1CrossDomainMessenger is iOVM_L1CrossDomainMessenger, OVM_BaseCros
}
/**********************
* Function Modifiers *
**********************/
/**
* Modifier to enforce that, if configured, only the OVM_L2MessageRelayer contract may successfully call a method.
*/
modifier onlyRelayer() {
address relayer = resolve("OVM_L2MessageRelayer");
if (relayer != address(0)) {
require(
msg.sender == relayer,
"Only OVM_L2MessageRelayer can relay L2-to-L1 messages."
);
}
_;
}
/********************
* Public Functions *
********************/
......@@ -62,6 +81,7 @@ contract OVM_L1CrossDomainMessenger is iOVM_L1CrossDomainMessenger, OVM_BaseCros
)
override
public
onlyRelayer()
{
bytes memory xDomainCalldata = _getXDomainCalldata(
_target,
......
......@@ -352,5 +352,23 @@ describe('OVM_L1CrossDomainMessenger', () => {
)
).to.be.revertedWith('Provided message has already been received.')
})
it('when the OVM_L2MessageRelayer address is set, should revert if called by a different account', async () => {
// set to a random NON-ZERO address
await AddressManager.setAddress(
'OVM_L2MessageRelayer',
'0x1234123412341234123412341234123412341234'
)
await expect(
OVM_L1CrossDomainMessenger.relayMessage(
target,
sender,
message,
0,
proof
)
).to.be.revertedWith('Only OVM_L2MessageRelayer can relay L2-to-L1 messages.')
})
})
})
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