pragma solidity ^0.4.23; contract Ownerble { address public owner; event OwnershipRenounced(address indexed previousOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constractor() public{ owner = msg.sender; } modifier onlyOwner() { require(msg.sender == owner); _; } function renounceOwnership()public onlyOwner { emit ownershipRenounced(owner); owner = address(0); } // この関数です!! function transferOwnership(address _newOwner) public onlyOwner { _transferOwnership(_newOwner); } // 何故この関数を経由するのでしょうか? function _transferOwnership(address _newOwner) internal { require(_newOwner != address(0)); emit Ownershiptransferred(owner, _newOwner); owner = _newOwner; } }