From 6a467ea5724ee2bd7a6f53af3abcc5a57effafbb Mon Sep 17 00:00:00 2001 From: Sunny King Date: Tue, 24 Jul 2012 20:38:07 +0100 Subject: [PATCH] PPCoin: Make reservebalance a configuration option --- src/bitcoinrpc.cpp | 17 +++++++---------- src/init.cpp | 10 ++++++++++ src/main.cpp | 1 - src/main.h | 1 - src/wallet.cpp | 11 +++++++---- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/bitcoinrpc.cpp b/src/bitcoinrpc.cpp index 08a1dac..6c7f425 100644 --- a/src/bitcoinrpc.cpp +++ b/src/bitcoinrpc.cpp @@ -2051,25 +2051,22 @@ Value reservebalance(const Array& params, bool fHelp) nAmount = (nAmount / CENT) * CENT; // round to cent if (nAmount < 0) throw runtime_error("amount cannot be negative.\n"); - // TODO: handle persistence of nBalanceReserve - // settings removed since bitcoin 0.6 - // WriteSetting("nBalanceReserve", nBalanceReserve = nAmount); - nBalanceReserve = nAmount; + mapArgs["-reservebalance"] = FormatMoney(nAmount).c_str(); } else { if (params.size() > 1) throw runtime_error("cannot specify amount to turn off reserve.\n"); - // TODO: handle persistence of nBalanceReserve - // settings removed since bitcoin 0.6 - // WriteSetting("nBalanceReserve", nBalanceReserve = 0); - nBalanceReserve = 0; + mapArgs["-reservebalance"] = "0"; } } Object result; - result.push_back(Pair("reserve", (nBalanceReserve > 0))); - result.push_back(Pair("amount", ValueFromAmount(nBalanceReserve))); + int64 nReserveBalance = 0; + if (mapArgs.count("-reservebalance") && !ParseMoney(mapArgs["-reservebalance"], nReserveBalance)) + throw runtime_error("invalid reserve balance amount\n"); + result.push_back(Pair("reserve", (nReserveBalance > 0))); + result.push_back(Pair("amount", ValueFromAmount(nReserveBalance))); return result; } diff --git a/src/init.cpp b/src/init.cpp index 65386e8..8635ace 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -585,6 +585,16 @@ bool AppInit2(int argc, char* argv[]) ThreadSafeMessageBox(_("Warning: -paytxfee is set very high. This is the transaction fee you will pay if you send a transaction."), _("PPCoin"), wxOK | wxICON_EXCLAMATION | wxMODAL); } + if (mapArgs.count("-reservebalance")) // ppcoin: reserve balance amount + { + int64 nReserveBalance = 0; + if (!ParseMoney(mapArgs["-reservebalance"], nReserveBalance)) + { + ThreadSafeMessageBox(_("Invalid amount for -reservebalance="), _("PPCoin"), wxOK | wxMODAL); + return false; + } + } + // // Start the node // diff --git a/src/main.cpp b/src/main.cpp index 7790c58..429caae 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,7 +59,6 @@ int64 nHPSTimerStart; // Settings int64 nTransactionFee = MIN_TX_FEE; -int64 nBalanceReserve = 0; diff --git a/src/main.h b/src/main.h index b1d136f..72faeee 100644 --- a/src/main.h +++ b/src/main.h @@ -78,7 +78,6 @@ extern std::map mapOrphanBlocks; // Settings extern int64 nTransactionFee; -extern int64 nBalanceReserve; diff --git a/src/wallet.cpp b/src/wallet.cpp index 8acc825..a60cfca 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -1207,12 +1207,15 @@ bool CWallet::CreateCoinStake(unsigned int nBits, CTransaction& txNew) txNew.vout.push_back(CTxOut(0, scriptEmpty)); // Choose coins to use int64 nBalance = GetBalance(); - if (nBalance <= nBalanceReserve) + int64 nReserveBalance = 0; + if (mapArgs.count("-reservebalance") && !ParseMoney(mapArgs["-reservebalance"], nReserveBalance)) + return error("CreateCoinStake : invalid reserve balance amount"); + if (nBalance <= nReserveBalance) return false; set > setCoins; vector vwtxPrev; int64 nValueIn = 0; - if (!SelectCoins(nBalance - nBalanceReserve, txNew.nTime, setCoins, nValueIn)) + if (!SelectCoins(nBalance - nReserveBalance, txNew.nTime, setCoins, nValueIn)) return false; if (setCoins.empty()) return false; @@ -1246,13 +1249,13 @@ bool CWallet::CreateCoinStake(unsigned int nBits, CTransaction& txNew) break; } } - if (nCredit == 0 || nCredit > nBalance - nBalanceReserve) + if (nCredit == 0 || nCredit > nBalance - nReserveBalance) return false; BOOST_FOREACH(PAIRTYPE(const CWalletTx*, unsigned int) pcoin, setCoins) { if (pcoin.first->vout[pcoin.second].scriptPubKey == txNew.vout[1].scriptPubKey && pcoin.first->GetHash() != txNew.vin[0].prevout.hash) { - if (nCredit + pcoin.first->vout[pcoin.second].nValue > nBalance - nBalanceReserve) + if (nCredit + pcoin.first->vout[pcoin.second].nValue > nBalance - nReserveBalance) break; txNew.vin.push_back(CTxIn(pcoin.first->GetHash(), pcoin.second)); nCredit += pcoin.first->vout[pcoin.second].nValue; -- 1.7.1