Deterministic RNG for notary mining
This commit is contained in:
@@ -112,6 +112,7 @@ extern std::string NOTARY_PUBKEY,ASSETCHAINS_OVERRIDE_PUBKEY;
|
|||||||
|
|
||||||
extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33];
|
extern uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33];
|
||||||
uint32_t Mining_start,Mining_height;
|
uint32_t Mining_start,Mining_height;
|
||||||
|
int32_t My_notaryid = -1;
|
||||||
int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,uint32_t timestamp);
|
int32_t komodo_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,uint32_t timestamp);
|
||||||
int32_t komodo_pax_opreturn(int32_t height,uint8_t *opret,int32_t maxsize);
|
int32_t komodo_pax_opreturn(int32_t height,uint8_t *opret,int32_t maxsize);
|
||||||
//uint64_t komodo_paxtotal();
|
//uint64_t komodo_paxtotal();
|
||||||
@@ -472,13 +473,21 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn,int32_t gpucount)
|
|||||||
}
|
}
|
||||||
pblock->nSolution.clear();
|
pblock->nSolution.clear();
|
||||||
pblocktemplate->vTxSigOps[0] = GetLegacySigOpCount(pblock->vtx[0]);
|
pblocktemplate->vTxSigOps[0] = GetLegacySigOpCount(pblock->vtx[0]);
|
||||||
if ( ASSETCHAINS_SYMBOL[0] == 0 && NOTARY_PUBKEY33[0] != 0 )
|
if ( ASSETCHAINS_SYMBOL[0] == 0 && NOTARY_PUBKEY33[0] != 0 && My_notaryid >= 0 )
|
||||||
{
|
{
|
||||||
|
uint32_t r;
|
||||||
CMutableTransaction txNotary = CreateNewContextualCMutableTransaction(Params().GetConsensus(), chainActive.Height() + 1);
|
CMutableTransaction txNotary = CreateNewContextualCMutableTransaction(Params().GetConsensus(), chainActive.Height() + 1);
|
||||||
if ( pblock->nTime < pindexPrev->nTime+60 )
|
if ( pblock->nTime < pindexPrev->nTime+60 )
|
||||||
pblock->nTime = pindexPrev->nTime + 60;
|
pblock->nTime = pindexPrev->nTime + 60;
|
||||||
if ( gpucount < 33 )
|
if ( gpucount < 33 )
|
||||||
pblock->nTime += (rand() % (33 - gpucount)*(33 - gpucount));
|
{
|
||||||
|
uint8_t tmpbuffer[40]; int32_t n=0; bits256 randvals;
|
||||||
|
memcpy(&tmpbuffer[n],&My_notaryid,sizeof(My_notaryid)), n += sizeof(My_notaryid);
|
||||||
|
memcpy(&tmpbuffer[n],&Mining_height,sizeof(Mining_height)), n += sizeof(Mining_height);
|
||||||
|
memcpy(&tmpbuffer[n],&pblock->hashPrevBlock,sizeof(pblock->hashPrevBlock)), n += sizeof(pblock->hashPrevBlock);
|
||||||
|
vcalc_sha256(0,randvals.bytes,tmpbuffer,n);
|
||||||
|
pblock->nTime += (randvals.uints[0] % (33 - gpucount)*(33 - gpucount));
|
||||||
|
}
|
||||||
if ( komodo_notaryvin(txNotary,NOTARY_PUBKEY33) > 0 )
|
if ( komodo_notaryvin(txNotary,NOTARY_PUBKEY33) > 0 )
|
||||||
{
|
{
|
||||||
CAmount txfees = 5000;
|
CAmount txfees = 5000;
|
||||||
@@ -729,7 +738,8 @@ void static BitcoinMiner()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
komodo_chosennotary(¬aryid,chainActive.Tip()->nHeight,NOTARY_PUBKEY33,(uint32_t)chainActive.Tip()->GetBlockTime());
|
komodo_chosennotary(¬aryid,chainActive.Tip()->nHeight,NOTARY_PUBKEY33,(uint32_t)chainActive.Tip()->GetBlockTime());
|
||||||
|
if ( notaryid != My_notaryid )
|
||||||
|
My_notaryid = notaryid;
|
||||||
std::string solver;
|
std::string solver;
|
||||||
//if ( notaryid >= 0 || ASSETCHAINS_SYMBOL[0] != 0 )
|
//if ( notaryid >= 0 || ASSETCHAINS_SYMBOL[0] != 0 )
|
||||||
solver = "tromp";
|
solver = "tromp";
|
||||||
|
|||||||
Reference in New Issue
Block a user