@ -853,8 +853,9 @@ static UniValue getbalance(const JSONRPCRequest& request)
return NullUniValue ;
return NullUniValue ;
}
}
if ( request . fHelp | | ( request . params . size ( ) > 3 & & IsDeprecatedRPCEnabled ( " accounts " ) ) | | ( request . params . size ( ) ! = 0 & & ! IsDeprecatedRPCEnabled ( " accounts " ) ) )
if ( request . fHelp | | ( request . params . size ( ) > 3 ) )
throw std : : runtime_error (
throw std : : runtime_error (
( IsDeprecatedRPCEnabled ( " accounts " ) ? std : : string (
" getbalance ( \" account \" minconf include_watchonly ) \n "
" getbalance ( \" account \" minconf include_watchonly ) \n "
" \n If account is not specified, returns the server's total available balance. \n "
" \n If account is not specified, returns the server's total available balance. \n "
" The available balance is what the wallet considers currently spendable, and is \n "
" The available balance is what the wallet considers currently spendable, and is \n "
@ -876,8 +877,17 @@ static UniValue getbalance(const JSONRPCRequest& request)
" balances. In general, account balance calculation is not considered \n "
" balances. In general, account balance calculation is not considered \n "
" reliable and has resulted in confusing outcomes, so it is recommended to \n "
" reliable and has resulted in confusing outcomes, so it is recommended to \n "
" avoid passing this argument. \n "
" avoid passing this argument. \n "
" 2. minconf (numeric, optional, default=1) DEPRECATED. Only valid when an account is specified. This argument will be removed in V0.18. To use this deprecated argument, start bitcoind with -deprecatedrpc=accounts. Only include transactions confirmed at least this many times. \n "
" 2. minconf (numeric, optional) Only include transactions confirmed at least this many times. \n "
" 3. include_watchonly (bool, optional, default=false) DEPRECATED. Only valid when an account is specified. This argument will be removed in V0.18. To use this deprecated argument, start bitcoind with -deprecatedrpc=accounts. Also include balance in watch-only addresses (see 'importaddress') \n "
" The default is 1 if an account is provided or 0 if no account is provided \n " )
: std : : string (
" getbalance ( \" (dummy) \" minconf include_watchonly ) \n "
" \n Returns the total available balance. \n "
" The available balance is what the wallet considers currently spendable, and is \n "
" thus affected by options which limit spendability such as -spendzeroconfchange. \n "
" \n Arguments: \n "
" 1. (dummy) (string, optional) Remains for backward compatibility. Must be excluded or set to \" * \" . \n "
" 2. minconf (numeric, optional, default=0) Only include transactions confirmed at least this many times. \n " ) ) +
" 3. include_watchonly (bool, optional, default=false) Also include balance in watch-only addresses (see 'importaddress') \n "
" \n Result: \n "
" \n Result: \n "
" amount (numeric) The total amount in " + CURRENCY_UNIT + " received for this account. \n "
" amount (numeric) The total amount in " + CURRENCY_UNIT + " received for this account. \n "
" \n Examples: \n "
" \n Examples: \n "
@ -895,38 +905,35 @@ static UniValue getbalance(const JSONRPCRequest& request)
LOCK2 ( cs_main , pwallet - > cs_wallet ) ;
LOCK2 ( cs_main , pwallet - > cs_wallet ) ;
if ( IsDeprecatedRPCEnabled ( " accounts " ) ) {
const UniValue & account_value = request . params [ 0 ] ;
const UniValue & account_value = request . params [ 0 ] ;
const UniValue & minconf = request . params [ 1 ] ;
const UniValue & include_watchonly = request . params [ 2 ] ;
if ( account_value . isNull ( ) ) {
int min_depth = 0 ;
if ( ! minconf . isNull ( ) ) {
if ( IsDeprecatedRPCEnabled ( " accounts " ) & & ! account_value . isNull ( ) ) {
throw JSONRPCError ( RPC_INVALID_PARAMETER ,
// Default min_depth to 1 when an account is provided.
" getbalance minconf option is only currently supported if an account is specified " ) ;
min_depth = 1 ;
}
}
if ( ! include_watchonly . isNull ( ) ) {
if ( ! request . params [ 1 ] . isNull ( ) ) {
throw JSONRPCError ( RPC_INVALID_PARAMETER ,
min_depth = request . params [ 1 ] . get_int ( ) ;
" getbalance include_watchonly option is only currently supported if an account is specified " ) ;
}
}
return ValueFromAmount ( pwallet - > GetBalance ( ) ) ;
isminefilter filter = ISMINE_SPENDABLE ;
if ( ! request . params [ 2 ] . isNull ( ) & & request . params [ 2 ] . get_bool ( ) ) {
filter = filter | ISMINE_WATCH_ONLY ;
}
}
if ( ! account_value . isNull ( ) ) {
const std : : string & account_param = account_value . get_str ( ) ;
const std : : string & account_param = account_value . get_str ( ) ;
const std : : string * account = account_param ! = " * " ? & account_param : nullptr ;
const std : : string * account = account_param ! = " * " ? & account_param : nullptr ;
int nMinDepth = 1 ;
if ( ! IsDeprecatedRPCEnabled ( " accounts " ) & & account_param ! = " * " ) {
if ( ! minconf . isNull ( ) )
throw JSONRPCError ( RPC_METHOD_DEPRECATED , " dummy first argument must be excluded or set to \" * \" . " ) ;
nMinDepth = minconf . get_int ( ) ;
} else if ( IsDeprecatedRPCEnabled ( " accounts " ) ) {
isminefilter filter = ISMINE_SPENDABLE ;
return ValueFromAmount ( pwallet - > GetLegacyBalance ( filter , min_depth , account ) ) ;
if ( ! include_watchonly . isNull ( ) )
}
if ( include_watchonly . get_bool ( ) )
filter = filter | ISMINE_WATCH_ONLY ;
return ValueFromAmount ( pwallet - > GetLegacyBalance ( filter , nMinDepth , account ) ) ;
}
}
return ValueFromAmount ( pwallet - > GetBalance ( ) ) ;
return ValueFromAmount ( pwallet - > GetBalance ( filter , min_depth ) ) ;
}
}
static UniValue getunconfirmedbalance ( const JSONRPCRequest & request )
static UniValue getunconfirmedbalance ( const JSONRPCRequest & request )
@ -4416,7 +4423,7 @@ static const CRPCCommand commands[] =
{ " wallet " , " dumpwallet " , & dumpwallet , { " filename " } } ,
{ " wallet " , " dumpwallet " , & dumpwallet , { " filename " } } ,
{ " wallet " , " encryptwallet " , & encryptwallet , { " passphrase " } } ,
{ " wallet " , " encryptwallet " , & encryptwallet , { " passphrase " } } ,
{ " wallet " , " getaddressinfo " , & getaddressinfo , { " address " } } ,
{ " wallet " , " getaddressinfo " , & getaddressinfo , { " address " } } ,
{ " wallet " , " getbalance " , & getbalance , { " account " , " minconf " , " include_watchonly " } } ,
{ " wallet " , " getbalance " , & getbalance , { " account |dummy " , " minconf " , " include_watchonly " } } ,
{ " wallet " , " getnewaddress " , & getnewaddress , { " label|account " , " address_type " } } ,
{ " wallet " , " getnewaddress " , & getnewaddress , { " label|account " , " address_type " } } ,
{ " wallet " , " getrawchangeaddress " , & getrawchangeaddress , { " address_type " } } ,
{ " wallet " , " getrawchangeaddress " , & getrawchangeaddress , { " address_type " } } ,
{ " wallet " , " getreceivedbyaddress " , & getreceivedbyaddress , { " address " , " minconf " } } ,
{ " wallet " , " getreceivedbyaddress " , & getreceivedbyaddress , { " address " , " minconf " } } ,