pragma solidity ^0.4.24; contract Ownable { event OwnerAdded(address); event OwnerRemoved(address); address public implementation; mapping (address => bool) public owners; modifier onlyOwner() { require(owners[msg.sender]); _; } /** Only called when contract is instantiated */ function contructor() public { owners[msg.sender] = true; } /** Add an owner to the owners list * Only allow owners to add other owners */ function addOwner(address _owner) public onlyOwner { owners[_owner] = true; emit OwnerAdded(_owner); } /** Remove another owner * Only allow owners to remove other owners */ function removeOwner(address _owner) public onlyOwner { owners[_owner] = false; emit OwnerRemoved(_owner); } /** Remove all owners mapping and relinquish control of contract */ function renounceOwnership() public { assembly { sstore(owners_offset, 0x0) } } function isComplete() public view returns(bool) { return owners[msg.sender]; } }
0.4.24