diff --git a/pool/page_blocks.php b/pool/page_blocks.php
index bc71d2b2..cff64aa6 100644
--- a/pool/page_blocks.php
+++ b/pool/page_blocks.php
@@ -69,6 +69,182 @@ function pctcolour($pct)
return array($fg, $bg);
}
#
+function statstable($poolfee, $ans, $data)
+{
+ if ($ans['STATUS'] != 'ok' or !isset($ans['s_rows']) or $ans['s_rows'] < 1)
+ return '';
+
+ $pg = '
Block Statistics
';
+ $pg .= "\n";
+ $pg .= "";
+ $pg .= "Description | ";
+ $pg .= "Time | ";
+ $pg .= "MeanTx% | ";
+ $pg .= "Diff% | ";
+ $pg .= "Mean% | ";
+ $pg .= "CDF[Erl] | ";
+ $pg .= "Luck% | ";
+
+ $tt = "";
+ $tt .= '?';
+ $tt .= "";
+ $tt .= "Pool PPS%: MeanTx% * Luck% minus the pool fee";
+
+ $pg .= "${tt}PPS% | ";
+ $pg .= "
\n";
+
+ $since = $data['info']['lastblock'];
+
+ $count = $ans['s_rows'];
+ for ($i = 0; $i < $count; $i++)
+ {
+ if (($i % 2) == 0)
+ $row = 'even';
+ else
+ $row = 'odd';
+
+ $desc = $ans['s_desc:'.$i];
+ $age = daysago($since - $ans['s_prevcreatedate:'.$i]);
+ $diff = number_format(100 * $ans['s_diffratio:'.$i], 2);
+ $mean = number_format(100 * $ans['s_diffmean:'.$i], 2);
+
+ $cdferl = $ans['s_cdferl:'.$i];
+ list($fg, $bg) = erlcolour($cdferl);
+ $cdferldsp = "".number_format($cdferl, 4).'';
+ $bg = " bgcolor=$bg";
+
+ $luck = number_format(100 * $ans['s_luck:'.$i], 2);
+ $txm = number_format(100 * $ans['s_txmean:'.$i], 1);
+
+ $o = number_format((100 - $poolfee) * $ans['s_txmean:'.$i] / $ans['s_diffmean:'.$i], 2);
+
+ $pg .= "";
+ $pg .= "$desc Blocks | ";
+ $pg .= "$age | ";
+ $pg .= "$txm% | ";
+ $pg .= "$diff% | ";
+ $pg .= "$mean% | ";
+ $pg .= "$cdferldsp | ";
+ $pg .= "$luck% | ";
+ $pg .= "$o% | ";
+ $pg .= "
\n";
+ }
+ $pg .= "
\n";
+ return $pg;
+}
+#
+function monthtable($poolfee, $ans, $limit)
+{
+ if ($ans['STATUS'] != 'ok' or !isset($ans['rows']) or $ans['rows'] < 1)
+ return '';
+
+ $nowmon = intval(gmdate('n', $ans['STAMP']));
+ $nowyyyy = intval(gmdate('Y', $ans['STAMP']));
+
+ $pg = 'Monthly Statistics
';
+ $pg .= "\n";
+ $pg .= "";
+ $pg .= "UTC Month | ";
+ $pg .= "Pool Avg | ";
+ $pg .= "Blocks | ";
+ $pg .= "Expected | ";
+ $pg .= "Mean Diff% | ";
+ $pg .= "MeanTx% | ";
+ $pg .= "Luck% | ";
+ $pg .= "PPS% | ";
+ $pg .= "
\n";
+
+ $pg .= '';
+ $count = $ans['rows'];
+ $rout = $bcount = $bcd = $bmon = $byyyy = $bdiffacc = $bdiffratio = $btxn = 0;
+ $skipped = false;
+ for ($i = 0; $i < $count; $i++)
+ {
+ $conf = $ans['confirmed:'.$i];
+ // Skip leading orphans
+ if (!$skipped && ($conf == 'O' || $conf == 'R'))
+ continue;
+
+ $skipped = true;
+
+ // If anything is missing, skip this table
+ $diffratio = $ans['diffratio:'.$i];
+ if ($diffratio == '?')
+ break;
+
+ $cd = $ans['firstcreatedate:'.$i];
+ $mon = intval(gmdate('n', $cd));
+ $yyyy = intval(gmdate('Y', $cd));
+ // all orphans after a block must be included with that block
+ if (($conf != 'O' && $conf != 'R')
+ && ($mon != $bmon || $yyyy != $byyyy))
+ {
+ if ($bcount != 0)
+ {
+ if (($rout % 2) == 0)
+ $row = 'even';
+ else
+ $row = 'odd';
+
+ if ($bmon == $nowmon && $byyyy == $nowyyyy)
+ $dots = '…';
+ else
+ $dots = '';
+
+ $elap = $bcd - $cd;
+ $phr = ($bdiffacc / $elap) * pow(2, 32);
+ $phrdsp = siprefmt($phr);
+
+ $name = gmdate('Y M', $bcd);
+ $exc = number_format($bdiffratio, 2);
+ if ($bdiffratio > $bcount)
+ $bcol = 'darkred';
+ else
+ $bcol = 'darkgreen';
+ $md = number_format(100 * $bdiffratio / $bcount, 2);
+ $mr = number_format(100 * $btxn / $bcount, 2);
+ $ml = number_format(100 * $bcount / $bdiffratio, 2);
+ $oa = (100 - $poolfee) * ($bcount / $bdiffratio) * ($btxn / $bcount);
+ $odsp = number_format($oa, 2);
+
+ $pg .= "";
+ $pg .= "$name$dots | ";
+ $pg .= "${phrdsp}Hs | ";
+ $pg .= "$bcount | ";
+ $pg .= "$exc | ";
+ $pg .= "$md% | ";
+ $pg .= "$mr% | ";
+ $pg .= "$ml% | ";
+ $pg .= "$odsp% | ";
+ $pg .= "
\n";
+
+ $rout++;
+ }
+ if ($rout > $limit)
+ break;
+
+ $bcd = $cd;
+ $bmon = $mon;
+ $byyyy = $yyyy;
+ $bcount = $bdiffacc = $bdiffratio = $btxn = 0;
+ }
+ $bdiffratio += floatval($ans['diffratio:'.$i]);
+ $bdiffacc += floatval($ans['diffacc:'.$i]);
+
+ if ($conf != 'O' and $conf != 'R')
+ {
+ $height = $ans['height:'.$i];
+ $reward = floatval($ans['reward:'.$i]);
+ $re = 5000000000.0 * pow(0.5, floor($height / 210000.0));
+ $btxn += $reward / $re;
+ $bcount++;
+ }
+ }
+ $pg .= '
';
+
+ return $pg;
+}
+#
function doblocks($data, $user)
{
$blink = ' 0)
- {
- $pg .= 'Block Statistics
';
- $pg .= "\n";
- $pg .= "";
- $pg .= "Description | ";
- $pg .= "Time | ";
- $pg .= "MeanTx% | ";
- $pg .= "Diff% | ";
- $pg .= "Mean% | ";
- $pg .= "CDF[Erl] | ";
- $pg .= "Luck% | ";
-
- $tt = "";
- $tt .= '?';
- $tt .= "";
- $tt .= "Pool PPS%: MeanTx% * Luck% minus the pool fee";
-
- $pg .= "${tt}PPS% | ";
- $pg .= "
\n";
-
- $since = $data['info']['lastblock'];
-
- $count = $ans['s_rows'];
- for ($i = 0; $i < $count; $i++)
- {
- if (($i % 2) == 0)
- $row = 'even';
- else
- $row = 'odd';
-
- $desc = $ans['s_desc:'.$i];
- $age = daysago($since - $ans['s_prevcreatedate:'.$i]);
- $diff = number_format(100 * $ans['s_diffratio:'.$i], 2);
- $mean = number_format(100 * $ans['s_diffmean:'.$i], 2);
-
- $cdferl = $ans['s_cdferl:'.$i];
- list($fg, $bg) = erlcolour($cdferl);
- $cdferldsp = "".number_format($cdferl, 4).'';
- $bg = " bgcolor=$bg";
-
- $luck = number_format(100 * $ans['s_luck:'.$i], 2);
- $txm = number_format(100 * $ans['s_txmean:'.$i], 1);
-
- $o = number_format((100 - $poolfee) * $ans['s_txmean:'.$i] / $ans['s_diffmean:'.$i], 2);
-
- $pg .= "";
- $pg .= "$desc Blocks | ";
- $pg .= "$age | ";
- $pg .= "$txm% | ";
- $pg .= "$diff% | ";
- $pg .= "$mean% | ";
- $pg .= "$cdferldsp | ";
- $pg .= "$luck% | ";
- $pg .= "$o% | ";
- $pg .= "
\n";
- }
- $pg .= "
\n";
- }
-
- if ($ans['STATUS'] == 'ok' and isset($ans['rows']) and $ans['rows'] > 0)
- {
- $pg .= '
Monthly Statistics
';
- $pg .= "\n";
- $pg .= "";
- $pg .= "UTC Month | ";
- $pg .= "Blocks | ";
- $pg .= "Expected | ";
- $pg .= "Mean Diff% | ";
- $pg .= "MeanTx% | ";
- $pg .= "Luck% | ";
- $pg .= "PPS% | ";
- $pg .= "
\n";
-
- $pg .= '';
- $count = $ans['rows'];
- $rout = $bcount = $bcd = $bmon = $byyyy = $bdiffratio = $btxn = 0;
- $skipped = false;
- for ($i = 0; $i < $count; $i++)
- {
- $conf = $ans['confirmed:'.$i];
- // Skip leading orphans
- if (!$skipped && ($conf == 'O' || $conf == 'R'))
- continue;
-
- $skipped = true;
-
- // If anything is missing, skip this table
- $diffratio = $ans['diffratio:'.$i];
- if ($diffratio == '?')
- break;
-
- $cd = $ans['firstcreatedate:'.$i];
- $mon = intval(gmdate('n', $cd));
- $yyyy = intval(gmdate('Y', $cd));
- // all orphans after a block must be included with that block
- if (($conf != 'O' && $conf != 'R')
- && ($mon != $bmon || $yyyy != $byyyy))
- {
- if ($bcount != 0)
- {
- if (($rout % 2) == 0)
- $row = 'even';
- else
- $row = 'odd';
-
- $name = gmdate('Y M', $bcd);
- $exc = number_format($bdiffratio, 2);
- $md = number_format(100 * $bdiffratio / $bcount, 2);
- $mr = number_format(100 * $btxn / $bcount, 2);
- $ml = number_format(100 * $bcount / $bdiffratio, 2);
- $o = number_format((100 - $poolfee) * ($bcount / $bdiffratio) * ($btxn / $bcount), 2);
-
- $pg .= "";
- $pg .= "$name | ";
- $pg .= "$bcount | ";
- $pg .= "$exc | ";
- $pg .= "$md% | ";
- $pg .= "$mr% | ";
- $pg .= "$ml% | ";
- $pg .= "$o% | ";
- $pg .= "
\n";
-
- $rout++;
- }
- if ($rout > 7)
- break;
-
- $bcd = $cd;
- $bmon = $mon;
- $byyyy = $yyyy;
- $bcount = 0;
- $bdiffratio = 0;
- $btxn = 0;
- }
- $bdiffratio += floatval($ans['diffratio:'.$i]);
+ $pg .= statstable($poolfee, $ans, $data);
- if ($conf != 'O' and $conf != 'R')
- {
- $height = $ans['height:'.$i];
- $reward = floatval($ans['reward:'.$i]);
- $re = 5000000000.0 * pow(0.5, floor($height / 210000.0));
- $btxn += $reward / $re;
- $bcount++;
- }
- }
- $pg .= '
';
- }
+ $pg .= monthtable($poolfee, $ans, 7);
if ($ans['STATUS'] == 'ok')
{