Merge branch 'master' of bitbucket.org:ckolivas/ckpool
This commit is contained in:
commit
61281997cd
@ -90,6 +90,8 @@ Block: <input type=text name=blk size=10 value=''>
|
||||
$pg .= '<td class=dr>%</td>';
|
||||
$pg .= '<td class=dr>Base BTC</td>';
|
||||
$pg .= '<td class=dr>Avg Hashrate</td>';
|
||||
$pg .= '<td class=dr>BTC -1.5%</td>';
|
||||
$pg .= '<td class=dr>Address</td>';
|
||||
$pg .= "</tr>\n";
|
||||
|
||||
$diffacc_total = $ans['diffacc_total'];
|
||||
@ -98,12 +100,18 @@ Block: <input type=text name=blk size=10 value=''>
|
||||
$reward = $ans['block_reward'] / pow(10,8);
|
||||
$elapsed = $ans['pplns_elapsed'];
|
||||
$count = $ans['rows'];
|
||||
$tot_btc = 0;
|
||||
$tot_pay = 0;
|
||||
for ($i = 0; $i < $count; $i++)
|
||||
{
|
||||
$diffacc_user = $ans['diffacc_user:'.$i];
|
||||
$diffacc_percent = number_format(100.0 * $diffacc_user / $diffacc_total, 2).'%';
|
||||
$diffacc_btc = number_format($reward * $diffacc_user / $diffacc_total, 8);
|
||||
$base_btc = $reward * $diffacc_user / $diffacc_total;
|
||||
$diffacc_btc = number_format($base_btc, 8);
|
||||
$avg_hash = number_format($diffacc_user / $elapsed * pow(2,32), 0);
|
||||
$pay_btc = $base_btc * 0.985;
|
||||
$dsp_btc = number_format($pay_btc, 8);
|
||||
$payaddress = $ans['payaddress:'.$i];
|
||||
|
||||
if (($i % 2) == 0)
|
||||
$row = 'even';
|
||||
@ -116,8 +124,26 @@ Block: <input type=text name=blk size=10 value=''>
|
||||
$pg .= "<td class=dr>$diffacc_percent</td>";
|
||||
$pg .= "<td class=dr>$diffacc_btc</td>";
|
||||
$pg .= "<td class=dr>$avg_hash</td>";
|
||||
$pg .= "<td class=dr>$dsp_btc</td>";
|
||||
$pg .= "<td class=dr>$payaddress</td>";
|
||||
$pg .= "</tr>\n";
|
||||
|
||||
$tot_btc += $base_btc;
|
||||
$tot_pay += $pay_btc;
|
||||
}
|
||||
if (($i % 2) == 0)
|
||||
$row = 'even';
|
||||
else
|
||||
$row = 'odd';
|
||||
|
||||
$pg .= "<tr class=$row>";
|
||||
$pg .= '<td class=dl colspan=3></td>';
|
||||
$pg .= "<td class=dr>".number_format($tot_btc,8)."</td>";
|
||||
$pg .= '<td class=dr></td>';
|
||||
$pg .= '<td class=dr>'.number_format($tot_pay,8).'</td>';
|
||||
$pg .= '<td class=dr></td>';
|
||||
$pg .= "</tr>\n";
|
||||
|
||||
$pg .= "</table>\n";
|
||||
}
|
||||
|
||||
|
||||
44
sql/bs.sql
Normal file
44
sql/bs.sql
Normal file
@ -0,0 +1,44 @@
|
||||
SET SESSION AUTHORIZATION 'postgres';
|
||||
|
||||
DO $$
|
||||
DECLARE
|
||||
hi INT;
|
||||
hi0 INT;
|
||||
wi BIGINT;
|
||||
wi0 BIGINT;
|
||||
ssc INT;
|
||||
da BIGINT;
|
||||
BEGIN
|
||||
hi := 318177;
|
||||
|
||||
-- This will randomly choose between multiple blocks of the same height
|
||||
-- if we happen to orphan ourselves
|
||||
select workinfoid from blocks where height = hi
|
||||
and expirydate > '6666-06-01' into wi;
|
||||
IF NOT found THEN
|
||||
RAISE EXCEPTION 'Block % not found', hi;
|
||||
END IF;
|
||||
|
||||
select max(height) from blocks where height < hi into hi0;
|
||||
IF NOT found THEN
|
||||
wi0 := -1;
|
||||
ELSE
|
||||
select workinfoid from blocks where height = hi0
|
||||
and expirydate > '6666-06-01' into Wi0;
|
||||
END IF;
|
||||
|
||||
RAISE WARNING 'Block: %(%)', hi, wi;
|
||||
RAISE WARNING 'Previous block: %(%)', hi0, wi0;
|
||||
|
||||
select count(*) from sharesummary where workinfoid > wi0
|
||||
and workinfoid <= wi and complete = 'n' into ssc;
|
||||
|
||||
IF ssc > 0 THEN
|
||||
RAISE EXCEPTION 'Unaged sharesummary records: %', ssc;
|
||||
ELSE
|
||||
select sum(diffacc) from sharesummary where workinfoid > wi0
|
||||
and workinfoid <= wi into da;
|
||||
|
||||
RAISE WARNING 'diffacc: %', to_char(da::bigint, 'FM999,999,999,999,999,990');
|
||||
END IF;
|
||||
END $$;
|
||||
89
src/ckdb.c
89
src/ckdb.c
@ -47,7 +47,7 @@
|
||||
|
||||
#define DB_VLOCK "1"
|
||||
#define DB_VERSION "0.9"
|
||||
#define CKDB_VERSION DB_VERSION"-0.273"
|
||||
#define CKDB_VERSION DB_VERSION"-0.276"
|
||||
|
||||
#define WHERE_FFL " - from %s %s() line %d"
|
||||
#define WHERE_FFL_HERE __FILE__, __func__, __LINE__
|
||||
@ -2915,6 +2915,11 @@ static bool users_fill(PGconn *conn)
|
||||
item = k_unlink_head(users_free);
|
||||
DATA_USERS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "userid", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -3363,6 +3368,11 @@ static bool workers_fill(PGconn *conn)
|
||||
item = k_unlink_head(workers_free);
|
||||
DATA_WORKERS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "userid", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -3652,6 +3662,11 @@ static bool paymentaddresses_fill(PGconn *conn)
|
||||
item = k_unlink_head(paymentaddresses_free);
|
||||
DATA_PAYMENTADDRESSES(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "paymentaddressid", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -3759,6 +3774,11 @@ static bool payments_fill(PGconn *conn)
|
||||
item = k_unlink_head(payments_free);
|
||||
DATA_PAYMENTS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "userid", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -4383,7 +4403,7 @@ static bool workinfo_fill(PGconn *conn)
|
||||
|
||||
// TODO: select the data based on sharesummary since old data isn't needed
|
||||
// however, the ageing rules for workinfo will decide that also
|
||||
// keep the last block + current?
|
||||
// keep the last block + current? Rules will depend on payout scheme also
|
||||
sel = "select "
|
||||
// "workinfoid,poolinstance,transactiontree,merklehash,prevhash,"
|
||||
"workinfoid,poolinstance,merklehash,prevhash,"
|
||||
@ -4417,6 +4437,11 @@ static bool workinfo_fill(PGconn *conn)
|
||||
item = k_unlink_head(workinfo_free);
|
||||
DATA_WORKINFO(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "workinfoid", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -5229,6 +5254,11 @@ static bool sharesummary_fill(PGconn *conn)
|
||||
item = k_unlink_head(sharesummary_free);
|
||||
DATA_SHARESUMMARY(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
row->inserted = true;
|
||||
|
||||
PQ_GET_FLD(res, i, "userid", field, ok);
|
||||
@ -6045,6 +6075,11 @@ static bool blocks_fill(PGconn *conn)
|
||||
item = k_unlink_head(blocks_free);
|
||||
DATA_BLOCKS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "height", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -6320,6 +6355,11 @@ static bool miningpayouts_fill(PGconn *conn)
|
||||
item = k_unlink_head(miningpayouts_free);
|
||||
DATA_MININGPAYOUTS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "miningpayoutid", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -6582,6 +6622,11 @@ static bool auths_fill(PGconn *conn)
|
||||
item = k_unlink_head(auths_free);
|
||||
DATA_AUTHS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
PQ_GET_FLD(res, i, "authid", field, ok);
|
||||
if (!ok)
|
||||
break;
|
||||
@ -6817,6 +6862,11 @@ static bool poolstats_fill(PGconn *conn)
|
||||
item = k_unlink_head(poolstats_free);
|
||||
DATA_POOLSTATS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
row->stored = true;
|
||||
|
||||
PQ_GET_FLD(res, i, "poolinstance", field, ok);
|
||||
@ -7260,6 +7310,11 @@ static bool userstats_fill(PGconn *conn)
|
||||
item = k_unlink_head(userstats_free);
|
||||
DATA_USERSTATS(row, item);
|
||||
|
||||
if (everyone_die) {
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
|
||||
// Not a DB field
|
||||
row->poolinstance[0] = '\0';
|
||||
|
||||
@ -10012,18 +10067,28 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id,
|
||||
u_item = find_userid(miningpayouts->userid);
|
||||
K_RUNLOCK(users_free);
|
||||
if (u_item) {
|
||||
K_ITEM *pa_item;
|
||||
PAYMENTADDRESSES *pa;
|
||||
char *payaddress;
|
||||
|
||||
pa_item = find_paymentaddresses(miningpayouts->userid);
|
||||
if (pa_item) {
|
||||
DATA_PAYMENTADDRESSES(pa, pa_item);
|
||||
payaddress = pa->payaddress;
|
||||
} else
|
||||
payaddress = "none";
|
||||
|
||||
DATA_USERS(users, u_item);
|
||||
snprintf(tmp, sizeof(tmp),
|
||||
"user:%d=%s%c",
|
||||
rows,
|
||||
users->username,
|
||||
FLDSEP);
|
||||
"user:%d=%s%cpayaddress:%d=%s%c",
|
||||
rows, users->username, FLDSEP,
|
||||
rows, payaddress, FLDSEP);
|
||||
|
||||
} else {
|
||||
snprintf(tmp, sizeof(tmp),
|
||||
"user:%d=%"PRId64"%c",
|
||||
rows,
|
||||
miningpayouts->userid,
|
||||
FLDSEP);
|
||||
"user:%d=%"PRId64"%cpayaddress:%d=none%c",
|
||||
rows, miningpayouts->userid, FLDSEP,
|
||||
rows, FLDSEP);
|
||||
}
|
||||
APPEND_REALLOC(buf, off, len, tmp);
|
||||
|
||||
@ -10038,9 +10103,9 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id,
|
||||
rows++;
|
||||
}
|
||||
snprintf(tmp, sizeof(tmp),
|
||||
"rows=%d%c,flds=%s%c",
|
||||
"rows=%d%cflds=%s%c",
|
||||
rows, FLDSEP,
|
||||
"user,diffacc_user", FLDSEP);
|
||||
"user,diffacc_user,payaddress", FLDSEP);
|
||||
APPEND_REALLOC(buf, off, len, tmp);
|
||||
|
||||
snprintf(tmp, sizeof(tmp), "arn=%s%carp=%s%c",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user