[bitcoin-cli] improve error output #6387

Merged
merged 1 commit into from Jul 8, 2015

Conversation

Projects
None yet
3 participants
@jonasschnelli
Member

jonasschnelli commented Jul 7, 2015

[only affects bitcoin-cli]

At the moment, errors in bitcoin-cli are sent to stderr as compact json string. Example:

jonasschnelli$ ./src/bitcoin-cli -regtest sendtoaddress 276536543
error: {"code":-1,"message":"sendtoaddress \"bitcoinaddress\" amount ( \"comment\" \"comment-to\" 
subtractfeefromamount )\n\nSend an amount to a given address. The amount is a real and is rounded to the nearest 0.00000001\n\nArguments:\n1. \"bitcoinaddress\"  (string, required) The bitcoin address to 
send to.\n2. \"amount\"      (numeric, required) The amount in btc to send. eg 0.1\n3. \"comment\"     (string, optional) A comment used to store what the transaction is for. \n                             This is not part 
of the transaction, just kept in your wallet.\n4. \"comment-to\"  (string, optional) A comment to store the name of the person or organization \n                             to which you're sending the transaction. This is 
not part of the \n                             transaction, just kept in your wallet.\n5. subtractfeefromamount  (boolean, optional, default=false) The fee will be deducted from the amount being sent.\n                             
The recipient will receive less bitcoins than you enter in the amount field.\n\nResult:\n\"transactionid\"  (string) The transaction id.\n\nExamples:\n> bitcoin-cli sendtoaddress 
\"1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd\" 0.1\n> bitcoin-cli sendtoaddress \"1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd\" 0.1 \"donation\" \"seans outpost\"\n> bitcoin-cli 
sendtoaddress \"1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd\" 0.1 \"\" \"\" true\n> curl --user myusername --data-binary '{\"jsonrpc\": \"1.0\", \"id\":\"curltest\", \"method\": \"sendtoaddress\", \"params\": 
[\"1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd\", 0.1, \"donation\", \"seans outpost\"] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/\n"}

This PR would format the error message and error code so that it's better readable. Example after this PR:

jonasschnelli$ ./src/bitcoin-cli --regtest sendtoaddress mvDv4Z
error code: -1
error message:
sendtoaddress "bitcoinaddress" amount ( "comment" "comment-to" subtractfeefromamount )

Send an amount to a given address. The amount is a real and is rounded to the nearest 0.00000001

Arguments:
1. "bitcoinaddress"  (string, required) The bitcoin address to send to.
2. "amount"      (numeric, required) The amount in btc to send. eg 0.1
3. "comment"     (string, optional) A comment used to store what the transaction is for. 
                             This is not part of the transaction, just kept in your wallet.
4. "comment-to"  (string, optional) A comment to store the name of the person or organization 
                             to which you're sending the transaction. This is not part of the 
                             transaction, just kept in your wallet.
5. subtractfeefromamount  (boolean, optional, default=false) The fee will be deducted from the amount being sent.
                             The recipient will receive less bitcoins than you enter in the amount field.

Result:
"transactionid"  (string) The transaction id.

Examples:
> bitcoin-cli sendtoaddress "1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd" 0.1
> bitcoin-cli sendtoaddress "1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd" 0.1 "donation" "seans outpost"
> bitcoin-cli sendtoaddress "1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd" 0.1 "" "" true
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "sendtoaddress", "params": ["1M72Sfpbz1BPpXFHz9m3CdqATR44Jvaydd", 0.1, "donation", "seans outpost"] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/

@laanwj laanwj added the RPC/REST/ZMQ label Jul 7, 2015

@jgarzik

This comment has been minimized.

Show comment
Hide comment
@jgarzik

jgarzik Jul 7, 2015

Contributor

ACK

Contributor

jgarzik commented Jul 7, 2015

ACK

@@ -190,6 +190,15 @@ int CommandLineRPC(int argc, char *argv[])
throw CConnectionFailed("server in warmup");
strPrint = "error: " + error.write();

This comment has been minimized.

@laanwj

laanwj Jul 7, 2015

Member

Maybe not print the whole object, when we print the nicely formatted error?

What has always held me back from doing this (sensible) thing is that scripts may be relying on bitcoin-cli's output for errors to be as it is.

@laanwj

laanwj Jul 7, 2015

Member

Maybe not print the whole object, when we print the nicely formatted error?

What has always held me back from doing this (sensible) thing is that scripts may be relying on bitcoin-cli's output for errors to be as it is.

This comment has been minimized.

@jonasschnelli

jonasschnelli Jul 7, 2015

Member

This line strPrint = "error: " + error.write(); get's overwritten at L198 when error.isObject() (currently always).
Hmm... if someone relies on a/the output of a RPC client application like bitcoin-cli he should definitively rethink his API design and probably directly use the JSON RPC API.

@jonasschnelli

jonasschnelli Jul 7, 2015

Member

This line strPrint = "error: " + error.write(); get's overwritten at L198 when error.isObject() (currently always).
Hmm... if someone relies on a/the output of a RPC client application like bitcoin-cli he should definitively rethink his API design and probably directly use the JSON RPC API.

This comment has been minimized.

@laanwj

laanwj Jul 7, 2015

Member

Ok, fair enough. utACK.

@laanwj

laanwj Jul 7, 2015

Member

Ok, fair enough. utACK.

This comment has been minimized.

@jgarzik

jgarzik Jul 7, 2015

Contributor

Agree / @jonasschnelli

@laanwj

This comment has been minimized.

Show comment
Hide comment
@laanwj

laanwj Jul 7, 2015

Member

Travis error was unrelated (see #6391)

Member

laanwj commented Jul 7, 2015

Travis error was unrelated (see #6391)

@laanwj laanwj merged commit 65ce021 into bitcoin:master Jul 8, 2015

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details

laanwj added a commit that referenced this pull request Jul 8, 2015

Merge pull request #6387
65ce021 [bitcoin-cli] improve error output (Jonas Schnelli)

@str4d str4d referenced this pull request in zcash/zcash Feb 15, 2017

Merged

Bitcoin 0.12 misc PRs 1 #2099

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment