// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "hardhat/console.sol";
/**
-
@title Owner
-
@dev Set & change owner */ contract Owner {
address private owner;
// event for EVM logging event OwnerSet(address indexed oldOwner, address indexed newOwner);
// modifier to check if caller is owner modifier isOwner() { // If the first argument of 'require' evaluates to 'false', execution terminates and all // changes to the state and to Ether balances are reverted. // This used to consume all gas in old EVM versions, but not anymore. // It is often a good idea to use 'require' to check if functions are called correctly. // As a second argument, you can also provide an explanation about what went wrong. require(msg.sender == owner, "Caller is not owner"); _; }
/**
- @dev Set contract deployer as owner */ constructor() { console.log("Owner contract deployed by:", msg.sender); owner = msg.sender; // 'msg.sender' is sender of current call, contract deployer for a constructor emit OwnerSet(address(0), owner); }
/**
- @dev Change owner
- @param newOwner address of new owner */ function changeOwner(address newOwner) public isOwner { emit OwnerSet(owner, newOwner); owner = newOwner; }
/**
- @dev Return owner address
- @return address of owner */ function getOwner() external view returns (address) { return owner; } }