The Ownable contract has an owner address, and provides basic authorization control functions, this simplifies the implementation of "user permissions".
abstract function owner() external view returns (address)
abstract function renounceOwnership() external
Allows the current owner to relinquish control of the contract.
abstract function transferOwnership(address _newOwner) external
Allows the current owner to transfer control of the contract to a newOwner.
_newOwner- The address to transfer ownership to.