Merge pull request #2828 from codablock/pr_v13_backports

[0.13.x] Backports from develop
This commit is contained in:
Alexander Block 2019-04-04 08:35:21 +02:00 committed by GitHub
commit 3db4e3111d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 50 additions and 13 deletions

View File

@ -41,7 +41,7 @@ elif [ "$BUILD_TARGET" = "win32" ]; then
export DPKG_ADD_ARCH="i386" export DPKG_ADD_ARCH="i386"
export DEP_OPTS="NO_QT=1" export DEP_OPTS="NO_QT=1"
export PACKAGES="python3 nsis g++-mingw-w64-i686 wine-stable wine32 bc" export PACKAGES="python3 nsis g++-mingw-w64-i686 wine-stable wine32 bc"
export BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" export BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --disable-miner"
export DIRECT_WINE_EXEC_TESTS=true export DIRECT_WINE_EXEC_TESTS=true
export RUN_TESTS=true export RUN_TESTS=true
elif [ "$BUILD_TARGET" = "win64" ]; then elif [ "$BUILD_TARGET" = "win64" ]; then
@ -49,7 +49,7 @@ elif [ "$BUILD_TARGET" = "win64" ]; then
export DPKG_ADD_ARCH="i386" export DPKG_ADD_ARCH="i386"
export DEP_OPTS="NO_QT=1" export DEP_OPTS="NO_QT=1"
export PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-stable wine64 bc" export PACKAGES="python3 nsis g++-mingw-w64-x86-64 wine-stable wine64 bc"
export BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" export BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --disable-miner"
export DIRECT_WINE_EXEC_TESTS=true export DIRECT_WINE_EXEC_TESTS=true
export RUN_TESTS=true export RUN_TESTS=true
elif [ "$BUILD_TARGET" = "linux32" ]; then elif [ "$BUILD_TARGET" = "linux32" ]; then
@ -82,7 +82,7 @@ elif [ "$BUILD_TARGET" = "linux64_release" ]; then
elif [ "$BUILD_TARGET" = "mac" ]; then elif [ "$BUILD_TARGET" = "mac" ]; then
export HOST=x86_64-apple-darwin11 export HOST=x86_64-apple-darwin11
export PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools" export PACKAGES="cmake imagemagick libcap-dev librsvg2-bin libz-dev libbz2-dev libtiff-tools"
export BITCOIN_CONFIG="--enable-gui --enable-reduce-exports" export BITCOIN_CONFIG="--enable-gui --enable-reduce-exports --disable-miner"
export OSX_SDK=10.11 export OSX_SDK=10.11
export GOAL="deploy" export GOAL="deploy"
fi fi

View File

