pragma solidity ^0.4.18; contract Subscription { bool public win; /// @dev Timestamp of when Membership expires mapping (address => uint) public subscriptionExpiration; /// @dev Cost per day of membership uint subscriptionFee = 0.005 ether; function renewSubscription() external payable { uint daysToAdd = msg.value / subscriptionFee; uint currentExpiration = subscriptionExpiration[msg.sender]; // If their membership already expired... if (currentExpiration < now) { // ...use `now` as the starting point of their new subscription currentExpiration = now; } subscriptionExpiration[msg.sender] = currentExpiration + daysToAdd * 1 days; } modifier onlyMember() { require(now < subscriptionExpiration[msg.sender]); _; } function winGame() external onlyMember { win = true; // do whatever you want } }
0.4.19