개발 학습/블록체인

S4: public 함수 중 관리자만 접근가능함수 OwnerHelper

StelthPark 2021. 11. 26. 15:56

OwnerHelper

abstract contract OwnerHelper {
  	address private _owner;

  	event OwnershipTransferred(address indexed preOwner, address indexed nextOwner);

  	modifier onlyOwner {
		require(msg.sender == _owner, "OwnerHelper: caller is not owner");
		_;
  	}

  	constructor() {
		_owner = msg.sender;
  	}

        function owner() public view virtual returns (address) {
               return _owner;
        }

  	function transferOwnership(address newOwner) onlyOwner public {
              require(newOwner != _owner);
              require(newOwner != address(0x0));
              _owner = newOwner;
              emit OwnershipTransferred(_owner, newOwner);
  	}
}

_owner는 관리자를 나타냅니다.

  	address private _owner;

OwnershipTransferred이벤트는 관리자가 변경됐을때 이전관리자주소, 새 관리자주소를 로그에 남긴다.

event OwnershipTransferred(address indexed preOwner, address indexed nextOwner);

onlyOwner함수 변경자는 함수실행 이전에 함수를 실행시키는 사람이 관리자인지 확인한다.

  	modifier onlyOwner {
		require(msg.sender == _owner, "OwnerHelper: caller is not owner");
		_;
  	}