function doshifts($data, $user) { $ans = getShifts($user); $pg = "Click <a href='#payoutmark'>here</a> to jump to the start of the last payout<br><br>"; $pg .= "<table callpadding=0 cellspacing=0 border=0>\n"; $pg .= "<tr class=title>"; $pg .= "<td class=dl>Shift</td>"; $pg .= "<td class=dl>Start UTC</td>"; $pg .= "<td class=dr>Length</td>"; $pg .= "<td class=dr>Your Diff</td>"; $pg .= "<td class=dr>Inv Diff</td>"; $pg .= "<td class=dr>Avg Hs</td>"; $pg .= "<td class=dr>Shares</td>"; $pg .= "<td class=dr>Avg Share</td>"; $pg .= "<td class=dr>Rewards</td>"; $pg .= "<td class=dr>Rewarded<span class=st1>*</span></td>"; $pg .= "<td class=dr>PPS%</td>"; $pg .= "</tr>\n"; if ($ans['STATUS'] != 'ok' || !isset($ans['prefix_all'])) { $pg = '<h1>Shifts</h1>' . $pg; } else { $pre = $ans['prefix_all']; $count = $ans['rows']; $pg = '<h1>Last ' . ($count + 1) . ' Shifts</h1>' . $pg; for ($i = 0; $i < $count; $i++) { $u = ''; $mark = ''; if (isset($ans['lastpayoutstart:' . $i]) && $ans['lastpayoutstart:' . $i] != '') { $u = 'u'; $mark = '<a name=payoutmark></a>'; } if ($i % 2 == 0) { $row = "even{$u}"; } else { $row = "odd{$u}"; } $pg .= "<tr class={$row}>"; $shifname = $ans['shift:' . $i]; $shif = preg_replace(array('/^.* to /', '/^.*fin: /'), '', $shifname); $ablock = false; if (preg_match('/to.*Block.* fin/', $shifname) == 1) { $ablock = true; } else { $shifex = $ans['endmarkextra:' . $i]; if (preg_match('/Block .* fin/', $shifex) == 1) { $ablock = true; } } if ($ablock === true) { $btc = ' <img src=/BTCSym.png border=0>'; } else { $btc = ''; } $pg .= "<td class=dl>{$shif}{$btc}{$mark}</td>"; $start = $ans['start:' . $i]; $pg .= '<td class=dl>' . utcd($start, true) . '</td>'; $nd = $ans['end:' . $i]; $elapsed = $nd - $start; $pg .= '<td class=dr>' . howmanyhrs($elapsed) . '</td>'; $diffacc = $ans[$pre . 'diffacc:' . $i]; $pg .= '<td class=dr>' . difffmt($diffacc) . '</td>'; $diffinv = $ans[$pre . 'diffinv:' . $i]; $pg .= '<td class=dr>' . difffmt($diffinv) . '</td>'; $hr = $diffacc * pow(2, 32) / $elapsed; $pg .= '<td class=dr>' . dsprate($hr) . '</td>'; $shareacc = $ans[$pre . 'shareacc:' . $i]; $pg .= '<td class=dr>' . difffmt($shareacc) . '</td>'; if ($shareacc > 0) { $avgsh = $diffacc / $shareacc; } else { $avgsh = 0; } $pg .= '<td class=dr>' . number_format($avgsh, 2) . '</td>'; $pg .= '<td class=dr>' . $ans['rewards:' . $i] . '</td>'; $ppsr = (double) $ans['ppsrewarded:' . $i]; if ($ppsr > 0) { $ppsd = sprintf('%.5f', $ppsr); } else { $ppsd = '0'; } $pg .= "<td class=dr>{$ppsd}</td>"; $ppsv = (double) $ans['ppsvalue:' . $i]; if ($ppsv > 0) { $pgot = number_format(100.0 * $ppsr / $ppsv, 2) . '%'; } else { $pgot = '?'; } $pg .= "<td class=dr>{$pgot}</td>"; $pg .= "</tr>\n"; } } $pg .= "</table>\n"; $pg .= "<span class=st1>*</span> The Rewarded value unit is satoshis per 1diff share<br>"; return $pg; }
function dompayouts($data, $user) { $pg = '<h1>Mining Rewards</h1>'; $ans = getMPayouts($user); $pg .= "The rewards you've earned for each block the pool has found.<br>"; $pg .= 'See the '; $pg .= makeLink('payments'); $pg .= "Payments</a> page for the payments you've been sent.<br><br>"; $pg .= "<table callpadding=0 cellspacing=0 border=0>\n"; $pg .= "<tr class=title>"; $pg .= "<td class=dr>Block</td>"; $pg .= "<td class=dr>Block UTC</td>"; $pg .= "<td class=dr>Miner Reward</td>"; $pg .= "<td class=dr>N Diff</td>"; $pg .= "<td class=dr>N Range</td>"; $pg .= "<td class=dr>Pool N Avg</td>"; $pg .= "<td class=dr>Your %</td>"; $pg .= "<td class=dr>Your N Diff</td>"; $pg .= "<td class=dr>Your N Avg</td>"; $pg .= "<td class=dr>Your BTC</td>"; $pg .= "</tr>\n"; if ($ans['STATUS'] == 'ok') { $totamt = 0; $count = $ans['rows']; for ($i = 0; $i < $count; $i++) { if ($i % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tr class={$row}>"; $pg .= '<td class=dr>' . $ans['height:' . $i] . '</td>'; $pg .= '<td class=dr>' . gmdate('j/M H:i', $ans['blockcreatedate:' . $i]) . '</td>'; $pg .= '<td class=dr>' . btcfmt($ans['minerreward:' . $i]) . '</td>'; $diffused = $ans['diffused:' . $i]; $pg .= '<td class=dr>' . difffmt($diffused) . '</td>'; $elapsed = $ans['elapsed:' . $i]; $pg .= '<td class=dr>' . howmanyhrs($elapsed) . '</td>'; $phr = $diffused * pow(2, 32) / $elapsed; $pg .= '<td class=dr>' . siprefmt($phr) . 'Hs</td>'; $diffacc = $ans['diffacc:' . $i]; $ypct = $diffacc * 100 / $diffused; $pg .= '<td class=dr>' . number_format($ypct, 2) . '%</td>'; $pg .= '<td class=dr>' . difffmt($diffacc) . '</td>'; $hr = $diffacc * pow(2, 32) / $elapsed; $pg .= '<td class=dr>' . dsprate($hr) . '</td>'; $amount = $ans['amount:' . $i]; $totamt += $amount; $pg .= '<td class=dr>' . btcfmt($amount) . '</td>'; $pg .= "</tr>\n"; } if ($count > 1) { if ($i % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tr class={$row}>"; $pg .= '<td class=dr>Total:</td>'; $pg .= '<td class=dl colspan=8></td>'; $pg .= '<td class=dr>' . btcfmt($totamt) . '</td>'; $pg .= "</tr>\n"; } } $pg .= "</table>\n"; return $pg; }
function pertotal($offset, $totshare, $totdiff, $totinvalid, $totrate, $blockacc, $blockreward) { $pg = ''; $totrate = dsprate($totrate); if ($offset % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tfoot><tr class={$row}><td class=dl>Total:</td>"; $pg .= "<td class=dl> </td>"; $shareacc = number_format($totshare, 0); $pg .= "<td class=dr>{$shareacc}</td>"; $diffacc = number_format($totdiff, 0); $pg .= "<td class=dr>{$diffacc}</td>"; $dtot = $totdiff + $totinvalid; if ($dtot > 0) { $rej = number_format(100.0 * $totinvalid / $dtot, 3); } else { $rej = '0'; } $pg .= "<td class=dr>{$rej}%</td>"; if ($blockacc <= 0) { $blkpct = ' '; } else { $blkpct = number_format(100.0 * $totdiff / $blockacc, 3) . '%'; } $pg .= "<td class=dr>{$blkpct}</td>"; $pg .= "<td class=dr>{$totrate}</td>"; $pg .= "</td><td colspan=2 class=dl></td></tr></tfoot>\n"; return $pg; }
function pgtop($info, $dotop, $user, $douser) { global $site_title, $loginfailed; $phr = '?THs'; $plb = '?'; $nlb = '?'; $pac = '0'; $per = '0'; $perset = false; $uhr = '?GHs'; $u1hr = ''; if ($info !== false) { $now = time(); if (isset($info['p_hashrate5m'])) { $phr = $info['p_hashrate5m']; } // if (isset($info['p_elapsed']) // and isset($info['p_hashrate1hr']) // and $info['p_elapsed'] > 3600) // $phr = $info['p_hashrate1hr']; if ($phr == '?') { $phr = '?THs'; } else { $phr = dsprate($phr); } if (isset($info['lastblock'])) { $plb = $info['lastblock']; if ($plb != '?') { $sec = $now - $plb; if ($sec < 60) { $plb = $sec . 's'; } else { if ($sec < 3600) { $min = round($sec / 60); $plb = $min . 'm'; } else { $min = round($sec / 60); $hr = round($min / 60); $min -= $hr * 60; $plb = $hr . 'h'; if ($min > 0) { $plb .= ' ' . $min . 'm'; } } } } } if (isset($info['lastblockheight'])) { $plb .= ' (' . $info['lastblockheight'] . ')'; } if (isset($info['lastbc'])) { $nlb = $info['lastbc']; if ($nlb != '?') { $sec = $now - $nlb; $min = round($sec / 60); $nlb = $min . 'm'; $s = $sec - $min * 60; if ($s > 0) { $nlb .= " {$s}s"; } } } if (isset($info['lastheight'])) { $nlb .= ' (' . $info['lastheight'] . ')'; } if (isset($info['blockacc'])) { $acc = $info['blockacc']; $pac = number_format($acc, 0); if (isset($info['currndiff'])) { $cur = $info['currndiff']; if ($cur != '?' && $cur > 0.0) { $pac .= ' (' . number_format(100.0 * $acc / $cur, 2) . '%)'; } } } if (isset($info['blockshareinv'])) { $shinv = $info['blockshareinv']; $per = siprefmt($shinv, 1); $perset = true; if (isset($info['blockshareacc'])) { $shacc = $info['blockshareacc']; if ($shacc + $shinv > 0) { $amt = 100.0 * $shinv / ($shacc + $shinv); if (round($amt, 2) > 9.99) { $per .= ' (' . number_format($amt, 1) . '%)'; } else { $per .= ' (' . number_format($amt, 2) . '%)'; } } } } if (isset($info['blockerr'])) { if ($perset == false) { $per = ''; } else { $per .= ' · '; } $inv = $info['blockerr']; $per .= siprefmt($inv, 1); if (isset($info['blockacc'])) { $acc = $info['blockacc']; if ($acc + $inv > 0) { $amt = 100.0 * $inv / ($acc + $inv); if (round($amt, 2) > 9.99) { $per .= ' (' . number_format($amt, 1) . '%)'; } else { $per .= ' (' . number_format($amt, 2) . '%)'; } } } } if (isset($info['u_hashrate5m'])) { $uhr = $info['u_hashrate5m']; if ($uhr == '?') { $uhr = '?GHs'; } else { $uhr = dsprate($uhr); } } if (isset($info['u_hashrate1hr']) and isset($info['u_elapsed']) and $info['u_elapsed'] > 3600) { $u1hr = $info['u_hashrate1hr']; if ($u1hr == '?') { $u1hr = ''; } else { $u1hr = '/' . dsprate($u1hr); // Remove the first XHs if they are the same if (substr($u1hr, -3) == substr($uhr, -3)) { $uhr = substr($uhr, 0, -3); } } } } $top = "<noscript><div class=jst id=jst> Javascript isn't enabled."; $top .= " You need to enable javascript to use"; $top .= " the {$site_title} web site.</div></noscript>"; if ($loginfailed === true) { $top .= '<div class=accwarn>Login Failed</div>'; } if (isset($info['u_nopayaddr'])) { $top .= '<div class=accwarn>Please set a payout address on your account!</div>'; } if (isset($info['u_noemail'])) { $top .= '<div class=accwarn>Please set an email address on your account!</div>'; } $top .= '<div class=topd>'; if ($dotop === true) { $lh = ''; $ls = ''; $lw = ''; if (isset($info['now']) && isset($info['lastsh']) && isset($info['lasthb']) && isset($info['lastwi'])) { $lsn = $info['now'] - $info['lastsh']; $lhn = $info['now'] - $info['lasthb']; $lwn = $info['now'] - $info['lastwi']; if ($lsn < 8) { $lsc = 'green.png'; } else { if ($lsn < 10) { $lsc = 'orange.png'; } else { $lsc = 'red.png'; } } if ($lhn < 5) { $lhc = 'green.png'; } else { if ($lhn < 10) { $lhc = 'orange.png'; } else { $lhc = 'red.png'; } } if ($lwn < 36) { $lwc = 'green.png'; } else { if ($lwn < 46) { $lwc = 'orange.png'; } else { $lwc = 'red.png'; } } $img1 = '<img border=0 src=/'; $img2 = '>'; $ls = $img1 . $lsc . $img2; $lh = $img1 . $lhc . $img2; $lw = $img1 . $lwc . $img2; } if (!isset($info['users'])) { $info['users'] = '?'; } if (!isset($info['workers'])) { $info['workers'] = '?'; } $top .= '<table cellpadding=0 cellspacing=0 border=0 width=100%><tr><td>'; $top .= '<table cellpadding=1 cellspacing=0 border=0>'; $top .= "<tr><td class=topdes>{$lh}</td></tr>"; $top .= "<tr><td class=topdes>{$ls}</td></tr>"; $top .= "<tr id=mini0><td class=topdes>{$lw}</td></tr></table>"; $top .= '</td><td>'; $top .= '<table cellpadding=1 cellspacing=0 border=0 width=100%>'; $top .= '<tr><td class=topdes>CKPool: </td>'; $top .= "<td class=topdat> {$phr}</td></tr>"; $top .= '<tr><td class=topdes>Shares: </td>'; $top .= "<td class=topdat> {$pac}</td></tr>"; $top .= '<tr id=mini1><td class=topdes>Invalids: </td>'; $top .= "<td class=topdat> {$per}</td></tr></table>"; $top .= '</td><td>'; $top .= '<table cellpadding=1 cellspacing=0 border=0 width=100%>'; $top .= '<tr><td class=topdes>Last </td>'; $top .= '<td class=topdesl>Block</td></tr>'; $top .= '<tr><td class=topdes>Pool: </td>'; $top .= "<td class=topdat> {$plb}</td></tr>"; $top .= '<tr id=mini2><td class=topdes>Network: </td>'; $top .= "<td class=topdat> {$nlb}</td></tr></table>"; $top .= '</td><td id=mini3>'; $top .= '<table cellpadding=1 cellspacing=0 border=0 width=100%>'; $top .= '<tr><td class=topdes>Users: </td>'; $top .= '<td class=topdat> ' . $info['users'] . '</td></tr>'; $top .= '<tr><td class=topdes>Workers: </td>'; $top .= '<td class=topdat> ' . $info['workers'] . '</td></tr></table>'; $top .= '</td><td>'; if ($douser === true) { $top .= '<span class=login>'; list($who, $whoid) = validate(); if ($who == false) { $top .= '<table cellpadding=0 cellspacing=0 border=0><tr><td>'; $top .= '<a href="https://' . $_SERVER['SERVER_NAME']; $top .= '/index.php?Register=1">Login<br>Register</a>'; $top .= '</td></tr></table>'; } else { $extra = ''; if (strlen($who) > 12) { $who = substr($who, 0, 12); $extra = '…'; } $top .= "<span class=topwho>" . htmlspecialchars($who) . "{$extra} </span>"; $top .= makeForm(''); $top .= "<input type=submit name=Logout value=Logout></form>"; $top .= "<br><span class=topdes>Hash Rate:</span>"; $top .= "<span class=topdat>{$uhr}{$u1hr}</span><br>"; } $top .= '</span>'; } $top .= '</td></tr></table>'; } else { $top .= ' '; } $top .= '</div>'; return $top; }
function worktotal($offset, $totshare, $totdiff, $totshrate, $totinvalid, $totrate, $blockacc, $blockreward, $instances) { $pg = ''; $totshrate = dsprate($totshrate); $totrate = dsprate($totrate); # if ($instances >= 0) # $dspinst = " ($instances miners)"; # else $dspinst = ''; if ($offset % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tr class={$row}><td class=dl colspan=3>Total: {$offset}{$dspinst}</td>"; $shareacc = number_format($totshare, 0); $pg .= "<td class=dr>{$shareacc}</td>"; $diffacc = number_format($totdiff, 0); $pg .= "<td class=dr>{$diffacc}</td>"; $pg .= "<td class=dr>{$totshrate}</td><td> </td>"; $dtot = $totdiff + $totinvalid; if ($dtot > 0) { $rej = number_format(100.0 * $totinvalid / $dtot, 3); } else { $rej = '0'; } $pg .= "<td class=dr>{$rej}%</td>"; if ($blockacc <= 0) { $blkpct = ' '; } else { $blkpct = number_format(100.0 * $totdiff / $blockacc, 3) . '%'; } $pg .= "<td class=hid colspan=4 data-hid=dr> </td>"; $pg .= "<td class=dr>{$blkpct}</td>"; $pg .= "<td class=dr>{$totrate}</td></tr>\n"; return $pg; }
function dostats($data, $user) { $pg = '<h1>Pool Stats</h1>'; if (isset($data['info']) && $data['info'] !== false) { $info = $data['info']; $pe = false; if (isset($info['p_elapsed'])) { $dspel = howlongago($info['p_elapsed']); $pg .= "Pool Uptime: {$dspel}"; $pe = true; } if (isset($info['ckdb_elapsed'])) { if ($pe) { $pg .= ' '; } $dspel = howlongago($info['ckdb_elapsed']); $pg .= "CKDB Uptime: {$dspel}"; } $dsp = '?THs'; $dsp5m = '?THs'; $dsp1hr = '?THs'; $dsp24hr = '?THs'; if (isset($info['p_hashrate'])) { $hr = $info['p_hashrate']; if ($hr != '?') { $dsp = dsprate($hr); } } if (isset($info['p_hashrate5m'])) { $hr = $info['p_hashrate5m']; if ($hr != '?') { $dsp5m = dsprate($hr); } } if (isset($info['p_hashrate1hr'])) { $hr = $info['p_hashrate1hr']; if ($hr != '?') { $dsp1hr = dsprate($hr); } } if (isset($info['p_hashrate24hr'])) { $hr = $info['p_hashrate24hr']; if ($hr != '?') { $dsp24hr = dsprate($hr); } } $pg .= '<table cellpadding=8 cellspacing=0 border=0><tr>'; $pg .= "<td>Pool Hashrate: {$dsp}</td>"; $pg .= "<td>5m: {$dsp5m}</td>"; $pg .= "<td>1hr: {$dsp1hr}</td>"; $pg .= "<td>24hr: {$dsp24hr}</td>"; $pg .= '</tr></table><br>'; } $ans = getAllUsers($user); $pg .= "<table cellpadding=0 cellspacing=0 border=0>\n"; $pg .= '<thead><tr class=title>'; $pg .= '<td class=dl>Username</td>'; $pg .= '<td class=dr>Hash Rate 5m</td>'; $pg .= "</tr></thead>\n"; if ($ans['STATUS'] == 'ok') { $pg .= '<tbody>'; $all = array(); $count = $ans['rows']; for ($i = 0; $i < $count; $i++) { $all[] = array('username' => $ans['username:'******'userid' => $ans['userid:' . $i], 'u_hashrate5m' => $ans['u_hashrate5m:' . $i]); } usort($all, 'allusersort'); for ($i = 0; $i < $count; $i++) { if ($i % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tr class={$row}>"; $pg .= '<td class=dl>' . htmlspecialchars($all[$i]['username']) . '</td>'; $uhr = $all[$i]['u_hashrate5m']; if ($uhr == '?') { $dsp = '?GHs'; } else { $dsp = dsprate($uhr); } $pg .= "<td class=dr>{$dsp}</td>"; $pg .= "</tr>\n"; } $pg .= '</tbody>'; } $pg .= "</table>\n"; return $pg; }
function dopplns2($data, $user) { global $send_sep; $pg = '<h1>CKPool</h1>'; $blk = getparam('blk', true); if (nuem($blk)) { $tx = ''; # so can make a link $blkuse = getparam('blkuse', true); if (nuem($blkuse)) { $blkuse = ''; } else { $tx = 'y'; } $pg = '<br>' . makeForm('pplns2') . "\nBlock: <input type=text name=blk size=10 value='{$blkuse}'>\n Tx: <input type=text name=tx size=1 value='{$tx}'>\n Dust (Satoshi): <input type=text name=dust size=5 value='10000'>\n Fee (BTC): <input type=text name=fee size=5 value='0.0'>\n <input type=submit name=Calc value=Calc>\n</form>"; } else { $tx = getparam('tx', true); if (nuem($tx) || substr($tx, 0, 1) != 'y') { $dotx = false; } else { $dotx = true; } $flds = array('height' => $blk); $msg = msgEncode('pplns2', 'pplns2', $flds, $user); $rep = sendsockreply('pplns2', $msg, 4); if ($rep == false) { $ans = array(); } else { $ans = repDecode($rep); } if ($ans['ERROR'] != null) { return '<font color=red size=+1><br>' . $ans['STATUS'] . ': ' . $ans['ERROR'] . '</font>'; } if (!isset($ans['pplns_last'])) { return '<font color=red size=+1><br>Partial data returned</font>'; } $reward_sat = $ans['block_reward']; $miner_sat = $ans['miner_reward']; $ans['miner_sat'] = $miner_sat; $data = array('Block' => 'block', 'Block Status' => 'block_status', 'Block Hash' => 'block_hash', 'Block Reward (Satoshis)' => 'block_reward', 'Miner Reward (Satoshis)' => 'miner_sat', 'PPLNS Wanted' => '.diff_want', 'PPLNS Used' => '.diffacc_total', 'Elapsed Seconds' => ',pplns_elapsed', 'Elapsed Time' => '@pplns_elapsed', 'Users' => 'rows', 'Oldest Workinfoid' => 'begin_workinfoid', 'Oldest Time' => 'begin_stamp', 'Oldest Epoch' => 'begin_epoch', 'Block Workinfoid' => 'block_workinfoid', 'Block Time' => 'block_stamp', 'Block Epoch' => 'block_epoch', 'Newest Workinfoid' => 'end_workinfoid', 'Newest Share Time' => 'end_stamp', 'Newest Share Epoch' => 'end_epoch', 'Network Difficulty' => 'block_ndiff', 'PPLNS Factor' => 'diff_times', 'PPLNS Added' => 'diff_add', 'Accepted Share Count' => ',acc_share_count', 'Total Share Count' => ',total_share_count', 'ShareSummary Count' => ',ss_count', 'WorkMarkers Count' => ',wm_count', 'MarkerSummary Count' => ',ms_count'); $pg = '<br><a href=https://blockchain.info/block-height/'; $pg .= $ans['block'] . '>Blockchain ' . $ans['block'] . "</a><br>\n"; if (strlen($ans['marks_status']) > 0) { $pg .= '<br><span class=err>'; $msg = $ans['marks_status']; $pg .= str_replace(' ', ' ', $msg) . "</span><br>\n"; } if (strlen($ans['block_extra']) > 0) { $pg .= '<br><span class=err>'; $msg = $ans['block_status'] . ' - ' . $ans['block_extra']; $pg .= str_replace(' ', ' ', $msg) . "</span><br>\n"; } $pg .= "<br><table cellpadding=0 cellspacing=0 border=0>\n"; $pg .= '<tr class=title>'; $pg .= '<td class=dl>Name</td>'; $pg .= '<td class=dr>Value</td>'; $pg .= "</tr>\n"; $i = 0; foreach ($data as $dsp => $name) { if ($i++ % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tr class={$row}>"; $pg .= "<td class=dl>{$dsp}</td>"; switch ($name[0]) { case ',': case '.': case '@': $nm = substr($name, 1); $fmt = fmtdata($name[0], $ans[$nm]); break; default: $fmt = $ans[$name]; break; } if ($dsp == 'Elapsed Seconds') { $pl = $ans['diffacc_total'] * pow(2, 32) / $ans['pplns_elapsed']; $fmt .= ' ' . dsprate($pl); } $pg .= "<td class=dr>{$fmt}</td>"; $pg .= "</tr>\n"; } $pg .= "</table><br><table cellpadding=0 cellspacing=0 border=0>\n"; $pg .= '<tr class=title>'; $pg .= '<td class=dl>User</td>'; $pg .= '<td class=dr>Diff Accepted</td>'; $pg .= '<td class=dr>%</td>'; $pg .= '<td class=dr>Avg Hashrate</td>'; $pg .= '<td class=dr>BTC -0.9%</td>'; $pg .= '<td class=dr>Address</td>'; $pg .= "</tr>\n"; $diffacc_total = $ans['diffacc_total']; if ($diffacc_total == 0) { $diffacc_total = pow(10, 15); } $elapsed = $ans['pplns_elapsed']; $count = $ans['rows']; $tot_pay = 0; for ($i = 0; $i < $count; $i++) { $diffacc_user = $ans['diffacc:' . $i]; $diffacc_percent = number_format(100.0 * $diffacc_user / $diffacc_total, 3) . '%'; $avg_hash = number_format($diffacc_user / $elapsed * pow(2, 32), 0); $pay_sat = $ans['amount:' . $i]; $payaddress = $ans['payaddress:' . $i]; if ($i % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tr class={$row}>"; $pg .= '<td class=dl>' . $ans['user:'******'</td>'; $pg .= "<td class=dr>{$diffacc_user}</td>"; $pg .= "<td class=dr>{$diffacc_percent}</td>"; $pg .= "<td class=dr>{$avg_hash}</td>"; $pg .= '<td class=dr>' . btcfmt($pay_sat) . '</td>'; $pg .= "<td class=dr>{$payaddress}</td>"; $pg .= "</tr>\n"; $tot_pay += $pay_sat; } if ($i % 2 == 0) { $row = 'even'; } else { $row = 'odd'; } $pg .= "<tr class={$row}>"; $pg .= '<td class=dl colspan=3></td>'; $pg .= '<td class=dr></td>'; $pg .= '<td class=dr>' . btcfmt($tot_pay) . '</td>'; $pg .= '<td class=dr></td>'; $pg .= "</tr>\n"; $pg .= "</table>\n"; if ($dotx === true) { $pg .= calctx($ans, $count, $miner_sat, $diffacc_total); } } return $pg; }