mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-08-23 17:37: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
|
||||
{
|
||||
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++;
|
||||
#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);
|
||||
|
||||
#ifdef HASH_DEBUGLOG_
|
||||
debuglog("submit %s (uid %d) %d, %s, t=%s, n=%s, vote=%s\n", client->sock->ip, client->userid,
|
||||
jobid, extranonce2, ntime, nonce, vote);
|
||||
debuglog("submit %s (uid %d) %d, %s, %s, %s\n", client->sock->ip, client->userid, jobid, extranonce2, ntime, nonce);
|
||||
#endif
|
||||
|
||||
string_lower(extranonce2);
|
||||
|
@ -468,8 +467,16 @@ bool client_submit(YAAMP_CLIENT *client, json_value *json_params)
|
|||
client_record_difficulty(client);
|
||||
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);
|
||||
|
||||
return true;
|
||||
|
|
|
@ -35,7 +35,7 @@ static YAAMP_WORKER *share_find_worker(YAAMP_CLIENT *client, YAAMP_JOB *job, boo
|
|||
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);
|
||||
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->valid = valid;
|
||||
worker->error_number = error_number;
|
||||
sscanf(ntime, "%x", &worker->ntime);
|
||||
worker->share_diff = share_diff;
|
||||
|
||||
if(g_stratum_reconnect)
|
||||
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);
|
||||
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;
|
||||
memset(share, 0, sizeof(YAAMP_SHARE));
|
||||
|
@ -117,7 +119,7 @@ void share_write(YAAMP_DB *db)
|
|||
int count = 0;
|
||||
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();
|
||||
|
||||
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(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->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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,9 +9,11 @@ public:
|
|||
|
||||
bool valid;
|
||||
bool extranonce1;
|
||||
|
||||
int error_number;
|
||||
|
||||
uint32_t ntime;
|
||||
double difficulty;
|
||||
double share_diff; /* submitted hash diff */
|
||||
};
|
||||
|
||||
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);
|
||||
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_prune(YAAMP_DB *db);
|
||||
|
|
Loading…
Add table
Reference in a new issue