Stop miner trying to mine invalid block.

This commit is contained in:
blackjok3r
2019-02-04 10:06:54 +08:00
parent 2c88bb70b6
commit 2863dbc6d4
3 changed files with 26 additions and 3 deletions

View File

@@ -1811,8 +1811,6 @@ uint64_t komodo_notarypay(CMutableTransaction &txNew, std::vector<int8_t> &Notar
if ( staked_era == 0 )
return(0);
numSN = numStakedNotaries(staked_pubkeys,staked_era);
// resize coinbase vouts to number of notary nodes +1 for coinbase itself.
txNew.vout.resize(NotarisationNotaries.size()+1);
// Check the notarisation is valid, and extract notarised height.
uint64_t voutmask;
@@ -1833,6 +1831,9 @@ uint64_t komodo_notarypay(CMutableTransaction &txNew, std::vector<int8_t> &Notar
}
} else return(0);
// resize coinbase vouts to number of notary nodes +1 for coinbase itself.
txNew.vout.resize(NotarisationNotaries.size()+1);
// Calcualte the amount to pay.
AmountToPay = komodo_notarypayamount(notarizedheight,NotarisationNotaries.size());

View File

@@ -282,6 +282,9 @@ namespace {
bool fCurrentlyConnected;
//! Accumulated misbehaviour score for this peer.
int nMisbehavior;
// count blocks seen.
//int8_t nBlocksinARow;
//int8_t nBlocksinARow2;
//! Whether this peer should be disconnected and banned (unless whitelisted).
bool fShouldBan;
//! String name of this peer (debugging/logging purposes).
@@ -5469,6 +5472,20 @@ bool ProcessNewBlock(bool from_miner,int32_t height,CValidationState &state, CNo
bool checked; uint256 hash; int32_t futureblock=0;
auto verifier = libzcash::ProofVerifier::Disabled();
hash = pblock->GetHash();
/*pfrom->nBlocksinARow += 1;
if ( pfrom->nBlocksinARow >= 6 )
{
pfrom->nBlocksinARow2 += 1;
if ( pfrom->nBlocksinARow2 > 3 )
{
pfrom->nBlocksinARow = 0;
pfrom->nBlocksinARow2 = 0;
}
else
{
return(false);
}
}*/
//fprintf(stderr,"ProcessBlock %d\n",(int32_t)chainActive.LastTip()->GetHeight());
{
LOCK(cs_main);

View File

@@ -680,7 +680,12 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32
if ( script[0] == OP_RETURN )
{
uint64_t totalsats = komodo_notarypay(txNew, NotarisationNotaries, pblock->nTime, nHeight, script, scriptlen);
fprintf(stderr, "Created notary payment coinbase totalsat.%lu\n",totalsats);
if ( totalsats == 0 )
{
fprintf(stderr, "Could not create notary payment, trying again.\n");
return(0);
}
fprintf(stderr, "Created notary payment coinbase totalsat.%lu\n",totalsats);
} else fprintf(stderr, "vout 2 of notarisation is not OP_RETURN scriptlen.%i\n", scriptlen);
}