[RPC] Add transaction size to JSON output #7072

pull Har01d wants to merge 1 commits into bitcoin:master from Har01d:master changing 2 files +4 −0
  1. Har01d commented at 2:38 AM on November 21, 2015: contributor

    This may be useful for blockchain explorers.

  2. jonasschnelli commented at 7:57 AM on November 21, 2015: contributor

    Not sure if this is really useful, because in both cases you know the size already by hexlen/2. decoderawtrandaction -> you pass a hexstring so you know the size already. gettransaction size = result['hex']/2.

    But no strong opinion.

  3. jonasschnelli added the label RPC on Nov 21, 2015
  4. Har01d commented at 8:21 AM on November 21, 2015: contributor

    @jonasschnelli, it's helpful when one uses REST API (/rest/block/{blockhash}.json or /rest/tx/{txid}.json), since there's no hex strings for transactions. Yes, you can use /rest/tx/{txid}.hex or /rest/tx/{txid}.bin for calculating the size, but that would be an additional query per transaction.

  5. jonasschnelli commented at 8:59 AM on November 21, 2015: contributor

    Agreed. Over RPC/JSON it can be useful.

    utACK.

  6. dcousens commented at 10:30 AM on November 21, 2015: contributor

    ACK

  7. tulip0 commented at 1:07 PM on November 21, 2015: none
    >>> import requests
    >>> requests.get("http://127.1:8332/rest/tx/6421d0b4dd71b0a823eb597cc5412b0af9f33bc456fb85c23b9ffe2eb18a7067.json").json()['size']
    120
    

    Field seems to be useful.

  8. pstratem commented at 9:40 PM on November 22, 2015: contributor

    concept ACK

  9. laanwj commented at 10:42 AM on November 26, 2015: member

    Needs to be tested in one of the RPC tests

  10. sipa commented at 3:41 PM on November 26, 2015: member

    utACK, but needs an RPC test indeed.

  11. paveljanik commented at 11:47 AM on November 28, 2015: contributor

    ACK

    For a test, you can use this change:

    diff --git a/src/test/rpc_tests.cpp b/src/test/rpc_tests.cpp
    index 2a486f0..79d7fec 100644
    --- a/src/test/rpc_tests.cpp
    +++ b/src/test/rpc_tests.cpp
    @@ -74,6 +74,7 @@ BOOST_AUTO_TEST_CASE(rpc_rawparams)
         BOOST_CHECK_NO_THROW(r = CallRPC(string("decoderawtransaction ")+rawtx));
         BOOST_CHECK_EQUAL(find_value(r.get_obj(), "version").get_int(), 1);
         BOOST_CHECK_EQUAL(find_value(r.get_obj(), "locktime").get_int(), 0);
    +    BOOST_CHECK_EQUAL(find_value(r.get_obj(), "size").get_int(), 193);
         BOOST_CHECK_THROW(r = CallRPC(string("decoderawtransaction ")+rawtx+" extra"), runtime_error);
    
         BOOST_CHECK_THROW(CallRPC("signrawtransaction"), runtime_error);
    
  12. Har01d commented at 12:58 PM on November 28, 2015: contributor

    Thanks @paveljanik, I've added the test.

  13. paveljanik commented at 1:04 PM on November 28, 2015: contributor

    And now, squash everything in one commit.

  14. [RPC] Add transaction size to JSON output
    This may be useful for blockchain explorers.
    996d3117c7
  15. Har01d force-pushed on Nov 28, 2015
  16. Har01d commented at 5:22 PM on November 28, 2015: contributor

    @paveljanik, done.

  17. paveljanik commented at 5:38 PM on November 28, 2015: contributor

    perfect now, reACK

    $ curl localhost:18332/rest/tx/00b308619c0cfae71a1375ac75353aab8fda9564be2fb29d146ce5ba7e75c687.json 2>/dev/null | json_pp
    {
       "vout" : [
          {
             "n" : 0,
             "scriptPubKey" : {
                "addresses" : [
                   "mhTohtQAoCemEZrMj6gYxwyRMQ5AH7DrmB"
                ],
                "type" : "pubkeyhash",
                "hex" : "76a9141557d578c41e5e5954b6ccf792eef781fce1a41188ac",
                "reqSigs" : 1,
                "asm" : "OP_DUP OP_HASH160 1557d578c41e5e5954b6ccf792eef781fce1a411 OP_EQUALVERIFY OP_CHECKSIG"
             },
             "value" : 0.88936742
          },
          {
             "n" : 1,
             "scriptPubKey" : {
                "addresses" : [
                   "mn1cNcrQuHoRjGgDzQJWynca75VaVZjVXB"
                ],
                "type" : "pubkeyhash",
                "hex" : "76a914473c3029a6cd2fea28653fe0e2cfe0df44ad995a88ac",
                "reqSigs" : 1,
                "asm" : "OP_DUP OP_HASH160 473c3029a6cd2fea28653fe0e2cfe0df44ad995a OP_EQUALVERIFY OP_CHECKSIG"
             },
             "value" : 0.12
          }
       ],
       "txid" : "00b308619c0cfae71a1375ac75353aab8fda9564be2fb29d146ce5ba7e75c687",
       "version" : 1,
       "vin" : [
          {
             "vout" : 1,
             "sequence" : 4294967294,
             "txid" : "8cb542fb7930f93bcd83df0825f66e8334009fd411abed7ce4ab420d049ea6c0",
             "scriptSig" : {
                "hex" : "483045022100caa46f920976fbed34bc0b5dbeddeb3dca66360ed10dfd9898a09dbce0cd7627022019f999fa2388f5bbc48858446eb6fb281ea92f3815c5e940f3ead9396a8f442c012103c9ac0648e7f79ef5ccae4a09da0d8ea4ba17a60e5359e46de3c226e1abafa168",
                "asm" : "3045022100caa46f920976fbed34bc0b5dbeddeb3dca66360ed10dfd9898a09dbce0cd7627022019f999fa2388f5bbc48858446eb6fb281ea92f3815c5e940f3ead9396a8f442c[ALL] 03c9ac0648e7f79ef5ccae4a09da0d8ea4ba17a60e5359e46de3c226e1abafa168"
             }
          }
       ],
       "locktime" : 607711,
       "size" : 226
    }
    $ btctest decoderawtransaction 0100000001c0a69e040d42abe47cedab11d49f0034836ef62508df83cd3bf93079fb42b58c010000006b483045022100caa46f920976fbed34bc0b5dbeddeb3dca66360ed10dfd9898a09dbce0cd7627022019f999fa2388f5bbc48858446eb6fb281ea92f3815c5e940f3ead9396a8f442c012103c9ac0648e7f79ef5ccae4a09da0d8ea4ba17a60e5359e46de3c226e1abafa168feffffff0226114d05000000001976a9141557d578c41e5e5954b6ccf792eef781fce1a41188ac001bb700000000001976a914473c3029a6cd2fea28653fe0e2cfe0df44ad995a88acdf450900
    {
      "txid": "00b308619c0cfae71a1375ac75353aab8fda9564be2fb29d146ce5ba7e75c687",
      "size": 226,
      "version": 1,
      "locktime": 607711,
      "vin": [
        {
          "txid": "8cb542fb7930f93bcd83df0825f66e8334009fd411abed7ce4ab420d049ea6c0",
          "vout": 1,
          "scriptSig": {
            "asm": "3045022100caa46f920976fbed34bc0b5dbeddeb3dca66360ed10dfd9898a09dbce0cd7627022019f999fa2388f5bbc48858446eb6fb281ea92f3815c5e940f3ead9396a8f442c[ALL] 03c9ac0648e7f79ef5ccae4a09da0d8ea4ba17a60e5359e46de3c226e1abafa168",
            "hex": "483045022100caa46f920976fbed34bc0b5dbeddeb3dca66360ed10dfd9898a09dbce0cd7627022019f999fa2388f5bbc48858446eb6fb281ea92f3815c5e940f3ead9396a8f442c012103c9ac0648e7f79ef5ccae4a09da0d8ea4ba17a60e5359e46de3c226e1abafa168"
          },
          "sequence": 4294967294
        }
      ],
      "vout": [
        {
          "value": 0.88936742,
          "n": 0,
          "scriptPubKey": {
            "asm": "OP_DUP OP_HASH160 1557d578c41e5e5954b6ccf792eef781fce1a411 OP_EQUALVERIFY OP_CHECKSIG",
            "hex": "76a9141557d578c41e5e5954b6ccf792eef781fce1a41188ac",
            "reqSigs": 1,
            "type": "pubkeyhash",
            "addresses": [
              "mhTohtQAoCemEZrMj6gYxwyRMQ5AH7DrmB"
            ]
          }
        }, 
        {
          "value": 0.12000000,
          "n": 1,
          "scriptPubKey": {
            "asm": "OP_DUP OP_HASH160 473c3029a6cd2fea28653fe0e2cfe0df44ad995a OP_EQUALVERIFY OP_CHECKSIG",
            "hex": "76a914473c3029a6cd2fea28653fe0e2cfe0df44ad995a88ac",
            "reqSigs": 1,
            "type": "pubkeyhash",
            "addresses": [
              "mn1cNcrQuHoRjGgDzQJWynca75VaVZjVXB"
            ]
          }
        }
      ]
    }
    $ 
    
  18. sipa commented at 5:39 PM on November 28, 2015: member

    ACK

  19. MarcoFalke commented at 6:16 PM on November 28, 2015: member

    utACK 996d311

  20. gmaxwell commented at 6:59 AM on December 1, 2015: contributor

    ACK.

  21. gmaxwell merged this on Dec 1, 2015
  22. gmaxwell closed this on Dec 1, 2015

  23. gmaxwell referenced this in commit c143c499c8 on Dec 1, 2015
  24. zkbot referenced this in commit 94cf4a4946 on Sep 28, 2020
  25. MarcoFalke locked this on Sep 8, 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-05-03 21:15 UTC

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