mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-09-06 02:29:45 +00:00
74 lines
2 KiB
PHP
74 lines
2 KiB
PHP
<?php
|
|
|
|
$series = array();
|
|
$n = 0; $maxdiff = 0.0;
|
|
|
|
$json = controller()->memcache->get("yiimp-explorer-diff-".$coin->symbol);
|
|
|
|
if (empty($json)) {
|
|
|
|
// version is used in multi algo coins
|
|
$multiAlgos = versionToAlgo($coin, 0) !== false;
|
|
|
|
$series['diff'] = array();
|
|
$tm = 0;
|
|
|
|
$remote = new Bitcoin($coin->rpcuser, $coin->rpcpasswd, $coin->rpchost, $coin->rpcport);
|
|
for($i = $coin->block_height; $i > max(0, $coin->block_height-500); $i--)
|
|
{
|
|
$hash = $remote->getblockhash($i);
|
|
if(!$hash) continue;
|
|
|
|
$block = $remote->getblock($hash);
|
|
if(!$block) continue;
|
|
|
|
// only graph PoW blocks
|
|
if (!arraySafeval($block,'nonce',0) && !arraySafeval($block,'auxpow',0)) continue;
|
|
|
|
$n++;
|
|
|
|
$tm = $block['time'];
|
|
$dt = date('Y-m-d H:i:s', $tm);
|
|
$diff = floatval($block['difficulty']);
|
|
$vers = $block['version'];
|
|
$algo = versionToAlgo($coin, $vers);
|
|
|
|
if (!$multiAlgos) {
|
|
$maxdiff = max($diff, $maxdiff);
|
|
$series['diff'][$n] = array($dt, $diff, $block['height']);
|
|
} else if ($coin->algo == $algo) {
|
|
$maxdiff = max($diff, $maxdiff);
|
|
$series[$algo][$n] = array($dt, $diff, $block['height']);
|
|
}
|
|
}
|
|
|
|
// User blocks
|
|
if ($tm) {
|
|
$sql = "SELECT id, height, IFNULL(difficulty_user, difficulty) AS diff, time FROM blocks".
|
|
" WHERE coin_id=:coin AND algo = :algo AND time >= :tm ORDER BY id";
|
|
$rows = dbolist($sql, array(':coin'=>$coin->id, ':algo'=>$coin->algo, ':tm'=>intval($tm)));
|
|
|
|
$n = 0;
|
|
foreach ($rows as $row) {
|
|
$diff = floatval($row['diff']);
|
|
if ($maxdiff && $diff > ($maxdiff*1.5)) $diff = $maxdiff*1.5;
|
|
$tm = $row['time'];
|
|
$dt = date('Y-m-d H:i:s', $tm);
|
|
$series['user'][$n] = array($dt, $diff, $row['diff'], $row['height']);
|
|
$n++;
|
|
}
|
|
}
|
|
|
|
$json = '';
|
|
foreach ($series as $algo => $data) {
|
|
if (empty($data)) continue;
|
|
$values = array_values($data);
|
|
$json .= json_encode($values).',';
|
|
}
|
|
$json = rtrim($json, ',');
|
|
|
|
// memcache the data
|
|
controller()->memcache->set("yiimp-explorer-diff-".$coin->symbol, $json, 120);
|
|
}
|
|
|
|
echo "[$json]";
|