diff --git a/oracle/esController.sol b/oracle/esController.sol new file mode 100644 index 00000000..0e38fb96 --- /dev/null +++ b/oracle/esController.sol @@ -0,0 +1,52 @@ +//SPDX-License-Identifier: GPL-3.0-only + +/* +This contract can be used together with the emergency shutdown +functionality of the TokenBridge oracles. +*/ + +pragma solidity 0.7.6; + +contract PauseController { + address public manager; + bool internal paused; + bytes32 private immutable ID; + + constructor (string memory _id, address _manager) { + require(bytes(_id).length <= 32); + bytes32 id; + assembly { + id := mload(add(_id, 32)) + } + ID = id; + + manager = _manager; + } + + modifier onlyManager() { + require(msg.sender == manager); + _; + } + + function changeManager(address _newmanager) external onlyManager { + require(_newmanager != address(0)); + manager = _newmanager; + } + + function pause() external onlyManager { + paused = true; + } + + function play() external onlyManager { + paused = false; + } + + function isPaused() external view returns(bool) { + return paused; + } + + function id() external view returns(string memory) { + return string(abi.encodePacked(ID)); + } + +} \ No newline at end of file