rpc: add missing fields to wallet rpc help output #16689

pull ariard wants to merge 2 commits into bitcoin:master from ariard:2019-08-missing-fields-rpcs-help changing 1 files +53 −57
  1. ariard commented at 10:41 PM on August 22, 2019: member

    Knowledge of walletconflicts field existence is really nice when you're debugging conflicts. Was added in #3671 but never documented in RPC helps.

    Others were added after a quick skim, we may still have missing ones in wallet rpcs.

  2. fanquake added the label RPC/REST/ZMQ on Aug 22, 2019
  3. fanquake renamed this:
    Add missing fields in some rpc wallets helps
    rpc: add missing fields to wallet rpc help output
    on Aug 23, 2019
  4. in src/wallet/rpcwallet.cpp:1406 in b8ea120128 outdated
    1401 |              "    \"trusted\": xxx,           (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.\n"
    1402 |              "    \"blockhash\": \"hashvalue\", (string) The block hash containing the transaction.\n"
    1403 |              "    \"blockindex\": n,          (numeric) The index of the transaction in the block that includes it.\n"
    1404 |              "    \"blocktime\": xxx,         (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
    1405 |              "    \"txid\": \"transactionid\", (string) The transaction id.\n"
    1406 | +            "    \"walletconflicts:\"hashvalue\", (array) List of txid with which this transaction is conflicting.\n"
    


    fanquake commented at 4:25 AM on August 23, 2019:

    nit: missing a space after the : here.

  5. in src/wallet/rpcwallet.cpp:1401 in b8ea120128 outdated
    1380 | @@ -1381,6 +1381,7 @@ UniValue listtransactions(const JSONRPCRequest& request)
    1381 |                  RPCResult{
    1382 |              "[\n"
    1383 |              "  {\n"
    1384 | +            "    \"involvesWatchonly\": xxx, (bool) Only returned if imported addresses were involved in transaction\n"
    


    fanquake commented at 4:29 AM on August 23, 2019:

    Matches the description from the listreceivedbylabel help.


    MarcoFalke commented at 2:32 PM on August 23, 2019:

    I'd rather pull this out into a static const RPCResult in a moveonly commit, since it is used in three places. And then only update that single place with the documentation. We do that in other places (like getmempoolentry)


    promag commented at 1:33 AM on August 25, 2019:

    Agree.

  6. fanquake commented at 4:32 AM on August 23, 2019: member

    Concept ACK - I'll have a look if there are more missing fields.

    walletconflicts was added in #3671.

    nit: In the commit body I assume you mean gettransaction.

  7. emilengler commented at 5:13 PM on August 23, 2019: contributor

    Concept ACK

  8. in src/wallet/rpcwallet.cpp:1400 in b8ea120128 outdated
    1396 | @@ -1396,11 +1397,13 @@ UniValue listtransactions(const JSONRPCRequest& request)
    1397 |              "                                         'send' category of transactions.\n"
    1398 |              "    \"confirmations\": n,       (numeric) The number of confirmations for the transaction. Negative confirmations indicate the\n"
    1399 |              "                                         transaction conflicts with the block chain\n"
    1400 | +            "    \"generated\": xxx,         (bool) Only returns true if transaction is a coinbase one\n"
    


    luke-jr commented at 7:56 PM on August 23, 2019:

    The coinbase is the input. The output is simply generated.


    ariard commented at 8:49 PM on August 23, 2019:

    Doesn't a transaction including a coinbase input qualify as a coinbase one ? We don't enforce this wording strictly if the rest of the codebase I think.

  9. luke-jr changes_requested
  10. luke-jr referenced this in commit 9820858568 on Aug 23, 2019
  11. ariard force-pushed on Aug 23, 2019
  12. ariard commented at 10:48 PM on August 23, 2019: member

    Updated at fbc3c9f as suggested in #16689 (review) (but only output from WalletTxToJSON as we may have small diffs between RPCs for other fields)

  13. in src/wallet/rpcwallet.cpp:1396 in fbc3c9f0c5 outdated
    1410 | @@ -1393,19 +1411,8 @@ UniValue listtransactions(const JSONRPCRequest& request)
    1411 |              "    \"label\": \"label\",       (string) A comment for the address/transaction, if any\n"
    1412 |              "    \"vout\": n,                (numeric) the vout value\n"
    1413 |              "    \"fee\": x.xxx,             (numeric) The amount of the fee in " + CURRENCY_UNIT + ". This is negative and only available for the \n"
    1414 | -            "                                         'send' category of transactions.\n"
    


    jonatack commented at 11:02 PM on August 23, 2019:

    This line should not be deleted.

  14. in src/wallet/rpcwallet.cpp:1365 in fbc3c9f0c5 outdated
    1358 | @@ -1359,6 +1359,23 @@ static void ListTransactions(interfaces::Chain::Lock& locked_chain, CWallet* con
    1359 |      }
    1360 |  }
    1361 |  
    1362 | +static const std::string TransactionDescriptionString()
    1363 | +{
    1364 | +    return "    \"confirmations\": n,       (numeric) The number of confirmations for the transaction. Negative confirmations indicate the\n"
    1365 | +           "                                         transaction conflicts with the block chain\n"
    


    jonatack commented at 11:07 PM on August 23, 2019:

    While extracting this, it wouldn't hurt to fixup the nits that wouldn't be worth a commit on their own, like adding the missing period at the end of this sentence and next sentence.


    jonatack commented at 11:08 PM on August 23, 2019:

    e.g. s/chain\n"/chain.\n"/ and s/one\n"/one.\n"/


    jonatack commented at 11:11 PM on August 23, 2019:

    Suggestion: s/Only returns true if transaction is a coinbase one./True if the transaction is a coinbase, otherwise false./

    Though #16689 (review) should be handled first.


    jonatack commented at 11:13 PM on August 23, 2019:

    It would be nice to align the horizontal spacing of this entire section.

  15. in src/wallet/rpcwallet.cpp:1372 in fbc3c9f0c5 outdated
    1367 | +           "    \"trusted\": xxx,           (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.\n"
    1368 | +           "    \"blockhash\": \"hashvalue\", (string) The block hash containing the transaction.\n"
    1369 | +           "    \"blockindex\": n,          (numeric) The index of the transaction in the block that includes it.\n"
    1370 | +           "    \"blocktime\": xxx,         (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
    1371 | +           "    \"txid\": \"transactionid\", (string) The transaction id.\n"
    1372 | +           "    \"walletconflicts: \"hashvalue\", (array) List of txid with which this transaction is conflicting.\n"
    


    jonatack commented at 11:15 PM on August 23, 2019:

    Grammar fix: s/List of txid with which this transaction is conflicting./List of txids that conflict with this transaction./

  16. in src/wallet/rpcwallet.cpp:1415 in fbc3c9f0c5 outdated
    1423 | -            "    \"timereceived\": xxx,      (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).\n"
    1424 | -            "    \"comment\": \"...\",       (string) If a comment is associated with the transaction.\n"
    1425 | -            "    \"bip125-replaceable\": \"yes|no|unknown\",  (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);\n"
    1426 | -            "                                                     may be unknown for unconfirmed transactions not in the mempool\n"
    1427 | +	    + TransactionDescriptionString()
    1428 | +            + "                                         'send' category of transactions.\n"
    


    jonatack commented at 11:19 PM on August 23, 2019:

    Other half of #16689 (review). This line should be moved to before TransactionDescriptionString() -- it's in the wrong place.

  17. in src/wallet/rpcwallet.cpp:1525 in fbc3c9f0c5 outdated
    1521 | @@ -1515,6 +1522,7 @@ static UniValue listsinceblock(const JSONRPCRequest& request)
    1522 |                  RPCResult{
    1523 |              "{\n"
    1524 |              "  \"transactions\": [\n"
    1525 | +            "    \"involvesWatchonly\": xxx, (bool) Only returned if imported addresses were involved in transaction\n"
    


    jonatack commented at 11:23 PM on August 23, 2019:

    "Only returned" means what? Maybe it's just me, but this and the rest of the sentence isn't clear.

    nit: missing period at end of sentence.

  18. in src/wallet/rpcwallet.cpp:1660 in fbc3c9f0c5 outdated
    1665 | -            "                                                   may be unknown for unconfirmed transactions not in the mempool\n"
    1666 | -            "  \"details\" : [\n"
    1667 | +	    + TransactionDescriptionString()
    1668 | +            + "  \"details\" : [\n"
    1669 |              "    {\n"
    1670 | +            "      \"involvesWatchonly\": xxx,         (bool) Only returned if imported addresses were involved in transaction\n"
    


    jonatack commented at 11:27 PM on August 23, 2019:

    Same here as for the identical line above #16689 (review).

  19. in src/wallet/rpcwallet.cpp:1537 in fbc3c9f0c5 outdated
    1543 | -            "    \"time\": xxx,              (numeric) The transaction time in seconds since epoch (Jan 1 1970 GMT).\n"
    1544 | -            "    \"timereceived\": xxx,      (numeric) The time received in seconds since epoch (Jan 1 1970 GMT).\n"
    1545 | -            "    \"bip125-replaceable\": \"yes|no|unknown\",  (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);\n"
    1546 | -            "                                                   may be unknown for unconfirmed transactions not in the mempool\n"
    1547 | -            "    \"abandoned\": xxx,         (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 'send' category of transactions.\n"
    1548 | +	    + TransactionDescriptionString()
    


    jonatack commented at 11:30 PM on August 23, 2019:

    nit: It looks like you added a tab at the start of this line.

  20. in src/wallet/rpcwallet.cpp:1414 in fbc3c9f0c5 outdated
    1422 | -            "    \"time\": xxx,              (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).\n"
    1423 | -            "    \"timereceived\": xxx,      (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).\n"
    1424 | -            "    \"comment\": \"...\",       (string) If a comment is associated with the transaction.\n"
    1425 | -            "    \"bip125-replaceable\": \"yes|no|unknown\",  (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);\n"
    1426 | -            "                                                     may be unknown for unconfirmed transactions not in the mempool\n"
    1427 | +	    + TransactionDescriptionString()
    


    jonatack commented at 11:30 PM on August 23, 2019:

    nit: It looks like you've added a tab at the start of this line.

  21. in src/wallet/rpcwallet.cpp:1657 in fbc3c9f0c5 outdated
    1662 | -            "  \"time\" : ttt,            (numeric) The transaction time in seconds since epoch (1 Jan 1970 GMT)\n"
    1663 | -            "  \"timereceived\" : ttt,    (numeric) The time received in seconds since epoch (1 Jan 1970 GMT)\n"
    1664 | -            "  \"bip125-replaceable\": \"yes|no|unknown\",  (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);\n"
    1665 | -            "                                                   may be unknown for unconfirmed transactions not in the mempool\n"
    1666 | -            "  \"details\" : [\n"
    1667 | +	    + TransactionDescriptionString()
    


    jonatack commented at 11:31 PM on August 23, 2019:

    nit: another tab.

  22. in src/wallet/rpcwallet.cpp:1542 in fbc3c9f0c5 outdated
    1544 | -            "    \"timereceived\": xxx,      (numeric) The time received in seconds since epoch (Jan 1 1970 GMT).\n"
    1545 | -            "    \"bip125-replaceable\": \"yes|no|unknown\",  (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);\n"
    1546 | -            "                                                   may be unknown for unconfirmed transactions not in the mempool\n"
    1547 | -            "    \"abandoned\": xxx,         (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 'send' category of transactions.\n"
    1548 | +	    + TransactionDescriptionString()
    1549 | +            + "    \"abandoned\": xxx,         (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 'send' category of transactions.\n"
    


    jonatack commented at 11:36 PM on August 23, 2019:

    s/'true'/True/

    Possibly: s/Only available for/Only applies to/

  23. jonatack commented at 11:37 PM on August 23, 2019: member

    Concept ACK.

  24. DrahtBot commented at 5:39 AM on August 24, 2019: member

    <!--e57a25ab6845829454e8d69fc972939a-->

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    <!--174a7506f384e20aa4161008e828411d-->

    Conflicts

    No conflicts as of last run.

  25. ariard force-pushed on Aug 26, 2019
  26. ariard commented at 2:47 PM on August 26, 2019: member

    Updated at c86def6 with @jonatack comments addressed, thanks for the review!

  27. in src/wallet/rpcwallet.cpp:1368 in c86def6381 outdated
    1363 | +{
    1364 | +    return "    \"confirmations\": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the\n"
    1365 | +           "                                                       transaction conflicts with the block chain.\n"
    1366 | +           "    \"generated\": xxx,                          (bool) Only returns true if transaction only input is a coinbase one, otherwise false.\n"
    1367 | +           "    \"trusted\": xxx,                            (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.\n"
    1368 | +           "    \"blockhash\": \"hashvalue\",                (string) The block hash containing the transaction.\n"
    


    promag commented at 2:56 PM on August 26, 2019:

    nit, try to have it aligned with surrounding lines.


    ariard commented at 1:33 PM on September 18, 2019:

    You mean blockhash compare to trusted and others ? Don't get the misalignment here


    MarcoFalke commented at 7:33 PM on September 18, 2019:

    I think the first commit (moveonly) should actually be moveonly (via git diff --color-moved=dimmed-zebra).

    Otherwise the rendered whitespace will be messed up. (You can get the help text with the help listtransactions rpc)

  28. in src/wallet/rpcwallet.cpp:1406 in 61caff0353 outdated
    1416 | -            "    \"blockindex\": n,          (numeric) The index of the transaction in the block that includes it.\n"
    1417 | -            "    \"blocktime\": xxx,         (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
    1418 | -            "    \"txid\": \"transactionid\", (string) The transaction id.\n"
    1419 | -            "    \"time\": xxx,              (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).\n"
    1420 | -            "    \"timereceived\": xxx,      (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).\n"
    1421 | -            "    \"comment\": \"...\",       (string) If a comment is associated with the transaction.\n"
    


    meshcollider commented at 2:31 AM on September 10, 2019:

    Not sure if this was a deliberate removal but comment is still a field which might be present, among others.

    for (const std::pair<const std::string, std::string>& item : wtx.mapValue)
            entry.pushKV(item.first, item.second);
    

    (From WalletTxToJSON)


    promag commented at 9:47 AM on September 14, 2019:

    Good catch, could mention that it is only present if not empty.


    fanquake commented at 9:43 AM on September 16, 2019:

    @ariard Could you follow up here?


    ariard commented at 1:33 PM on September 18, 2019:

    Sorry for delay, pushed correction

  29. fanquake added this to the milestone 0.19.0 on Sep 13, 2019
  30. fanquake added the label Waiting for author on Sep 16, 2019
  31. ariard force-pushed on Sep 18, 2019
  32. MarcoFalke removed the label Waiting for author on Sep 18, 2019
  33. in src/wallet/rpcwallet.cpp:1372 in 626dc9c08e outdated
    1367 | +           "    \"trusted\": xxx,                            (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.\n"
    1368 | +           "    \"blockhash\": \"hashvalue\",                (string) The block hash containing the transaction.\n"
    1369 | +           "    \"blockindex\": n,                           (numeric) The index of the transaction in the block that includes it.\n"
    1370 | +           "    \"blocktime\": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
    1371 | +           "    \"txid\": \"transactionid\",                 (string) The transaction id.\n"
    1372 | +           "    \"walletconflicts: \"hashvalue\",            (array) List of txids that conflict with this transaction.\n"
    


    kristapsk commented at 10:07 PM on September 18, 2019:

    It returns array here. So \"walletconflicts\": [ \"TXID\", ... ] should be used instead. See #16869 as an example.

  34. kristapsk changes_requested
  35. ariard force-pushed on Sep 20, 2019
  36. MarcoFalke commented at 3:12 PM on September 22, 2019: member

    <details><summary>Rendered diff:</summary>

    diff --git a/gettransaction b/gettransaction
    index cf09efd..7ef6106 100644
    --- a/gettransaction
    +++ b/gettransaction
    @@ -10,37 +10,46 @@ Arguments:
     Result:
     {
       "amount" : x.xxx,        (numeric) The transaction amount in BTC
       "fee": x.xxx,            (numeric) The amount of the fee in BTC. This is negative and only available for the 
                                   'send' category of transactions.
    -  "confirmations" : n,     (numeric) The number of confirmations
    -  "blockhash" : "hash",  (string) The block hash
    -  "blockindex" : xx,       (numeric) The index of the transaction in the block that includes it
    -  "blocktime" : ttt,       (numeric) The time in seconds since epoch (1 Jan 1970 GMT)
    +    "confirmations": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the
    +                                                       transaction conflicts with the block chain.
    +    "generated": xxx,                          (bool) Only returns true if transaction only input is a coinbase one, otherwise false.
    +    "trusted": xxx,                            (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.
    +    "blockhash": "hashvalue",                  (string) The block hash containing the transaction.
    +    "blockindex": n,                           (numeric) The index of the transaction in the block that includes it.
    +    "blocktime": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).
         "txid": "transactionid",                   (string) The transaction id.
    -  "time" : ttt,            (numeric) The transaction time in seconds since epoch (1 Jan 1970 GMT)
    -  "timereceived" : ttt,    (numeric) The time received in seconds since epoch (1 Jan 1970 GMT)
    +    "walletconflicts": [                       (array) List of txids.
    +      "txid",                                  (string) The conflicting txid.
    +      ...
    +    ],
    +    "time": xxx,                               (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "timereceived": xxx,                       (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "comment": "...",                          (string) If a comment is associated with the transaction, only present if not empty.
         "bip125-replaceable": "yes|no|unknown",    (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);
                                                          may be unknown for unconfirmed transactions not in the mempool
       "details" : [
         {
    +      "involvesWatchonly": xxx,         (bool) Only returns true if imported addresses were involved in transaction.
           "address" : "address",          (string) The bitcoin address involved in the transaction
           "category" :                      (string) The transaction category.
                        "send"                  Transactions sent.
                        "receive"               Non-coinbase transactions received.
                        "generate"              Coinbase transactions received with more than 100 confirmations.
                        "immature"              Coinbase transactions received with 100 or fewer confirmations.
                        "orphan"                Orphaned coinbase transactions received.
           "amount" : x.xxx,                 (numeric) The amount in BTC
           "label" : "label",              (string) A comment for the address/transaction, if any
           "vout" : n,                       (numeric) the vout value
           "fee": x.xxx,                     (numeric) The amount of the fee in BTC. This is negative and only available for the 
                                                'send' category of transactions.
           "abandoned": xxx                  (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 
                                                'send' category of transactions.
         }
         ,...
       ],
       "hex" : "data"         (string) Raw data for transaction
       "decoded" : transaction         (json object) Optional, the decoded transaction (only present when `verbose` is passed), equivalent to the
                                                     RPC decoderawtransaction method, or the RPC getrawtransaction method when `verbose` is passed.
     }
    diff --git a/listreceivedbyaddress b/listreceivedbyaddress
    index 3e895f4..566ddb3 100644
    --- a/listreceivedbyaddress
    +++ b/listreceivedbyaddress
    @@ -11,15 +11,15 @@ Arguments:
     Result:
     [
       {
    -    "involvesWatchonly" : true,        (bool) Only returned if imported addresses were involved in transaction
    +    "involvesWatchonly" : true,        (bool) Only returns true if imported addresses were involved in transaction.
         "address" : "receivingaddress",  (string) The receiving address
         "amount" : x.xxx,                  (numeric) The total amount in BTC received by the address
         "confirmations" : n,               (numeric) The number of confirmations of the most recent transaction included
         "label" : "label",               (string) The label of the receiving address. The default label is "".
         "txids": [
            "txid",                         (string) The ids of transactions received with the address 
            ...
         ]
       }
       ,...
     ]
    diff --git a/listreceivedbylabel b/listreceivedbylabel
    index 38d25bf..d716f9b 100644
    --- a/listreceivedbylabel
    +++ b/listreceivedbylabel
    @@ -10,10 +10,10 @@ Arguments:
     Result:
     [
       {
    -    "involvesWatchonly" : true,   (bool) Only returned if imported addresses were involved in transaction
    +    "involvesWatchonly" : true,   (bool) Only returns true if imported addresses were involved in transaction.
         "amount" : x.xxx,             (numeric) The total amount received by addresses with this label
         "confirmations" : n,          (numeric) The number of confirmations of the most recent transaction included
         "label" : "label"           (string) The label of the receiving address. The default label is "".
       }
       ,...
     ]
    diff --git a/listsinceblock b/listsinceblock
    index be347aa..9a9b8f7 100644
    --- a/listsinceblock
    +++ b/listsinceblock
    @@ -14,35 +14,43 @@ Arguments:
     Result:
     {
       "transactions": [
    +    "involvesWatchonly": xxx, (bool) Only returns true if imported addresses were involved in transaction.
         "address":"address",    (string) The bitcoin address of the transaction.
         "category":               (string) The transaction category.
                     "send"                  Transactions sent.
                     "receive"               Non-coinbase transactions received.
                     "generate"              Coinbase transactions received with more than 100 confirmations.
                     "immature"              Coinbase transactions received with 100 or fewer confirmations.
                     "orphan"                Orphaned coinbase transactions received.
         "amount": x.xxx,          (numeric) The amount in BTC. This is negative for the 'send' category, and is positive
                                              for all other categories
         "vout" : n,               (numeric) the vout value
         "fee": x.xxx,             (numeric) The amount of the fee in BTC. This is negative and only available for the 'send' category of transactions.
    -    "confirmations": n,       (numeric) The number of confirmations for the transaction.
    -                                          When it's < 0, it means the transaction conflicted that many blocks ago.
    +    "confirmations": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the
    +                                                       transaction conflicts with the block chain.
    +    "generated": xxx,                          (bool) Only returns true if transaction only input is a coinbase one, otherwise false.
    +    "trusted": xxx,                            (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.
         "blockhash": "hashvalue",                  (string) The block hash containing the transaction.
         "blockindex": n,                           (numeric) The index of the transaction in the block that includes it.
         "blocktime": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).
         "txid": "transactionid",                   (string) The transaction id.
    -    "time": xxx,              (numeric) The transaction time in seconds since epoch (Jan 1 1970 GMT).
    -    "timereceived": xxx,      (numeric) The time received in seconds since epoch (Jan 1 1970 GMT).
    +    "walletconflicts": [                       (array) List of txids.
    +      "txid",                                  (string) The conflicting txid.
    +      ...
    +    ],
    +    "time": xxx,                               (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "timereceived": xxx,                       (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "comment": "...",                          (string) If a comment is associated with the transaction, only present if not empty.
         "bip125-replaceable": "yes|no|unknown",    (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);
                                                          may be unknown for unconfirmed transactions not in the mempool
         "abandoned": xxx,         (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 'send' category of transactions.
         "comment": "...",       (string) If a comment is associated with the transaction.
         "label" : "label"       (string) A comment for the address/transaction, if any
         "to": "...",            (string) If a comment to is associated with the transaction.
       ],
       "removed": [
         <structure is the same as "transactions" above, only present if include_removed=true>
         Note: transactions that were re-added in the active chain will appear as-is in this array, and may thus have a positive confirmation count.
       ],
       "lastblock": "lastblockhash"     (string) The hash of the block (target_confirmations-1) from the best block on the main chain. This is typically used to feed back into listsinceblock the next time you call it. So you would generally use a target_confirmations of say 6, so you will be continually re-notified of transactions until they've reached 6 confirmations plus any new ones
     }
    diff --git a/listtransactions b/listtransactions
    index 438677e..ef584d4 100644
    --- a/listtransactions
    +++ b/listtransactions
    @@ -14,32 +14,38 @@ Arguments:
     Result:
     [
       {
    +    "involvesWatchonly": xxx, (bool) Only returns true if imported addresses were involved in transaction.
         "address":"address",    (string) The bitcoin address of the transaction.
         "category":               (string) The transaction category.
                     "send"                  Transactions sent.
                     "receive"               Non-coinbase transactions received.
                     "generate"              Coinbase transactions received with more than 100 confirmations.
                     "immature"              Coinbase transactions received with 100 or fewer confirmations.
                     "orphan"                Orphaned coinbase transactions received.
         "amount": x.xxx,          (numeric) The amount in BTC. This is negative for the 'send' category, and is positive
                                             for all other categories
         "label": "label",       (string) A comment for the address/transaction, if any
         "vout": n,                (numeric) the vout value
         "fee": x.xxx,             (numeric) The amount of the fee in BTC. This is negative and only available for the 
                                              'send' category of transactions.
         "confirmations": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the
    -                                         transaction conflicts with the block chain
    +                                                       transaction conflicts with the block chain.
    +    "generated": xxx,                          (bool) Only returns true if transaction only input is a coinbase one, otherwise false.
         "trusted": xxx,                            (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.
         "blockhash": "hashvalue",                  (string) The block hash containing the transaction.
         "blockindex": n,                           (numeric) The index of the transaction in the block that includes it.
         "blocktime": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).
         "txid": "transactionid",                   (string) The transaction id.
    +    "walletconflicts": [                       (array) List of txids.
    +      "txid",                                  (string) The conflicting txid.
    +      ...
    +    ],
         "time": xxx,                               (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
         "timereceived": xxx,                       (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).
    -    "comment": "...",       (string) If a comment is associated with the transaction.
    +    "comment": "...",                          (string) If a comment is associated with the transaction, only present if not empty.
         "bip125-replaceable": "yes|no|unknown",    (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);
                                                          may be unknown for unconfirmed transactions not in the mempool
         "abandoned": xxx          (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 
                                              'send' category of transactions.
       }
     ]
    
    

    </details>

  37. in src/wallet/rpcwallet.cpp:1366 in a0b9216127 outdated
    1358 | @@ -1359,6 +1359,27 @@ static void ListTransactions(interfaces::Chain::Lock& locked_chain, CWallet* con
    1359 |      }
    1360 |  }
    1361 |  
    1362 | +static const std::string TransactionDescriptionString()
    1363 | +{
    1364 | +    return "    \"confirmations\": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the\n"
    1365 | +           "                                                       transaction conflicts with the block chain.\n"
    1366 | +           "    \"generated\": xxx,                          (bool) Only returns true if transaction only input is a coinbase one, otherwise false.\n"
    


    MarcoFalke commented at 3:13 PM on September 22, 2019:

    This is wrong. The field can never be false

  38. fanquake added the label Waiting for author on Sep 23, 2019
  39. in src/wallet/rpcwallet.cpp:1373 in a0b9216127 outdated
    1368 |             "    \"blockhash\": \"hashvalue\",                  (string) The block hash containing the transaction.\n"
    1369 |             "    \"blockindex\": n,                           (numeric) The index of the transaction in the block that includes it.\n"
    1370 |             "    \"blocktime\": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).\n"
    1371 |             "    \"txid\": \"transactionid\",                   (string) The transaction id.\n"
    1372 | +           "    \"walletconflicts\": [                       (array) List of txids.\n"
    1373 | +           "      \"txid\",                                  (string) The conflicting txid.\n"
    


    kristapsk commented at 9:26 PM on September 23, 2019:

    I think this would be better describing (based on #16869):

                "    \"walletconflicts\":[      (array) Conflicting transaction ids (double spends).\n"
                "        \"TXID\",              (string) The transaction id.\n"
    
  40. kristapsk changes_requested
  41. in src/wallet/rpcwallet.cpp:1367 in a0b9216127 outdated
    1358 | @@ -1359,6 +1359,27 @@ static void ListTransactions(interfaces::Chain::Lock& locked_chain, CWallet* con
    1359 |      }
    1360 |  }
    1361 |  
    1362 | +static const std::string TransactionDescriptionString()
    1363 | +{
    1364 | +    return "    \"confirmations\": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the\n"
    1365 | +           "                                                       transaction conflicts with the block chain.\n"
    1366 | +           "    \"generated\": xxx,                          (bool) Only returns true if transaction only input is a coinbase one, otherwise false.\n"
    1367 | +           "    \"trusted\": xxx,                            (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.\n"
    


    fanquake commented at 10:16 AM on September 24, 2019:

    Could you update this to be (bool, optional) and address this comment:

    if this is optional, I think the help text should also mention when the value is present or not.


    ariard commented at 4:12 PM on October 9, 2019:

    Rewrote comment but not sure about optional, it seems to be reserved when a optional feature is involved like HD-wallet, which is not the case with IsTrusted

  42. laanwj commented at 9:51 AM on September 30, 2019: member

    @ariard If you'd like this to be included in 0.19, please make the suggested changes today or tomorrow, otherwise it will miss the split-off.

  43. laanwj removed this from the milestone 0.19.0 on Oct 2, 2019
  44. ariard force-pushed on Oct 9, 2019
  45. ariard commented at 4:14 PM on October 9, 2019: member

    Sorry for the delay, was offline for few days, updated with suggested changes at 396da1d

  46. ariard force-pushed on Oct 9, 2019
  47. MarcoFalke commented at 4:52 PM on October 9, 2019: member

    Rendered diff:

    diff --git a/gettransaction b/gettransaction
    index cf09efd..84731c7 100644
    --- a/gettransaction
    +++ b/gettransaction
    @@ -10,39 +10,47 @@ Arguments:
     Result:
     {
         "amount" : x.xxx,        (numeric) The transaction amount in BTC
         "fee": x.xxx,            (numeric) The amount of the fee in BTC. This is negative and only available for the 
                                   'send' category of transactions.
    -  "confirmations" : n,     (numeric) The number of confirmations
    -  "blockhash" : "hash",  (string) The block hash
    -  "blockindex" : xx,       (numeric) The index of the transaction in the block that includes it
    -  "blocktime" : ttt,       (numeric) The time in seconds since epoch (1 Jan 1970 GMT)
    +    "confirmations": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the
    +                                                       transaction conflicts with the block chain.
    +    "generated": xxx,                          (bool) Only present if transaction only input is a coinbase one.
    +    "trusted": xxx,                            (bool) Only present if we consider transaction to be trusted and so safe to spend from.
    +    "blockhash": "hashvalue",                  (string) The block hash containing the transaction.
    +    "blockindex": n,                           (numeric) The index of the transaction in the block that includes it.
    +    "blocktime": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).
         "txid": "transactionid",                   (string) The transaction id.
    -  "time" : ttt,            (numeric) The transaction time in seconds since epoch (1 Jan 1970 GMT)
    -  "timereceived" : ttt,    (numeric) The time received in seconds since epoch (1 Jan 1970 GMT)
    +    "walletconflicts": [                       (array) Conflicting transaction ids.
    +      "txid",                                  (string) The transaction id.
    +      ...
    +    ],
    +    "time": xxx,                               (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "timereceived": xxx,                       (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "comment": "...",                          (string) If a comment is associated with the transaction, only present if not empty.
         "bip125-replaceable": "yes|no|unknown",    (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);
                                                          may be unknown for unconfirmed transactions not in the mempool
         "details" : [
           {
    +        "involvesWatchonly": xxx,         (bool) Only returns true if imported addresses were involved in transaction.
             "address" : "address",          (string) The bitcoin address involved in the transaction
             "category" :                      (string) The transaction category.
                          "send"                  Transactions sent.
                          "receive"               Non-coinbase transactions received.
                          "generate"              Coinbase transactions received with more than 100 confirmations.
                          "immature"              Coinbase transactions received with 100 or fewer confirmations.
                          "orphan"                Orphaned coinbase transactions received.
             "amount" : x.xxx,                 (numeric) The amount in BTC
             "label" : "label",              (string) A comment for the address/transaction, if any
             "vout" : n,                       (numeric) the vout value
             "fee": x.xxx,                     (numeric) The amount of the fee in BTC. This is negative and only available for the 
                                                'send' category of transactions.
             "abandoned": xxx                  (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 
                                                'send' category of transactions.
           }
           ,...
         ],
         "hex" : "data"         (string) Raw data for transaction
         "decoded" : transaction         (json object) Optional, the decoded transaction (only present when `verbose` is passed), equivalent to the
    -                                                RPC decoderawtransaction method, or the RPC getrawtransaction method when `verbose` is passed.
     }
     
     Examples:
    diff --git a/listreceivedbyaddress b/listreceivedbyaddress
    index 3e895f4..566ddb3 100644
    --- a/listreceivedbyaddress
    +++ b/listreceivedbyaddress
    @@ -11,15 +11,15 @@ Arguments:
     Result:
     [
       {
    -    "involvesWatchonly" : true,        (bool) Only returned if imported addresses were involved in transaction
    +    "involvesWatchonly" : true,        (bool) Only returns true if imported addresses were involved in transaction.
         "address" : "receivingaddress",  (string) The receiving address
         "amount" : x.xxx,                  (numeric) The total amount in BTC received by the address
         "confirmations" : n,               (numeric) The number of confirmations of the most recent transaction included
         "label" : "label",               (string) The label of the receiving address. The default label is "".
         "txids": [
            "txid",                         (string) The ids of transactions received with the address 
            ...
         ]
       }
       ,...
     ]
    diff --git a/listreceivedbylabel b/listreceivedbylabel
    index 38d25bf..d716f9b 100644
    --- a/listreceivedbylabel
    +++ b/listreceivedbylabel
    @@ -10,10 +10,10 @@ Arguments:
     Result:
     [
       {
    -    "involvesWatchonly" : true,   (bool) Only returned if imported addresses were involved in transaction
    +    "involvesWatchonly" : true,   (bool) Only returns true if imported addresses were involved in transaction.
         "amount" : x.xxx,             (numeric) The total amount received by addresses with this label
         "confirmations" : n,          (numeric) The number of confirmations of the most recent transaction included
         "label" : "label"           (string) The label of the receiving address. The default label is "".
       }
       ,...
     ]
    diff --git a/listsinceblock b/listsinceblock
    index be347aa..54f4fbf 100644
    --- a/listsinceblock
    +++ b/listsinceblock
    @@ -14,35 +14,43 @@ Arguments:
     Result:
     {
       "transactions": [
    +    "involvesWatchonly": xxx, (bool) Only returns true if imported addresses were involved in transaction.
         "address":"address",    (string) The bitcoin address of the transaction.
         "category":               (string) The transaction category.
                     "send"                  Transactions sent.
                     "receive"               Non-coinbase transactions received.
                     "generate"              Coinbase transactions received with more than 100 confirmations.
                     "immature"              Coinbase transactions received with 100 or fewer confirmations.
                     "orphan"                Orphaned coinbase transactions received.
         "amount": x.xxx,          (numeric) The amount in BTC. This is negative for the 'send' category, and is positive
                                              for all other categories
         "vout" : n,               (numeric) the vout value
         "fee": x.xxx,             (numeric) The amount of the fee in BTC. This is negative and only available for the 'send' category of transactions.
    -    "confirmations": n,       (numeric) The number of confirmations for the transaction.
    -                                          When it's < 0, it means the transaction conflicted that many blocks ago.
    +    "confirmations": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the
    +                                                       transaction conflicts with the block chain.
    +    "generated": xxx,                          (bool) Only present if transaction only input is a coinbase one.
    +    "trusted": xxx,                            (bool) Only present if we consider transaction to be trusted and so safe to spend from.
         "blockhash": "hashvalue",                  (string) The block hash containing the transaction.
         "blockindex": n,                           (numeric) The index of the transaction in the block that includes it.
         "blocktime": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).
         "txid": "transactionid",                   (string) The transaction id.
    -    "time": xxx,              (numeric) The transaction time in seconds since epoch (Jan 1 1970 GMT).
    -    "timereceived": xxx,      (numeric) The time received in seconds since epoch (Jan 1 1970 GMT).
    +    "walletconflicts": [                       (array) Conflicting transaction ids.
    +      "txid",                                  (string) The transaction id.
    +      ...
    +    ],
    +    "time": xxx,                               (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "timereceived": xxx,                       (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).
    +    "comment": "...",                          (string) If a comment is associated with the transaction, only present if not empty.
         "bip125-replaceable": "yes|no|unknown",    (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);
                                                          may be unknown for unconfirmed transactions not in the mempool
         "abandoned": xxx,         (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 'send' category of transactions.
         "comment": "...",       (string) If a comment is associated with the transaction.
         "label" : "label"       (string) A comment for the address/transaction, if any
         "to": "...",            (string) If a comment to is associated with the transaction.
       ],
       "removed": [
         <structure is the same as "transactions" above, only present if include_removed=true>
         Note: transactions that were re-added in the active chain will appear as-is in this array, and may thus have a positive confirmation count.
       ],
       "lastblock": "lastblockhash"     (string) The hash of the block (target_confirmations-1) from the best block on the main chain. This is typically used to feed back into listsinceblock the next time you call it. So you would generally use a target_confirmations of say 6, so you will be continually re-notified of transactions until they've reached 6 confirmations plus any new ones
     }
    diff --git a/listtransactions b/listtransactions
    index 438677e..63249dc 100644
    --- a/listtransactions
    +++ b/listtransactions
    @@ -14,32 +14,38 @@ Arguments:
     Result:
     [
       {
    +    "involvesWatchonly": xxx, (bool) Only returns true if imported addresses were involved in transaction.
         "address":"address",    (string) The bitcoin address of the transaction.
         "category":               (string) The transaction category.
                     "send"                  Transactions sent.
                     "receive"               Non-coinbase transactions received.
                     "generate"              Coinbase transactions received with more than 100 confirmations.
                     "immature"              Coinbase transactions received with 100 or fewer confirmations.
                     "orphan"                Orphaned coinbase transactions received.
         "amount": x.xxx,          (numeric) The amount in BTC. This is negative for the 'send' category, and is positive
                                             for all other categories
         "label": "label",       (string) A comment for the address/transaction, if any
         "vout": n,                (numeric) the vout value
         "fee": x.xxx,             (numeric) The amount of the fee in BTC. This is negative and only available for the 
                                              'send' category of transactions.
         "confirmations": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the
    -                                         transaction conflicts with the block chain
    -    "trusted": xxx,           (bool) Whether we consider the outputs of this unconfirmed transaction safe to spend.
    +                                                       transaction conflicts with the block chain.
    +    "generated": xxx,                          (bool) Only present if transaction only input is a coinbase one.
    +    "trusted": xxx,                            (bool) Only present if we consider transaction to be trusted and so safe to spend from.
         "blockhash": "hashvalue",                  (string) The block hash containing the transaction.
         "blockindex": n,                           (numeric) The index of the transaction in the block that includes it.
         "blocktime": xxx,                          (numeric) The block time in seconds since epoch (1 Jan 1970 GMT).
         "txid": "transactionid",                   (string) The transaction id.
    +    "walletconflicts": [                       (array) Conflicting transaction ids.
    +      "txid",                                  (string) The transaction id.
    +      ...
    +    ],
         "time": xxx,                               (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
         "timereceived": xxx,                       (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).
    -    "comment": "...",       (string) If a comment is associated with the transaction.
    +    "comment": "...",                          (string) If a comment is associated with the transaction, only present if not empty.
         "bip125-replaceable": "yes|no|unknown",    (string) Whether this transaction could be replaced due to BIP125 (replace-by-fee);
                                                          may be unknown for unconfirmed transactions not in the mempool
         "abandoned": xxx          (bool) 'true' if the transaction has been abandoned (inputs are respendable). Only available for the 
                                              'send' category of transactions.
       }
     ]
    
  48. in src/wallet/rpcwallet.cpp:1691 in 396da1d8a2 outdated
    1707 | -            "    }\n"
    1708 | -            "    ,...\n"
    1709 | -            "  ],\n"
    1710 | -            "  \"hex\" : \"data\"         (string) Raw data for transaction\n"
    1711 | -            "  \"decoded\" : transaction         (json object) Optional, the decoded transaction (only present when `verbose` is passed), equivalent to the\n"
    1712 | -            "                                                RPC decoderawtransaction method, or the RPC getrawtransaction method when `verbose` is passed.\n"
    


    MarcoFalke commented at 5:07 PM on October 9, 2019:

    Why is this removed?


    ariard commented at 6:29 PM on October 9, 2019:

    Corrected

  49. in src/wallet/rpcwallet.cpp:1377 in 396da1d8a2 outdated
    1372 | +           "    \"walletconflicts\": [                       (array) Conflicting transaction ids.\n"
    1373 | +           "      \"txid\",                                  (string) The transaction id.\n"
    1374 | +           "      ...\n"
    1375 | +           "    ],\n"
    1376 | +           "    \"time\": xxx,                               (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).\n"
    1377 | +           "    \"timereceived\": xxx,                       (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT).\n"
    


    MarcoFalke commented at 5:08 PM on October 9, 2019:

    I'd say to remove midnight, because we don't use that nomenclature anywhere else

  50. in src/wallet/rpcwallet.cpp:1365 in 396da1d8a2 outdated
    1358 | @@ -1359,6 +1359,27 @@ static void ListTransactions(interfaces::Chain::Lock& locked_chain, CWallet* con
    1359 |      }
    1360 |  }
    1361 |  
    1362 | +static const std::string TransactionDescriptionString()
    1363 | +{
    1364 | +    return "    \"confirmations\": n,                        (numeric) The number of confirmations for the transaction. Negative confirmations indicate the\n"
    1365 | +           "                                                       transaction conflicts with the block chain.\n"
    


    MarcoFalke commented at 5:13 PM on October 9, 2019:

    I liked the previous wording, which was more accurate.

    .. means the transaction conflicted that many blocks ago.

  51. MarcoFalke commented at 5:18 PM on October 9, 2019: member

    ACK 396da1d8a2ab9c2bd026eece0186b6e9d8c3181c

    <details><summary>Show signature and timestamp</summary>

    Signature:

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA512
    
    ACK 396da1d8a2ab9c2bd026eece0186b6e9d8c3181c
    -----BEGIN PGP SIGNATURE-----
    
    iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
    pUgcPwv9Gk7KN8Dns6Yj8kdYXui6m+gX2AGVTaROZKRgRXX4ZJao4qrp1cuZABH7
    8CRVd8ozqDCPHxupSjxidfDXGvWgiKbhwnfDvNy++wg94UpO9GchUFPAUYg/H/4b
    PQIKLN5kE0CgSFI1e4yM6PW/I34VW8Aeh5K1d/PKW7560ZgnHAppOVxDZP3XPNiW
    qVYQHDNn/HVGO1G4OORpDr5d7cHbxV92fI1iR0xki2m1hvAlBiwQlDNiBfIvd2hA
    mS5PYZHa7NtyvLuLDPiVsY1KWBONXJr9bGfM5mKrdDIOO/Rp+/E0GpladfZGokTy
    Y87e3ow1KcrB1hB/wz8NngkC11W1bEievKSQjP34aXJL8DSoO2w3Jj3x0vQxuor3
    y8HU6OteEk2uPn0Y0yR2l+6sHdnnrbUKzWdboIgsSvNjW8oZ7lF8gIxf4wQLNG6h
    7bc5Itzel/RI8BC2abmLKx9uIUNpLKy/DDDdW8pF3d7qYeGPQX7yxAP835CyGY9z
    W4vkc8g5
    =/J2v
    -----END PGP SIGNATURE-----
    

    Timestamp of file with hash 3a1dd9f9738323e22f94da416a4b83f73c9e03313d0758b17e388c2938fda613 -

    </details>

  52. MOVEONLY : move RPC wallets helpers to TransactionDescriptionString 3530108491
  53. Add missing fields in TransactionDescriptionString and others
    Fields involvesWatchonly, generated, walletconflicts were missing
    in result description of listtransactions, listsinceblock,
    gettransaction
    
    Align getttransaction fields which were odd compare to other rpc
    helpers
    f4c8953b00
  54. ariard force-pushed on Oct 9, 2019
  55. MarcoFalke commented at 7:08 PM on October 9, 2019: member

    re-ACK f4c8953b0073e6bc37abd18ec4a5cbc3ea9719a1 (only change is addressing my nits)

    <details><summary>Show signature and timestamp</summary>

    Signature:

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA512
    
    re-ACK f4c8953b0073e6bc37abd18ec4a5cbc3ea9719a1 (only change is addressing my nits)
    -----BEGIN PGP SIGNATURE-----
    
    iQGzBAEBCgAdFiEE+rVPoUahrI9sLGYTzit1aX5ppUgFAlwqrYAACgkQzit1aX5p
    pUhooAwArU21TEvHAToY40eahPE8pCMTN+GSNBaJxtV3/sk2RC6M3h8R+nR78cqa
    gN8Qmz4tYENU02ZlnjpfPYjMyh57L8baz/evdb8dzmFd25L59MYBeBggrYWzZ0BF
    4mUbl5QEka/tal1dWmoFOK6IR1vVG8CWepH4nyO7qHe3pfeyft+5Dz8IFSG2Uuro
    SwhGysluURvuBYZg5aFVazUVSbcuPEzE1EPVRbRJ0CupYwpCnnyabBTdIJrt2nXI
    m7vX+301k/wl0zDIyOlK1lRf35C6YTXxgUbmHTrRHrvzVeK42aWUFS2JXJ0MPZW1
    ZL4YG3YoLqtfDDVju63E/NOp1rhKIeI8NaHC4qpa8kZeaFoSN1tSdmISgCmftb4P
    0rKPyk6Bks5aPNVYTJz9ynuiIuXm599D3o+2D0irx/J/whpk1+EYttAqR0kRjYVv
    v5lxfSQ4SeomOnI+hkXkT/Q+ZiMo9TPW6qDQBOo8/1u/hae1Ex9gDqtEA83VBi8J
    92CT+k4S
    =qvS9
    -----END PGP SIGNATURE-----
    

    Timestamp of file with hash fbe29a11ac2d81f0f51edc5354e77b0c147b5e6692a6c02189c7fa41db6287cf -

    </details>

  56. MarcoFalke removed the label Waiting for author on Oct 9, 2019
  57. kristapsk approved
  58. kristapsk commented at 1:42 PM on October 10, 2019: contributor

    ACK f4c8953b0073e6bc37abd18ec4a5cbc3ea9719a1

  59. MarcoFalke referenced this in commit 2a0164085b on Oct 10, 2019
  60. MarcoFalke merged this on Oct 10, 2019
  61. MarcoFalke closed this on Oct 10, 2019

  62. MarkLTZ referenced this in commit 27729ed31c on Nov 17, 2019
  63. jasonbcox referenced this in commit 179ffbcb81 on Sep 8, 2020
  64. jasonbcox referenced this in commit 39f861a081 on Sep 8, 2020
  65. DrahtBot locked this on Dec 16, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-13 15:14 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me