|
|
@ -1535,7 +1535,6 @@ void static RamhashMiner() |
|
|
|
ramhash.init(); |
|
|
|
rhdebug("%s: bytemap loaded\n"); |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
fprintf(stderr,"RamhashMiner: mining %s with ramhash\n",SMART_CHAIN_SYMBOL); |
|
|
|
while(true) { |
|
|
@ -1646,11 +1645,15 @@ void static RamhashMiner() |
|
|
|
ramhashInput << pblocktemplate->block; |
|
|
|
// Use the sha256 of current block as input hash to LxrPoW()
|
|
|
|
CSHA256 hasher; |
|
|
|
hasher.Write(ramhashInput.data(), ramhashInput.size()); |
|
|
|
hasher.Write((unsigned char*) ramhashInput.str().data(), ramhashInput.size()); |
|
|
|
|
|
|
|
unsigned char ramHash[CSHA256::OUTPUT_SIZE]; |
|
|
|
hasher.Finalize(ramHash); |
|
|
|
// calculate actual ramhash hash with sha256 hash and nonce as input
|
|
|
|
unsigned long long state = ramhash.LxrPoW(ramHash, (unsigned long long) nNonce); |
|
|
|
//uint32_t rhnonce = UintToArith256(pblock->nNonce);
|
|
|
|
uint32_t rhnonce = UintToArith256( pblock->nNonce) .GetCompact(); |
|
|
|
// unsigned long long rhnonce = pblock->nNonce;
|
|
|
|
unsigned long long state = ramhash.LxrPoW(ramHash, (unsigned long long) rhnonce); |
|
|
|
|
|
|
|
// Use hash to build a valid block
|
|
|
|
std::function<bool(std::vector<unsigned char>)> validBlock = |
|
|
@ -1724,7 +1727,7 @@ void static RamhashMiner() |
|
|
|
|
|
|
|
try { |
|
|
|
// Use the ramhash hash as the block solution
|
|
|
|
std::vector<unsigned char> sol_char(ramhashHash, ramhashHash+32); |
|
|
|
std::vector<unsigned char> sol_char(ramHash, ramHash+32); |
|
|
|
bool found = validBlock(sol_char); |
|
|
|
if (found) { |
|
|
|
rhdebug("%s: found solution!\n"); |
|
|
@ -1759,9 +1762,7 @@ void static RamhashMiner() |
|
|
|
pblock->nNonce = ArithToUint256(UintToArith256(pblock->nNonce) + 1); |
|
|
|
pblock->nBits = savebits; |
|
|
|
} |
|
|
|
|
|
|
|
} // while(true)
|
|
|
|
} |
|
|
|
} catch (const boost::thread_interrupted&) { |
|
|
|
miningTimer.stop(); |
|
|
|
c.disconnect(); |
|
|
|