Browse Source

Cache the header binary that will be used for work reconstruction

master
Con Kolivas 11 years ago
parent
commit
2bcdc4bcce
  1. 15
      src/stratifier.c

15
src/stratifier.c

@ -17,6 +17,8 @@
#include "libckpool.h" #include "libckpool.h"
#include "bitcoin.h" #include "bitcoin.h"
static const char *workpadding = "000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000";
static const char *scriptsig_header = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff"; static const char *scriptsig_header = "01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff";
static uchar scriptsig_header_bin[41]; static uchar scriptsig_header_bin[41];
@ -59,6 +61,9 @@ struct workbase {
char coinb2[128]; // coinbase2 char coinb2[128]; // coinbase2
uchar coinb2bin[64]; uchar coinb2bin[64];
int coinb2len; // length of above int coinb2len; // length of above
/* Cached header binary */
char headerbin[112];
}; };
typedef struct workbase workbase_t; typedef struct workbase workbase_t;
@ -95,6 +100,7 @@ static inline void json_strdup(char **buf, json_t *val, const char *key)
static void generate_coinbase(ckpool_t *ckp, workbase_t *wb) static void generate_coinbase(ckpool_t *ckp, workbase_t *wb)
{ {
char header[228];
int len, ofs = 0; int len, ofs = 0;
uint64_t *u64; uint64_t *u64;
tv_t now; tv_t now;
@ -166,6 +172,15 @@ static void generate_coinbase(ckpool_t *ckp, workbase_t *wb)
__bin2hex(wb->coinb2, wb->coinb2bin, wb->coinb2len); __bin2hex(wb->coinb2, wb->coinb2bin, wb->coinb2len);
LOGDEBUG("Coinb2: %s", wb->coinb2); LOGDEBUG("Coinb2: %s", wb->coinb2);
/* Coinbase 2 complete */ /* Coinbase 2 complete */
snprintf(header, 225, "%08x%s%s%s%s%s%s",
wb->version, wb->prevhash,
"0000000000000000000000000000000000000000000000000000000000000000",
wb->ntime, wb->nbit,
"00000000", /* nonce */
workpadding);
LOGDEBUG("Header: %s", header);
hex2bin(wb->headerbin, header, 112);
} }
/* This function assumes it will only receive a valid json gbt base template /* This function assumes it will only receive a valid json gbt base template

Loading…
Cancel
Save