tornado-nova/contracts/Mocks/MockAMB.sol

40 lines
1.1 KiB
Solidity
Raw Normal View History

2021-09-29 21:39:30 +02:00
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.0;
2021-10-29 17:36:38 +02:00
pragma abicoder v2;
2021-09-29 21:39:30 +02:00
2021-10-12 17:50:25 +02:00
import { IAMB } from "../interfaces/IBridge.sol";
2021-09-29 21:39:30 +02:00
contract MockAMB is IAMB {
address public xDomainMessageSender;
bytes32 public xDomainMessageChainId;
2021-09-29 21:39:30 +02:00
2021-10-29 17:36:38 +02:00
struct Call {
address who;
bytes callData;
}
constructor(address _xDomainMessageSender, uint256 _xDomainMessageChainId) {
2021-09-29 21:39:30 +02:00
xDomainMessageSender = _xDomainMessageSender;
xDomainMessageChainId = bytes32(uint256(_xDomainMessageChainId));
2021-09-29 21:39:30 +02:00
}
function setMessageSender(address _sender) external {
xDomainMessageSender = _sender;
}
function messageSender() external view override returns (address) {
return xDomainMessageSender;
}
function messageSourceChainId() external view override returns (bytes32) {
return xDomainMessageChainId;
}
2021-10-05 11:08:04 +02:00
2021-10-29 17:36:38 +02:00
function execute(Call[] calldata _calls) external returns (bool success, bytes memory result) {
for (uint256 i = 0; i < _calls.length; i++) {
(success, result) = _calls[i].who.call(_calls[i].callData);
require(success, string(result));
}
2021-10-05 11:08:04 +02:00
}
2021-09-29 21:39:30 +02:00
}