function keys(uint256 _eth) public view returns (uint256) {
      Round memory current = rounds[currentRound];
      
      uint256 c_key = (current.keys / decimals).add(1);
      uint256 _price = price(c_key);
      uint256 remainKeys = c_key.mul(decimals).sub(current.keys);
      uint256 remain =remainKeys.mul(_price) / decimals;
      
      if (remain >= _eth) {
          return _eth.mul(decimals) / _price;
      }
      uint256 boughtKeys = remainKeys;
      _eth = _eth.sub(remain);
      while(true) {
          c_key = c_key.add(1);
          _price = price(c_key);
          if (_price <= _eth) {
              
              boughtKeys = boughtKeys.add(decimals);
              _eth = _eth.sub(_price);
          } else {
              boughtKeys = boughtKeys.add(_eth.mul(decimals) / _price);
              break;
          }
      }
      return boughtKeys;
  }