* [ADDED] Use curl instead of fopen * [ADDED] Error handling for various connection issues * [MOVED] jsonRPC library into lib folder * [UPDATED] Pools page for proper RPC errors with caching enabled It's using the base RPC class but modified to support CURL. Simplified some code since we won't need those features. Should make maintaining that code a whole lot easier. Fixes #1343 once merged.
92 lines
3.5 KiB
PHP
92 lines
3.5 KiB
PHP
<?php
|
|
|
|
// Make sure we are called from index.php
|
|
if (!defined('SECURITY')) die('Hacking attempt');
|
|
|
|
// Fetch data from wallet, always run this check
|
|
if ($bitcoin->can_connect() === true){
|
|
$dDifficulty = $bitcoin->getdifficulty();
|
|
$dNetworkHashrate = $bitcoin->getnetworkhashps();
|
|
$iBlock = $bitcoin->getblockcount();
|
|
is_int($iBlock) && $iBlock > 0 ? $sBlockHash = $bitcoin->getblockhash($iBlock) : $sBlockHash = '';
|
|
} else {
|
|
$dDifficulty = 1;
|
|
$dNetworkHashrate = 1;
|
|
$iBlock = 0;
|
|
$_SESSION['POPUP'][] = array('CONTENT' => 'Unable to connect to wallet RPC service: ' . $bitcoin->can_connect(), 'TYPE' => 'errormsg');
|
|
}
|
|
|
|
if (!$smarty->isCached('master.tpl', $smarty_cache_key)) {
|
|
$debug->append('No cached version available, fetching from backend', 3);
|
|
|
|
// Top share contributors
|
|
$aContributorsShares = $statistics->getTopContributors('shares', 15);
|
|
|
|
// Top hash contributors
|
|
$aContributorsHashes = $statistics->getTopContributors('hashes', 15);
|
|
|
|
// Grab the last 5 blocks found as a quick overview
|
|
$iLimit = 5;
|
|
$aBlocksFoundData = $statistics->getBlocksFound($iLimit);
|
|
count($aBlocksFoundData) > 0 ? $aBlockData = $aBlocksFoundData[0] : $aBlockData = array();
|
|
|
|
// Estimated time to find the next block
|
|
$iCurrentPoolHashrate = $statistics->getCurrentHashrate();
|
|
|
|
// Time in seconds, not hours, using modifier in smarty to translate
|
|
$iCurrentPoolHashrate > 0 ? $iEstTime = $dDifficulty * pow(2,32) / ($iCurrentPoolHashrate * 1000) : $iEstTime = 0;
|
|
|
|
// Time since last block
|
|
if (!empty($aBlockData)) {
|
|
$dTimeSinceLast = (time() - $aBlockData['time']);
|
|
if ($dTimeSinceLast < 0) $dTimeSinceLast = 0;
|
|
} else {
|
|
$dTimeSinceLast = 0;
|
|
}
|
|
|
|
// Round progress
|
|
$iEstShares = $statistics->getEstimatedShares($dDifficulty);
|
|
$aRoundShares = $statistics->getRoundShares();
|
|
if ($iEstShares > 0 && $aRoundShares['valid'] > 0) {
|
|
$dEstPercent = round(100 / $iEstShares * $aRoundShares['valid'], 2);
|
|
} else {
|
|
$dEstPercent = 0;
|
|
}
|
|
|
|
$dExpectedTimePerBlock = $statistics->getNetworkExpectedTimePerBlock();
|
|
$dEstNextDifficulty = $statistics->getExpectedNextDifficulty();
|
|
$iBlocksUntilDiffChange = $statistics->getBlocksUntilDiffChange();
|
|
|
|
// Propagate content our template
|
|
$smarty->assign("ESTTIME", $iEstTime);
|
|
$smarty->assign("TIMESINCELAST", $dTimeSinceLast);
|
|
$smarty->assign("BLOCKSFOUND", $aBlocksFoundData);
|
|
$smarty->assign("BLOCKLIMIT", $iLimit);
|
|
$smarty->assign("CONTRIBSHARES", $aContributorsShares);
|
|
$smarty->assign("CONTRIBHASHES", $aContributorsHashes);
|
|
$smarty->assign("CURRENTBLOCK", $iBlock);
|
|
$smarty->assign("CURRENTBLOCKHASH", @$sBlockHash);
|
|
$smarty->assign('NETWORK', array('difficulty' => $dDifficulty, 'block' => $iBlock, 'EstNextDifficulty' => $dEstNextDifficulty, 'EstTimePerBlock' => $dExpectedTimePerBlock, 'BlocksUntilDiffChange' => $iBlocksUntilDiffChange));
|
|
$smarty->assign('ESTIMATES', array('shares' => $iEstShares, 'percent' => $dEstPercent));
|
|
if (count($aBlockData) > 0) {
|
|
$smarty->assign("LASTBLOCK", $aBlockData['height']);
|
|
$smarty->assign("LASTBLOCKHASH", $aBlockData['blockhash']);
|
|
} else {
|
|
$smarty->assign("LASTBLOCK", 0);
|
|
}
|
|
$smarty->assign("DIFFICULTY", $dDifficulty);
|
|
$smarty->assign("REWARD", $config['reward']);
|
|
} else {
|
|
$debug->append('Using cached page', 3);
|
|
}
|
|
|
|
// Public / private page detection
|
|
if ($setting->getValue('acl_pool_statistics')) {
|
|
$smarty->assign("CONTENT", "default.tpl");
|
|
} else if ($user->isAuthenticated() && ! $setting->getValue('acl_pool_statistics')) {
|
|
$smarty->assign("CONTENT", "default.tpl");
|
|
} else {
|
|
$smarty->assign("CONTENT", "../default.tpl");
|
|
}
|
|
?>
|