bitcoind-API senddrawtransaktionsfehler 500

Ich erhalte einen Fehler 500 von meinem Webserver, wenn ich versuche, eine Rohtransaktion über die RPC-API zu senden.

PHP-Nachricht:

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-Nachricht:

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}

Dies ist die Zeile, die abstürzt:

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

Jeder andere API-Aufruf funktioniert, zum Beispiel validateaddress.

Irgendeine Idee, warum dies fehlschlägt? Dieselbe Rohtransaktion funktioniert, wenn sie über die Bitcoin-Befehlszeile gesendet wird.

Danke

Antworten (1)

Sie können eine Transaktion nicht zweimal senden. Wenn Sie es bereits von der Bitcoin-Befehlszeile gesendet haben, schlägt es mit dem Fehler -22 (cli) oder 500 (http) fehl.


500 bedeutet falsche Daten: unzureichende Mittel, schlechte Syntax, schlechter Typ, unmöglicher Befehl ...

Versuchen Sie, in string: umzuwandeln $bitcoin -> sendrawtransaction((string)$tx_data), und tun Sie var_dump($tx_data), um den Typ zu finden.

Wenn es nicht hilft, senden Sie diese POST-Anforderung von cURL, wie im Tutorial: https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)#Command_line_.28cURL.29

Mit curl konnte ich den Fehler herausfinden. Mein Roh-TX hatte am Ende ein \n, das den Fehler 500 zurückgab.