test
This commit is contained in:
@@ -457,92 +457,6 @@ static bool ProcessBlockFound(CBlock* pblock, CWallet& wallet, CReserveKey& rese
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void minegenesis()
|
|
||||||
{
|
|
||||||
const CChainParams& chainparams = Params();
|
|
||||||
// Each thread has its own key and counter
|
|
||||||
CReserveKey reservekey(pwallet);
|
|
||||||
unsigned int nExtraNonce = 0;
|
|
||||||
unsigned int n = chainparams.EquihashN();
|
|
||||||
unsigned int k = chainparams.EquihashK();
|
|
||||||
while ( true )
|
|
||||||
{
|
|
||||||
unique_ptr<CBlockTemplate> pblocktemplate(CreateNewBlockWithKey(reservekey));
|
|
||||||
if (!pblocktemplate.get())
|
|
||||||
{
|
|
||||||
LogPrintf("Error in ZcashMiner: Keypool ran out, please call keypoolrefill before restarting the mining thread\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CBlock *pblock = &pblocktemplate->block;
|
|
||||||
IncrementExtraNonce(pblock, pindexPrev, nExtraNonce);
|
|
||||||
while ( true )
|
|
||||||
{
|
|
||||||
// Hash state
|
|
||||||
crypto_generichash_blake2b_state state;
|
|
||||||
EhInitialiseState(n, k, state);
|
|
||||||
// I = the block header minus nonce and solution.
|
|
||||||
CEquihashInput I{*pblock};
|
|
||||||
CDataStream ss(SER_NETWORK, PROTOCOL_VERSION);
|
|
||||||
ss << I;
|
|
||||||
// H(I||...
|
|
||||||
crypto_generichash_blake2b_update(&state, (unsigned char*)&ss[0], ss.size());
|
|
||||||
// H(I||V||...
|
|
||||||
crypto_generichash_blake2b_state curr_state;
|
|
||||||
curr_state = state;
|
|
||||||
crypto_generichash_blake2b_update(&curr_state,pblock->nNonce.begin(),pblock->nNonce.size());
|
|
||||||
// (x_1, x_2, ...) = A(I, V, n, k)
|
|
||||||
LogPrint("pow", "Running Equihash solver \"%s\" with nNonce = %s\n",solver, pblock->nNonce.ToString());
|
|
||||||
std::function<bool(std::vector<unsigned char>)> validBlock =
|
|
||||||
[&pblock, &hashTarget, &pwallet, &reservekey, &m_cs, &cancelSolver, &chainparams]
|
|
||||||
(std::vector<unsigned char> soln)
|
|
||||||
{
|
|
||||||
// Write the solution to the hash and compute the result.
|
|
||||||
LogPrint("pow", "- Checking solution against target\n");
|
|
||||||
pblock->nSolution = soln;
|
|
||||||
solutionTargetChecks.increment();
|
|
||||||
if ( UintToArith256(pblock->GetHash()) > hashTarget )
|
|
||||||
continue;
|
|
||||||
// Found a solution
|
|
||||||
LogPrintf("ZcashMiner:\n");
|
|
||||||
LogPrintf("proof-of-work found \n hash: %s \ntarget: %s\n", pblock->GetHash().GetHex(), hashTarget.GetHex());
|
|
||||||
break;
|
|
||||||
};
|
|
||||||
// TODO: factor this out into a function with the same API for each solver.
|
|
||||||
if ( solver == "tromp" )
|
|
||||||
{
|
|
||||||
// Create solver and initialize it.
|
|
||||||
equi eq(1);
|
|
||||||
eq.setstate(&curr_state);
|
|
||||||
// Intialization done, start algo driver.
|
|
||||||
eq.digit0(0);
|
|
||||||
eq.xfull = eq.bfull = eq.hfull = 0;
|
|
||||||
eq.showbsizes(0);
|
|
||||||
for (u32 r = 1; r < WK; r++)
|
|
||||||
{
|
|
||||||
(r&1) ? eq.digitodd(r, 0) : eq.digiteven(r, 0);
|
|
||||||
eq.xfull = eq.bfull = eq.hfull = 0;
|
|
||||||
eq.showbsizes(r);
|
|
||||||
}
|
|
||||||
eq.digitK(0);
|
|
||||||
ehSolverRuns.increment();
|
|
||||||
// Convert solution indices to byte array (decompress) and pass it to validBlock method.
|
|
||||||
for (size_t s = 0; s < eq.nsols; s++)
|
|
||||||
{
|
|
||||||
LogPrint("pow", "Checking solution %d\n", s+1);
|
|
||||||
std::vector<eh_index> index_vector(PROOFSIZE);
|
|
||||||
for (size_t i = 0; i < PROOFSIZE; i++)
|
|
||||||
index_vector[i] = eq.sols[s][i];
|
|
||||||
std::vector<unsigned char> sol_char = GetMinimalFromIndices(index_vector, DIGITBITS);
|
|
||||||
if ( validBlock(sol_char) )
|
|
||||||
// If we find a POW solution, do not try other solutions
|
|
||||||
// because they become invalid as we created a new block in blockchain.
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern uint8_t NOTARY_PUBKEY33[33];
|
extern uint8_t NOTARY_PUBKEY33[33];
|
||||||
uint32_t Mining_start;
|
uint32_t Mining_start;
|
||||||
int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33);
|
int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33);
|
||||||
|
|||||||
Reference in New Issue
Block a user