예제 #1
0
 public function update()
 {
     if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData = array();
         $poolData['user'] = curlCall($this->_apiURL . '/index.php?k=api&json=y&username='******'&api=' . $this->_apiKey);
         $poolData['workers'] = curlCall($this->_apiURL . '/index.php?k=api&json=y&work=y&username='******'&api=' . $this->_apiKey);
         // Offline Check
         if (empty($poolData['user']) || empty($poolData['workers'])) {
             return;
         }
         // Data Order
         $data['type'] = $this->_type;
         $data['user_hashrate'] = formatHashrate($poolData['user']['u_hashrate5m'] / 1000);
         $data['pool_hashrate'] = formatHashrate($poolData['user']['p_hashrate5m'] / 1000);
         for ($i = 0; $poolData['workers']['rows'] > $i; $i++) {
             $data[$poolData['workers']['workername:' . $i]] = formatHashrate($poolData['workers']['w_hashrate5m:' . $i] / 1000);
         }
         $data['workers'] = $poolData['workers']['rows'];
         $data['round_duration'] = formatTimeElapsed(time() - $poolData['user']['lastblock']);
         $data['url'] = $this->_apiURL;
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
예제 #2
0
 public function update()
 {
     if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData = array();
         foreach ($this->_actions as $action) {
             $nonce = number_format(time() * mt_rand(), 0, '', '');
             $hmacSig = strtoupper(hash_hmac('sha256', $this->_userId . $this->_apiKey . $nonce, $this->_apiSecret));
             $postParams = http_build_query(array('key' => $this->_apiKey, 'nonce' => $nonce, 'signature' => $hmacSig));
             $poolData[$action] = curlCall($this->_apiURL . '/api/' . $action . '.htm', $postParams, 'application/x-www-form-urlencoded', array('key' => $this->_apiKey, 'sig' => $hmacSig));
             $poolData[$action] = $poolData[$action]['data'];
         }
         // Offline Check
         if (empty($poolData[$this->_actions[0]])) {
             return;
         }
         // Data Order
         $data['type'] = $this->_type;
         $data['sent'] = number_format($poolData['account']['paidOut'], 8);
         $data['balance'] = number_format($poolData['account']['balance'], 8);
         $data['current_earnings'] = number_format($poolData['account']['earnTotal'], 8);
         $data['pool_hashrate'] = formatHashrate($poolData['poolStats']['poolHashrate'] * 1000);
         // User Hashrate
         $data['user_hashrate_(1_day)'] = formatHashrate($poolData['hashrate']['last1d'] * 1000);
         $data['user_hashrate_(1_hour)'] = formatHashrate($poolData['hashrate']['last1h'] * 1000);
         $data['user_hashrate_(10_minutes)'] = formatHashrate($poolData['hashrate']['last10m'] * 1000);
         $data['eta_on_block'] = formatTimeElapsed($poolData['poolStats']['estimateTime']);
         $data['url'] = $this->_apiURL;
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
예제 #3
0
 public function update()
 {
     if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData = array();
         foreach ($this->_actions as $action) {
             $poolData[$action] = curlCall($this->_apiURL . '/' . $action);
         }
         // Offline Check
         if (empty($poolData[$this->_actions[0]])) {
             return;
         }
         // Data Order
         $data['type'] = $this->_type;
         $data['coin'] = $poolData['web/currency_info']['symbol'];
         $data['balance'] = number_format($poolData['current_payouts'][$this->_addess], 8);
         $data['user_hashrate'] = formatHashrate($poolData['local_stats']['miner_hash_rates'][$this->_addess] / 1000);
         $data['pool_hashrate'] = formatHashrate($poolData['global_stats']['pool_nonstale_hash_rate'] / 1000);
         $data['pool_uptime'] = formatTimeElapsed($poolData['local_stats']['uptime']);
         $data['pool_fee'] = $poolData['local_stats']['fee'] . '%';
         $data['peers_in'] = $poolData['local_stats']['peers']['incoming'];
         $data['peers_out'] = $poolData['local_stats']['peers']['outgoing'];
         $data['url'] = $this->_apiURL;
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
예제 #4
0
 public function update()
 {
     if ($CACHED == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData = array();
         $poolData['global'] = curlCall($this->_apiURL . '/stats/json/' . $this->_apiKey);
         $poolData['user'] = curlCall($this->_apiURL . '/accounts/profile/json/' . $this->_apiKey);
         // Offline Check
         if (empty($poolData['global']) || empty($poolData['user'])) {
             return;
         }
         $data = array();
         $data['type'] = $this->_type;
         $data['confirmed_balance'] = $poolData['user']['confirmed_reward'];
         $data['unconfirmed_balance'] = $poolData['user']['unconfirmed_reward'];
         $data['estimated_balance'] = $poolData['user']['estimated_reward'];
         $data['pool_hashrate'] = formatHashrate($poolData['global']['ghashes_ps'] * 1000000);
         $data['user_hashrate'] = formatHashrate($poolData['user']['hashrate'] * 1000);
         $data['workers'] = count($poolData['user']['workers']);
         $roundDuration = 0;
         $roundDurationVal = explode(':', $poolData['global']['round_duration']);
         $roundDuration += intval($roundDurationVal[0] * 60 * 60);
         $roundDuration += intval($roundDurationVal[1] * 60);
         $roundDuration += intval($roundDurationVal[2]);
         $data['round_duration'] = formatTimeElapsed($roundDuration);
         $data['username'] = $poolData['user']['username'];
         $data['url'] = $this->_apiURL;
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
예제 #5
0
 public function update()
 {
     if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData = array();
         $poolData = curlCall($this->_apiURL . '?accountId=' . $this->_userId);
         // Offline Check
         if (empty($poolData)) {
             return;
         }
         // Data Order
         $data['type'] = $this->_type;
         $data['sent'] = $poolData['miner']['totalEarned'];
         $data['unconfirmed_balance'] = $poolData['miner']['unconfirmedPayouts'];
         $data['user_capacity'] = formatCapacity($poolData['miner']['estimatedCapacity'] * 1000000);
         $data['pool_capacity'] = formatCapacity($poolData['pool']['estimatedCapacity'] * 1000000);
         $data['pool_miners'] = $poolData['pool']['totalMiners'];
         $data['current_block'] = $poolData['current']['block'];
         $data['nonces_submitted'] = $poolData['current']['noncesSubmitted'];
         $data['best_deadline'] = formatTimeElapsed($poolData['current']['bestDeadline']);
         $data['round_duration'] = formatTimeElapsed(time() - $poolData['current']['timeBlockStarted']);
         $data['pool_blocks_won'] = $poolData['pool']['blocksWon'];
         $data['url'] = "http://burst.ninja";
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
예제 #6
0
 public function update()
 {
     if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData['global'] = curlCall($this->_apiURL . '/api/pool/stats');
         $poolData['user'] = curlCall($this->_apiURL . '/api/users/' . $this->_userId . '?key=' . $this->_apiKey);
         // Offline Check
         if (empty($poolData['global']) || empty($poolData['user'])) {
             return;
         }
         // Payout Information
         $data['type'] = $this->_type;
         // Balances?
         $data['btc_balance'] = number_format($poolData['user']['balances']['BTC'], 8);
         $data['nmc_balance'] = number_format($poolData['user']['balances']['NMC'], 8);
         $data['user_hashrate'] = formatHashRate($poolData['user']['hash_rate'] * 1000);
         $data['network_hashrate'] = formatHashRate($poolData['global']['hash_rate'] * 1000000);
         $data['workers'] = $poolData['user']['active_workers'];
         $data['round_duration'] = formatTimeElapsed($poolData['user']['now'] - $poolData['user']['round_start']['BTC']);
         $data['username'] = $poolData['user']['name'];
         $data['url'] = $this->_apiURL;
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
 public function update()
 {
     if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData = array();
         foreach ($this->_actions as $action) {
             $poolData[$action] = curlCall($this->_apiURL . '/index.php?page=api&id=' . $this->_userId . '&api_key=' . $this->_apiKey . '&action=' . $action);
             if ($action == 'getpoolstatus') {
                 $poolData[$action] = $poolData[$action]['getpoolstatus']['data'];
             } else {
                 if ($action == 'getblockstats') {
                     $poolData[$action] = $poolData[$action]['getblockstats']['data'];
                 } else {
                     if ($action == 'getuserbalance') {
                         $poolData[$action] = $poolData[$action]['getuserbalance']['data'];
                     } else {
                         if ($action == 'getuserstatus') {
                             $poolData[$action] = $poolData[$action]['getuserstatus']['data'];
                         }
                     }
                 }
             }
         }
         // Offline Check
         if (empty($poolData[$this->_actions[0]])) {
             return;
         }
         // Data Order
         $data['type'] = $this->_type;
         $data['pending_payout'] = number_format($poolData['getuserbalance']['pending_payout'], 8);
         $data['payout_bonus'] = number_format($poolData['getuserbalance']['pending_bonus'], 8);
         $data['bonus_%'] = $poolData['getuserbalance']['pending_bonus_pct'] . '%';
         if ($poolData['getuserbalance']['merged_mining']) {
             foreach ($poolData['getuserbalance']['merged_mining'] as $coin) {
                 $data[$coin['coin'] . '_balance'] = number_format($coin['balance'], 8);
             }
         }
         $data['network_hashrate'] = formatHashrate($poolData['getpoolstatus']['nethashrate'] / 1000);
         $data['pool_hashrate'] = formatHashrate($poolData['getpoolstatus']['hashrate']);
         $data['user_hashrate'] = formatHashrate($poolData['getuserstatus']['hashrate']);
         $data['pool_workers'] = $poolData['getpoolstatus']['workers'];
         $data['efficiency'] = $poolData['getpoolstatus']['efficiency'] . '%';
         $data['accepted'] = $poolData['public']['shares_this_round'];
         $data['rejected'] = round($poolData['public']['shares_this_round'] - $poolData['public']['shares_this_round'] * ($poolData['getpoolstatus']['efficiency'] / 100));
         $data['difficulty'] = round($poolData['getpoolstatus']['networkdiff'], 5);
         $timeSinceLastBlock = formatTimeElapsed($poolData['getpoolstatus']['timesincelast']);
         $data['time_since_last_block'] = $timeSinceLastBlock;
         $data['%_of_expected'] = round($poolData['public']['shares_this_round'] / $poolData['getpoolstatus']['estshares'] * 100, 2) . '%';
         $data['current_block'] = $poolData['getpoolstatus']['currentnetworkblock'];
         $data['last_block'] = $poolData['getpoolstatus']['lastblock'];
         $data['username'] = $poolData['getuserstatus']['username'];
         $data['url'] = $this->_apiURL;
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
예제 #8
0
 public function update()
 {
     if ($GLOBALS['cached'] == false || $this->_fileHandler->lastTimeModified() >= 30) {
         // updates every 30 seconds
         $poolData = array();
         foreach ($this->_actions as $action) {
             if ($action == 'livedata') {
                 $poolData[$action] = curlCall($this->_apiURL . '/instant.php/livedata.json');
                 continue;
             }
             $actionParam = $action;
             if ($action == 'getuserhashrate' || $action == 'getuserstat') {
                 if ($action == 'getuserhashrate') {
                     $actionParam = 'gethashrate';
                 }
                 $actionParam .= '&username='******'/api.php?cmd=' . $actionParam);
         }
         // Offline Check
         if (empty($poolData[$this->_actions[0]])) {
             return;
         }
         // Data Order
         $data['type'] = $this->_type;
         $data['sent'] = number_format($poolData['getuserstat']['output']['everpaid'] * 1.0E-8, 8);
         $data['balance'] = number_format($poolData['getuserstat']['output']['lbal'] * 1.0E-8, 8);
         $data['unconfirmed_balance'] = number_format(($poolData['getuserstat']['output']['bal'] - $poolData['getuserstat']['output']['lbal']) * 1.0E-8, 8);
         $data['total_balance'] = number_format($data['balance'] + $data['unconfirmed_balance'], 8);
         $data['pool_hashrate_(64 seconds)'] = $poolData['gethashrate']['output']['av64']['pretty'];
         $data['user_hashrate_(3_hours)'] = $poolData['getuserhashrate']['output']['av10800']['pretty'];
         $data['user_hashrate_(22.5_minutes)'] = $poolData['getuserhashrate']['output']['av1350']['pretty'];
         $data['user_hashrate_(128_seconds)'] = $poolData['getuserhashrate']['output']['av128']['pretty'];
         $data['round_duration'] = formatTimeElapsed($poolData['livedata']['roundduration']);
         $data['round_luck'] = round(round($poolData['livedata']['network_difficulty'] * 1000 / $poolData['livedata']['roundsharecount'], 2) / 10, 2) . '%';
         $data['last_block'] = $poolData['livedata']['lastblockheight'];
         $data['last_block_url'] = $this->_apiURL . '/blocks.php';
         $data['url_name'] = 'http://eligius.st';
         $data['url'] = $this->_apiURL . '/userstats.php/' . $this->_btcaddess;
         $this->_fileHandler->write(json_encode($data));
         return $data;
     }
     return json_decode($this->_fileHandler->read(), true);
 }
예제 #9
0
 private function fetchData()
 {
     if ($this->onlineCheck() != null) {
         // Cgminer Summary
         $summary = json_decode($this->cmd('{"command":"summary"}'), true);
         $this->_summary = $summary['SUMMARY'][0];
         // Devices
         $this->fetchDevices();
         // Device Details
         $this->fetchDeviceDetails();
         // Pools
         $this->fetchPools();
         //Misc data
         $this->_upTime = formatTimeElapsed($this->_summary['Elapsed']);
         if (empty($this->_rigHashrate_5s)) {
             if (isset($this->_summary['MHS av'])) {
                 $this->_rigHashrate_5s = $this->_summary['MHS av'];
             } else {
                 if (isset($this->_summary['GHS av'])) {
                     $this->_rigHashrate_5s = $this->_summary['GHS av'] * 1000;
                 }
             }
         }
         if (empty($this->_rigHashrate_avg)) {
             if (isset($this->_summary['MHS av'])) {
                 $this->_rigHashrate_avg = $this->_summary['MHS av'];
             } else {
                 if (isset($this->_summary['GHS av'])) {
                     $this->_rigHashrate_avg = $this->_summary['GHS av'] * 1000;
                 }
             }
         }
         return true;
     }
     return false;
 }