public function get_database_count_ex($key, $table, $query, $params = array()) { $value = $this->get($key); if ($value === false) { $value = getdbocount($table, $query, $params); $this->set($key, $value); } return $value; }
function showUser($userid, $what) { $user = getdbo('db_accounts', $userid); if (!$user) { return; } $d = datetoa2($user->last_login); $balance = bitcoinvaluetoa($user->balance); $paid = dboscalar("select sum(amount) from payouts where account_id={$user->id}"); $paid = bitcoinvaluetoa($paid); $t = time() - 24 * 60 * 60; $miner_count = getdbocount('db_workers', "userid={$user->id}"); $share_count = getdbocount('db_shares', "userid={$user->id}"); $block_count = getdbocount('db_blocks', "userid={$user->id} and time>{$t}"); $coin = getdbo('db_coins', $user->coinid); echo "<tr class='ssrow'>"; if ($coin) { echo "<td><img src='{$coin->image}' width=16> {$coin->symbol}</td>"; } else { echo "<td></td>"; } echo "<td>{$user->id}</td>"; echo "<td><a href='/site?address={$user->username}'>{$user->username}</a></td>"; echo "<td>{$what}</td>"; echo "<td>{$d}</td>"; echo "<td>{$block_count}</td>"; echo "<td>{$balance}</td>"; if (intval($paid) > 0.01) { echo "<td><b>{$paid}</b></td>"; } else { echo "<td>{$paid}</td>"; } echo "<td>{$miner_count}</td>"; echo "<td>{$share_count}</td>"; if ($user->is_locked) { echo "<td>locked</td>"; echo "<td><a href='/site/unblockuser?wallet={$user->username}'>unblock</a></td>"; } else { echo "<td></td>"; echo "<td><a href='/site/blockuser?wallet={$user->username}'>block</a></td>"; } echo "</tr>"; }
echo "</thead><tbody>"; $total_balance = 0; $total_paid = 0; $total_unsold = 0; foreach ($users as $user) { $target = yaamp_hashrate_constant(); $interval = yaamp_hashrate_step(); $delay = time() - $interval; $user_rate = dboscalar("select sum(difficulty) * {$target} / {$interval} / 1000 from shares where valid and time>{$delay} and userid={$user->id}"); $user_bad = dboscalar("select sum(difficulty) * {$target} / {$interval} / 1000 from shares where not valid and time>{$delay} and userid={$user->id}"); $percent = $user_rate ? round($user_bad * 100 / $user_rate, 3) : 0; $balance = bitcoinvaluetoa($user->balance); $paid = dboscalar("select sum(amount) from payouts where account_id={$user->id}"); $d = datetoa2($user->last_login); $miner_count = getdbocount('db_workers', "userid={$user->id}"); $block_count = getdbocount('db_blocks', "userid={$user->id}"); $block_diff = $paid ? round(dboscalar("select sum(difficulty) from blocks where userid={$user->id}") / $paid, 3) : '?'; $paid = bitcoinvaluetoa($paid); $user_rate = Itoa2($user_rate); $user_bad = Itoa2($user_bad); echo "<tr class='ssrow'>"; echo "<td>{$user->id}</td>"; echo "<td><a href='/?address={$user->username}'><b>{$user->username}</b></a></td>"; echo "<td>{$d}</td>"; echo "<td align=right>{$miner_count}</td>"; echo "<td align=right>{$user_rate}</td>"; echo "<td align=right>{$user_bad}</td>"; if ($percent > 50) { echo "<td align=right><b>{$percent}%</b></td>"; } else { echo "<td align=right>{$percent}%</td>";
<?php function WriteBoxHeader($title) { echo "<div class='main-left-box'>"; echo "<div class='main-left-title'>{$title}</div>"; echo "<div class='main-left-inner'>"; } $algo = user()->getState('yaamp-algo'); $target = yaamp_hashrate_constant($algo); $interval = yaamp_hashrate_step(); $delay = time() - $interval; $total_workers = getdbocount('db_workers', "algo=:algo", array(':algo' => $algo)); $total_extranonce = getdbocount('db_workers', "algo=:algo and subscribe", array(':algo' => $algo)); $total_hashrate = dboscalar("select sum(difficulty) * {$target} / {$interval} / 1000 from shares where valid and time>{$delay} and algo=:algo", array(':algo' => $algo)); $total_invalid = dboscalar("select sum(difficulty) * {$target} / {$interval} / 1000 from shares where not valid and time>{$delay} and algo=:algo", array(':algo' => $algo)); WriteBoxHeader("Miners Version ({$algo})"); //echo "<br><table class='dataGrid2'>"; showTableSorter('maintable2'); echo "<thead>"; echo "<tr>"; echo "<th>Version</th>"; echo "<th align=right>Count</th>"; echo "<th align=right>Extranonce</th>"; echo "<th align=right>Percent</th>"; echo "<th align=right>Hashrate*</th>"; echo "<th align=right>Reject</th>"; echo "</tr>"; echo "</thead><tbody>"; $error_tab = array(20 => 'Invalid nonce size', 21 => 'Invalid job id', 22 => 'Duplicate share', 23 => 'Invalid time rolling', 24 => 'Invalid extranonce2 size', 25 => 'Invalid share', 26 => 'Low difficulty share'); $versions = dbolist("select version, count(*) as c, sum(subscribe) as s from workers where algo=:algo group by version order by c desc", array(':algo' => $algo));
echo "<td align=right style='font-size: .8em;'>{$pool_ttf}</td>"; echo "<td align=right style='font-size: .8em;'>{$pool_hash}</td>"; echo "<td align=right style='font-size: .8em;'><b>{$btcmhd}</b></td>"; echo "</tr>"; } show_orders($allorders, $services); show_services($services); echo "</table><br>"; ///////////////////////////////////////////////////////////////////////////////////////////// $target = yaamp_hashrate_constant($algo); $interval = yaamp_hashrate_step(); $delay = time() - $interval; $version = 'NiceHash/1.0.0'; $hashrate = dboscalar("select sum(difficulty) * {$target} / {$interval} / 1000 from shares where valid and time>{$delay} and\n\tworkerid in (select id from workers where algo=:algo and version='{$version}')", array(':algo' => $algo)); $invalid = dboscalar("select sum(difficulty) * {$target} / {$interval} / 1000 from shares where not valid and time>{$delay} and\n\tworkerid in (select id from workers where algo=:algo and version='{$version}')", array(':algo' => $algo)); $count = getdbocount('db_workers', "algo=:algo and version='{$version}'", array(':algo' => $algo)); $percent = $total_nicehash && $hashrate ? round($hashrate * 100 / $total_nicehash / 1000000000, 2) . '%' : ''; $hashrate = $hashrate ? Itoa2($hashrate) . 'h/s' : ''; $version = substr($version, 0, 30); $total_nicehash = round($total_nicehash, 3); echo "Total Nicehash: <b>{$total_nicehash} Gh/s</b> *** yaamp: "; echo "<b>{$hashrate}</b> "; echo "{$count} workers "; echo "{$percent} "; echo "</div></div><br>"; ////////////////////////////////////////////////////////////////////////////////////////////////// function show_services(&$services, $btcmhd = 0) { if (!controller()->admin || !$services) { return; }
echo "<div class='main-left-title'>{$title}</div>"; echo "<div class='main-left-inner'>"; } $algo = user()->getState('yaamp-algo'); $total_rate = yaamp_pool_rate(); $total_rate_d = $total_rate ? Itoa2($total_rate) . 'h/s' : ''; if ($algo == 'all') { $list = getdbolist('db_coins', "enable and visible order by index_avg desc"); } else { $list = getdbolist('db_coins', "enable and visible and algo=:algo order by index_avg desc", array(':algo' => $algo)); } $count = count($list); if ($algo == 'all') { $worker = getdbocount('db_workers'); } else { $worker = getdbocount('db_workers', "algo=:algo", array(':algo' => $algo)); } $services = getdbolist('db_services', "algo=:algo order by price desc", array(':algo' => $algo)); //////////////////////////////////////////////////////////////////////////////////// WriteBoxHeader("Mining {$count} coins at {$total_rate_d} * with {$worker} miners ({$algo})"); //echo "<table class='dataGrid2'>"; showTableSorter('maintable3'); echo "<thead>"; echo "<tr>"; echo "<th></th>"; echo "<th>Name</th>"; echo "<th align=right>Amount</th>"; echo "<th align=right>Diff</th>"; echo "<th align=right>Block</th>"; echo "<th align=right>TTF*</th>"; echo "<th align=right>Hash**</th>";
$algo_norm = yaamp_get_algo_norm($algo); $price = controller()->memcache->get_database_scalar("current_price-{$algo}", "select price from hashrate where algo=:algo order by time desc limit 1", array(':algo' => $algo)); $norm = $price * $algo_norm; $norm = take_yaamp_fee($norm, $algo); $algos[] = array($norm, $algo); } function cmp($a, $b) { return $a[0] < $b[0]; } usort($algos, 'cmp'); foreach ($algos as $item) { $norm = $item[0]; $algo = $item[1]; $count1 = getdbocount('db_jobs', "algo=:algo and ready and active", array(':algo' => $algo)); $count2 = getdbocount('db_jobs', "algo=:algo and ready", array(':algo' => $algo)); $total = yaamp_pool_rate($algo); $hashrate = yaamp_pool_rate_rentable($algo); $hashrate_jobs = yaamp_rented_rate($algo); $hashrate = min($total, $hashrate); $hashrate_jobs = min($hashrate, $hashrate_jobs); $available = $hashrate - $hashrate_jobs; $percent = $hashrate_jobs && $hashrate ? '(' . round($hashrate_jobs / $hashrate * 100, 1) . '%)' : ''; $hashrate_jobs = $hashrate_jobs > 0 ? Itoa2($hashrate_jobs) . 'h/s' : ''; $available = $available > 0 ? Itoa2($available) . 'h/s' : ''; $hashrate = $hashrate > 0 ? Itoa2($hashrate) . 'h/s' : ''; $total = $total > 0 ? Itoa2($total) . 'h/s' : ''; $renting = controller()->memcache->get_database_scalar("current_renting-{$algo}", "select rent from hashrate where algo=:algo order by time desc limit 1", array(':algo' => $algo)); $renting = mbitcoinvaluetoa($renting); if ($defaultalgo == $algo) { echo "<tr style='cursor: pointer; background-color: #e0d3e8;' onclick='javascript:select_algo(\"{$algo}\")'>";
echo "<tr>"; echo "<th align=left>Summary</th>"; echo "<th align=right>Miners</th>"; echo "<th align=right>Shares</th>"; echo "<th align=right width=80>Hashrate*</th>"; echo "<th align=right width=60>Reject*</th>"; echo "</tr>"; echo "</thead>"; foreach (yaamp_get_algos() as $algo) { // debuglog($algo); $user_rate1 = yaamp_user_rate($user->id, $algo); $user_rate1_bad = yaamp_user_rate_bad($user->id, $algo); $percent_bad = $user_rate1 + $user_rate1_bad ? $user_rate1_bad * 100 / ($user_rate1 + $user_rate1_bad) : 0; $percent_bad = $percent_bad ? round($percent_bad, 1) . '%' : ''; $user_rate1 = $user_rate1 ? Itoa2($user_rate1) . 'h/s' : '-'; $minercount = getdbocount('db_workers', "userid={$user->id} and algo=:algo", array(':algo' => $algo)); $user_shares = controller()->memcache->get_database_scalar("wallet_user_shares-{$user->id}-{$algo}", "select sum(difficulty) from shares where valid and algo=:algo and userid={$user->id}", array(':algo' => $algo)); if (!$user_shares && !$minercount) { continue; } $total_shares = controller()->memcache->get_database_scalar("wallet_total_shares-{$algo}", "select sum(difficulty) from shares where valid and algo=:algo", array(':algo' => $algo)); if (!$total_shares) { continue; } $percent_shares = round($user_shares * 100 / $total_shares, 4); echo "<tr class='ssrow'>"; echo "<td><b>{$algo}</b></td>"; echo "<td align=right>{$minercount}</td>"; echo "<td align=right width=100>{$percent_shares}%</td>"; echo "<td align=right width=100><b>{$user_rate1}</b></td>"; echo "<td align=right>{$percent_bad}</td>";