@ -702,22 +702,13 @@ Value sendmany(const Array& params, bool fHelp)
@@ -702,22 +702,13 @@ Value sendmany(const Array& params, bool fHelp)
return wtx . GetHash ( ) . GetHex ( ) ;
}
Value addmultisigaddress ( const Array & params , bool fHelp )
//
// Used by addmultisigaddress / createmultisig:
//
static CScript _createmultisig ( const Array & params )
{
if ( fHelp | | params . size ( ) < 2 | | params . size ( ) > 3 )
{
string msg = " addmultisigaddress <nrequired> <'[ \" key \" , \" key \" ]'> [account] \n "
" Add a nrequired-to-sign multisignature address to the wallet \" \n "
" each key is a Bitcoin address or hex-encoded public key \n "
" If [account] is specified, assign address to [account]. " ;
throw runtime_error ( msg ) ;
}
int nRequired = params [ 0 ] . get_int ( ) ;
const Array & keys = params [ 1 ] . get_array ( ) ;
string strAccount ;
if ( params . size ( ) > 2 )
strAccount = AccountFromValue ( params [ 2 ] ) ;
// Gather public keys
if ( nRequired < 1 )
@ -760,10 +751,28 @@ Value addmultisigaddress(const Array& params, bool fHelp)
@@ -760,10 +751,28 @@ Value addmultisigaddress(const Array& params, bool fHelp)
throw runtime_error ( " Invalid public key: " + ks ) ;
}
}
CScript result ;
result . SetMultisig ( nRequired , pubkeys ) ;
return result ;
}
Value addmultisigaddress ( const Array & params , bool fHelp )
{
if ( fHelp | | params . size ( ) < 2 | | params . size ( ) > 3 )
{
string msg = " addmultisigaddress <nrequired> <'[ \" key \" , \" key \" ]'> [account] \n "
" Add a nrequired-to-sign multisignature address to the wallet \" \n "
" each key is a Bitcoin address or hex-encoded public key \n "
" If [account] is specified, assign address to [account]. " ;
throw runtime_error ( msg ) ;
}
string strAccount ;
if ( params . size ( ) > 2 )
strAccount = AccountFromValue ( params [ 2 ] ) ;
// Construct using pay-to-script-hash:
CScript inner ;
inner . SetMultisig ( nRequired , pubkeys ) ;
CScript inner = _createmultisig ( params ) ;
CScriptID innerID = inner . GetID ( ) ;
pwalletMain - > AddCScript ( inner ) ;
@ -771,6 +780,30 @@ Value addmultisigaddress(const Array& params, bool fHelp)
@@ -771,6 +780,30 @@ Value addmultisigaddress(const Array& params, bool fHelp)
return CBitcoinAddress ( innerID ) . ToString ( ) ;
}
Value createmultisig ( const Array & params , bool fHelp )
{
if ( fHelp | | params . size ( ) < 2 | | params . size ( ) > 2 )
{
string msg = " createmultisig <nrequired> <'[ \" key \" , \" key \" ]'> \n "
" Creates a multi-signature address and returns a json object \n "
" with keys: \n "
" address : bitcoin address \n "
" redeemScript : hex-encoded redemption script " ;
throw runtime_error ( msg ) ;
}
// Construct using pay-to-script-hash:
CScript inner = _createmultisig ( params ) ;
CScriptID innerID = inner . GetID ( ) ;
CBitcoinAddress address ( innerID ) ;
Object result ;
result . push_back ( Pair ( " address " , address . ToString ( ) ) ) ;
result . push_back ( Pair ( " redeemScript " , HexStr ( inner . begin ( ) , inner . end ( ) ) ) ) ;
return result ;
}
struct tallyitem
{