mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-08-23 09:27:25 +00:00
shares: store (temporary) submitted work diff for future stats...
PS: this table is only used for current round (until a bloc is found) also log a part of the submitted shares by default, to show activity
This commit is contained in:
parent
6950057b17
commit
553c920cab
4 changed files with 38 additions and 13 deletions
9
sql/2016-02-23-shares_diff.sql
Normal file
9
sql/2016-02-23-shares_diff.sql
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
-- Recent additions to add after db init (.gz)
|
||||||
|
-- mysql yaamp -p < file.sql
|
||||||
|
|
||||||
|
-- NOT NULL
|
||||||
|
ALTER TABLE `shares` CHANGE COLUMN `difficulty` `difficulty` DOUBLE NOT NULL DEFAULT '0';
|
||||||
|
|
||||||
|
ALTER TABLE `shares` ADD `share_diff` DOUBLE NOT NULL DEFAULT '0' AFTER `difficulty`;
|
||||||
|
|
||||||
|
|
|
@ -294,7 +294,7 @@ void client_submit_error(YAAMP_CLIENT *client, YAAMP_JOB *job, int id, const cha
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
client_send_error(client, id, message);
|
client_send_error(client, id, message);
|
||||||
share_add(client, job, false, extranonce2, ntime, nonce, id);
|
share_add(client, job, false, extranonce2, ntime, nonce, 0, id);
|
||||||
|
|
||||||
client->submit_bad++;
|
client->submit_bad++;
|
||||||
#ifdef HASH_DEBUGLOG_
|
#ifdef HASH_DEBUGLOG_
|
||||||
|
@ -333,8 +333,7 @@ bool client_submit(YAAMP_CLIENT *client, json_value *json_params)
|
||||||
strncpy(vote, json_params->u.array.values[5]->u.string.ptr, 7);
|
strncpy(vote, json_params->u.array.values[5]->u.string.ptr, 7);
|
||||||
|
|
||||||
#ifdef HASH_DEBUGLOG_
|
#ifdef HASH_DEBUGLOG_
|
||||||
debuglog("submit %s (uid %d) %d, %s, t=%s, n=%s, vote=%s\n", client->sock->ip, client->userid,
|
debuglog("submit %s (uid %d) %d, %s, %s, %s\n", client->sock->ip, client->userid, jobid, extranonce2, ntime, nonce);
|
||||||
jobid, extranonce2, ntime, nonce, vote);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
string_lower(extranonce2);
|
string_lower(extranonce2);
|
||||||
|
@ -468,8 +467,16 @@ bool client_submit(YAAMP_CLIENT *client, json_value *json_params)
|
||||||
client_record_difficulty(client);
|
client_record_difficulty(client);
|
||||||
client->submit_bad = 0;
|
client->submit_bad = 0;
|
||||||
|
|
||||||
share_add(client, job, true, extranonce2, ntime, nonce, 0);
|
double share_diff = diff_to_target(hash_int);
|
||||||
|
|
||||||
|
#ifndef HASH_DEBUGLOG_
|
||||||
|
// only log a few...
|
||||||
|
if (share_diff > (client->difficulty_actual * 16))
|
||||||
|
debuglog("submit %s (uid %d) %d, %s, %s, %s, %.3f/%.3f\n", client->sock->ip, client->userid,
|
||||||
|
jobid, extranonce2, ntime, nonce, share_diff, client->difficulty_actual);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
share_add(client, job, true, extranonce2, ntime, nonce, share_diff, 0);
|
||||||
object_unlock(job);
|
object_unlock(job);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -35,7 +35,7 @@ static YAAMP_WORKER *share_find_worker(YAAMP_CLIENT *client, YAAMP_JOB *job, boo
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void share_add_worker(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, int error_number)
|
static void share_add_worker(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, char *ntime, double share_diff, int error_number)
|
||||||
{
|
{
|
||||||
// check_job(job);
|
// check_job(job);
|
||||||
g_list_worker.Enter();
|
g_list_worker.Enter();
|
||||||
|
@ -52,6 +52,8 @@ static void share_add_worker(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, i
|
||||||
worker->remoteid = job? (job->remote? job->remote->id: 0): 0;
|
worker->remoteid = job? (job->remote? job->remote->id: 0): 0;
|
||||||
worker->valid = valid;
|
worker->valid = valid;
|
||||||
worker->error_number = error_number;
|
worker->error_number = error_number;
|
||||||
|
sscanf(ntime, "%x", &worker->ntime);
|
||||||
|
worker->share_diff = share_diff;
|
||||||
|
|
||||||
if(g_stratum_reconnect)
|
if(g_stratum_reconnect)
|
||||||
worker->extranonce1 = !client->reconnecting && (client->reconnectable || client->extranonce_subscribe);
|
worker->extranonce1 = !client->reconnecting && (client->reconnectable || client->extranonce_subscribe);
|
||||||
|
@ -73,10 +75,10 @@ static void share_add_worker(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, i
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void share_add(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, char *extranonce2, char *ntime, char *nonce, int error_number)
|
void share_add(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, char *extranonce2, char *ntime, char *nonce, double share_diff, int error_number)
|
||||||
{
|
{
|
||||||
// check_job(job);
|
// check_job(job);
|
||||||
share_add_worker(client, job, valid, error_number);
|
share_add_worker(client, job, valid, ntime, share_diff, error_number);
|
||||||
|
|
||||||
YAAMP_SHARE *share = new YAAMP_SHARE;
|
YAAMP_SHARE *share = new YAAMP_SHARE;
|
||||||
memset(share, 0, sizeof(YAAMP_SHARE));
|
memset(share, 0, sizeof(YAAMP_SHARE));
|
||||||
|
@ -117,7 +119,7 @@ void share_write(YAAMP_DB *db)
|
||||||
int count = 0;
|
int count = 0;
|
||||||
int now = time(NULL);
|
int now = time(NULL);
|
||||||
|
|
||||||
char buffer[1024*1024] = "insert into shares (userid, workerid, coinid, jobid, pid, valid, extranonce1, difficulty, time, algo, error) values ";
|
char buffer[1024*1024] = "insert into shares (userid, workerid, coinid, jobid, pid, valid, extranonce1, difficulty, share_diff, time, algo, error) values ";
|
||||||
g_list_worker.Enter();
|
g_list_worker.Enter();
|
||||||
|
|
||||||
for(CLI li = g_list_worker.first; li; li = li->next)
|
for(CLI li = g_list_worker.first; li; li = li->next)
|
||||||
|
@ -126,15 +128,20 @@ void share_write(YAAMP_DB *db)
|
||||||
if(worker->deleted) continue;
|
if(worker->deleted) continue;
|
||||||
|
|
||||||
if(count) strcat(buffer, ",");
|
if(count) strcat(buffer, ",");
|
||||||
sprintf(buffer+strlen(buffer), "(%d, %d, %d, %d, %d, %d, %d, %f, %d, '%s', %d)",
|
sprintf(buffer+strlen(buffer), "(%d, %d, %d, %d, %d, %d, %d, %f, %f, %d, '%s', %d)",
|
||||||
worker->userid, worker->workerid, worker->coinid, worker->remoteid, pid,
|
worker->userid, worker->workerid, worker->coinid, worker->remoteid, pid,
|
||||||
worker->valid, worker->extranonce1, worker->difficulty, now, g_stratum_algo, worker->error_number);
|
worker->valid, worker->extranonce1, worker->difficulty, worker->share_diff, now, g_stratum_algo, worker->error_number);
|
||||||
|
|
||||||
|
// todo: link max_ttf ?
|
||||||
|
if((now - worker->ntime) > 15*60 || worker->ntime > now) {
|
||||||
|
debuglog("ntime warning: value %d (%08x) offset %d secs from uid %d\n", worker->ntime, worker->ntime, (now - worker->ntime), worker->userid);
|
||||||
|
}
|
||||||
|
|
||||||
if(++count >= 1000)
|
if(++count >= 1000)
|
||||||
{
|
{
|
||||||
db_query(db, buffer);
|
db_query(db, buffer);
|
||||||
|
|
||||||
strcpy(buffer, "insert into shares (userid, workerid, coinid, jobid, pid, valid, extranonce1, difficulty, time, algo, error) values ");
|
strcpy(buffer, "insert into shares (userid, workerid, coinid, jobid, pid, valid, extranonce1, difficulty, share_diff, time, algo, error) values ");
|
||||||
count = 0;
|
count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,9 +9,11 @@ public:
|
||||||
|
|
||||||
bool valid;
|
bool valid;
|
||||||
bool extranonce1;
|
bool extranonce1;
|
||||||
|
|
||||||
int error_number;
|
int error_number;
|
||||||
|
|
||||||
|
uint32_t ntime;
|
||||||
double difficulty;
|
double difficulty;
|
||||||
|
double share_diff; /* submitted hash diff */
|
||||||
};
|
};
|
||||||
|
|
||||||
inline void worker_delete(YAAMP_OBJECT *object)
|
inline void worker_delete(YAAMP_OBJECT *object)
|
||||||
|
@ -44,7 +46,7 @@ inline void share_delete(YAAMP_OBJECT *object)
|
||||||
///////////
|
///////////
|
||||||
|
|
||||||
YAAMP_SHARE *share_find(int jobid, char *extranonce2, char *ntime, char *nonce, char *nonce1);
|
YAAMP_SHARE *share_find(int jobid, char *extranonce2, char *ntime, char *nonce, char *nonce1);
|
||||||
void share_add(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, char *extranonce2, char *ntime, char *nonce, int error_number);
|
void share_add(YAAMP_CLIENT *client, YAAMP_JOB *job, bool valid, char *extranonce2, char *ntime, char *nonce, double share_diff, int error_number);
|
||||||
|
|
||||||
void share_write(YAAMP_DB *db);
|
void share_write(YAAMP_DB *db);
|
||||||
void share_prune(YAAMP_DB *db);
|
void share_prune(YAAMP_DB *db);
|
||||||
|
|
Loading…
Add table
Reference in a new issue