entry.push_back(Pair("txid", wtx.GetHash().GetHex()));
entry.push_back(Pair("time", (int64_t)wtx.GetTxTime()));
entry.push_back(Pair("timereceived", (int64_t)wtx.nTimeReceived));
- BOOST_FOREACH(const PAIRTYPE(string,string)& item, wtx.mapValue)
+ for (const auto& item : wtx.mapValue)
entry.push_back(Pair(item.first, item.second));
}
++it)
{
const CWalletTx& wtx = (*it).second;
- BOOST_FOREACH(const CTxOut& txout, wtx.vout)
+ for (const CTxOut& txout : wtx.vout)
if (txout.scriptPubKey == scriptPubKey)
bKeyUsed = true;
}
// Find all addresses that have the given account
Array ret;
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, string)& item, pwalletMain->mapAddressBook)
+ for (const auto& item : pwalletMain->mapAddressBook)
{
const CBitcoinAddress& address = item.first;
const string& strName = item.second;
return Value::null;
Array mergedHashes;
- BOOST_FOREACH(const uint256 txHash, listMerged)
+ for (const uint256 txHash : listMerged)
mergedHashes.push_back(txHash.GetHex());
return mergedHashes;
Array jsonGroupings;
map<CBitcoinAddress, int64_t> balances = pwalletMain->GetAddressBalances();
- BOOST_FOREACH(set<CBitcoinAddress> grouping, pwalletMain->GetAddressGroupings())
+ for (set<CBitcoinAddress> grouping : pwalletMain->GetAddressGroupings())
{
Array jsonGrouping;
- BOOST_FOREACH(CBitcoinAddress address, grouping)
+ for (CBitcoinAddress address : grouping)
{
Array addressInfo;
addressInfo.push_back(address.ToString());
const CWalletTx& wtx = (*it).second;
if (wtx.IsCoinBase() || wtx.IsCoinStake() || !wtx.IsFinal())
continue;
- BOOST_FOREACH(const CTxOut& txout, wtx.vout)
+ for (const CTxOut& txout : wtx.vout)
{
CBitcoinAddress addressRet;
if (!ExtractAddress(*pwalletMain, txout.scriptPubKey, addressRet))
void GetAccountAddresses(string strAccount, set<CBitcoinAddress>& setAddress)
{
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, string)& item, pwalletMain->mapAddressBook)
+ for (const auto& item : pwalletMain->mapAddressBook)
{
const CBitcoinAddress& address = item.first;
const string& strName = item.second;
if (wtx.IsCoinBase() || wtx.IsCoinStake() || !wtx.IsFinal())
continue;
- BOOST_FOREACH(const CTxOut& txout, wtx.vout)
+ for (const CTxOut& txout : wtx.vout)
{
CBitcoinAddress address;
if (ExtractAddress(*pwalletMain, txout.scriptPubKey, address) && IsMine(*pwalletMain, address) && setAddress.count(address))
Value getbalance(const Array& params, bool fHelp)
{
- if (fHelp || params.size() > 2)
+ if (fHelp || params.size() > 3)
throw runtime_error(
"getbalance [account] [minconf=1] [watchonly=0]\n"
"If [account] is not specified, returns the server's total available balance.\n"
wtx.GetAmounts(allGeneratedImmature, allGeneratedMature, listReceived, listSent, allFee, strSentAccount, filter);
if (wtx.GetDepthInMainChain() >= nMinDepth)
{
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64_t)& r, listReceived)
+ for (const auto& r : listReceived)
nBalance += r.second;
}
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress,int64_t)& r, listSent)
+ for (const auto& r : listSent)
nBalance -= r.second;
nBalance -= allFee;
nBalance += allGeneratedMature;
// Parse address
CScript scriptPubKey;
- string strAddress = params[0].get_str();
+ string strAddress = params[1].get_str();
CBitcoinAddress address(strAddress);
if (address.IsValid())
vector<pair<CScript, int64_t> > vecSend;
int64_t totalAmount = 0;
- BOOST_FOREACH(const Pair& s, sendTo)
+ for (const Pair& s : sendTo)
{
CBitcoinAddress address(s.name_);
if (!address.IsValid())
if (nDepth < nMinDepth)
continue;
- BOOST_FOREACH(const CTxOut& txout, wtx.vout)
+ for (const CTxOut& txout : wtx.vout)
{
CTxDestination address;
if (!ExtractDestination(txout.scriptPubKey, address) || !IsMine(*pwalletMain, address))
// Reply
Array ret;
map<string, tallyitem> mapAccountTally;
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, string)& item, pwalletMain->mapAddressBook)
+ for (const auto& item : pwalletMain->mapAddressBook)
{
const CBitcoinAddress& address = item.first;
const string& strAccount = item.second;
// Sent
if ((!listSent.empty() || nFee != 0) && (fAllAccounts || strAccount == strSentAccount))
{
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64_t)& s, listSent)
+ for (const auto& s : listSent)
{
Object entry;
entry.push_back(Pair("account", strSentAccount));
// Received
if (listReceived.size() > 0 && wtx.GetDepthInMainChain() >= nMinDepth)
{
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64_t)& r, listReceived)
+ for (const auto& r : listReceived)
{
string account;
if (pwalletMain->mapAddressBook.count(r.first))
map<string, int64_t> mapAccountBalances;
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, string)& entry, pwalletMain->mapAddressBook) {
+ for (const auto& entry : pwalletMain->mapAddressBook) {
if (IsMine(*pwalletMain, entry.first)) // This address belongs to me
mapAccountBalances[entry.second] = 0;
}
list<pair<CBitcoinAddress, int64_t> > listSent;
wtx.GetAmounts(nGeneratedImmature, nGeneratedMature, listReceived, listSent, nFee, strSentAccount, includeWatchonly);
mapAccountBalances[strSentAccount] -= nFee;
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64_t)& s, listSent)
+ for (const auto& s : listSent)
mapAccountBalances[strSentAccount] -= s.second;
if (wtx.GetDepthInMainChain() >= nMinDepth)
{
mapAccountBalances[""] += nGeneratedMature;
- BOOST_FOREACH(const PAIRTYPE(CBitcoinAddress, int64_t)& r, listReceived)
+ for (const auto& r : listReceived)
if (pwalletMain->mapAddressBook.count(r.first))
mapAccountBalances[pwalletMain->mapAddressBook[r.first]] += r.second;
else
list<CAccountingEntry> acentries;
CWalletDB(pwalletMain->strWalletFile).ListAccountCreditDebit("*", acentries);
- BOOST_FOREACH(const CAccountingEntry& entry, acentries)
+ for (const CAccountingEntry& entry : acentries)
mapAccountBalances[entry.strAccount] += entry.nCreditDebit;
Object ret;
- BOOST_FOREACH(const PAIRTYPE(string, int64_t)& accountBalance, mapAccountBalances) {
+ for (const auto& accountBalance : mapAccountBalances) {
ret.push_back(Pair(accountBalance.first, ValueFromAmount(accountBalance.second)));
}
return ret;
return "wallet encrypted; NovaCoin server stopping, restart to run with encrypted wallet. The keypool has been flushed, you need to make a new backup.";
}
-class DescribeAddressVisitor : public boost::static_visitor<Object>
+class DescribeAddressVisitor
{
private:
isminetype mine;
obj.push_back(Pair("script", GetTxnOutputType(whichType)));
obj.push_back(Pair("hex", HexStr(subscript.begin(), subscript.end())));
Array a;
- BOOST_FOREACH(const CTxDestination& addr, addresses)
+ for (const CTxDestination& addr : addresses)
a.push_back(CBitcoinAddress(addr).ToString());
obj.push_back(Pair("addresses", a));
if (whichType == TX_MULTISIG)
CMalleableKeyView view;
bool isMine = pwalletMain->GetMalleableView(mpk, view);
ret.push_back(Pair("ismine", isMine));
+ ret.push_back(Pair("PubkeyPair", mpk.ToString()));
if (isMine)
ret.push_back(Pair("KeyView", view.ToString()));
ret.push_back(Pair("ismine", mine != MINE_NO));
if (mine != MINE_NO) {
ret.push_back(Pair("watchonly", mine == MINE_WATCH_ONLY));
- Object detail = boost::apply_visitor(DescribeAddressVisitor(mine), dest);
+ Object detail = std::visit(DescribeAddressVisitor(mine), dest);
ret.insert(ret.end(), detail.begin(), detail.end());
}
if (pwalletMain->mapAddressBook.count(address))
std::vector<uint256> txids = pwalletMain->ResendWalletTransactionsBefore(GetTime());
Array result;
- BOOST_FOREACH(const uint256& txid, txids)
+ for (const uint256& txid : txids)
{
result.push_back(txid.ToString());
}
{
if (fHelp || params.size() > 2 || params.size() == 0)
throw runtime_error(
- "adjustmalleablepubkey <Malleable public key data>\n"
- "Calculate new public key using provided malleable public key data.\n");
+ "adjustmalleablepubkey <Malleable address, key view or public key pair>\n"
+ "Calculate new public key using provided data.\n");
- string pubKeyPair = params[0].get_str();
+ string strData = params[0].get_str();
CMalleablePubKey malleablePubKey;
- if (pubKeyPair.size() == 136) {
- malleablePubKey.setvch(ParseHex(pubKeyPair));
- } else
- malleablePubKey.SetString(pubKeyPair);
+ do
+ {
+ CBitcoinAddress addr(strData);
+ if (addr.IsValid() && addr.IsPair())
+ {
+ // Initialize malleable pubkey with address data
+ malleablePubKey = CMalleablePubKey(addr.GetData());
+ break;
+ }
+ CMalleableKeyView viewTmp(strData);
+ if (viewTmp.IsValid())
+ {
+ // Shazaam, we have a valid key view here.
+ malleablePubKey = viewTmp.GetMalleablePubKey();
+ break;
+ }
+ if (malleablePubKey.SetString(strData))
+ break; // A valid public key pair
+
+ throw runtime_error("Though your data seems a valid Base58 string, we were unable to recognize it.");
+ }
+ while(false);
CPubKey R, vchPubKeyVariant;
malleablePubKey.GetVariant(R, vchPubKeyVariant);
pwalletMain->ListMalleableViews(keyViewList);
Array result;
- BOOST_FOREACH(const CMalleableKeyView &keyView, keyViewList)
+ for (const CMalleableKeyView &keyView : keyViewList)
{
result.push_back(keyView.ToString());
}