You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
2.5 KiB
Solidity
106 lines
2.5 KiB
Solidity
2 years ago
|
// SPDX-License-Identifier: MIT
|
||
|
// OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol)
|
||
|
|
||
|
pragma solidity ^0.8.0;
|
||
|
|
||
|
import "../utils/Context.sol";
|
||
|
|
||
|
/**
|
||
|
* @dev Contract module which allows children to implement an emergency stop
|
||
|
* mechanism that can be triggered by an authorized account.
|
||
|
*
|
||
|
* This module is used through inheritance. It will make available the
|
||
|
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
|
||
|
* the functions of your contract. Note that they will not be pausable by
|
||
|
* simply including this module, only once the modifiers are put in place.
|
||
|
*/
|
||
|
abstract contract Pausable is Context {
|
||
|
/**
|
||
|
* @dev Emitted when the pause is triggered by `account`.
|
||
|
*/
|
||
|
event Paused(address account);
|
||
|
|
||
|
/**
|
||
|
* @dev Emitted when the pause is lifted by `account`.
|
||
|
*/
|
||
|
event Unpaused(address account);
|
||
|
|
||
|
bool private _paused;
|
||
|
|
||
|
/**
|
||
|
* @dev Initializes the contract in unpaused state.
|
||
|
*/
|
||
|
constructor() {
|
||
|
_paused = false;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dev Modifier to make a function callable only when the contract is not paused.
|
||
|
*
|
||
|
* Requirements:
|
||
|
*
|
||
|
* - The contract must not be paused.
|
||
|
*/
|
||
|
modifier whenNotPaused() {
|
||
|
_requireNotPaused();
|
||
|
_;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dev Modifier to make a function callable only when the contract is paused.
|
||
|
*
|
||
|
* Requirements:
|
||
|
*
|
||
|
* - The contract must be paused.
|
||
|
*/
|
||
|
modifier whenPaused() {
|
||
|
_requirePaused();
|
||
|
_;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dev Returns true if the contract is paused, and false otherwise.
|
||
|
*/
|
||
|
function paused() public view virtual returns (bool) {
|
||
|
return _paused;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dev Throws if the contract is paused.
|
||
|
*/
|
||
|
function _requireNotPaused() internal view virtual {
|
||
|
require(!paused(), "Pausable: paused");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dev Throws if the contract is not paused.
|
||
|
*/
|
||
|
function _requirePaused() internal view virtual {
|
||
|
require(paused(), "Pausable: not paused");
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dev Triggers stopped state.
|
||
|
*
|
||
|
* Requirements:
|
||
|
*
|
||
|
* - The contract must not be paused.
|
||
|
*/
|
||
|
function _pause() internal virtual whenNotPaused {
|
||
|
_paused = true;
|
||
|
emit Paused(_msgSender());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dev Returns to normal state.
|
||
|
*
|
||
|
* Requirements:
|
||
|
*
|
||
|
* - The contract must be paused.
|
||
|
*/
|
||
|
function _unpause() internal virtual whenPaused {
|
||
|
_paused = false;
|
||
|
emit Unpaused(_msgSender());
|
||
|
}
|
||
|
}
|