Browse Source

rpcwallet/sendmany: Just take an array of addresses to subtract fees from, rather than an Object with all values being identical

0.13
Luke Dashjr 10 years ago committed by Wladimir J. van der Laan
parent
commit
40a757331a
  1. 22
      src/rpcwallet.cpp

22
src/rpcwallet.cpp

@ -860,7 +860,7 @@ Value sendmany(const Array& params, bool fHelp)
{ {
if (fHelp || params.size() < 2 || params.size() > 5) if (fHelp || params.size() < 2 || params.size() > 5)
throw runtime_error( throw runtime_error(
"sendmany \"fromaccount\" {\"address\":amount,...} ( minconf \"comment\" {\"address\":true,...} )\n" "sendmany \"fromaccount\" {\"address\":amount,...} ( minconf \"comment\" [\"address\",...] )\n"
"\nSend multiple times. Amounts are double-precision floating point numbers." "\nSend multiple times. Amounts are double-precision floating point numbers."
+ HelpRequiringPassphrase() + "\n" + HelpRequiringPassphrase() + "\n"
"\nArguments:\n" "\nArguments:\n"
@ -872,14 +872,14 @@ Value sendmany(const Array& params, bool fHelp)
" }\n" " }\n"
"3. minconf (numeric, optional, default=1) Only use the balance confirmed at least this many times.\n" "3. minconf (numeric, optional, default=1) Only use the balance confirmed at least this many times.\n"
"4. \"comment\" (string, optional) A comment\n" "4. \"comment\" (string, optional) A comment\n"
"5. subtractfeefromamount (string, optional) A json object with addresses and booleans.\n" "5. subtractfeefromamount (string, optional) A json array with addresses.\n"
" The fee will be equally deducted from the amount of each selected address.\n" " The fee will be equally deducted from the amount of each selected address.\n"
" Those recipients will receive less bitcoins than you enter in their corresponding amount field.\n" " Those recipients will receive less bitcoins than you enter in their corresponding amount field.\n"
" Default for each address is false. If no addresses are specified here, the sender pays the fee.\n" " If no addresses are specified here, the sender pays the fee.\n"
" {\n" " [\n"
" \"address\":true (boolean) Subtract fee from this address\n" " \"address\" (string) Subtract fee from this address\n"
" ,...\n" " ,...\n"
" }\n" " ]\n"
"\nResult:\n" "\nResult:\n"
"\"transactionid\" (string) The transaction id for the send. Only 1 transaction is created regardless of \n" "\"transactionid\" (string) The transaction id for the send. Only 1 transaction is created regardless of \n"
" the number of addresses.\n" " the number of addresses.\n"
@ -889,7 +889,7 @@ Value sendmany(const Array& params, bool fHelp)
"\nSend two amounts to two different addresses setting the confirmation and comment:\n" "\nSend two amounts to two different addresses setting the confirmation and comment:\n"
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 6 \"testing\"") + + HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 6 \"testing\"") +
"\nSend two amounts to two different addresses, subtract fee from amount:\n" "\nSend two amounts to two different addresses, subtract fee from amount:\n"
+ HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 1 \"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":true,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":true}\"") + + HelpExampleCli("sendmany", "\"\" \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\" 1 \"\" \"[\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\",\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\"]\"") +
"\nAs a json rpc call\n" "\nAs a json rpc call\n"
+ HelpExampleRpc("sendmany", "\"\", \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\", 6, \"testing\"") + HelpExampleRpc("sendmany", "\"\", \"{\\\"1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ\\\":0.01,\\\"1353tsE8YMTA4EuV7dgUXGjNFf9KpVvKHz\\\":0.02}\", 6, \"testing\"")
); );
@ -907,9 +907,9 @@ Value sendmany(const Array& params, bool fHelp)
if (params.size() > 3 && params[3].type() != null_type && !params[3].get_str().empty()) if (params.size() > 3 && params[3].type() != null_type && !params[3].get_str().empty())
wtx.mapValue["comment"] = params[3].get_str(); wtx.mapValue["comment"] = params[3].get_str();
Object subtractFeeFromAmount; Array subtractFeeFromAmount;
if (params.size() > 4) if (params.size() > 4)
subtractFeeFromAmount = params[4].get_obj(); subtractFeeFromAmount = params[4].get_array();
set<CBitcoinAddress> setAddress; set<CBitcoinAddress> setAddress;
vector<CRecipient> vecSend; vector<CRecipient> vecSend;
@ -930,8 +930,8 @@ Value sendmany(const Array& params, bool fHelp)
totalAmount += nAmount; totalAmount += nAmount;
bool fSubtractFeeFromAmount = false; bool fSubtractFeeFromAmount = false;
BOOST_FOREACH(const Pair& s2, subtractFeeFromAmount) BOOST_FOREACH(const Value& addr, subtractFeeFromAmount)
if (s2.name_ == s.name_ && s2.value_.get_bool() == true) if (addr.get_str() == s.name_)
fSubtractFeeFromAmount = true; fSubtractFeeFromAmount = true;
CRecipient recipient = {scriptPubKey, nAmount, fSubtractFeeFromAmount}; CRecipient recipient = {scriptPubKey, nAmount, fSubtractFeeFromAmount};

Loading…
Cancel
Save