Skip to content

Commit eb6a1a2

Browse files
author
alex v
authored
add -acceptversionbit (#336)
1 parent 9601f85 commit eb6a1a2

File tree

3 files changed

+30
-13
lines changed

3 files changed

+30
-13
lines changed

src/init.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@ std::string HelpMessage(HelpMessageMode mode)
423423
strUsage += HelpMessageOpt("-proxy=<ip:port>", _("Connect through SOCKS5 proxy"));
424424
strUsage += HelpMessageOpt("-proxyrandomize", strprintf(_("Randomize credentials for every proxy connection. This enables Tor stream isolation (default: %u)"), DEFAULT_PROXYRANDOMIZE));
425425
strUsage += HelpMessageOpt("-rejectversionbit=<n>", _("Reject a suggested version bit"));
426+
strUsage += HelpMessageOpt("-acceptversionbit=<n>", _("Accept a suggested version bit"));
426427
strUsage += HelpMessageOpt("-requirednssec", _("Requires DNS Sec for OpenAlias requests (default: true)"));
427428
strUsage += HelpMessageOpt("-seednode=<ip>", _("Connect to a node to retrieve peer addresses, and disconnect"));
428429
#ifdef ENABLE_WALLET

src/versionbits.cpp

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -136,29 +136,43 @@ class VersionBitsConditionChecker : public AbstractThresholdConditionChecker {
136136

137137
}
138138

139-
bool IsVersionBitRejected(const Consensus::Params& params, Consensus::DeploymentPos pos){
139+
bool IsVersionBitRejected(const Consensus::Params& params, Consensus::DeploymentPos pos)
140+
{
140141

141142
bool isRejected = false;
142143

143-
std::vector<std::string>& versionBitVotes = mapMultiArgs["-rejectversionbit"];
144+
std::vector<std::string>& versionBitVotesRejected = mapMultiArgs["-rejectversionbit"];
145+
std::vector<std::string>& versionBitVotesAccepted = mapMultiArgs["-acceptversionbit"];
144146

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

147-
BOOST_FOREACH(std::string rejectedBit, versionBitVotes) {
148-
if (isdigit(rejectedBit[0])) {
149-
150-
int rBit = stoi(rejectedBit);
151-
if(rBit == bitTest) {
152-
isRejected = true;
149+
BOOST_FOREACH(std::string acceptedBit, versionBitVotesAccepted)
150+
{
151+
if (isdigit(acceptedBit[0]))
152+
{
153+
int rBit = stoi(acceptedBit);
154+
if(rBit == bitTest)
155+
return false;
156+
}
157+
}
153158

154-
return isRejected;
159+
for (unsigned int i = 0; i < rejectedVersionBitsByDefault.size(); i++)
160+
{
161+
if (rejectedVersionBitsByDefault[i] == bitTest)
162+
return true;
163+
}
155164

156-
}
157-
}
158-
}
165+
BOOST_FOREACH(std::string rejectedBit, versionBitVotesRejected)
166+
{
167+
if (isdigit(rejectedBit[0]))
168+
{
169+
int rBit = stoi(rejectedBit);
170+
if(rBit == bitTest)
171+
return true;
172+
}
173+
}
159174

160175
return isRejected;
161-
162176
}
163177

164178
ThresholdState VersionBitsState(const CBlockIndex* pindexPrev, const Consensus::Params& params, Consensus::DeploymentPos pos, VersionBitsCache& cache)

src/versionbits.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ static const int32_t nCFundAccSpreadVersionMask = 0x00004000;
5454
static const int32_t nCFundAmountV2Mask = 0x00010000;
5555
static const int32_t nStaticRewardVersionMask = 0x00008000;
5656

57+
static const std::vector<int> rejectedVersionBitsByDefault = {};
58+
5759
enum ThresholdState {
5860
THRESHOLD_DEFINED,
5961
THRESHOLD_STARTED,

0 commit comments

Comments
 (0)