@ -1169,9 +1169,8 @@ UniValue addmultisigaddress(const JSONRPCRequest& request)
@@ -1169,9 +1169,8 @@ UniValue addmultisigaddress(const JSONRPCRequest& request)
return NullUniValue ;
}
if ( request . fHelp | | request . params . size ( ) < 2 | | request . params . size ( ) > 3 )
{
std : : string msg = " addmultisigaddress nrequired [ \" key \" ,...] ( \" account \" ) \n "
if ( request . fHelp | | request . params . size ( ) < 2 | | request . params . size ( ) > 4 ) {
std : : string msg = " addmultisigaddress nrequired [ \" key \" ,...] ( \" account \" \" address_type \" ) \n "
" \n Add a nrequired-to-sign multisignature address to the wallet. Requires a new wallet backup. \n "
" Each key is a Bitcoin address or hex-encoded public key. \n "
" This functionality is only intended for use with non-watchonly addresses. \n "
@ -1186,6 +1185,7 @@ UniValue addmultisigaddress(const JSONRPCRequest& request)
@@ -1186,6 +1185,7 @@ UniValue addmultisigaddress(const JSONRPCRequest& request)
" ..., \n "
" ] \n "
" 3. \" account \" (string, optional) DEPRECATED. An account to assign the addresses to. \n "
" 4. \" address_type \" (string, optional) The address type to use. Options are \" legacy \" , \" p2sh-segwit \" , and \" bech32 \" . Default is set by -addresstype. \n "
" \n Result: \n "
" { \n "
@ -1224,10 +1224,18 @@ UniValue addmultisigaddress(const JSONRPCRequest& request)
@@ -1224,10 +1224,18 @@ UniValue addmultisigaddress(const JSONRPCRequest& request)
}
}
OutputType output_type = g_address_type ;
if ( ! request . params [ 3 ] . isNull ( ) ) {
output_type = ParseOutputType ( request . params [ 3 ] . get_str ( ) , output_type ) ;
if ( output_type = = OUTPUT_TYPE_NONE ) {
throw JSONRPCError ( RPC_INVALID_ADDRESS_OR_KEY , strprintf ( " Unknown address type '%s' " , request . params [ 3 ] . get_str ( ) ) ) ;
}
}
// Construct using pay-to-script-hash:
CScript inner = CreateMultisigRedeemscript ( required , pubkeys ) ;
pwallet - > AddCScript ( inner ) ;
CTxDestination dest = pwallet - > AddAndGetDestinationForScript ( inner , g_address_type ) ;
CTxDestination dest = pwallet - > AddAndGetDestinationForScript ( inner , output _type) ;
pwallet - > SetAddressBook ( dest , strAccount , " send " ) ;
// Return old style interface
@ -3519,7 +3527,7 @@ static const CRPCCommand commands[] =
@@ -3519,7 +3527,7 @@ static const CRPCCommand commands[] =
{ " hidden " , " resendwallettransactions " , & resendwallettransactions , { } } ,
{ " wallet " , " abandontransaction " , & abandontransaction , { " txid " } } ,
{ " wallet " , " abortrescan " , & abortrescan , { } } ,
{ " wallet " , " addmultisigaddress " , & addmultisigaddress , { " nrequired " , " keys " , " account " } } ,
{ " wallet " , " addmultisigaddress " , & addmultisigaddress , { " nrequired " , " keys " , " account " , " address_type " } } ,
{ " hidden " , " addwitnessaddress " , & addwitnessaddress , { " address " , " p2sh " } } ,
{ " wallet " , " backupwallet " , & backupwallet , { " destination " } } ,
{ " wallet " , " bumpfee " , & bumpfee , { " txid " , " options " } } ,