@ -192,6 +192,17 @@ AC_ARG_ENABLE([debug],
[enable_debug=$enableval], [enable_debug=$enableval],
[enable_debug=no]) [enable_debug=no])
# Enable in-wallet miner
AC_ARG_ENABLE([miner],
[AS_HELP_STRING([--enable-miner],
[enable in-wallet miner (default is yes)])],
[enable_miner=$enableval],
[enable_miner=yes])
AM_CONDITIONAL([ENABLE_MINER], [test x$enable_miner = xyes])
if test "x$enable_miner" = xyes; then
AC_DEFINE(ENABLE_MINER, 1, [Define this symbol if in-wallet miner should be enabled])
fi
# Turn warnings into errors # Turn warnings into errors
AC_ARG_ENABLE([werror], AC_ARG_ENABLE([werror],
[AS_HELP_STRING([--enable-werror], [AS_HELP_STRING([--enable-werror],
@ -1181,6 +1192,7 @@ echo " with test = $use_tests"
echo " with bench = $use_bench" echo " with bench = $use_bench"
echo " with upnp = $use_upnp" echo " with upnp = $use_upnp"
echo " debug enabled = $enable_debug" echo " debug enabled = $enable_debug"
echo " miner enabled = $enable_miner"
echo " werror = $enable_werror" echo " werror = $enable_werror"
echo echo
echo " target os = $TARGET_OS" echo " target os = $TARGET_OS"

View File

@ -37,7 +37,7 @@ files:
script: | script: |
WRAP_DIR=$HOME/wrapped WRAP_DIR=$HOME/wrapped
HOSTS="x86_64-apple-darwin11" HOSTS="x86_64-apple-darwin11"
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests GENISOIMAGE=$WRAP_DIR/genisoimage" CONFIGFLAGS="--enable-reduce-exports --disable-miner --disable-bench --disable-gui-tests GENISOIMAGE=$WRAP_DIR/genisoimage"
FAKETIME_HOST_PROGS="" FAKETIME_HOST_PROGS=""
FAKETIME_PROGS="ar ranlib date dmg genisoimage" FAKETIME_PROGS="ar ranlib date dmg genisoimage"

View File

@ -31,7 +31,7 @@ files: []
script: | script: |
WRAP_DIR=$HOME/wrapped WRAP_DIR=$HOME/wrapped
HOSTS="i686-w64-mingw32 x86_64-w64-mingw32" HOSTS="i686-w64-mingw32 x86_64-w64-mingw32"
CONFIGFLAGS="--enable-reduce-exports --disable-bench --disable-gui-tests" CONFIGFLAGS="--enable-reduce-exports --disable-miner --disable-bench --disable-gui-tests"
FAKETIME_HOST_PROGS="ar ranlib nm windres strip objcopy" FAKETIME_HOST_PROGS="ar ranlib nm windres strip objcopy"
FAKETIME_PROGS="date makensis zip" FAKETIME_PROGS="date makensis zip"
HOST_CFLAGS="-O2 -g" HOST_CFLAGS="-O2 -g"

View File

@ -158,6 +158,21 @@ bool CGovernanceObject::ProcessVote(CNode* pfrom,
LogPrint("gobject", "%s\n", ostr.str()); LogPrint("gobject", "%s\n", ostr.str());
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_NONE); exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_NONE);
return false; return false;
} else if (vote.GetTimestamp() == voteInstanceRef.nCreationTime) {
// Someone is doing smth fishy, there can be no two votes from the same masternode
// with the same timestamp for the same object and signal and yet different hash/outcome.
std::ostringstream ostr;
ostr << "CGovernanceObject::ProcessVote -- Invalid vote, same timestamp for the different outcome";
if (vote.GetOutcome() < voteInstanceRef.eOutcome) {
// This is an arbitrary comparison, we have to agree on some way
// to pick the "winning" vote.
ostr << ", rejected";
LogPrint("gobject", "%s\n", ostr.str());
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_NONE);
return false;
}
ostr << ", accepted";
LogPrint("gobject", "%s\n", ostr.str());
} }
int64_t nNow = GetAdjustedTime(); int64_t nNow = GetAdjustedTime();
@ -172,9 +187,9 @@ bool CGovernanceObject::ProcessVote(CNode* pfrom,
<< ", time delta = " << nTimeDelta; << ", time delta = " << nTimeDelta;
LogPrint("gobject", "%s\n", ostr.str()); LogPrint("gobject", "%s\n", ostr.str());
exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_TEMPORARY_ERROR); exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_TEMPORARY_ERROR);
nVoteTimeUpdate = nNow;
return false; return false;
} }
nVoteTimeUpdate = nNow;
} }
bool onlyVotingKeyAllowed = nObjectType == GOVERNANCE_OBJECT_PROPOSAL && vote.GetSignal() == VOTE_SIGNAL_FUNDING; bool onlyVotingKeyAllowed = nObjectType == GOVERNANCE_OBJECT_PROPOSAL && vote.GetSignal() == VOTE_SIGNAL_FUNDING;

View File

