try staker fix
This commit is contained in:
@@ -2503,7 +2503,6 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt
|
|||||||
komodo_segids(hashbuf,nHeight-101,100);
|
komodo_segids(hashbuf,nHeight-101,100);
|
||||||
if ( *blocktimep < tipindex->nTime+60)
|
if ( *blocktimep < tipindex->nTime+60)
|
||||||
*blocktimep = tipindex->nTime+60;
|
*blocktimep = tipindex->nTime+60;
|
||||||
//fprintf(stderr,"Start scan of utxo for staking %u ht.%d\n",(uint32_t)time(NULL),nHeight);
|
|
||||||
|
|
||||||
bool resetstaker = false;
|
bool resetstaker = false;
|
||||||
if ( array != 0 )
|
if ( array != 0 )
|
||||||
@@ -2588,9 +2587,8 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
lasttime = (uint32_t)time(NULL);
|
lasttime = (uint32_t)time(NULL);
|
||||||
//fprintf(stderr,"finished kp data of utxo for staking %u ht.%d numkp.%d maxkp.%d\n",(uint32_t)time(NULL),nHeight,numkp,maxkp);
|
//fprintf(stderr,"finished kp data of utxo for staking %u ht.%d numkp.%d maxkp.%d\n",(uint32_t)time(NULL),nHeight,numkp,maxkp);
|
||||||
}
|
}
|
||||||
//fprintf(stderr,"numkp.%d blocktime.%u\n",numkp,*blocktimep);
|
|
||||||
block_from_future_rejecttime = (uint32_t)GetAdjustedTime() + 57;
|
block_from_future_rejecttime = (uint32_t)GetAdjustedTime() + 57;
|
||||||
for (i=winners=0; i<numkp; i++)
|
for (i=winners=0; i<numkp; i++)
|
||||||
{
|
{
|
||||||
@@ -2603,42 +2601,26 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt
|
|||||||
}
|
}
|
||||||
kp = &array[i];
|
kp = &array[i];
|
||||||
eligible = komodo_stake(0,bnTarget,nHeight,kp->txid,kp->vout,0,(uint32_t)tipindex->nTime+27,kp->address,PoSperc);
|
eligible = komodo_stake(0,bnTarget,nHeight,kp->txid,kp->vout,0,(uint32_t)tipindex->nTime+27,kp->address,PoSperc);
|
||||||
//fprintf(stderr,"i.%d %u vs %u\n",i,eligible2,eligible);
|
|
||||||
if ( eligible > 0 )
|
if ( eligible > 0 )
|
||||||
{
|
{
|
||||||
besttime = m = 0;
|
besttime = 0;
|
||||||
if ( eligible == komodo_stake(1,bnTarget,nHeight,kp->txid,kp->vout,eligible,(uint32_t)tipindex->nTime+27,kp->address,PoSperc) )
|
if ( eligible == komodo_stake(1,bnTarget,nHeight,kp->txid,kp->vout,eligible,(uint32_t)tipindex->nTime+27,kp->address,PoSperc) )
|
||||||
{
|
{
|
||||||
while ( eligible == komodo_stake(1,bnTarget,nHeight,kp->txid,kp->vout,eligible,(uint32_t)tipindex->nTime+27,kp->address,PoSperc) )
|
// have elegible utxo to stak with.
|
||||||
|
if ( earliest == 0 || eligible < earliest || (eligible == earliest && (*utxovaluep == 0 || kp->nValue < *utxovaluep)) )
|
||||||
{
|
{
|
||||||
besttime = eligible;
|
// is better than the previous best, so use it instead.
|
||||||
eligible--;
|
earliest = eligible;
|
||||||
if ( eligible < block_from_future_rejecttime ) // nothing gained by going earlier
|
best_scriptPubKey = kp->scriptPubKey;
|
||||||
break;
|
*utxovaluep = (uint64_t)kp->nValue;
|
||||||
m++;
|
decode_hex((uint8_t *)utxotxidp,32,(char *)kp->txid.GetHex().c_str());
|
||||||
//fprintf(stderr,"m.%d ht.%d validated winning blocktime %u -> %.8f eligible.%u test prior\n",m,nHeight,*blocktimep,(double)kp->nValue/COIN,eligible);
|
*utxovoutp = kp->vout;
|
||||||
|
*txtimep = kp->txtime;
|
||||||
}
|
}
|
||||||
}
|
if ( eligible < block_from_future_rejecttime ) // nothing gained by going earlier
|
||||||
else
|
break;
|
||||||
{
|
} else continue;
|
||||||
//fprintf(stderr,"ht.%d error validating winning blocktime %u -> %.8f eligible.%u test prior\n",nHeight,*blocktimep,(double)kp->nValue/COIN,eligible);
|
}
|
||||||
continue;
|
|
||||||
}
|
|
||||||
eligible = besttime;
|
|
||||||
winners++;
|
|
||||||
//fprintf(stderr,"ht.%d validated winning [%d] -> %.8f eligible.%u test prior\n",nHeight,(int32_t)(eligible - tipindex->nTime),(double)kp->nValue/COIN,eligible);
|
|
||||||
if ( earliest == 0 || eligible < earliest || (eligible == earliest && (*utxovaluep == 0 || kp->nValue < *utxovaluep)) )
|
|
||||||
{
|
|
||||||
earliest = eligible;
|
|
||||||
best_scriptPubKey = kp->scriptPubKey; //out.tx->vout[out.i].scriptPubKey;
|
|
||||||
*utxovaluep = (uint64_t)kp->nValue;
|
|
||||||
//decode_hex((uint8_t *)utxotxidp,32,(char *)out.tx->GetHash().GetHex().c_str());
|
|
||||||
decode_hex((uint8_t *)utxotxidp,32,(char *)kp->txid.GetHex().c_str());
|
|
||||||
*utxovoutp = kp->vout;
|
|
||||||
*txtimep = kp->txtime;//(uint32_t)out.tx->nLockTime;
|
|
||||||
//fprintf(stderr,"ht.%d earliest.%u [%d].%d (%s) nValue %.8f locktime.%u counter.%d winners.%d\n",nHeight,earliest,(int32_t)(earliest - tipindex->nTime),m,kp->address,(double)kp->nValue/COIN,*txtimep,counter,winners);
|
|
||||||
}
|
|
||||||
} //else fprintf(stderr,"utxo not eligible\n");
|
|
||||||
}
|
}
|
||||||
if ( numkp < 1000 && array != 0 )
|
if ( numkp < 1000 && array != 0 )
|
||||||
{
|
{
|
||||||
@@ -2659,7 +2641,7 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt
|
|||||||
((uint8_t *)&revtxid)[i] = ((uint8_t *)utxotxidp)[31 - i];
|
((uint8_t *)&revtxid)[i] = ((uint8_t *)utxotxidp)[31 - i];
|
||||||
txNew.vin[0].prevout.hash = revtxid;
|
txNew.vin[0].prevout.hash = revtxid;
|
||||||
txNew.vin[0].prevout.n = *utxovoutp;
|
txNew.vin[0].prevout.n = *utxovoutp;
|
||||||
txNew.vout[0].scriptPubKey = best_scriptPubKey;// CScript() << ParseHex(NOTARY_PUBKEY) << OP_CHECKSIG;
|
txNew.vout[0].scriptPubKey = best_scriptPubKey;
|
||||||
txNew.vout[0].nValue = *utxovaluep - txfee;
|
txNew.vout[0].nValue = *utxovaluep - txfee;
|
||||||
txNew.nLockTime = earliest;
|
txNew.nLockTime = earliest;
|
||||||
CTransaction txNewConst(txNew);
|
CTransaction txNewConst(txNew);
|
||||||
@@ -2670,7 +2652,7 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt
|
|||||||
ptr = (uint8_t *)&sigdata.scriptSig[0];
|
ptr = (uint8_t *)&sigdata.scriptSig[0];
|
||||||
siglen = sigdata.scriptSig.size();
|
siglen = sigdata.scriptSig.size();
|
||||||
for (i=0; i<siglen; i++)
|
for (i=0; i<siglen; i++)
|
||||||
utxosig[i] = ptr[i];//, fprintf(stderr,"%02x",ptr[i]);
|
utxosig[i] = ptr[i];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2682,12 +2664,7 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt
|
|||||||
if (!signSuccess)
|
if (!signSuccess)
|
||||||
fprintf(stderr,"failed to create signature\n");
|
fprintf(stderr,"failed to create signature\n");
|
||||||
else
|
else
|
||||||
{
|
|
||||||
//fprintf(stderr," siglen.%d\n",siglen);
|
|
||||||
//fprintf(stderr,"best %u from %u, gap %d lag.%d\n",earliest,*blocktimep,(int32_t)(earliest - *blocktimep),(int32_t)(time(NULL) - *blocktimep));
|
|
||||||
*blocktimep = earliest;
|
*blocktimep = earliest;
|
||||||
}
|
}
|
||||||
} //else fprintf(stderr,"no earliest utxo for staking\n");
|
|
||||||
//fprintf(stderr,"end scan of utxo for staking t.%u counter.%d numkp.%d winners.%d\n",(uint32_t)time(NULL),counter,numkp,winners);
|
|
||||||
return(siglen);
|
return(siglen);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user