pragma solidity ^0.4.24; contract DecentralizedPausableMock { uint public counter; mapping(uint => mapping(address => bool)) public unpaused; uint public blockStartNumber; bool public paused; /** * @dev Modifier to make a function callable only when the contract is not paused. */ modifier whenNotPaused() { if(paused) { require(unpaused[blockStartNumber][msg.sender]); } _; } /** * @dev Modifier to make a function callable only when the contract is paused. */ modifier whenPaused() { if(paused) { require(!unpaused[blockStartNumber][msg.sender]); } else { revert(); } _; } function countup() public whenNotPaused { counter++; } function unpauseOnlySelf() public whenPaused { unpaused[blockStartNumber][msg.sender] = true; } function pause() public whenNotPaused { paused = true; blockStartNumber = block.number; } function unpause() public { paused = false; } }
0.4.24