Skip to content

Commit

Permalink
Move RandBool() into random.h/cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
codablock committed Jan 9, 2019
1 parent e1901d2 commit 0dae46c
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 16 deletions.
23 changes: 7 additions & 16 deletions src/llmq/quorums_dkgsession.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,6 @@ double justifyLieRate = 0;
double commitOmitRate = 0;
double commitLieRate = 0;

static bool RandBool(double rate)
{
const uint64_t v = 100000000;
uint64_t r = GetRand(v + 1);
if (r <= v * rate)
return true;
return false;
}

CDKGLogger::CDKGLogger(CDKGSession& _quorumDkg, const std::string& _func) :
CDKGLogger(_quorumDkg.params.type, _quorumDkg.quorumHash, _quorumDkg.height, _quorumDkg.AreWeMember(), _func)
{
Expand Down Expand Up @@ -142,7 +133,7 @@ void CDKGSession::SendContributions()

logger.Printf("sending contributions\n");

if (RandBool(contributionOmitRate)) {
if (GetRandBool(contributionOmitRate)) {
logger.Printf("omitting\n");
return;
}
Expand All @@ -161,7 +152,7 @@ void CDKGSession::SendContributions()
auto& m = members[i];
CBLSSecretKey skContrib = skContributions[i];

if (RandBool(contributionLieRate)) {
if (GetRandBool(contributionLieRate)) {
logger.Printf("lying for %s\n", m->dmn->proTxHash.ToString());
skContrib.MakeNewKey();
}
Expand Down Expand Up @@ -310,7 +301,7 @@ void CDKGSession::ReceiveMessage(const uint256& hash, const CDKGContribution& qc
if (!qc.contributions->Decrypt(myIdx, *activeMasternodeInfo.blsKeyOperator, skContribution, PROTOCOL_VERSION)) {
logger.Printf("contribution from %s could not be decrypted\n", member->dmn->proTxHash.ToString());
complain = true;
} else if (RandBool(complainLieRate)) {
} else if (GetRandBool(complainLieRate)) {
logger.Printf("lying/complaining for %s\n", member->dmn->proTxHash.ToString());
complain = true;
}
Expand Down Expand Up @@ -651,15 +642,15 @@ void CDKGSession::SendJustification(const std::set<uint256>& forMembers)

CBLSSecretKey skContribution = skContributions[i];

if (RandBool(justifyLieRate)) {
if (GetRandBool(justifyLieRate)) {
logger.Printf("lying for %s\n", m->dmn->proTxHash.ToString());
skContribution.MakeNewKey();
}

qj.contributions.emplace_back(i, skContribution);
}

if (RandBool(justifyOmitRate)) {
if (GetRandBool(justifyOmitRate)) {
logger.Printf("omitting\n");
return;
}
Expand Down Expand Up @@ -917,7 +908,7 @@ void CDKGSession::SendCommitment()
return;
}

if (RandBool(commitOmitRate)) {
if (GetRandBool(commitOmitRate)) {
logger.Printf("omitting\n");
return;
}
Expand Down Expand Up @@ -955,7 +946,7 @@ void CDKGSession::SendCommitment()
qc.quorumVvecHash = ::SerializeHash(*vvec);

int lieType = -1;
if (RandBool(commitLieRate)) {
if (GetRandBool(commitLieRate)) {
lieType = GetRandInt(5);
logger.Printf("lying on commitment. lieType=%d\n", lieType);
}
Expand Down
11 changes: 11 additions & 0 deletions src/random.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,17 @@ uint256 GetRandHash()
return hash;
}

bool GetRandBool(double rate)
{
if (rate == 0.0) {
return false;
}

const uint64_t v = 100000000;
uint64_t r = GetRand(v + 1);
return r <= v * rate;
}

FastRandomContext::FastRandomContext(bool fDeterministic)
{
// The seed values have some unlikely fixed points which we avoid.
Expand Down
2 changes: 2 additions & 0 deletions src/random.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ uint64_t GetRand(uint64_t nMax);
int GetRandInt(int nMax);
uint256 GetRandHash();

bool GetRandBool(double rate);

/**
* Function to gather random data from multiple sources, failing whenever any
* of those source fail to provide a result.
Expand Down

0 comments on commit 0dae46c

Please sign in to comment.