Merge pull request #103 from golden-guy/bitmaker-dev

Add best diff to miner screen
This commit is contained in:
BitMaker 2023-08-03 00:06:25 +02:00 committed by GitHub
commit de655362a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 17 deletions

View File

@ -19,10 +19,12 @@ unsigned long Mhashes = 0;
unsigned long totalKHashes = 0; unsigned long totalKHashes = 0;
unsigned long elapsedKHs = 0; unsigned long elapsedKHs = 0;
unsigned long halfshares; // increase if blockhash has 16 bits of zeroes
unsigned int shares; // increase if blockhash has 32 bits of zeroes unsigned int shares; // increase if blockhash has 32 bits of zeroes
unsigned int valids; // increased if blockhash <= target unsigned int valids; // increased if blockhash <= target
// Track best diff
double best_diff = 0.0;
// Variables to hold data from custom textboxes // Variables to hold data from custom textboxes
extern char poolString[80]; extern char poolString[80];
extern int portNumber; extern int portNumber;
@ -308,14 +310,18 @@ void runMiner(void * task_id) {
nonce += 2; nonce += 2;
continue; continue;
} }
halfshares++;
//Check target to submit //Check target to submit
//Difficulty of 1 > 0x00000000FFFF0000000000000000000000000000000000000000000000000000 //Difficulty of 1 > 0x00000000FFFF0000000000000000000000000000000000000000000000000000
//NM2 pool diff 1e-9 > Target = diff_1 / diff_pool > 0x00003B9ACA00....00 //NM2 pool diff 1e-9 > Target = diff_1 / diff_pool > 0x00003B9ACA00....00
//Swapping diff bytes little endian >>>>>>>>>>>>>>>> 0x0000DC59D300....00 //Swapping diff bytes little endian >>>>>>>>>>>>>>>> 0x0000DC59D300....00
//if((hash[29] <= 0xDC) && (hash[28] <= 0x59)) //0x00003B9ACA00 > diff value for 1e-9 //if((hash[29] <= 0xDC) && (hash[28] <= 0x59)) //0x00003B9ACA00 > diff value for 1e-9
double diff_hash = diff_from_target(hash); double diff_hash = diff_from_target(hash);
// update best diff
if (diff_hash > best_diff)
best_diff = diff_hash;
if(diff_hash > mMiner.poolDifficulty)//(hash[29] <= 0x3B)//(diff_hash > 1e-9) if(diff_hash > mMiner.poolDifficulty)//(hash[29] <= 0x3B)//(diff_hash > 1e-9)
{ {
tx_mining_submit(client, mWorker, mJob, nonce); tx_mining_submit(client, mWorker, mJob, nonce);
@ -344,16 +350,12 @@ void runMiner(void * task_id) {
} }
shares++; shares++;
// check if valid header // check if valid header
if(checkValid(hash, mMiner.bytearray_target)){ if(checkValid(hash, mMiner.bytearray_target)){
Serial.printf("[WORKER] %d CONGRATULATIONS! Valid block found with nonce: %d | 0x%x\n", miner_id, nonce, nonce); Serial.printf("[WORKER] %d CONGRATULATIONS! Valid block found with nonce: %d | 0x%x\n", miner_id, nonce, nonce);
valids++; valids++;
Serial.printf("[WORKER] %d Submitted work valid!\n", miner_id); Serial.printf("[WORKER] %d Submitted work valid!\n", miner_id);
// STEP 3: Submit mining job // wait for new job
tx_mining_submit(client, mWorker, mJob, nonce);
client.stop();
// exit
nonce = MAX_NONCE;
break; break;
} }
// increment nonce // increment nonce

View File

@ -19,9 +19,10 @@ extern unsigned long Mhashes;
extern unsigned long totalKHashes; extern unsigned long totalKHashes;
extern unsigned long elapsedKHs; extern unsigned long elapsedKHs;
extern unsigned long halfshares; // increase if blockhash has 16 bits of zeroes
extern unsigned int shares; // increase if blockhash has 32 bits of zeroes extern unsigned int shares; // increase if blockhash has 32 bits of zeroes
extern unsigned int valids; // increased if blockhash <= targethalfshares extern unsigned int valids; // increased if blockhash <= target
extern double best_diff; // track best diff
extern OpenFontRender render; extern OpenFontRender render;
extern TFT_eSprite background; extern TFT_eSprite background;
@ -243,9 +244,11 @@ void show_MinerScreen(unsigned long mElapsed){
//Block templates //Block templates
render.setFontSize(36); render.setFontSize(36);
render.drawString(String(templates).c_str(), 186, 20, 0xDEDB); render.drawString(String(templates).c_str(), 186, 20, 0xDEDB);
//16Bit shares //Best diff
char best_diff_string[8] = {0};
sprintf(best_diff_string, "%.4f", best_diff);
render.setFontSize(36); render.setFontSize(36);
render.drawString(String(halfshares).c_str(), 186, 48, 0xDEDB); render.drawString(String(best_diff_string).c_str(), 186, 48, 0xDEDB);
//32Bit shares //32Bit shares
render.setFontSize(36); render.setFontSize(36);
render.drawString(String(shares).c_str(), 186, 76, 0xDEDB); render.drawString(String(shares).c_str(), 186, 76, 0xDEDB);

View File

@ -113,15 +113,18 @@ double diff_from_target(void *target)
bool checkValid(unsigned char* hash, unsigned char* target) { bool checkValid(unsigned char* hash, unsigned char* target) {
bool valid = true; bool valid = true;
unsigned char diff_target[32];
memcpy(diff_target, &target, 32);
//convert target to little endian for comparison
reverse_bytes(diff_target, 32);
for(uint8_t i=31; i>=0; i--) { for(uint8_t i=31; i>=0; i--) {
if(hash[i] > target[i]) { if(hash[i] > diff_target[i]) {
valid = false; valid = false;
break; break;
} else if (hash[i] < target[i]) {
valid = true;
break;
} }
} }
#ifdef DEBUG_MINING #ifdef DEBUG_MINING
if (valid) { if (valid) {
Serial.print("\tvalid : "); Serial.print("\tvalid : ");