bitcoind API sendrawtransaction error 500

1

I'm getting an error 500 from my web server when I try to send a raw transaction through the RPC API.

PHP message:

PHP Warning:  fopen(://...@IP:8332/): failed to open stream: HTTP request failed!
HTTP/1.1 500 Internal Server Error
in /usr/share/nginx/html/common/jsonRPCClient.php on line 132

PHP message:

PHP Fatal error:  Uncaught exception 'Exception' with message
'Unable to connect to://bitcoinrpc:PASSWORD@IP:8332/' 
in /usr/share/nginx/html/common/jsonRPCClient.php:140

Stack trace:

#0 /usr/share/nginx/html/tools/do_sendBTC.php(131): 
jsonRPCClient->__call('sendrawtransact...', Array)
#1 /usr/share/nginx/html/tools/do_sendBTC.php(131): 
jsonRPCClient->sendrawtransaction('010000000115d34...')
#2 {main}

This is the line that crashes:

$result = $bitcoin->sendrawtransaction($tx_data);

Every other API call works, for example validateaddress.

Any idea why this fails? The same raw transaction works if sent through the bitcoind command line.

Thanks

Antoni

Posted 2013-08-25T14:34:30.630

Reputation: 37

Answers

1

You cannot send one transaction twice. If you have already sent it from bitcoin commandline, then it will fail with -22(cli) or 500(http) error.


500 means incorrect data: insufficient funds, bad syntax, bad type, impossible command...

Try to cast to string: $bitcoin -> sendrawtransaction((string)$tx_data), and do var_dump($tx_data) to find the type.

If it doesn't help, send this POST request from cURL, as in tutorial: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#Command_line_.28cURL.29

ripazha

Posted 2013-08-25T14:34:30.630

Reputation: 488

Using curl I could find out the error. My raw TX had an \n at the end which returned the error 500.Antoni 2013-08-25T15:44:33.147