@ -318,8 +318,9 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
{
{
if ( fHelp | | params . size ( ) ! = 2 )
if ( fHelp | | params . size ( ) ! = 2 )
throw runtime_error (
throw runtime_error (
" createrawtransaction [{ \" txid \" : \" id \" , \" vout \" :n},...] { \" address \" :amount,...} \n "
" createrawtransaction [{ \" txid \" : \" id \" , \" vout \" :n},...] { \" address \" :amount, \" data \" : \" hex \" ,...} \n "
" \n Create a transaction spending the given inputs and sending to the given addresses. \n "
" \n Create a transaction spending the given inputs and creating new outputs. \n "
" Outputs can be addresses or data. \n "
" Returns hex-encoded raw transaction. \n "
" Returns hex-encoded raw transaction. \n "
" Note that the transaction's inputs are not signed, and \n "
" Note that the transaction's inputs are not signed, and \n "
" it is not stored in the wallet or transmitted to the network. \n "
" it is not stored in the wallet or transmitted to the network. \n "
@ -333,18 +334,20 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
" } \n "
" } \n "
" ,... \n "
" ,... \n "
" ] \n "
" ] \n "
" 2. \" addresses \" (string, required) a json object with addresses as keys and amounts as value s\n "
" 2. \" outputs \" (string, required) a json object with output s\n "
" { \n "
" { \n "
" \" address \" : x.xxx (numeric, required) The key is the bitcoin address, the value is the " + CURRENCY_UNIT + " amount \n "
" \" address \" : x.xxx (numeric, required) The key is the bitcoin address, the value is the " + CURRENCY_UNIT + " amount \n "
" ,... \n "
" \" data \" : \" hex \" , (string, required) The key is \" data \" , the value is hex encoded data \n "
" ... \n "
" } \n "
" } \n "
" \n Result: \n "
" \n Result: \n "
" \" transaction \" (string) hex string of the transaction \n "
" \" transaction \" (string) hex string of the transaction \n "
" \n Examples \n "
" \n Examples \n "
+ HelpExampleCli ( " createrawtransaction " , " \" [{ \\ \" txid \\ \" : \\ \" myid \\ \" , \\ \" vout \\ \" :0}] \" \" { \\ \" address \\ \" :0.01} \" " )
+ HelpExampleCli ( " createrawtransaction " , " \" [{ \\ \" txid \\ \" : \\ \" myid \\ \" , \\ \" vout \\ \" :0}] \" \" { \\ \" address \\ \" :0.01} \" " )
+ HelpExampleCli ( " createrawtransaction " , " \" [{ \\ \" txid \\ \" : \\ \" myid \\ \" , \\ \" vout \\ \" :0}] \" \" { \\ \" data \\ \" : \\ \" 00010203 \\ \" } \" " )
+ HelpExampleRpc ( " createrawtransaction " , " \" [{ \\ \" txid \\ \" : \\ \" myid \\ \" , \\ \" vout \\ \" :0}] \" , \" { \\ \" address \\ \" :0.01} \" " )
+ HelpExampleRpc ( " createrawtransaction " , " \" [{ \\ \" txid \\ \" : \\ \" myid \\ \" , \\ \" vout \\ \" :0}] \" , \" { \\ \" address \\ \" :0.01} \" " )
+ HelpExampleRpc ( " createrawtransaction " , " \" [{ \\ \" txid \\ \" : \\ \" myid \\ \" , \\ \" vout \\ \" :0}] \" , \" { \\ \" data \\ \" : \\ \" 00010203 \\ \" } \" " )
) ;
) ;
LOCK ( cs_main ) ;
LOCK ( cs_main ) ;
@ -375,6 +378,13 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
set < CBitcoinAddress > setAddress ;
set < CBitcoinAddress > setAddress ;
vector < string > addrList = sendTo . getKeys ( ) ;
vector < string > addrList = sendTo . getKeys ( ) ;
BOOST_FOREACH ( const string & name_ , addrList ) {
BOOST_FOREACH ( const string & name_ , addrList ) {
if ( name_ = = " data " ) {
std : : vector < unsigned char > data = ParseHexV ( sendTo [ name_ ] . getValStr ( ) , " Data " ) ;
CTxOut out ( 0 , CScript ( ) < < OP_RETURN < < data ) ;
rawTx . vout . push_back ( out ) ;
} else {
CBitcoinAddress address ( name_ ) ;
CBitcoinAddress address ( name_ ) ;
if ( ! address . IsValid ( ) )
if ( ! address . IsValid ( ) )
throw JSONRPCError ( RPC_INVALID_ADDRESS_OR_KEY , string ( " Invalid Bitcoin address: " ) + name_ ) ;
throw JSONRPCError ( RPC_INVALID_ADDRESS_OR_KEY , string ( " Invalid Bitcoin address: " ) + name_ ) ;
@ -389,6 +399,7 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp)
CTxOut out ( nAmount , scriptPubKey ) ;
CTxOut out ( nAmount , scriptPubKey ) ;
rawTx . vout . push_back ( out ) ;
rawTx . vout . push_back ( out ) ;
}
}
}
return EncodeHexTx ( rawTx ) ;
return EncodeHexTx ( rawTx ) ;
}
}