@ -31,12 +31,10 @@ CMerkleBlock::CMerkleBlock(const CBlock& block, CBloomFilter& filter)
for (unsigned int i = 0; i < block.vtx.size(); i++) for (unsigned int i = 0; i < block.vtx.size(); i++)
{ {
const auto& tx = *block.vtx[i]; const auto& tx = *block.vtx[i];
if (tx.nVersion == 3 && !allowedTxTypes.count(tx.nType)) {
continue;
}
const uint256& hash = tx.GetHash(); const uint256& hash = tx.GetHash();
if (filter.IsRelevantAndUpdate(tx)) bool isAllowedType = tx.nVersion != 3 || allowedTxTypes.count(tx.nType) != 0;
if (isAllowedType && filter.IsRelevantAndUpdate(tx))
{ {
vMatch.push_back(true); vMatch.push_back(true);
vMatchedTxn.push_back(std::make_pair(i, hash)); vMatchedTxn.push_back(std::make_pair(i, hash));

View File

@ -30,10 +30,12 @@ public:
static const CRPCConvertParam vRPCConvertParams[] = static const CRPCConvertParam vRPCConvertParams[] =
{ {
{ "setmocktime", 0, "timestamp" }, { "setmocktime", 0, "timestamp" },
#if ENABLE_MINER
{ "generate", 0, "nblocks" }, { "generate", 0, "nblocks" },
{ "generate", 1, "maxtries" }, { "generate", 1, "maxtries" },
{ "generatetoaddress", 0, "nblocks" }, { "generatetoaddress", 0, "nblocks" },
{ "generatetoaddress", 2, "maxtries" }, { "generatetoaddress", 2, "maxtries" },
#endif // ENABLE_MINER
{ "getnetworkhashps", 0, "nblocks" }, { "getnetworkhashps", 0, "nblocks" },
{ "getnetworkhashps", 1, "height" }, { "getnetworkhashps", 1, "height" },
{ "sendtoaddress", 1, "amount" }, { "sendtoaddress", 1, "amount" },

View File

@ -104,6 +104,7 @@ UniValue getnetworkhashps(const JSONRPCRequest& request)
return GetNetworkHashPS(request.params.size() > 0 ? request.params[0].get_int() : 120, request.params.size() > 1 ? request.params[1].get_int() : -1); return GetNetworkHashPS(request.params.size() > 0 ? request.params[0].get_int() : 120, request.params.size() > 1 ? request.params[1].get_int() : -1);
} }
#if ENABLE_MINER
UniValue generateBlocks(boost::shared_ptr<CReserveScript> coinbaseScript, int nGenerate, uint64_t nMaxTries, bool keepScript) UniValue generateBlocks(boost::shared_ptr<CReserveScript> coinbaseScript, int nGenerate, uint64_t nMaxTries, bool keepScript)
{ {
static const int nInnerLoopCount = 0x10000; static const int nInnerLoopCount = 0x10000;
@ -222,6 +223,7 @@ UniValue generatetoaddress(const JSONRPCRequest& request)
return generateBlocks(coinbaseScript, nGenerate, nMaxTries, false); return generateBlocks(coinbaseScript, nGenerate, nMaxTries, false);
} }
#endif // ENABLE_MINER
UniValue getmininginfo(const JSONRPCRequest& request) UniValue getmininginfo(const JSONRPCRequest& request)
{ {
@ -971,9 +973,10 @@ static const CRPCCommand commands[] =
{ "mining", "getblocktemplate", &getblocktemplate, true, {"template_request"} }, { "mining", "getblocktemplate", &getblocktemplate, true, {"template_request"} },
{ "mining", "submitblock", &submitblock, true, {"hexdata","parameters"} }, { "mining", "submitblock", &submitblock, true, {"hexdata","parameters"} },
#if ENABLE_MINER
{ "generating", "generate", &generate, true, {"nblocks","maxtries"} }, { "generating", "generate", &generate, true, {"nblocks","maxtries"} },
{ "generating", "generatetoaddress", &generatetoaddress, true, {"nblocks","address","maxtries"} }, { "generating", "generatetoaddress", &generatetoaddress, true, {"nblocks","address","maxtries"} },
#endif // ENABLE_MINER
{ "util", "estimatefee", &estimatefee, true, {"nblocks"} }, { "util", "estimatefee", &estimatefee, true, {"nblocks"} },
{ "util", "estimatepriority", &estimatepriority, true, {"nblocks"} }, { "util", "estimatepriority", &estimatepriority, true, {"nblocks"} },
{ "util", "estimatesmartfee", &estimatesmartfee, true, {"nblocks"} }, { "util", "estimatesmartfee", &estimatesmartfee, true, {"nblocks"} },

View File

@ -762,7 +762,7 @@ UniValue protx_revoke(const JSONRPCRequest& request)
if (request.params.size() > 3) { if (request.params.size() > 3) {
int32_t nReason = ParseInt32V(request.params[3], "reason"); int32_t nReason = ParseInt32V(request.params[3], "reason");
if (nReason < 0 || nReason >= CProUpRevTx::REASON_LAST) { if (nReason < 0 || nReason > CProUpRevTx::REASON_LAST) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("invalid reason %d, must be between 0 and %d", nReason, CProUpRevTx::REASON_LAST)); throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("invalid reason %d, must be between 0 and %d", nReason, CProUpRevTx::REASON_LAST));
} }
ptx.nReason = (uint16_t)nReason; ptx.nReason = (uint16_t)nReason;

View File

@ -320,6 +320,7 @@ BOOST_AUTO_TEST_CASE(rpc_ban)
BOOST_CHECK_EQUAL(adr.get_str(), "2001:4d48:ac57:400:cacf:e9ff:fe1d:9c63/128"); BOOST_CHECK_EQUAL(adr.get_str(), "2001:4d48:ac57:400:cacf:e9ff:fe1d:9c63/128");
} }
#if ENABLE_MINER
BOOST_AUTO_TEST_CASE(rpc_convert_values_generatetoaddress) BOOST_AUTO_TEST_CASE(rpc_convert_values_generatetoaddress)
{ {
UniValue result; UniValue result;
@ -342,6 +343,7 @@ BOOST_AUTO_TEST_CASE(rpc_convert_values_generatetoaddress)
BOOST_CHECK_EQUAL(result[1].get_str(), "yTG8jLL3MvteKXgbEcHyaN7JvTPCejQpSh"); BOOST_CHECK_EQUAL(result[1].get_str(), "yTG8jLL3MvteKXgbEcHyaN7JvTPCejQpSh");
BOOST_CHECK_EQUAL(result[2].get_int(), 9); BOOST_CHECK_EQUAL(result[2].get_int(), 9);
} }
#endif // ENABLE_MINER
BOOST_AUTO_TEST_CASE(rpc_sentinel_ping) BOOST_AUTO_TEST_CASE(rpc_sentinel_ping)
{ {

View File

@ -4504,6 +4504,11 @@ static const uint64_t MEMPOOL_DUMP_VERSION = 1;
bool LoadMempool(void) bool LoadMempool(void)
{ {
if (GetBoolArg("-zapwallettxes", false)) {
LogPrintf("Skipping mempool.dat because of zapwallettxes\n");
return true;
}
int64_t nExpiryTimeout = GetArg("-mempoolexpiry", DEFAULT_MEMPOOL_EXPIRY) * 60 * 60; int64_t nExpiryTimeout = GetArg("-mempoolexpiry", DEFAULT_MEMPOOL_EXPIRY) * 60 * 60;
FILE* filestr = fopen((GetDataDir() / "mempool.dat").string().c_str(), "rb"); FILE* filestr = fopen((GetDataDir() / "mempool.dat").string().c_str(), "rb");
CAutoFile file(filestr, SER_DISK, CLIENT_VERSION); CAutoFile file(filestr, SER_DISK, CLIENT_VERSION);