pragma solidity ^0.4.11; import "./safeMath.sol"; contract multiOwner is safeMath { mapping(address => bool) public owners; uint256 public ownerCount; mapping(bytes32 => address[]) public doDB; /* Constructor */ constructor(address[] newOwners) { for ( uint256 a=0 ; a 0; } /* Internals */ function insertAndCheckDo(bytes32 doHash) internal returns (bool success) { require( owners[msg.sender] ); if (doDB[doHash].length >= ownersForChange()) { delete doDB[doHash]; return true; } for ( uint256 a=0 ; a= ownersForChange() ) { delete doDB[doHash]; return true; } else { doDB[doHash].push(msg.sender); return false; } } /* Privates */ function _addOwner(address addr) private { if ( owners[addr] ) { return; } owners[addr] = true; ownerCount = safeAdd(ownerCount, 1); } function _delOwner(address addr) private { if ( ! owners[addr] ) { return; } delete owners[addr]; ownerCount = safeSub(ownerCount, 1); } }