Check for double signs on notarisation checks. revert minsigs to normal value.

This commit is contained in:
blackjok3r
2019-02-06 17:00:21 +08:00
parent 5f780b0325
commit de0ced7444
3 changed files with 16 additions and 3 deletions

View File

@@ -1886,6 +1886,12 @@ uint64_t komodo_checknotarypay(CBlock *pblock,int32_t height)
} }
} }
} }
// check a notary didnt sign twice (this would be an invalid notarisation later on and cause problems)
std::set<int> checkdupes( NotarisationNotaries.begin(), NotarisationNotaries.end() );
if ( checkdupes.size() != NotarisationNotaries.size() ) {
fprintf(stderr, "Possible notarisation is signed multiple times by same notary. It is invalid.\n");
return(0);
}
const CChainParams& chainparams = Params(); const CChainParams& chainparams = Params();
const Consensus::Params &consensusParams = chainparams.GetConsensus(); const Consensus::Params &consensusParams = chainparams.GetConsensus();
uint64_t totalsats = 0; uint64_t totalsats = 0;

View File

@@ -367,7 +367,14 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32
dPriority += (double)nValueIn * nConf; dPriority += (double)nValueIn * nConf;
} }
if ( numSN != 0 && numNotaryVins >= numSN / 5 ) if ( numSN != 0 && numNotaryVins >= numSN / 5 )
fNotarisation = true; {
// check a notary didnt sign twice (this would be an invalid notarisation later on and cause problems)
std::set<int> checkdupes( NotarisationNotaries.begin(), NotarisationNotaries.end() );
if ( checkdupes.size() != NotarisationNotaries.size() ) {
NotarisationNotaries.clear();
fprintf(stderr, "possible notarisation is signed multiple times by same notary, passed as normal transaction.\n");
} else fNotarisation = true;
}
else else
NotarisationNotaries.clear(); NotarisationNotaries.clear();

View File

@@ -128,8 +128,8 @@ UniValue getiguanajson(const UniValue& params, bool fHelp)
json.push_back(Pair("port",iguanaPort)); json.push_back(Pair("port",iguanaPort));
json.push_back(Pair("BTCminsigs",BTCminsigs)); json.push_back(Pair("BTCminsigs",BTCminsigs));
json.push_back(Pair("minsigs",2)); json.push_back(Pair("minsigs",minsigs));
json.push_back(Pair("seeds", seeds)); json.push_back(Pair("seeds",seeds));
json.push_back(Pair("notaries",notaries)); json.push_back(Pair("notaries",notaries));
return json; return json;
} }