pragma solidity ^0.4.24; import 'openzeppelin-solidity/contracts/math/SafeMath.sol'; import "./interface/IHaechi.sol"; contract Haechi is IHaechi { using SafeMath for uint256; uint256 constant INITIAL_VELOCITY = 10; address internal gym_; mapping(address => uint) public haechiIds; mapping(uint => uint) public velocities; mapping(uint => uint) public distances; ... function initialize(address _gym) public { require(_gym != address(0), "Zero address is invalid"); require(isInitialized == false, "Already Initialized"); gym = _gym; isInitialized = true; } function run() public { uint id = haechiIds[msg.sender]; require(id != 0, "No registered Haechi"); uint256 newDistance = distances_[id].add(velocities_[id]); distances_[id] = newDistance; emit Run(id, distances[id]); } function increaseVelocity(uint _haechiId, uint _diff) onlyGym public { uint256 newVelocity = velocities_[_haechiId].add(_diff); velocities_[_haechiId] = newVelocity; emit IncreaseVelocity(_haechiId, velocities[_haechiId]); } }
0.4.18