/
BasicForeignAMB.sol
32 lines (28 loc) · 1.12 KB
/
BasicForeignAMB.sol
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
pragma solidity 0.4.24;
import "../../libraries/Message.sol";
import "../../libraries/ArbitraryMessage.sol";
import "./BasicAMB.sol";
import "./MessageDelivery.sol";
import "./MessageProcessor.sol";
import "../MessageRelay.sol";
contract BasicForeignAMB is BasicAMB, MessageRelay, MessageDelivery, MessageProcessor {
/**
* @dev Validates provided signatures and relays a given message
* @param _data bytes to be relayed
* @param _signatures bytes blob with signatures to be validated
*/
function executeSignatures(bytes _data, bytes _signatures) external {
Message.hasEnoughValidSignatures(_data, _signatures, validatorContract(), true);
address sender;
address executor;
bytes32 txHash;
uint256 gasLimit;
bytes1 dataType;
uint256 gasPrice;
bytes memory data;
(sender, executor, txHash, gasLimit, dataType, gasPrice, data) = ArbitraryMessage.unpackData(_data, true);
require(!relayedMessages(txHash));
setRelayedMessages(txHash, true);
processMessage(sender, executor, txHash, gasLimit, dataType, gasPrice, data);
}
}