1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)
- pragma solidity ^0.8.0;
- import "../utils/Context.sol";
- /**
- * @dev Contract module which provides a basic access control mechanism, where
- * there is an account (an owner) that can be granted exclusive access to
- * specific functions.
- *
- * By default, the owner account will be the one that deploys the contract. This
- * can later be changed with {transferOwnership}.
- *
- * This module is used through inheritance. It will make available the modifier
- * `onlyOwner`, which can be applied to your functions to restrict their use to
- * the owner.
- */
- abstract contract Ownable is Context {
- address private _owner;
- event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
- /**
- * @dev Initializes the contract setting the deployer as the initial owner.
- */
- constructor(address initialOwner) {
- _transferOwnership(initialOwner);
- }
- /**
- * @dev Throws if called by any account other than the owner.
- */
- modifier onlyOwner() {
- _checkOwner();
- _;
- }
- /**
- * @dev Returns the address of the current owner.
- */
- function owner() public view virtual returns (address) {
- return _owner;
- }
- /**
- * @dev Throws if the sender is not the owner.
- */
- function _checkOwner() internal view virtual {
- require(owner() == _msgSender(), "Ownable: caller is not the owner");
- }
- /**
- * @dev Leaves the contract without owner. It will not be possible to call
- * `onlyOwner` functions. Can only be called by the current owner.
- *
- * NOTE: Renouncing ownership will leave the contract without an owner,
- * thereby disabling any functionality that is only available to the owner.
- */
- function renounceOwnership() public virtual onlyOwner {
- _transferOwnership(address(0));
- }
- /**
- * @dev Transfers ownership of the contract to a new account (`newOwner`).
- * Can only be called by the current owner.
- */
- function transferOwnership(address newOwner) public virtual onlyOwner {
- require(newOwner != address(0), "Ownable: new owner is the zero address");
- _transferOwnership(newOwner);
- }
- /**
- * @dev Transfers ownership of the contract to a new account (`newOwner`).
- * Internal function without access restriction.
- */
- function _transferOwnership(address newOwner) internal virtual {
- address oldOwner = _owner;
- _owner = newOwner;
- emit OwnershipTransferred(oldOwner, newOwner);
- }
- }
|