Skip to content

Commit

Permalink
add -acceptversionbit (#336)
Browse files Browse the repository at this point in the history
  • Loading branch information
alex v committed Dec 6, 2018
1 parent 9601f85 commit eb6a1a2
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 13 deletions.
1 change: 1 addition & 0 deletions src/init.cpp
Expand Up @@ -423,6 +423,7 @@ std::string HelpMessage(HelpMessageMode mode)
strUsage += HelpMessageOpt("-proxy=<ip:port>", _("Connect through SOCKS5 proxy"));
strUsage += HelpMessageOpt("-proxyrandomize", strprintf(_("Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u)"), DEFAULT_PROXYRANDOMIZE));
strUsage += HelpMessageOpt("-rejectversionbit=<n>", _("Reject a suggested version bit"));
strUsage += HelpMessageOpt("-acceptversionbit=<n>", _("Accept a suggested version bit"));
strUsage += HelpMessageOpt("-requirednssec", _("Requires DNS Sec for OpenAlias requests (default: true)"));
strUsage += HelpMessageOpt("-seednode=<ip>", _("Connect to a node to retrieve peer addresses, and disconnect"));
#ifdef ENABLE_WALLET
Expand Down
40 changes: 27 additions & 13 deletions src/versionbits.cpp
Expand Up @@ -136,29 +136,43 @@ class VersionBitsConditionChecker : public AbstractThresholdConditionChecker {

}

bool IsVersionBitRejected(const Consensus::Params& params, Consensus::DeploymentPos pos){
bool IsVersionBitRejected(const Consensus::Params& params, Consensus::DeploymentPos pos)
{

bool isRejected = false;

std::vector<std::string>& versionBitVotes = mapMultiArgs["-rejectversionbit"];
std::vector<std::string>& versionBitVotesRejected = mapMultiArgs["-rejectversionbit"];
std::vector<std::string>& versionBitVotesAccepted = mapMultiArgs["-acceptversionbit"];

int bitTest = params.vDeployments[pos].bit;

BOOST_FOREACH(std::string rejectedBit, versionBitVotes) {
if (isdigit(rejectedBit[0])) {

int rBit = stoi(rejectedBit);
if(rBit == bitTest) {
isRejected = true;
BOOST_FOREACH(std::string acceptedBit, versionBitVotesAccepted)
{
if (isdigit(acceptedBit[0]))
{
int rBit = stoi(acceptedBit);
if(rBit == bitTest)
return false;
}
}

return isRejected;
for (unsigned int i = 0; i < rejectedVersionBitsByDefault.size(); i++)
{
if (rejectedVersionBitsByDefault[i] == bitTest)
return true;
}

}
}
}
BOOST_FOREACH(std::string rejectedBit, versionBitVotesRejected)
{
if (isdigit(rejectedBit[0]))
{
int rBit = stoi(rejectedBit);
if(rBit == bitTest)
return true;
}
}

return isRejected;

}

ThresholdState VersionBitsState(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::DeploymentPos pos, VersionBitsCache& cache)
Expand Down
2 changes: 2 additions & 0 deletions src/versionbits.h
Expand Up @@ -54,6 +54,8 @@ static const int32_t nCFundAccSpreadVersionMask = 0x00004000;
static const int32_t nCFundAmountV2Mask = 0x00010000;
static const int32_t nStaticRewardVersionMask = 0x00008000;

static const std::vector<int> rejectedVersionBitsByDefault = {};

enum ThresholdState {
THRESHOLD_DEFINED,
THRESHOLD_STARTED,
Expand Down

0 comments on commit eb6a1a2

Please sign in to comment.